{"workflow":{"id":13192,"name":"Process incoming files and notify via email with GitHub storage","views":9,"recentViews":0,"totalViews":9,"createdAt":"2026-02-03T14:32:05.499Z","description":"# File Processing Pipeline with Email and GitHub\n\nThis workflow automatically ingests newly-uploaded files, validates and transforms their contents, stores the processed files in a GitHub repository, and sends email notifications upon completion. It is ideal for teams that regularly receive data drops and need an auditable, automated pipeline to clean, version, and distribute those files.\n\n## Pre-conditions/Requirements\n\n### Prerequisites\n- n8n instance (self-hosted or n8n cloud)\n- GitHub and SMTP credentials with appropriate permissions\n- Basic understanding of JavaScript for custom validation/transform code\n\n### Required Credentials\n| Credential | Purpose | Minimum Scope |\n|------------|---------|---------------|\n| **GitHub OAuth2** | Commit transformed files to a repository | `repo` |\n| **SMTP (Email Send)** | Dispatch success/failure notifications | `send` |\n\n### Repository & Email Setup Requirements\n| Item | Example | Notes |\n|------|---------|-------|\n| GitHub Repository | `git@github.com:org/data-pipeline.git` | Branch must exist (default: `main`) |\n| Email Recipients | `ops@company.com, data@company.com` | Comma-separated list |\n\n## How it works\n\nThis workflow automatically ingests newly-uploaded files, validates and transforms their contents, stores the processed files in a GitHub repository, and sends email notifications upon completion. It is ideal for teams that regularly receive data drops and need an auditable, automated pipeline to clean, version, and distribute those files.\n\n## Key Steps:\n- **Schedule Trigger**: Executes the pipeline on a defined schedule (e.g., hourly).\n- **HTTP Request**: Pulls a file manifest or fetches file blobs from an upstream service.\n- **SplitInBatches**: Iterates over each file individually for isolated processing.\n- **Code (Validate)**: Runs custom JavaScript to ensure file integrity and schema compliance.\n- **If (Validation Pass?)**: Routes good files forward and diverts failures.\n- **Code (Transform)**: Performs any data re-formatting, enrichment, or cleansing.\n- **Set**: Prepares commit metadata (file path, commit message).\n- **GitHub**: Creates or updates a file in the target repository/branch.\n- **Email Send**: Notifies stakeholders of overall job status, including summary metrics.\n\n## Set up steps\n\n**Setup Time: 10-15 minutes**\n\n1. **Clone the Workflow**: Import the JSON file or copy from the n8n community templates gallery.\n2. **Configure Schedule Trigger**: Set your desired cron expression (e.g., `0 * * * *` for hourly).\n3. **HTTP Request Node**:  \n   - Enter the endpoint that lists or returns your new uploads.  \n   - Add authentication headers if required.\n4. **Adjust Validation Code**: Open the first Code node and replace the schema rules with your own logic.\n5. **Modify Transformation Logic**: In the second Code node, apply formatting (e.g., CSV → JSON) or enrichment steps.\n6. **GitHub Node**:  \n   - Select your GitHub OAuth2 credential.  \n   - Specify repository, branch, and file path template (e.g., `processed/{{ $json.filename }}`).\n7. **Email Send Node**:  \n   - Set SMTP credential.  \n   - Add recipients and customize subject/body with variables.\n8. **Test Run**: Click “Execute Workflow” to ensure end-to-end success.\n9. **Activate**: Toggle workflow to “Active” for autonomous execution.\n\n## Node Descriptions\n\n### Core Workflow Nodes:\n- **Sticky Note** – Documentation and inline comments for maintainers.\n- **Schedule Trigger** – Initiates the automation on a fixed timetable.\n- **HTTP Request** – Retrieves incoming file list or contents.\n- **SplitInBatches** – Paginates large manifests to conserve memory.\n- **Code (Validate / Transform)** – Custom JS powering data quality checks and format conversion.\n- **If** – Branching logic for pass/fail handling.\n- **Set** – Crafts commit metadata and email summaries.\n- **GitHub** – Commits each transformed file to the repository.\n- **Email Send** – Dispatches completion notices or error alerts.\n\n### Data Flow:\n1. **Schedule Trigger** → **HTTP Request** → **SplitInBatches** → **Code (Validate)** → **If**  \n   - `true` → **Code (Transform)** → **Set** → **GitHub**  \n   - `false` → **Set (Error)**  \n2. Both branches converge → **Email Send**\n\n## Customization Examples\n\n### Custom Validation Rule\n```javascript\n// Reject files larger than 5 MB or missing required columns\nif (items[0].binary.data.size &gt; 5 * 1024 * 1024) {\n  throw new Error('File exceeds 5MB limit');\n}\nconst required = ['id', 'email', 'created_at'];\nrequired.forEach(col =&gt; {\n  if (!items[0].json.headers.includes(col)) {\n    throw new Error(`Missing column: ${col}`);\n  }\n});\nreturn items;\n```\n\n### Dynamic Commit Path Based on Date\n```javascript\nconst date = new Date().toISOString().split('T')[0]; // YYYY-MM-DD\nitem.json.gitPath = `archive/${date}/${item.json.filename}`;\nreturn item;\n```\n\n## Data Output Format\n\nThe workflow outputs structured JSON data:\n\n```json\n{\n  \"filename\": \"orders_2023-10-01.csv\",\n  \"status\": \"committed\",\n  \"commitSha\": \"a1b2c3d4\",\n  \"linesProcessed\": 523,\n  \"errors\": []\n}\n```\n\n## Troubleshooting\n\n### Common Issues\n1. **GitHub authentication error** – Ensure OAuth app is approved and the token has `repo` scope.\n2. **Email not delivered** – Verify SMTP host, port, and that “less secure apps” are allowed (if using Gmail).\n\n### Performance Tips\n- Batch large manifests (e.g., 100 records) to avoid memory spikes.\n- Enable n8n queue mode for parallel processing on self-hosted instances.\n\n**Pro Tips:**\n- Use environment variables (`{{ $env[\"VAR_NAME\"] }}`) for endpoints and secrets.\n- Configure branch protection in GitHub to enforce pull requests instead of direct commits.\n- Aggregate success vs. failure counts in the Email body for quick health checks.\n\n---\n\n_This is a community n8n workflow template provided “as-is.” Always review and adapt the workflow to meet your security, compliance, and operational requirements._","workflow":{"id":"JZ8C3IFRtHrntshw","meta":{"instanceId":"99f4e9e67f2a926c174453b6675a71cc5fb71c1fb19cfc06d50531053c661324","templateCredsSetupCompleted":true},"name":"File Processing Pipeline with Email and GitHub","tags":[],"nodes":[{"id":"ef26b9a6-1831-46e6-bcab-181075c3a072","name":"Workflow Overview","type":"n8n-nodes-base.stickyNote","position":[-384,208],"parameters":{"width":550,"height":706,"content":"## How it works\nThis workflow runs on a fixed schedule and checks an external endpoint for any newly-uploaded files that need processing.  If files exist, each one is downloaded in turn and its type is inspected.  CSV files are parsed inside a Code node and the resulting records are validated against simple business rules.  Valid data are committed to a GitHub repository, while any problems (missing fields, wrong file type, or empty job queue) trigger an error-handling branch.  After every run the appropriate success or failure email is issued so stakeholders always know the outcome.\n\n## Setup steps\n1. Create an HTTP endpoint that returns a JSON array of pending files (id, url, fileName, mimeType).\n2. Add GitHub OAuth credentials in n8n and replace the owner/repo placeholders.\n3. Configure an SMTP credential for the Email Send node and update the to/from addresses.\n4. Adjust the schedule trigger interval to suit your cadence.\n5. Edit validation rules inside the **Validate Data** Code node as needed.\n6. (Optional) Tweak commit paths, branch names or email templates for your environment."},"typeVersion":1},{"id":"7b77f257-297a-4c42-b211-f3923de8c071","name":"Trigger & Fetch","type":"n8n-nodes-base.stickyNote","position":[496,304],"parameters":{"color":7,"width":994,"height":654,"content":"## Trigger & Retrieval\nThis section contains the **Schedule Trigger** that launches the workflow and the HTTP Request that fetches the list of files waiting to be processed.  A preliminary Code node counts the files so the following IF node can decide whether to continue or exit early.  If no files are returned we immediately branch to the notification path so stakeholders know the run had nothing to do.  Keeping retrieval logic isolated here makes it easier to swap in an S3 or SharePoint source later without touching the downstream processing chain."},"typeVersion":1},{"id":"e57d8c88-feed-49e8-85d1-6d7a74cc246c","name":"Processing & Validation","type":"n8n-nodes-base.stickyNote","position":[1520,288],"parameters":{"color":7,"width":1026,"height":654,"content":"## Processing & Validation\nNodes in this cluster handle per-file work.  Files arrive one at a time via **SplitInBatches**, get downloaded, then routed by an IF node that checks MIME/type.  CSVs are parsed in **Parse CSV** and examined in **Validate Data** for required columns, data types and any custom business rules you add.  Failures are piped straight to the error-email branch, while clean data move forward to storage.  This modular approach lets you bolt on extra transforms (enrichment, filtering, aggregation) without breaking existing logic."},"typeVersion":1},{"id":"f1c7b100-a7bc-47f2-8bfa-43c5ec84d1f6","name":"Storage & Notification","type":"n8n-nodes-base.stickyNote","position":[2576,304],"parameters":{"color":7,"width":994,"height":622,"content":"## Storage & Notification\nAfter a record set passes validation, it is wrapped in JSON, committed to GitHub and the success branch crafts a confirmation email.  Any failure along the way jumps to an alternate Set+Email pair so the operations team receives actionable information.  Because commit metadata, email subject and body are assembled in dedicated **Set** nodes, you can change wording, recipients or file-naming conventions in one place without touching upstream logic."},"typeVersion":1},{"id":"267a08d7-e5dd-4beb-8e7e-53f71655aab2","name":"Daily File Check","type":"n8n-nodes-base.scheduleTrigger","position":[512,576],"parameters":{"rule":{"interval":[{"field":"hours","hoursInterval":24}]}},"typeVersion":1},{"id":"45b00107-991d-410a-a9c1-b1d454ac6d38","name":"Fetch File List","type":"n8n-nodes-base.httpRequest","position":[704,576],"parameters":{"url":"https://api.example.com/uploads/pending","options":{}},"typeVersion":4},{"id":"acf76dcf-9922-4e18-a640-d18b8143eb61","name":"Check File Count","type":"n8n-nodes-base.code","position":[912,576],"parameters":{"jsCode":"// Expect an object like { files: [...] }\nconst files = $json.files || [];\nreturn [{ json: { files, fileCount: files.length } }];"},"typeVersion":2},{"id":"f55e226c-09e7-40df-a0d2-032e4b8325bd","name":"Any New Files?","type":"n8n-nodes-base.if","position":[1104,576],"parameters":{"options":{},"conditions":{"number":[{"value1":"={{ $json.fileCount }}","value2":0,"operation":"larger"}]}},"typeVersion":2},{"id":"5e90a2c9-8a61-4158-9d0e-ccbbaf3671a8","name":"Prepare File Items","type":"n8n-nodes-base.code","position":[1312,576],"parameters":{"jsCode":"// Expand array into individual items\nreturn ($json.files || []).map(f => ({ json: f }));"},"typeVersion":2},{"id":"eab73259-410f-40ae-add9-d0ab535dc08b","name":"Iterate Files","type":"n8n-nodes-base.splitInBatches","position":[1504,576],"parameters":{"options":{}},"typeVersion":3},{"id":"3a5a7674-e38e-4325-8d49-889ec1f43ad5","name":"Download File","type":"n8n-nodes-base.httpRequest","position":[1712,576],"parameters":{"url":"={{ $json.url }}","options":{}},"typeVersion":4},{"id":"2c1cc809-e708-4a24-b792-ef052ac88897","name":"Is CSV?","type":"n8n-nodes-base.if","position":[1904,576],"parameters":{"options":{},"conditions":{"string":[{"value1":"={{ $json.mimeType || $json.type || 'unknown' }}","value2":"text/csv","operation":"equals"}]}},"typeVersion":2},{"id":"2b67be02-6092-4309-8f8f-2106caeb58fe","name":"Parse CSV","type":"n8n-nodes-base.code","position":[2112,576],"parameters":{"jsCode":"// Simple CSV parser (no external deps)\nconst csvText = $json.body;\nconst lines = csvText.trim().split(/\\r?\\n/);\nconst headers = lines.shift().split(',');\nconst records = lines.map(line => {\n  const cols = line.split(',');\n  const obj = {};\n  headers.forEach((h, i) => { obj[h.trim()] = (cols[i] || '').trim(); });\n  return obj;\n});\nreturn [{ json: { originalFileName: $json.fileName, records } }];"},"typeVersion":2},{"id":"e775790b-55c1-4835-aab4-2ccef039a327","name":"Validate Data","type":"n8n-nodes-base.code","position":[2304,576],"parameters":{"jsCode":"const items = $input.item.records;\nconst invalid = items.filter(r => !r.id || !r.id.length);\nreturn [{ json: {\n  originalFileName: $input.item.originalFileName,\n  data: items,\n  isValid: invalid.length === 0,\n  errors: invalid\n}}];"},"typeVersion":2},{"id":"bdfd326d-0806-44b8-bab3-5cc1b3a29426","name":"Validation Passed?","type":"n8n-nodes-base.if","position":[2656,576],"parameters":{"options":{},"conditions":{"boolean":[{"value1":"={{ $json.isValid }}","operation":"isTrue"}]}},"typeVersion":2},{"id":"77243b3b-8b6f-403b-abac-1900ca662af1","name":"Prepare GitHub Commit","type":"n8n-nodes-base.set","position":[2832,496],"parameters":{"options":{}},"typeVersion":3},{"id":"9595ba2f-a213-4bc6-9813-8b3e83bbb226","name":"Create/Update File","type":"n8n-nodes-base.github","position":[2992,480],"webhookId":"4d6d626f-5c50-429c-adda-a107c6afe15a","parameters":{"owner":"{{YOUR_GITHUB_USERNAME}}","labels":[],"assignees":[],"repository":"{{YOUR_REPOSITORY_NAME}}"},"typeVersion":1},{"id":"d7468b8b-c647-411a-9a6f-8f65ebff11d8","name":"Success Email Content","type":"n8n-nodes-base.set","position":[3152,512],"parameters":{"options":{}},"typeVersion":3},{"id":"814955dc-d483-470d-af17-a8feb058678c","name":"Send Success Email","type":"n8n-nodes-base.emailSend","position":[3360,544],"webhookId":"c4e3dd06-8028-4eb6-ac19-0e654422d403","parameters":{"options":{},"subject":"={{ $json.subject }}","toEmail":"={{ $json.toEmail }}","fromEmail":"={{ $json.fromEmail }}"},"typeVersion":2},{"id":"94405ec6-a93c-412c-8a2b-f1973ca4b650","name":"Error Email Content","type":"n8n-nodes-base.set","position":[2768,784],"parameters":{"options":{}},"typeVersion":3},{"id":"cc483eaf-cce5-4232-8769-269f296f03d1","name":"Send Error Email","type":"n8n-nodes-base.emailSend","position":[3040,784],"webhookId":"d29b44e3-b07c-4158-9c74-aa0b31ebe8ec","parameters":{"options":{},"subject":"={{ $json.subject }}","toEmail":"={{ $json.toEmail }}","fromEmail":"={{ $json.fromEmail }}"},"typeVersion":2}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"7e62b283-e4ce-4942-9ba2-1f78c04280ae","connections":{"Is CSV?":{"main":[[{"node":"Parse CSV","type":"main","index":0}],[{"node":"Error Email Content","type":"main","index":0}]]},"Parse CSV":{"main":[[{"node":"Validate Data","type":"main","index":0}]]},"Download File":{"main":[[{"node":"Is CSV?","type":"main","index":0}]]},"Iterate Files":{"main":[[{"node":"Download File","type":"main","index":0}]]},"Validate Data":{"main":[[{"node":"Validation Passed?","type":"main","index":0}]]},"Any New Files?":{"main":[[{"node":"Prepare File Items","type":"main","index":0}],[{"node":"Error Email Content","type":"main","index":0}]]},"Fetch File List":{"main":[[{"node":"Check File Count","type":"main","index":0}]]},"Check File Count":{"main":[[{"node":"Any New Files?","type":"main","index":0}]]},"Daily File Check":{"main":[[{"node":"Fetch File List","type":"main","index":0}]]},"Create/Update File":{"main":[[{"node":"Success Email Content","type":"main","index":0}]]},"Prepare File Items":{"main":[[{"node":"Iterate Files","type":"main","index":0}]]},"Validation Passed?":{"main":[[{"node":"Prepare GitHub Commit","type":"main","index":0}],[{"node":"Error Email Content","type":"main","index":0}]]},"Error Email Content":{"main":[[{"node":"Send Error Email","type":"main","index":0}]]},"Prepare GitHub Commit":{"main":[[{"node":"Create/Update File","type":"main","index":0}]]},"Success Email Content":{"main":[[{"node":"Send Success Email","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":21,"nodeTypes":{"n8n-nodes-base.if":{"count":3},"n8n-nodes-base.set":{"count":3},"n8n-nodes-base.code":{"count":4},"n8n-nodes-base.github":{"count":1},"n8n-nodes-base.emailSend":{"count":2},"n8n-nodes-base.stickyNote":{"count":4},"n8n-nodes-base.httpRequest":{"count":2},"n8n-nodes-base.splitInBatches":{"count":1},"n8n-nodes-base.scheduleTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"vinci-king-01","username":"vinci-king-01","bio":"","verified":true,"links":["https://www.linkedin.com/in/marco-vinciguerra-7ba365242/"],"avatar":"https://gravatar.com/avatar/d939eeef03a5fcb5df08bee8196f12ccb248c38209487414e419032004f0c014?r=pg&d=retro&size=200"},"nodes":[{"id":11,"icon":"fa:envelope","name":"n8n-nodes-base.emailSend","codex":{"data":{"alias":["SMTP","email","human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.sendemail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/sendemail/"}]},"categories":["Communication","HITL","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Send Email","color":"#00bb88"},"iconData":{"icon":"envelope","type":"icon"},"displayName":"Send Email","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":9,"name":"Core Nodes"},{"id":28,"name":"HITL"}]},{"id":16,"icon":"file:github.svg","name":"n8n-nodes-base.github","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.github/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/github/"}]},"categories":["Development"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"GitHub"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMC4wMTY1IDBDOC45NDc5MSAwIDAgOS4wMTM4OCAwIDIwLjE2NTNDMCAyOS4wNzkyIDUuNzMzMjQgMzYuNjI0NiAxMy42ODY4IDM5LjI5NTJDMTQuNjgxMiAzOS40OTYgMTUuMDQ1NCAzOC44NjEzIDE1LjA0NTQgMzguMzI3NEMxNS4wNDU0IDM3Ljg1OTkgMTUuMDEyNiAzNi4yNTc1IDE1LjAxMjYgMzQuNTg3OUM5LjQ0NDUgMzUuNzkgOC4yODQ5OCAzMi4xODQxIDguMjg0OTggMzIuMTg0MUM3LjM5MDE1IDI5Ljg0NyA2LjA2NDI5IDI5LjI0NjMgNi4wNjQyOSAyOS4yNDYzQzQuMjQxODUgMjguMDExIDYuMTk3MDQgMjguMDExIDYuMTk3MDQgMjguMDExQzguMjE4NjEgMjguMTQ0NiA5LjI3OTM4IDMwLjA4MSA5LjI3OTM4IDMwLjA4MUMxMS4wNjg2IDMzLjE1MjIgMTMuOTUxOCAzMi4yODQ0IDE1LjExMTggMzEuNzUwMkMxNS4yNzczIDMwLjQ0ODEgMTUuODA3OSAyOS41NDY3IDE2LjM3MTMgMjkuMDQ2QzExLjkzMDMgMjguNTc4NSA3LjI1NzgxIDI2Ljg0MjUgNy4yNTc4MSAxOS4wOTY3QzcuMjU3ODEgMTYuODkzMiA4LjA1MjY3IDE1LjA5MDUgOS4zMTIxNiAxMy42ODg0QzkuMTEzNDQgMTMuMTg3NyA4LjQxNzMyIDExLjExNzQgOS41MTEyOCA4LjM0NjQ0QzkuNTExMjggOC4zNDY0NCAxMS4yMDE0IDcuODEyMTcgMTUuMDEyMiAxMC40MTY0QzE2LjY0MzggOS45NzQ5NSAxOC4zMjYzIDkuNzUwNCAyMC4wMTY1IDkuNzQ4NTFDMjEuNzA2NyA5Ljc0ODUxIDIzLjQyOTUgOS45ODI0NiAyNS4wMjA1IDEwLjQxNjRDMjguODMxNyA3LjgxMjE3IDMwLjUyMTggOC4zNDY0NCAzMC41MjE4IDguMzQ2NDRDMzEuNjE1OCAxMS4xMTc0IDMwLjkxOTIgMTMuMTg3NyAzMC43MjA1IDEzLjY4ODRDMzIuMDEzMiAxNS4wOTA1IDMyLjc3NTMgMTYuODkzMiAzMi43NzUzIDE5LjA5NjdDMzIuNzc1MyAyNi44NDI1IDI4LjEwMjggMjguNTQ0OSAyMy42Mjg3IDI5LjA0NkMyNC4zNTggMjkuNjgwMiAyNC45ODczIDMwLjg4MiAyNC45ODczIDMyLjc4NTFDMjQuOTg3MyAzNS40ODkzIDI0Ljk1NDUgMzcuNjU5NiAyNC45NTQ1IDM4LjMyN0MyNC45NTQ1IDM4Ljg2MTMgMjUuMzE5MiAzOS40OTYgMjYuMzEzMiAzOS4yOTU2QzM0LjI2NjcgMzYuNjI0MiAzOS45OTk5IDI5LjA3OTIgMzkuOTk5OSAyMC4xNjUzQzQwLjAzMjcgOS4wMTM4OCAzMS4wNTIgMCAyMC4wMTY1IDBaIiBmaWxsPSIjMjQyOTJGIi8+Cjwvc3ZnPgo="},"displayName":"GitHub","typeVersion":1,"nodeCategories":[{"id":5,"name":"Development"}]},{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":39,"icon":"fa:sync","name":"n8n-nodes-base.splitInBatches","codex":{"data":{"alias":["Loop","Concatenate","Batch","Split","Split In Batches"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Loop Over Items","color":"#007755"},"iconData":{"icon":"sync","type":"icon"},"displayName":"Loop Over Items (Split in Batches)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":36,"name":"File Management"}],"image":[]}}