{
  "workflow": {
    "id": 8813,
    "name": "Automated Slack-to-Jira issue creation with attachments",
    "views": 222,
    "recentViews": 0,
    "totalViews": 222,
    "createdAt": "2025-09-22T06:17:33.553Z",
    "description": "## Description\nAutomatically convert structured Slack messages into Jira issues with parsed titles, descriptions, and priorities. This workflow also downloads file attachments from Slack (e.g., screenshots, logs, or documents) and uploads them directly into the created Jira issue. It then confirms success back to the Slack channel, ensuring transparency and seamless collaboration. 📋💬📎\n\n## What This Template Does\n- Monitors a designated Slack channel for new issue reports. 🔔\n- Parses Slack message text with regex to extract title, description, priority, and type. 🧠\n- Creates a new Jira issue with the structured data. 🎫\n- Detects and processes attachments, splitting multiple files into batches. 📂\n- Downloads files from Slack using secure URLs and Slack bot authentication. 🔑\n- Uploads attachments directly into the created Jira issue. 📎\n- Sends a Slack confirmation with Jira issue key, link, and summary details. ✅\n\n## Key Benefits\n- Eliminates manual Jira ticket creation from Slack messages. ⏱️\n- Preserves critical context by attaching screenshots, logs, and documentation. 📎\n- Ensures structured, standardized issue reporting across teams. 🔄\n- Provides instant Slack confirmation with direct Jira links. 📲\n- Handles multiple attachments gracefully with batch processing. ⚡\n\n## Features\n- Slack Trigger – Monitors specific channels for new issue messages. 💬\n- Message Parsing Engine – Extracts title, description, priority, and type using regex + fallback logic. 📝\n- Jira Integration – Creates structured Jira issues with proper fields (summary, description, priority, type). 🎫\n- Attachment Handling – Splits, downloads, and uploads Slack files into Jira automatically. 📂\n- Slack Confirmation – Sends formatted success messages with clickable Jira links. 🔗\n- Robust Data Handling – Supports rich text, multiple files, and smart mappings of Slack priorities to Jira. 🧠\n\n## Requirements\n- n8n instance (cloud or self-hosted).\n- Slack Bot API credentials with channels:history, files:read, and chat:write permissions.\n- Jira Software Cloud API credentials with project and issue creation permissions.\n- Pre-configured Slack channel for reporting issues.\n- Jira project set up with supported issue types (bug, task, feature, etc.).\n\n## Target Audience\n- Software development teams managing issue intake from Slack. 👩‍💻\n- QA and testing teams reporting bugs directly from Slack. 🧪\n- IT support teams needing structured Jira issues with attachments. 🛠️\n- Agile teams looking for seamless Slack → Jira integration. 🚀\n- Remote teams requiring real-time visibility into Jira issue creation. 🌐\n\n## Step-by-Step Setup Instructions\n- Connect Slack and Jira credentials in n8n. 🔑\n- Configure the Slack channel ID to listen for issue reports. 💬\n- Map Jira project and issue type IDs in the “Create Jira Issue” node. 🎫\n- Customize parsing logic for message formats (default: Title: X, Description: Y, Priority: Z). 📝\n- Ensure Slack files can be downloaded with your bot token (files:read scope). 📂\n- Test with a sample message containing a title, description, and attachment. ✅\n- Deploy and monitor Slack → Jira issue creation in real-time. ⚡",
    "workflow": {
      "id": "UWaBGGumTuGmryJq",
      "meta": {
        "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
        "templateCredsSetupCompleted": true
      },
      "name": "Automated Slack-to-Jira Issue Creation with Attachments",
      "tags": [
        {
          "id": "SHQpff6D2VUAhiBO",
          "name": "slack-integration",
          "createdAt": "2025-09-03T10:01:17.871Z",
          "updatedAt": "2025-09-03T10:01:17.871Z"
        },
        {
          "id": "us8CC0JZKBaYTMbE",
          "name": "automation",
          "createdAt": "2025-09-03T10:01:17.853Z",
          "updatedAt": "2025-09-03T10:01:17.853Z"
        }
      ],
      "nodes": [
        {
          "id": "9a2f9325-f367-4178-b57f-da06ce268aa3",
          "name": "Sticky Note7",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1472,
            2544
          ],
          "parameters": {
            "color": 5,
            "height": 320,
            "content": "Purpose: Attaches downloaded files to created Jira issue\n\nFunction: Uploads binary file data to \nspecific Jira ticket\n\nUse Case: Preserves screenshots/documentation from Slack in Jira\n\nInput: Jira issue key + file binary data\nResult: File becomes viewable in Jira issue"
          },
          "typeVersion": 1
        },
        {
          "id": "45ca44bb-fcf5-4892-8915-b5b561d489ee",
          "name": "Sticky Note8",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            800,
            2240
          ],
          "parameters": {
            "color": 3,
            "height": 320,
            "content": "Purpose: Downloads files from Slack using private URLs\n\nFunction: Fetches attachment data with Slack bot token authentication\n\nUse Case: Retrieves screenshots/files to attach to Jira issue\nAuthentication: Bearer YOUR_TOKEN_HERE in header\n\nResponse: File data in binary format"
          },
          "typeVersion": 1
        },
        {
          "id": "a9b50384-69f7-4325-b209-9b8b0980d4fd",
          "name": "Sticky Note9",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -96,
            3088
          ],
          "parameters": {
            "color": 6,
            "height": 272,
            "content": "Purpose: Creates new Jira issue with parsed data\n\nFunction: Submits ticket to specified Jira project.\n\nUse Case: Automatically creates trackable issues from Slack reports\n\nOutput: Jira issue details including unique issue key"
          },
          "typeVersion": 1
        },
        {
          "id": "89199791-4879-47be-8d99-f6b5be1eb3e2",
          "name": "Sticky Note10",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -336,
            2480
          ],
          "parameters": {
            "color": 2,
            "height": 384,
            "content": "Purpose: Extracts structured issue details from Slack message text\n\nFunction: Uses regex to parse Title, Description, Priority from message\n\nUse Case: Converts \"Title: X Description: Y Priority: Z\" format to structured data\nKey Features:\n\nExtracts title, description, priority using regex patterns\nMaps Slack priorities (high/medium/low) to Jira format"
          },
          "typeVersion": 1
        },
        {
          "id": "618371b4-bf61-4a9e-b76a-8081716eef8c",
          "name": "Sticky Note11",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -896,
            2544
          ],
          "parameters": {
            "height": 352,
            "content": "Purpose: Monitors specific Slack channel for new messages\n\nFunction: Automatically triggers workflow when message posted\n\nUse Case: Captures issue reports from  channel.\n\nConfiguration: Listens for message events only\n\nOutput: Raw Slack message data with text, user, files, timestamps"
          },
          "typeVersion": 1
        },
        {
          "id": "bcabc988-0058-4e65-8e1e-cf7d32dacfec",
          "name": "Sticky Note12",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            848,
            2976
          ],
          "parameters": {
            "color": 4,
            "height": 224,
            "content": "Purpose: Sends confirmation message back to Slack\n\nFunction: Posts success notification in tickets channel\n\nUse Case: Confirms issue creation and provides Jira tracking info"
          },
          "typeVersion": 1
        },
        {
          "id": "31b4df31-3567-40b3-b44d-06a2f9e5abcd",
          "name": "Sticky Note13",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            96,
            2592
          ],
          "parameters": {
            "color": 3,
            "height": 288,
            "content": "Purpose: Splits multiple attachments into individual items for processing\n\nFunction: Loops through each attachment one by one\n\nUse Case: Handles multiple file uploads from Slack message\n\nOutput: Individual attachment items that can be processed sequentially"
          },
          "typeVersion": 1
        },
        {
          "id": "9c766474-c73f-4579-a938-e7a02e7e88e2",
          "name": "Sticky Note - Split Files",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            512,
            2512
          ],
          "parameters": {
            "color": 5,
            "height": 240,
            "content": "NEW: Splits all files into individual batches\n\nPurpose: Processes each attachment separately\n\nFunction: Takes files array and creates one execution per file\n\nBenefit: Enables uploading multiple attachments to Jira"
          },
          "typeVersion": 1
        },
        {
          "id": "df70376c-d7cd-48ae-a90d-f9ae05647257",
          "name": "Slack Trigger",
          "type": "n8n-nodes-base.slackTrigger",
          "position": [
            -720,
            2912
          ],
          "webhookId": "7cadf9c3-f927-4738-aa85-11fb035ffcf5",
          "parameters": {
            "options": {},
            "trigger": [
              "message"
            ],
            "channelId": {
              "__rl": true,
              "mode": "list",
              "value": "C09CVLMSF3R",
              "cachedResultName": "issue-smarteremr"
            }
          },
          "credentials": {
            "slackApi": {
              "id": "credential-id",
              "name": "slackApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "65a9703b-d356-442c-99a5-8d2351843374",
          "name": "Prepare Files for Processing",
          "type": "n8n-nodes-base.code",
          "position": [
            400,
            2784
          ],
          "parameters": {
            "jsCode": "// Extract files from Parse Message and prepare them for batch processing\nconst parseMessageData = $('Parse Message into Jira Format').first().json;\nconst jiraIssueData = $('Create Jira Issue').first().json;\n\nconsole.log('Parse Message Data:', JSON.stringify(parseMessageData, null, 2));\nconsole.log('Jira Issue Data:', JSON.stringify(jiraIssueData, null, 2));\n\n// Extract files from the attachments array (not files array)\nconst files = parseMessageData.attachments || [];\nconst jiraIssueKey = jiraIssueData.key;\n\nconsole.log(`Found ${files.length} files to process`);\nconsole.log('Jira Issue Key:', jiraIssueKey);\n\n// Return each file as a separate item with the Jira issue key\nconst items = files.map((file, index) => {\n  return {\n    fileId: file.id,\n    fileName: file.name || file.title || `file_${index}`,\n    fileUrl: file.url, // Use the url property from your attachments\n    jiraIssueKey: jiraIssueKey,\n    fileIndex: index,\n    totalFiles: files.length,\n    originalFile: file\n  };\n});\n\nconsole.log('Prepared items for batch processing:', JSON.stringify(items, null, 2));\n\nreturn items;"
          },
          "typeVersion": 2,
          "alwaysOutputData": true
        },
        {
          "id": "3b52b68f-beb7-4f72-a1db-439761d9235a",
          "name": "Split Files into Batches",
          "type": "n8n-nodes-base.splitInBatches",
          "position": [
            624,
            2784
          ],
          "parameters": {
            "options": {
              "reset": false
            }
          },
          "typeVersion": 3
        },
        {
          "id": "23c27f8e-283e-4247-9103-1cf5b8052801",
          "name": "Upload Attachment to Jira",
          "type": "n8n-nodes-base.jira",
          "position": [
            1296,
            2736
          ],
          "parameters": {
            "issueKey": "={{ $('Split Files into Batches').item.json.jiraIssueKey }}",
            "resource": "issueAttachment"
          },
          "credentials": {
            "jiraSoftwareCloudApi": {
              "id": "credential-id",
              "name": "jiraSoftwareCloudApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "749ae50d-dec2-4245-a560-24b689250fdc",
          "name": "checking message",
          "type": "n8n-nodes-base.if",
          "position": [
            -496,
            2912
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 2,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "0eb704ae-11e8-4588-a0fb-02b1f7c1cde7",
                  "operator": {
                    "type": "string",
                    "operation": "contains"
                  },
                  "leftValue": "={{ $json.text }}",
                  "rightValue": "title"
                }
              ]
            }
          },
          "typeVersion": 2.2
        },
        {
          "id": "e74b893a-4c33-4de3-bc1e-d82f2f792e7a",
          "name": "Reply to Channel On Slack",
          "type": "n8n-nodes-base.slack",
          "position": [
            848,
            2784
          ],
          "webhookId": "326747fc-4f09-4a30-9836-ead0ec1316c1",
          "parameters": {
            "text": "=✅ Jira Issue Created Successfully!\n\n🎫 Issue Key: https://herevivekpatidar.atlassian.net/browse/{{ $('Create Jira Issue').item.json.key }}\n\n📝 Title: {{ $('Parse Message into Jira Format').item.json.summary }} \n\n📝 Description:{{ $('Parse Message into Jira Format').item.json.extractedData.descriptionMatch }}\n\n📋 issueType: {{ $('Parse Message into Jira Format').item.json.issueTypeName }}\n\n⚡Priority: {{ $('Parse Message into Jira Format').item.json.priority }}\n\n📎 Attachments: {{ $('Parse Message into Jira Format').item.json.files.length }} file(s) uploaded\n\nThank you for reporting this issue!",
            "select": "channel",
            "channelId": {
              "__rl": true,
              "mode": "list",
              "value": "C09D7N4MXFF",
              "cachedResultName": "tickets"
            },
            "otherOptions": {}
          },
          "credentials": {
            "slackApi": {
              "id": "credential-id",
              "name": "slackApi Credential"
            }
          },
          "typeVersion": 2.1
        },
        {
          "id": "68fa2a54-85a5-42cb-99c1-3a6c398a7226",
          "name": "Parse Message into Jira Format",
          "type": "n8n-nodes-base.code",
          "position": [
            -272,
            2912
          ],
          "parameters": {
            "jsCode": "// Enhanced Parse Slack message - handles both plain text and rich text blocks\nconst message = $input.first().json;\nlet text = message.text || '';\nconst user = message.user || '';\nconst channel = message.channel || '';\nconst files = message.files || [];\nconst timestamp = message.ts || '';\nconst blocks = message.blocks || [];\n\nconsole.log('Original text length:', text.length);\nconsole.log('Blocks found:', blocks.length);\nconsole.log('Files found:', files.length);\n\n// Extract text from rich text blocks if available (this gives us complete text)\nif (blocks && blocks.length > 0) {\n  let richText = '';\n  \n  blocks.forEach(block => {\n    if (block.type === 'rich_text' && block.elements) {\n      block.elements.forEach(element => {\n        if (element.type === 'rich_text_section' && element.elements) {\n          element.elements.forEach(textElement => {\n            if (textElement.type === 'text') {\n              richText += textElement.text || '';\n            }\n          });\n        } else if (element.type === 'rich_text_list' && element.elements) {\n          // Handle bullet points and lists\n          element.elements.forEach(listItem => {\n            if (listItem.elements) {\n              richText += '\\n• ';\n              listItem.elements.forEach(listTextElement => {\n                if (listTextElement.type === 'text') {\n                  richText += listTextElement.text || '';\n                }\n              });\n            }\n          });\n        }\n      });\n    }\n  });\n  \n  // Use rich text if it's longer and contains more content\n  if (richText.length > text.length) {\n    console.log('Using rich text content (length:', richText.length, ')');\n    text = richText;\n  }\n}\n\nconsole.log('Final text length:', text.length);\nconsole.log('Text preview:', text.substring(0, 200) + '...');\n\n// Log file details for debugging\nfiles.forEach((file, index) => {\n  console.log(`File ${index}:`, {\n    id: file.id,\n    name: file.name,\n    mimetype: file.mimetype,\n    size: file.size,\n    filetype: file.filetype\n  });\n});\n\n// Robust regex patterns for title*:* format with flexible spacing\nconst titleMatch = text.match(/title\\s*\\*?\\s*:\\s*\\*?\\s*([^\\n]*?)(?=\\s*(?:\\n|$))/i);\n\n// For description, capture everything after description*:* until we hit priority: or type:\nconst descriptionMatch = text.match(/description\\s*\\*?\\s*:\\s*\\*?\\s*([\\s\\S]*?)(?=\\s*priority\\s*\\*?\\s*:\\s*\\*?|$)/i);\n\n// Priority - capture just the value after priority:\nconst priorityMatch = text.match(/priority\\s*\\*?\\s*:\\s*\\*?\\s*([^\\n]*?)(?=\\s*(?:\\n|$))/i);\n\n// Type - capture just the value after type:\nconst typeMatch = text.match(/type\\s*\\*?\\s*:\\s*\\*?\\s*([^\\n]*?)(?=\\s*(?:\\n|$))/i);\n\n// Enhanced text cleaning function\nconst cleanText = (str) => {\n  if (!str) return null;\n  \n  return str\n    .replace(/^\\s*[\\*_\\-\\+=]*\\s*/, '') // Remove leading special characters\n    .replace(/\\s*[\\*_\\-\\+=]*\\s*$/, '') // Remove trailing special characters\n    .replace(/\\*+/g, '') // Remove asterisks\n    .replace(/_{2,}/g, '') // Remove multiple underscores\n    .replace(/^\\s+/gm, '') // Remove leading whitespace from lines\n    .replace(/\\s+$/gm, '') // Remove trailing whitespace from lines\n    .replace(/\\n\\s*\\n+/g, '\\n\\n') // Normalize multiple newlines\n    .trim();\n};\n\n// Clean and extract values\nconst extractedTitle = titleMatch ? cleanText(titleMatch[1]) : null;\nconst extractedDescription = descriptionMatch ? cleanText(descriptionMatch[1]) : null;\nconst extractedPriority = priorityMatch ? cleanText(priorityMatch[1]) : null;\nconst extractedType = typeMatch ? cleanText(typeMatch[1]) : null;\n\n// Enhanced logging\nconsole.log('=== EXTRACTION RESULTS ===');\nconsole.log('Title match:', !!titleMatch, '- Value:', extractedTitle);\nconsole.log('Description match:', !!descriptionMatch, '- Length:', extractedDescription ? extractedDescription.length : 0);\nconsole.log('Priority match:', !!priorityMatch, '- Value:', extractedPriority);\nconsole.log('Type match:', !!typeMatch, '- Value:', extractedType);\n\n// Smart fallback logic\nconst summary = (extractedTitle && extractedTitle.length > 3) ? \n               extractedTitle : 'Issue reported from Slack';\n\nconst description = (extractedDescription && extractedDescription.length > 5) ? \n                   extractedDescription : 'No description provided';\n\n// Enhanced priority parsing\nconst determinePriority = (priorityText) => {\n  if (!priorityText) return 'medium';\n  \n  const lowerPriority = priorityText.toLowerCase().trim();\n  const cleanPriority = lowerPriority.replace(/[^\\w\\s]/g, '').trim();\n  \n  if (['critical', 'urgent', 'highest', 'blocker'].includes(cleanPriority)) return 'critical';\n  if (['high'].includes(cleanPriority)) return 'high';\n  if (['medium', 'med', 'normal', 'moderate'].includes(cleanPriority)) return 'medium';\n  if (['low', 'lowest', 'minor'].includes(cleanPriority)) return 'low';\n  \n  if (cleanPriority.includes('critical') || cleanPriority.includes('urgent')) return 'critical';\n  if (cleanPriority.includes('high')) return 'high';\n  if (cleanPriority.includes('low')) return 'low';\n  \n  return 'medium';\n};\n\n// Enhanced issue type parsing\nconst determineIssueType = (typeText) => {\n  if (!typeText) return 'enhancement';\n  \n  const lowerType = typeText.toLowerCase().trim();\n  const cleanType = lowerType.replace(/[^\\w\\s]/g, '').trim();\n  \n  const typeMapping = {\n    'bug': 'bug', 'issue': 'bug', 'defect': 'bug', 'error': 'bug', 'problem': 'bug',\n    'feature': 'feature', 'story': 'feature', 'request': 'feature', 'new': 'feature',\n    'enhancement': 'enhancement', 'improvement': 'enhancement', 'modify': 'enhancement', \n    'change': 'enhancement', 'update': 'enhancement', 'enhance': 'enhancement',\n    'task': 'task', 'todo': 'task', 'work': 'task', 'chore': 'task',\n    'epic': 'epic'\n  };\n  \n  if (typeMapping[cleanType]) return typeMapping[cleanType];\n  \n  for (const [key, value] of Object.entries(typeMapping)) {\n    if (cleanType.includes(key)) return value;\n  }\n  \n  return 'enhancement';\n};\n\nconst priority = determinePriority(extractedPriority);\nconst issueType = determineIssueType(extractedType);\n\n// Map to Jira values with IDs\nconst priorityMapping = {\n  'critical': { name: 'Highest', id: '1' },\n  'high': { name: 'High', id: '2' },\n  'medium': { name: 'Medium', id: '3' },\n  'low': { name: 'Low', id: '4' }\n};\nconst jiraPriorityObj = priorityMapping[priority] || priorityMapping['medium'];\nconst jiraPriority = jiraPriorityObj.name;\nconst jiraPriorityId = jiraPriorityObj.id;\n\nconst issueTypeMapping = {\n  'bug': '10041',\n  'feature': '10004',\n  'enhancement': '10008',\n  'task': '10008',\n  'epic': '10000'\n};\nconst jiraIssueType = issueTypeMapping[issueType] || '10008';\n\n// Enhanced file processing\nconst attachments = files.map(file => {\n  let downloadUrl = null;\n  \n  if (file.url_private_download && file.url_private_download.startsWith('https://')) {\n    downloadUrl = file.url_private_download;\n  } else if (file.url_private && file.url_private.startsWith('https://')) {\n    downloadUrl = file.url_private;\n  } else if (file.permalink && file.permalink.startsWith('https://')) {\n    downloadUrl = file.permalink;\n  } else if (file.url_download && file.url_download.startsWith('https://')) {\n    downloadUrl = file.url_download;\n  }\n  \n  const isVideo = file.mimetype && file.mimetype.startsWith('video/') || \n                  ['mp4', 'avi', 'mov', 'wmv', 'flv', 'webm', 'mkv'].includes(file.filetype?.toLowerCase());\n  const isLargeFile = file.size && file.size > 10485760;\n  \n  return {\n    id: file.id || 'unknown',\n    name: file.name || file.title || 'unnamed_file',\n    url: downloadUrl,\n    size: file.size || 0,\n    mimetype: file.mimetype || 'application/octet-stream',\n    filetype: file.filetype || 'unknown',\n    isVideo: isVideo,\n    isLargeFile: isLargeFile,\n    sizeFormatted: file.size ? `${(file.size / 1024 / 1024).toFixed(2)} MB` : 'Unknown size'\n  };\n}).filter(att => att.url);\n\n// Create clean Jira description\nlet jiraDescription = '';\n\nif (extractedDescription) {\n  jiraDescription = extractedDescription + '\\n\\n';\n}\n\n// Add metadata\njiraDescription += `**Reported by:** <@${user}>\\n`;\njiraDescription += `**Channel:** <#${channel}>\\n`;\njiraDescription += `**Timestamp:** ${new Date(parseFloat(timestamp) * 1000).toISOString()}`;\n\n// Add attachments info if present\nif (attachments.length > 0) {\n  jiraDescription += '\\n\\n**Attachments:**\\n';\n  attachments.forEach((att, index) => {\n    jiraDescription += `${index + 1}. ${att.name} (${att.sizeFormatted})`;\n    if (att.isVideo) jiraDescription += ' [VIDEO]';\n    if (att.isLargeFile) jiraDescription += ' [LARGE FILE]';\n    jiraDescription += '\\n';\n  });\n}\n\nreturn {\n  summary,\n  description: jiraDescription,\n  priority: jiraPriority,\n  priorityId: jiraPriorityId,\n  issueType: jiraIssueType,\n  issueTypeName: issueType,\n  reporter: user,\n  attachments,\n  originalText: text,\n  \n  // Clear extraction results\n  extractedData: {\n    titleMatch: extractedTitle,\n    descriptionMatch: extractedDescription,\n    priorityMatch: extractedPriority,\n    typeMatch: extractedType,\n    \n    // Debugging info\n    parsing: {\n      titleFound: !!titleMatch,\n      descriptionFound: !!descriptionMatch,\n      priorityFound: !!priorityMatch,\n      typeFound: !!typeMatch,\n      titleLength: extractedTitle ? extractedTitle.length : 0,\n      descriptionLength: extractedDescription ? extractedDescription.length : 0,\n      usedRichText: blocks.length > 0\n    }\n  },\n  \n  files: {\n    totalFiles: files.length,\n    validAttachments: attachments.length,\n    videoFiles: attachments.filter(att => att.isVideo).length,\n    largeFiles: attachments.filter(att => att.isLargeFile).length,\n    attachmentDetails: attachments.map(att => ({\n      name: att.name,\n      size: att.sizeFormatted,\n      type: att.filetype,\n      isVideo: att.isVideo,\n      isLarge: att.isLargeFile\n    }))\n  }\n};"
          },
          "typeVersion": 2
        },
        {
          "id": "a16fadd8-597b-4791-9737-14a22a578d55",
          "name": "Create Jira Issue",
          "type": "n8n-nodes-base.jira",
          "position": [
            -48,
            2912
          ],
          "parameters": {
            "project": {
              "__rl": true,
              "mode": "list",
              "value": "10001",
              "cachedResultName": "Kanban"
            },
            "summary": "={{ $('Parse Message into Jira Format').item.json.summary }}",
            "issueType": {
              "__rl": true,
              "mode": "list",
              "value": "10006",
              "cachedResultName": "Task"
            },
            "additionalFields": {
              "assignee": {
                "__rl": true,
                "mode": "list",
                "value": "712020:d36fa274-fdb6-45c4-a2c5-8c53a89342d4",
                "cachedResultName": "Vivek Patidar"
              },
              "reporter": {
                "__rl": true,
                "mode": "list",
                "value": "712020:d36fa274-fdb6-45c4-a2c5-8c53a89342d4",
                "cachedResultName": "Vivek Patidar"
              },
              "description": "={{ $('Parse Message into Jira Format').item.json.extractedData.descriptionMatch }}"
            }
          },
          "credentials": {
            "jiraSoftwareCloudApi": {
              "id": "credential-id",
              "name": "jiraSoftwareCloudApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "a543ed0b-81a9-4391-a239-82d6d5b06cc1",
          "name": "Check Attachments",
          "type": "n8n-nodes-base.if",
          "position": [
            176,
            2912
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 1,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "condition1",
                  "operator": {
                    "type": "number",
                    "operation": "gt"
                  },
                  "leftValue": "={{ $('Parse Message into Jira Format').item.json.files.totalFiles }}",
                  "rightValue": 0
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "cbe776cf-6812-43d0-a9d3-034688b23f98",
          "name": "Get File Info",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            848,
            2592
          ],
          "parameters": {
            "url": "=https://slack.com/api/files.info?file={{ $json.fileId }}",
            "options": {},
            "sendHeaders": true,
            "headerParameters": {
              "parameters": [
                {
                  "name": "Authorization",
                  "value": "=Bearer {{$credentials.slackApi.accessToken}}"
                }
              ]
            }
          },
          "typeVersion": 4.1
        },
        {
          "id": "29408946-d34e-46d6-90fc-50e8477e8f2f",
          "name": "Download Attachment",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            1072,
            2592
          ],
          "parameters": {
            "url": "={{ $json.file.url_private_download }}",
            "options": {
              "response": {
                "response": {
                  "responseFormat": "file"
                }
              }
            },
            "sendHeaders": true,
            "headerParameters": {
              "parameters": [
                {
                  "name": "Authorization",
                  "value": "=Bearer {{$credentials.slackApi.accessToken}}"
                }
              ]
            }
          },
          "typeVersion": 4.1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "9d97b85d-0648-470a-8c5a-ed257f4ac92d",
      "connections": {
        "Get File Info": {
          "main": [
            [
              {
                "node": "Download Attachment",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Slack Trigger": {
          "main": [
            [
              {
                "node": "checking message",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "checking message": {
          "main": [
            [
              {
                "node": "Parse Message into Jira Format",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Check Attachments": {
          "main": [
            [
              {
                "node": "Prepare Files for Processing",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Reply to Channel On Slack",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Create Jira Issue": {
          "main": [
            [
              {
                "node": "Check Attachments",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Download Attachment": {
          "main": [
            [
              {
                "node": "Upload Attachment to Jira",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Split Files into Batches": {
          "main": [
            [
              {
                "node": "Reply to Channel On Slack",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Get File Info",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Upload Attachment to Jira": {
          "main": [
            [
              {
                "node": "Split Files into Batches",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Prepare Files for Processing": {
          "main": [
            [
              {
                "node": "Split Files into Batches",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Parse Message into Jira Format": {
          "main": [
            [
              {
                "node": "Create Jira Issue",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 1,
    "workflowInfo": {
      "nodeCount": 19,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 2
        },
        "n8n-nodes-base.code": {
          "count": 2
        },
        "n8n-nodes-base.jira": {
          "count": 2
        },
        "n8n-nodes-base.slack": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 8
        },
        "n8n-nodes-base.httpRequest": {
          "count": 2
        },
        "n8n-nodes-base.slackTrigger": {
          "count": 1
        },
        "n8n-nodes-base.splitInBatches": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Rahul Joshi",
      "username": "rahul08",
      "bio": "Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.\n\n",
      "verified": true,
      "links": [
        "https://www.linkedin.com/in/callrahul/"
      ],
      "avatar": "https://gravatar.com/avatar/b6cf57822463143589b36ada06fbf6cb1509223a740fae3160b28f1ce41ccc12?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "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": 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": 40,
        "icon": "file:slack.svg",
        "name": "n8n-nodes-base.slack",
        "codex": {
          "data": {
            "alias": [
              "human",
              "form",
              "wait",
              "hitl",
              "approval"
            ],
            "resources": {
              "generic": [
                {
                  "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/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/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"
                },
                {
                  "url": "https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/",
                  "icon": "👏",
                  "label": "How to automatically give kudos to contributors with GitHub, Slack, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/automations-for-activists/",
                  "icon": "✨",
                  "label": "How Common Knowledge use workflow automation for activism"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/slack/"
                }
              ]
            },
            "categories": [
              "Communication",
              "HITL"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "HITL": [
                "Human in the Loop"
              ]
            }
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "Slack"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"
        },
        "displayName": "Slack",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          },
          {
            "id": 28,
            "name": "HITL"
          }
        ]
      },
      {
        "id": 77,
        "icon": "file:jira.svg",
        "name": "n8n-nodes-base.jira",
        "codex": {
          "data": {
            "resources": {
              "generic": [
                {
                  "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/creating-custom-incident-response-workflows-with-n8n/",
                  "label": "How to automate every step of an incident response workflow"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.jira/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/jira/"
                }
              ]
            },
            "categories": [
              "Development",
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "Jira Software"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjguMjUgNzEuMjUiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMuMTI1IiB5PSIzLjEyNSIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9IjkxLjklIiB4Mj0iMjguNDklIiB5MT0iNDAuMjIlIiB5Mj0iODEuNjMlIj48c3RvcCBvZmZzZXQ9IjE4JSIgc3RvcC1jb2xvcj0iIzAwNTJjYyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzI2ODRmZiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJjIiB4MT0iOC43JSIgeDI9IjcyLjI2JSIgeTE9IjU5LjE3JSIgeTI9IjE3Ljk5JSI+PHN0b3Agb2Zmc2V0PSIxOCUiIHN0b3AtY29sb3I9IiMwMDUyY2MiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMyNjg0ZmYiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48c3ltYm9sIGlkPSJhIiBvdmVyZmxvdz0idmlzaWJsZSI+PGcgZmlsbC1ydWxlPSJub256ZXJvIiBzdHJva2U9Im5vbmUiPjxwYXRoIGZpbGw9IiMyNjg0ZmYiIGQ9Ik02MS4xNjEgMzAuMjExIDMwLjk1IDAgLjc0IDMwLjIxMWEyLjU0IDIuNTQgMCAwIDAgMCAzLjU4MWwzMC4yMTEgMzAuMjEgMzAuMjExLTMwLjIxYTIuNTQgMi41NCAwIDAgMCAwLTMuNTgxek0zMC45NSA0MS40NmwtOS40NjItOS40NjIgOS40NjItOS40NjIgOS40NjIgOS40NjJ6Ii8+PHBhdGggZmlsbD0idXJsKCNiKSIgZD0iTTMwLjk1IDIyLjU5OUMyNC43NTUgMTYuNDA1IDI0LjcyNCA2LjM3IDMwLjg4MS4xMzhMMTAuMTE0IDIwLjc3NGwxMS4yNjggMTEuMjY4eiIvPjxwYXRoIGZpbGw9InVybCgjYykiIGQ9Ik00MC40MzcgMzEuOTczIDMwLjk1IDQxLjQ2YTE1LjkzIDE1LjkzIDAgMCAxIDAgMjIuNTM2bDIwLjc0OS0yMC43NDl6Ii8+PC9nPjwvc3ltYm9sPjwvc3ZnPg=="
        },
        "displayName": "Jira Software",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 4,
            "name": "Productivity"
          },
          {
            "id": 5,
            "name": "Development"
          }
        ]
      },
      {
        "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": 1264,
        "icon": "file:slack.svg",
        "name": "n8n-nodes-base.slackTrigger",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.slacktrigger/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/slack/"
                }
              ]
            },
            "categories": [
              "Communication"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "Slack Trigger"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"
        },
        "displayName": "Slack Trigger",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 39,
        "name": "CRM"
      }
    ],
    "image": []
  }
}