{"workflow":{"id":10594,"name":"Manage vulnerabilities end-to-end with GPT-4, Jira, Slack and Google Sheets","views":31,"recentViews":0,"totalViews":31,"createdAt":"2025-11-07T12:28:17.530Z","description":"Automates the full vulnerability lifecycle — from scheduled scanning and data aggregation to intelligent prioritization, ticket creation, real-time alerting, weekly reporting, and centralized tracking. Ensures critical vulnerabilities are patched quickly while maintaining audit-ready logs and executive visibility.\n\n### How it works\n\n1. **Dual Trigger** - Scheduled daily scans at 6 AM + on-demand webhook for emergency scans\n2. **Multi-Scanner Aggregation** - Pulls findings from Nessus, Qualys, and custom scanner APIs in parallel\n3. **Normalize & Deduplicate** - Unifies scan results into a standard CVE schema, removes duplicates\n4. **GPT-4 Risk Prioritization** - AI enriches each vuln with exploitability context, business impact, and remediation urgency\n5. **Severity Gate** - Routes Critical/High vulns to expedited track; Medium/Low to standard queue\n6. **Jira Ticket Creation** - Auto-creates structured remediation tickets with SLA-based due dates\n7. **Real-Time Alerting** - Sends Slack alerts for Critical vulns and email digests for High findings\n8. **Patch Verification** - Checks remediation status against scanner re-scan results\n9. **Weekly Executive Report** - Generates CISO-ready KPI summary and sends to leadership\n10. **Audit Log** - Writes immutable compliance log to Google Sheets for SOC2/ISO 27001\n\n### Setup Steps\n\n1. Import workflow into n8n\n2. Configure credentials:\n   - **OpenAI API** — GPT-4o for risk prioritization\n   - **Jira API** — Ticket creation and tracking\n   - **Slack** — Critical vulnerability alerts\n   - **Google Sheets** — Vulnerability registry and audit log\n   - **SMTP / Gmail** — Executive and team email reports\n3. Set your scanner API endpoints and tokens in aggregation nodes\n4. Configure Jira project key and SLA thresholds\n5. Set Slack channel IDs for security team alerts\n6. Schedule weekly report trigger to your preferred day/time\n7. Activate both the scheduled and webhook triggers\n\n### CVE Severity SLA Targets\n- 🔴 **CRITICAL (CVSS 9.0–10.0)** — Patch within 24 hours\n- 🟠 **HIGH (CVSS 7.0–8.9)** — Patch within 7 days\n- 🟡 **MEDIUM (CVSS 4.0–6.9)** — Patch within 30 days\n- 🟢 **LOW (CVSS 0.1–3.9)** — Patch within 90 days\n\n### Sample Scanner Payload (Nessus)\n```json\n{\n  \"scanId\": \"SCAN-2025-0042\",\n  \"scanner\": \"nessus\",\n  \"targetHost\": \"192.168.1.105\",\n  \"hostName\": \"prod-db-01\",\n  \"cveId\": \"CVE-2024-21413\",\n  \"cvssScore\": 9.8,\n  \"pluginId\": \"212105\",\n  \"description\": \"Microsoft Outlook RCE vulnerability\"\n}\n```\n\n### Features\n- **Multi-scanner normalization** — Nessus, Qualys, and custom scanners unified\n- **AI-powered exploit context** — GPT-4 adds CISA KEV status, weaponization likelihood\n- **SLA-driven Jira tickets** — auto-assigns, sets due dates, links CVE details\n- **Executive KPI dashboard** — weekly metrics: MTTD, MTTR, patch compliance rate\n- **Audit-ready log** — every vuln tracked from detection to closure","workflow":{"id":"ofae32o3DH2ZXfYs","meta":{"instanceId":"dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281","templateCredsSetupCompleted":true},"name":"Cybersecurity Vulnerability Management System with GPT-4 AI","tags":[],"nodes":[{"id":"d8c55c54-efca-44dc-9584-abe4cb9f1efd","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[0,0],"parameters":{"width":780,"height":1400,"content":"## Cybersecurity Vulnerability Management System with GPT-4 AI\n\nAutomates the full vulnerability lifecycle — from scheduled scanning and data aggregation to intelligent prioritization, ticket creation, real-time alerting, weekly reporting, and centralized tracking. Ensures critical vulnerabilities are patched quickly while maintaining audit-ready logs and executive visibility.\n\n### How it works\n\n1. **Dual Trigger** - Scheduled daily scans at 6 AM + on-demand webhook for emergency scans\n2. **Multi-Scanner Aggregation** - Pulls findings from Nessus, Qualys, and custom scanner APIs in parallel\n3. **Normalize & Deduplicate** - Unifies scan results into a standard CVE schema, removes duplicates\n4. **GPT-4 Risk Prioritization** - AI enriches each vuln with exploitability context, business impact, and remediation urgency\n5. **Severity Gate** - Routes Critical/High vulns to expedited track; Medium/Low to standard queue\n6. **Jira Ticket Creation** - Auto-creates structured remediation tickets with SLA-based due dates\n7. **Real-Time Alerting** - Sends Slack alerts for Critical vulns and email digests for High findings\n8. **Patch Verification** - Checks remediation status against scanner re-scan results\n9. **Weekly Executive Report** - Generates CISO-ready KPI summary and sends to leadership\n10. **Audit Log** - Writes immutable compliance log to Google Sheets for SOC2/ISO 27001\n\n### Setup Steps\n\n1. Import workflow into n8n\n2. Configure credentials:\n   - **OpenAI API** — GPT-4o for risk prioritization\n   - **Jira API** — Ticket creation and tracking\n   - **Slack** — Critical vulnerability alerts\n   - **Google Sheets** — Vulnerability registry and audit log\n   - **SMTP / Gmail** — Executive and team email reports\n3. Set your scanner API endpoints and tokens in aggregation nodes\n4. Configure Jira project key and SLA thresholds\n5. Set Slack channel IDs for security team alerts\n6. Schedule weekly report trigger to your preferred day/time\n7. Activate both the scheduled and webhook triggers\n\n### CVE Severity SLA Targets\n- 🔴 **CRITICAL (CVSS 9.0–10.0)** — Patch within 24 hours\n- 🟠 **HIGH (CVSS 7.0–8.9)** — Patch within 7 days\n- 🟡 **MEDIUM (CVSS 4.0–6.9)** — Patch within 30 days\n- 🟢 **LOW (CVSS 0.1–3.9)** — Patch within 90 days\n\n### Sample Scanner Payload (Nessus)\n```json\n{\n  \"scanId\": \"SCAN-2025-0042\",\n  \"scanner\": \"nessus\",\n  \"targetHost\": \"192.168.1.105\",\n  \"hostName\": \"prod-db-01\",\n  \"cveId\": \"CVE-2024-21413\",\n  \"cvssScore\": 9.8,\n  \"pluginId\": \"212105\",\n  \"description\": \"Microsoft Outlook RCE vulnerability\"\n}\n```\n\n### Features\n- **Multi-scanner normalization** — Nessus, Qualys, and custom scanners unified\n- **AI-powered exploit context** — GPT-4 adds CISA KEV status, weaponization likelihood\n- **SLA-driven Jira tickets** — auto-assigns, sets due dates, links CVE details\n- **Executive KPI dashboard** — weekly metrics: MTTD, MTTR, patch compliance rate\n- **Audit-ready log** — every vuln tracked from detection to closure"},"typeVersion":1},{"id":"ea074a48-e8a1-46d0-b5f8-7576723a096b","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[804,712],"parameters":{"color":4,"width":424,"height":488,"content":"## 1. Trigger & Multi-Scanner Aggregation"},"typeVersion":1},{"id":"d5725697-60f4-43d5-bb96-4e985ccc3136","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1280,624],"parameters":{"color":4,"width":604,"height":684,"content":"## 2. Normalize, Dedup & GPT-4 Risk Prioritization"},"typeVersion":1},{"id":"47311611-cd01-4e4d-86af-7253c7293a24","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1936,624],"parameters":{"color":4,"width":720,"height":732,"content":"## 3. Severity Routing, Ticketing & Real-Time Alerting"},"typeVersion":1},{"id":"c34c7c58-ce67-4a97-bee9-aa1ef897535b","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[2704,544],"parameters":{"color":4,"width":972,"height":796,"content":"## 4. Patch Verification, Weekly Reporting & Audit Log"},"typeVersion":1},{"id":"91069cf6-319d-40d3-901d-5e74b91411fd","name":"Daily Scan Schedule — 6 AM","type":"n8n-nodes-base.scheduleTrigger","position":[848,832],"parameters":{"rule":{"interval":[{"field":"cronExpression","expression":"0 6 * * *"}]}},"typeVersion":1.2},{"id":"4e0ec674-f5c1-4780-9bd8-992d5fb4a9e1","name":"On-Demand Emergency Scan Webhook","type":"n8n-nodes-base.webhook","position":[848,1024],"webhookId":"vuln-emergency-scan","parameters":{"path":"vuln-scan","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":2},{"id":"e9229d14-955f-4f9e-b4b4-4cf0beeeaede","name":"Merge Scan Triggers","type":"n8n-nodes-base.merge","position":[1072,880],"parameters":{"mode":"mergeByPosition"},"typeVersion":3},{"id":"e6cb5d11-ab5a-436a-b4b5-03ea4c37db13","name":"Build Scan Context","type":"n8n-nodes-base.code","position":[1296,880],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Build a unified scan session context from either trigger\nconst body = $input.item.json?.body || $input.item.json || {};\n\nconst scanSession = {\n  scanSessionId: `VSCAN-${Date.now()}-${Math.random().toString(36).substr(2, 8).toUpperCase()}`,\n  scanType: body.scanType || 'scheduled',\n  priority: body.priority || 'normal',\n  requestedBy: body.requestedBy || 'scheduler',\n  targetScope: body.targetScope || 'all',\n  targetHosts: body.targetHosts || [],\n  includeScanners: body.includeScanners || ['nessus', 'qualys', 'custom'],\n  minCvssThreshold: parseFloat(body.minCvssThreshold) || 0.0,\n  initiatedAt: new Date().toISOString(),\n  environment: body.environment || 'production'\n};\n\nreturn { json: { scanSession } };"},"typeVersion":2},{"id":"696a0df6-9c68-4ffb-8358-6b23eb0ef20f","name":"Fetch Nessus Scan Results","type":"n8n-nodes-base.httpRequest","position":[1520,736],"parameters":{"url":"https://YOUR_NESSUS_HOST:8834/scans/latest/export","options":{"timeout":30000},"sendQuery":true,"sendHeaders":true,"queryParameters":{"parameters":[{"name":"limit","value":"500"},{"name":"severity","value":"critical,high,medium,low"}]},"headerParameters":{"parameters":[{"name":"X-ApiKeys","value":"accessKey=YOUR_NESSUS_ACCESS_KEY; secretKey=YOUR_NESSUS_SECRET_KEY"},{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.2,"continueOnFail":true},{"id":"61dacc7c-1bb1-421e-86a1-1535842acee3","name":"Fetch Qualys Scan Results","type":"n8n-nodes-base.httpRequest","position":[1520,928],"parameters":{"url":"https://qualysapi.qualys.com/api/2.0/fo/asset/host/vm/detection/","method":"POST","options":{"timeout":30000},"sendBody":true,"sendHeaders":true,"specifyBody":"formUrlEncoded","headerParameters":{"parameters":[{"name":"X-Requested-With","value":"n8n-vuln-mgmt"},{"name":"Authorization","value":"Basic YOUR_QUALYS_BASE64_CREDENTIALS"}]}},"typeVersion":4.2,"continueOnFail":true},{"id":"d42250d1-7bbf-4396-8ea5-20598fcc41f8","name":"Fetch Custom Scanner Results","type":"n8n-nodes-base.httpRequest","position":[1520,1120],"parameters":{"url":"https://YOUR_CUSTOM_SCANNER_API/v1/vulnerabilities","options":{"timeout":20000},"sendQuery":true,"sendHeaders":true,"queryParameters":{"parameters":[{"name":"status","value":"open"},{"name":"limit","value":"500"}]},"headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer YOUR_TOKEN_HERE"},{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.2,"continueOnFail":true},{"id":"814df596-4fd8-45ae-bacc-1f6b5883e2ff","name":"Normalize and Deduplicate Findings","type":"n8n-nodes-base.code","position":[1744,880],"parameters":{"jsCode":"const scanSession = $('Build Scan Context').first().json.scanSession;\nconst nessusRaw = $('Fetch Nessus Scan Results').all().map(i => i.json);\nconst qualysRaw = $('Fetch Qualys Scan Results').all().map(i => i.json);\nconst customRaw = $('Fetch Custom Scanner Results').all().map(i => i.json);\n\n// ---- Normalize Nessus findings ----\nconst nessusFindings = (nessusRaw[0]?.vulnerabilities || nessusRaw[0]?.findings || []).map(v => ({\n  source: 'nessus',\n  cveId: v.cve || v.cveId || v.plugin_id || 'NO-CVE',\n  pluginId: v.plugin_id || v.pluginId || null,\n  hostIp: v.host_ip || v.ip || 'unknown',\n  hostName: v.hostname || v.hostName || v.host_ip || 'unknown',\n  port: v.port || null,\n  protocol: v.protocol || null,\n  cvssScore: parseFloat(v.cvss_base_score || v.cvssScore || v.severity_index || 0),\n  cvssVector: v.cvss_vector || null,\n  severity: v.severity || (v.cvss_base_score >= 9 ? 'CRITICAL' : v.cvss_base_score >= 7 ? 'HIGH' : v.cvss_base_score >= 4 ? 'MEDIUM' : 'LOW'),\n  title: v.plugin_name || v.title || v.description || 'Unknown Vulnerability',\n  description: v.description || v.synopsis || '',\n  solution: v.solution || '',\n  firstSeen: v.first_seen || new Date().toISOString(),\n  lastSeen: v.last_seen || new Date().toISOString(),\n  assetCriticality: v.asset_criticality || 'medium'\n}));\n\n// ---- Normalize Qualys findings ----\nconst qualysFindings = (qualysRaw[0]?.HOST_LIST?.HOST || []).flatMap(host => {\n  const detections = host.DETECTION_LIST?.DETECTION || [];\n  return (Array.isArray(detections) ? detections : [detections]).map(d => ({\n    source: 'qualys',\n    cveId: d.CVE_LIST?.CVE?.[0]?.ID || d.QID || 'NO-CVE',\n    pluginId: d.QID || null,\n    hostIp: host.IP || 'unknown',\n    hostName: host.DNS || host.IP || 'unknown',\n    port: d.PORT || null,\n    protocol: d.PROTOCOL || null,\n    cvssScore: parseFloat(d.CVSS_FINAL || d.CVSS3_FINAL || 0),\n    cvssVector: null,\n    severity: d.SEVERITY === '5' ? 'CRITICAL' : d.SEVERITY === '4' ? 'HIGH' : d.SEVERITY === '3' ? 'MEDIUM' : 'LOW',\n    title: d.RESULTS || 'Qualys Finding',\n    description: d.RESULTS || '',\n    solution: '',\n    firstSeen: d.FIRST_FOUND_DATETIME || new Date().toISOString(),\n    lastSeen: d.LAST_FOUND_DATETIME || new Date().toISOString(),\n    assetCriticality: 'medium'\n  }));\n});\n\n// ---- Normalize Custom scanner findings ----\nconst customFindings = (customRaw[0]?.data || customRaw[0]?.vulnerabilities || customRaw || []).map(v => ({\n  source: 'custom',\n  cveId: v.cveId || v.cve_id || v.identifier || 'NO-CVE',\n  pluginId: v.checkId || v.pluginId || null,\n  hostIp: v.hostIp || v.ip_address || 'unknown',\n  hostName: v.hostName || v.hostname || 'unknown',\n  port: v.port || null,\n  protocol: v.protocol || null,\n  cvssScore: parseFloat(v.cvssScore || v.cvss || 0),\n  cvssVector: v.cvssVector || null,\n  severity: v.severity?.toUpperCase() || 'LOW',\n  title: v.title || v.name || 'Custom Finding',\n  description: v.description || '',\n  solution: v.remediation || v.solution || '',\n  firstSeen: v.firstDetected || new Date().toISOString(),\n  lastSeen: v.lastDetected || new Date().toISOString(),\n  assetCriticality: v.assetCriticality || 'medium'\n}));\n\n// ---- Merge all ----\nconst allFindings = [...nessusFindings, ...qualysFindings, ...customFindings];\n\n// ---- Deduplicate by cveId + hostIp ----\nconst seen = new Set();\nconst deduped = allFindings.filter(f => {\n  const key = `${f.cveId}::${f.hostIp}::${f.port || 'any'}`;\n  if (seen.has(key)) return false;\n  seen.add(key);\n  return true;\n});\n\n// ---- Apply CVSS severity normalization ----\nconst normalized = deduped.map(f => {\n  const score = f.cvssScore;\n  const severity = score >= 9.0 ? 'CRITICAL' : score >= 7.0 ? 'HIGH' : score >= 4.0 ? 'MEDIUM' : 'LOW';\n  return {\n    ...f,\n    severity,\n    vulnId: `VID-${Date.now()}-${Math.random().toString(36).substr(2, 6).toUpperCase()}`,\n    scanSessionId: scanSession.scanSessionId,\n    detectedAt: new Date().toISOString(),\n    status: 'OPEN'\n  };\n});\n\n// Filter by configured threshold\nconst filtered = normalized.filter(f => f.cvssScore >= scanSession.minCvssThreshold);\n\nconst stats = {\n  total: filtered.length,\n  critical: filtered.filter(f => f.severity === 'CRITICAL').length,\n  high: filtered.filter(f => f.severity === 'HIGH').length,\n  medium: filtered.filter(f => f.severity === 'MEDIUM').length,\n  low: filtered.filter(f => f.severity === 'LOW').length,\n  fromNessus: nessusFindings.length,\n  fromQualys: qualysFindings.length,\n  fromCustom: customFindings.length,\n  duplicatesRemoved: allFindings.length - deduped.length\n};\n\nreturn filtered.map(vuln => ({ json: { scanSession, vuln, stats } }));"},"typeVersion":2},{"id":"9bc2b04c-de46-4686-acb4-64d92bfc794a","name":"GPT-4 AI Risk Prioritization","type":"@n8n/n8n-nodes-langchain.agent","position":[1968,880],"parameters":{"text":"=You are a senior offensive security researcher and vulnerability risk analyst with expertise in CVE analysis, CVSS scoring, CISA KEV tracking, and enterprise risk management.\n\nAnalyze this vulnerability finding and provide an AI-enriched risk prioritization assessment.\n\n**Vulnerability Details:**\n- CVE ID: {{ $json.vuln.cveId }}\n- Title: {{ $json.vuln.title }}\n- Description: {{ $json.vuln.description }}\n- CVSS Score: {{ $json.vuln.cvssScore }}\n- CVSS Vector: {{ $json.vuln.cvssVector || 'Not provided' }}\n- Severity: {{ $json.vuln.severity }}\n- Affected Host: {{ $json.vuln.hostName }} ({{ $json.vuln.hostIp }})\n- Port/Protocol: {{ $json.vuln.port || 'N/A' }}/{{ $json.vuln.protocol || 'N/A' }}\n- Asset Criticality: {{ $json.vuln.assetCriticality }}\n- Scanner Source: {{ $json.vuln.source }}\n- First Seen: {{ $json.vuln.firstSeen }}\n- Environment: {{ $json.scanSession.environment }}\n\n**Session Context:**\n- Scan Session: {{ $json.scanSession.scanSessionId }}\n- Scan Type: {{ $json.scanSession.scanType }}\n- Total Findings This Session: {{ $json.stats.total }} ({{ $json.stats.critical }} Critical, {{ $json.stats.high }} High)\n\n**Risk Analysis Tasks:**\n1. Assess if this CVE is in CISA's Known Exploited Vulnerabilities (KEV) catalog\n2. Determine weaponization status — is exploit code publicly available (Metasploit, ExploitDB, PoC)?\n3. Assess exploitability in the wild vs theoretical exploit complexity\n4. Factor in asset criticality and network exposure for business impact\n5. Recommend a priority tier beyond raw CVSS score\n6. Suggest specific remediation steps with patch/mitigation guidance\n7. Estimate remediation complexity and time\n8. Flag any compensating controls that could reduce risk temporarily\n9. Assess if this could be part of a known attack chain or campaign\n10. Generate Jira ticket title and description\n\n**Response Format (JSON only, no markdown):**\n{\n  \"aiRiskScore\": 94,\n  \"priorityTier\": \"P1-CRITICAL | P2-HIGH | P3-MEDIUM | P4-LOW\",\n  \"cisakevStatus\": \"confirmed | possible | not_listed\",\n  \"exploitAvailable\": true,\n  \"exploitSources\": [\"Metasploit\", \"ExploitDB\"],\n  \"exploitabilityInWild\": \"active | limited | theoretical\",\n  \"weaponizationLikelihood\": \"high | medium | low\",\n  \"businessImpact\": \"critical | high | medium | low\",\n  \"businessImpactRationale\": \"Why this matters to the business specifically\",\n  \"attackVector\": \"network | adjacent | local | physical\",\n  \"isPartOfKnownCampaign\": false,\n  \"campaignDetails\": null,\n  \"remediationSteps\": [\n    \"Step 1: Apply patch MS24-001 immediately\",\n    \"Step 2: Verify patch deployment\",\n    \"Step 3: Rescan to confirm closure\"\n  ],\n  \"compensatingControls\": [\"Block port 445 at perimeter\", \"Enable IDS signature X\"],\n  \"remediationComplexity\": \"low | medium | high\",\n  \"estimatedRemediationHours\": 2,\n  \"slaDays\": 1,\n  \"jiraTicketTitle\": \"[CRITICAL] CVE-XXXX-XXXX — Brief description on hostname\",\n  \"jiraDescription\": \"Full Jira ticket description with all relevant context for the patching team\",\n  \"executiveSummary\": \"One sentence non-technical summary for leadership\",\n  \"falsePositiveLikelihood\": \"low | medium | high\",\n  \"recommendedAction\": \"PATCH_IMMEDIATELY | PATCH_SCHEDULED | MITIGATE | ACCEPT_RISK | INVESTIGATE_FURTHER\"\n}","options":{"systemMessage":"You are a senior vulnerability risk analyst. Respond with valid JSON only — no markdown, no code blocks, no preamble. Be precise about CVE details, exploit availability, and business risk. Always provide actionable remediation guidance."},"promptType":"define"},"typeVersion":1.6},{"id":"76b348c6-3a44-4a6e-bdda-9dace84d0177","name":"GPT-4o Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[2040,1104],"parameters":{"model":"=gpt-4o","options":{"maxTokens":2000,"temperature":0.1}},"credentials":{"openAiApi":{"id":"credential-id","name":"OpenAi account 2 - test"}},"typeVersion":1},{"id":"47f7dc68-02c5-446e-9462-0aea235ebd77","name":"Parse GPT-4 Risk Assessment","type":"n8n-nodes-base.code","position":[2320,880],"parameters":{"mode":"runOnceForEachItem","jsCode":"const aiResponse = $input.item.json;\nlet aiText = aiResponse.response || aiResponse.output || aiResponse.text || '';\nif (aiResponse.content && Array.isArray(aiResponse.content)) {\n  aiText = aiResponse.content[0]?.text || aiResponse.content[0]?.message?.content || '';\n}\nconst clean = aiText.replace(/```json\\s*/g,'').replace(/```\\s*/g,'').trim();\n\nlet riskAssessment;\ntry { riskAssessment = JSON.parse(clean); }\ncatch(e) { throw new Error(`GPT-4 parse failed: ${e.message}. Raw: ${clean.substring(0,200)}`); }\n\n// Reconstruct full vuln record from upstream\nconst upstream = $('Normalize and Deduplicate Findings').item.json;\n\n// SLA due date calculation\nconst slaDays = riskAssessment.slaDays || (riskAssessment.priorityTier === 'P1-CRITICAL' ? 1 : riskAssessment.priorityTier === 'P2-HIGH' ? 7 : riskAssessment.priorityTier === 'P3-MEDIUM' ? 30 : 90);\nconst dueDate = new Date(Date.now() + slaDays * 24 * 60 * 60 * 1000).toISOString();\n\nreturn {\n  json: {\n    scanSession: upstream.scanSession,\n    vuln: upstream.vuln,\n    stats: upstream.stats,\n    riskAssessment,\n    slaDays,\n    dueDate,\n    isCriticalOrHigh: ['CRITICAL', 'HIGH'].includes(upstream.vuln.severity),\n    isCritical: upstream.vuln.severity === 'CRITICAL',\n    enrichedAt: new Date().toISOString()\n  }\n};"},"typeVersion":2},{"id":"683aefec-c06a-4ffb-a2c7-e70d61921b7c","name":"Severity Gate — Critical/High vs Medium/Low","type":"n8n-nodes-base.if","position":[2544,880],"parameters":{"options":{},"conditions":{"options":{"caseSensitive":false,"typeValidation":"strict"},"combinator":"or","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.vuln.severity }}","rightValue":"CRITICAL"},{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.vuln.severity }}","rightValue":"HIGH"}]}},"typeVersion":2},{"id":"fd90cc74-64ea-4281-b060-42f7e4f9eb55","name":"Create Jira Ticket — Critical/High","type":"n8n-nodes-base.httpRequest","position":[2768,736],"parameters":{"url":"https://YOUR_JIRA_DOMAIN.atlassian.net/rest/api/3/issue","method":"POST","options":{"timeout":15000},"jsonBody":"={\n  \"fields\": {\n    \"project\": { \"key\": \"SEC\" },\n    \"summary\": \"{{ $json.riskAssessment.jiraTicketTitle }}\",\n    \"description\": {\n      \"type\": \"doc\",\n      \"version\": 1,\n      \"content\": [{\n        \"type\": \"paragraph\",\n        \"content\": [{ \"type\": \"text\", \"text\": \"{{ $json.riskAssessment.jiraDescription }}\" }]\n      }]\n    },\n    \"issuetype\": { \"name\": \"Security Vulnerability\" },\n    \"priority\": { \"name\": \"{{ $json.vuln.severity === 'CRITICAL' ? 'Highest' : 'High' }}\" },\n    \"duedate\": \"{{ $json.dueDate.substring(0, 10) }}\",\n    \"labels\": [\"vulnerability\", \"{{ $json.vuln.severity.toLowerCase() }}\", \"{{ $json.vuln.source }}\", \"cvss-{{ Math.floor($json.vuln.cvssScore) }}\"],\n    \"customfield_10015\": \"{{ $json.dueDate.substring(0, 10) }}\",\n    \"customfield_10016\": {{ $json.slaDays }},\n    \"customfield_10020\": { \"id\": \"1\" }\n  }\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"Authorization","value":"Basic YOUR_JIRA_BASE64_TOKEN"},{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.2,"continueOnFail":true},{"id":"3ebbf353-7bc3-498a-a3b4-57914b0d6e6f","name":"Create Jira Ticket — Medium/Low","type":"n8n-nodes-base.httpRequest","position":[2768,928],"parameters":{"url":"https://YOUR_JIRA_DOMAIN.atlassian.net/rest/api/3/issue","method":"POST","options":{"timeout":15000},"jsonBody":"={\n  \"fields\": {\n    \"project\": { \"key\": \"SEC\" },\n    \"summary\": \"{{ $json.riskAssessment.jiraTicketTitle }}\",\n    \"description\": {\n      \"type\": \"doc\",\n      \"version\": 1,\n      \"content\": [{\n        \"type\": \"paragraph\",\n        \"content\": [{ \"type\": \"text\", \"text\": \"{{ $json.riskAssessment.jiraDescription }}\" }]\n      }]\n    },\n    \"issuetype\": { \"name\": \"Security Vulnerability\" },\n    \"priority\": { \"name\": \"{{ $json.vuln.severity === 'MEDIUM' ? 'Medium' : 'Low' }}\" },\n    \"duedate\": \"{{ $json.dueDate.substring(0, 10) }}\",\n    \"labels\": [\"vulnerability\", \"{{ $json.vuln.severity.toLowerCase() }}\", \"{{ $json.vuln.source }}\"]\n  }\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"Authorization","value":"Basic YOUR_JIRA_BASE64_TOKEN"},{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.2,"continueOnFail":true},{"id":"46f6f83b-6067-4368-a97b-6f0a233d8c43","name":"Slack Alert — Critical Vulnerabilities","type":"n8n-nodes-base.httpRequest","position":[2768,1120],"parameters":{"url":"https://hooks.slack.com/services/YOUR_SLACK_WEBHOOK_PATH","method":"POST","options":{"timeout":10000},"jsonBody":"={\n  \"channel\": \"#security-critical\",\n  \"username\": \"VulnBot\",\n  \"icon_emoji\": \":rotating_light:\",\n  \"blocks\": [\n    {\n      \"type\": \"header\",\n      \"text\": { \"type\": \"plain_text\", \"text\": \"🚨 CRITICAL VULNERABILITY DETECTED\", \"emoji\": true }\n    },\n    {\n      \"type\": \"section\",\n      \"fields\": [\n        { \"type\": \"mrkdwn\", \"text\": \"*CVE ID:*\\n{{ $json.vuln.cveId }}\" },\n        { \"type\": \"mrkdwn\", \"text\": \"*CVSS Score:*\\n{{ $json.vuln.cvssScore }} / 10\" },\n        { \"type\": \"mrkdwn\", \"text\": \"*Host:*\\n{{ $json.vuln.hostName }} ({{ $json.vuln.hostIp }})\" },\n        { \"type\": \"mrkdwn\", \"text\": \"*SLA Deadline:*\\n{{ $json.dueDate.substring(0, 10) }}\" },\n        { \"type\": \"mrkdwn\", \"text\": \"*AI Risk Score:*\\n{{ $json.riskAssessment.aiRiskScore }}/100\" },\n        { \"type\": \"mrkdwn\", \"text\": \"*Exploit Available:*\\n{{ $json.riskAssessment.exploitAvailable ? '⚠️ YES — ' + ($json.riskAssessment.exploitSources || []).join(', ') : '✅ No public exploit' }}\" },\n        { \"type\": \"mrkdwn\", \"text\": \"*CISA KEV:*\\n{{ $json.riskAssessment.cisakevStatus }}\" },\n        { \"type\": \"mrkdwn\", \"text\": \"*Priority Tier:*\\n{{ $json.riskAssessment.priorityTier }}\" }\n      ]\n    },\n    {\n      \"type\": \"section\",\n      \"text\": { \"type\": \"mrkdwn\", \"text\": \"*Vulnerability:*\\n{{ $json.vuln.title }}\" }\n    },\n    {\n      \"type\": \"section\",\n      \"text\": { \"type\": \"mrkdwn\", \"text\": \"*Executive Summary:*\\n{{ $json.riskAssessment.executiveSummary }}\" }\n    },\n    {\n      \"type\": \"section\",\n      \"text\": { \"type\": \"mrkdwn\", \"text\": \"*Recommended Action:*\\n{{ $json.riskAssessment.recommendedAction }}\" }\n    },\n    {\n      \"type\": \"context\",\n      \"elements\": [{ \"type\": \"mrkdwn\", \"text\": \"Scan Session: {{ $json.scanSession.scanSessionId }} | Vuln ID: {{ $json.vuln.vulnId }} | Detected: {{ $json.vuln.detectedAt }}\" }]\n    }\n  ]\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.2,"continueOnFail":true},{"id":"c29fa39d-dc9d-4fc1-bbbb-9e7e976a02de","name":"Merge Post-Routing Paths","type":"n8n-nodes-base.merge","position":[2992,928],"parameters":{"mode":"mergeByPosition"},"typeVersion":3},{"id":"e5cb83ec-08a5-483b-a3a5-0f37b5574cf1","name":"Store to Vulnerability Registry","type":"n8n-nodes-base.googleSheets","position":[3216,640],"parameters":{"columns":{"value":{},"schema":[],"mappingMode":"autoMapInputData","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="},"authentication":"serviceAccount"},"credentials":{"googleApi":{"id":"credential-id","name":"Google Sheets- test"}},"typeVersion":4.5,"continueOnFail":true},{"id":"5fcf5b0a-b358-40dc-8441-7a0e7dac3896","name":"Check Patch Status in Registry","type":"n8n-nodes-base.googleSheets","position":[3216,880],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="},"authentication":"serviceAccount"},"credentials":{"googleApi":{"id":"credential-id","name":"Google Sheets- test"}},"typeVersion":4.5,"continueOnFail":true},{"id":"593bf583-e664-4c25-9bc4-f6828fb3c834","name":"Email High Severity Digest","type":"n8n-nodes-base.emailSend","position":[3216,1072],"webhookId":"13156a2a-65f0-49d5-9ebd-4967077d82b3","parameters":{"options":{},"subject":"=[{{ $json.vuln.severity }}] Vulnerability Alert — {{ $json.vuln.cveId }} on {{ $json.vuln.hostName }} | CVSS {{ $json.vuln.cvssScore }}","toEmail":"=","fromEmail":"="},"credentials":{"smtp":{"id":"credential-id","name":"SMTP -test"}},"typeVersion":2.1,"continueOnFail":true},{"id":"58bebd3c-879a-4070-b60c-4451c462d700","name":"Weekly Report Schedule — Monday 7 AM","type":"n8n-nodes-base.scheduleTrigger","position":[880,80],"parameters":{"rule":{"interval":[{"field":"cronExpression","expression":"0 7 * * 1"}]}},"typeVersion":1.2},{"id":"83fca6a1-ea20-4592-a900-85496d3c48d1","name":"Fetch Weekly Vuln Data for Report","type":"n8n-nodes-base.googleSheets","position":[1104,80],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="}},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"Google Sheets account"}},"typeVersion":4.5,"continueOnFail":true},{"id":"719534e9-b4dc-4c88-8fef-d63bf79ab18b","name":"Build Weekly Executive Report","type":"n8n-nodes-base.code","position":[1312,80],"parameters":{"jsCode":"const allVulns = $input.all().map(i => i.json);\nconst now = new Date();\nconst oneWeekAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);\n\n// Filter vulns detected this week\nconst weekVulns = allVulns.filter(v => v.detectedAt && new Date(v.detectedAt) >= oneWeekAgo);\n\n// Stats\nconst total = weekVulns.length;\nconst critical = weekVulns.filter(v => v.severity === 'CRITICAL');\nconst high = weekVulns.filter(v => v.severity === 'HIGH');\nconst medium = weekVulns.filter(v => v.severity === 'MEDIUM');\nconst low = weekVulns.filter(v => v.severity === 'LOW');\nconst patched = weekVulns.filter(v => v.status === 'PATCHED');\nconst open = weekVulns.filter(v => v.status === 'OPEN');\nconst overdue = open.filter(v => v.dueDate && new Date(v.dueDate) < now);\nconst withExploit = weekVulns.filter(v => String(v.exploitAvailable).toLowerCase() === 'true');\nconst kevConfirmed = weekVulns.filter(v => v.cisakevStatus === 'confirmed');\n\n// SLA compliance rate\nconst slaCompliant = patched.filter(v => {\n  const closedDate = v.closedAt ? new Date(v.closedAt) : null;\n  const dueDate = v.dueDate ? new Date(v.dueDate) : null;\n  return closedDate && dueDate && closedDate <= dueDate;\n}).length;\nconst slaComplianceRate = patched.length > 0 ? Math.round((slaCompliant / patched.length) * 100) : 100;\n\n// MTTD / MTTR (from detectedAt vs closedAt)\nconst closedThisWeek = patched.filter(v => v.closedAt);\nconst avgMttrHours = closedThisWeek.length > 0\n  ? Math.round(closedThisWeek.reduce((sum, v) => {\n      const detected = new Date(v.detectedAt);\n      const closed = new Date(v.closedAt);\n      return sum + (closed - detected) / (1000 * 60 * 60);\n    }, 0) / closedThisWeek.length)\n  : 0;\n\n// Top hosts\nconst hostCounts = {};\nweekVulns.forEach(v => { hostCounts[v.hostName] = (hostCounts[v.hostName] || 0) + 1; });\nconst topHosts = Object.entries(hostCounts).sort((a, b) => b[1] - a[1]).slice(0, 5);\n\nconst weekLabel = `${oneWeekAgo.toDateString()} – ${now.toDateString()}`;\n\nreturn [{\n  json: {\n    reportPeriod: weekLabel,\n    generatedAt: now.toISOString(),\n    stats: {\n      total, critical: critical.length, high: high.length, medium: medium.length, low: low.length,\n      patched: patched.length, open: open.length, overdue: overdue.length,\n      withExploit: withExploit.length, kevConfirmed: kevConfirmed.length,\n      slaComplianceRate, avgMttrHours\n    },\n    topVulnerableHosts: topHosts,\n    topCritical: critical.slice(0, 5).map(v => ({ cveId: v.cveId, host: v.hostName, score: v.cvssScore, action: v.recommendedAction })),\n    overdueVulns: overdue.slice(0, 10).map(v => ({ cveId: v.cveId, host: v.hostName, severity: v.severity, dueDate: v.dueDate }))\n  }\n}];"},"typeVersion":2},{"id":"4f17f494-494f-42cb-894f-07c2a6f4f3e2","name":"Send CISO Weekly Executive Report","type":"n8n-nodes-base.emailSend","position":[1520,80],"webhookId":"f4619777-4d55-489e-9287-f26f286692b3","parameters":{"options":{},"subject":"=[Weekly Vuln Report] {{ $json.stats.critical }} Critical · {{ $json.stats.high }} High · SLA {{ $json.stats.slaComplianceRate }}% Compliant — {{ $json.reportPeriod }}","toEmail":"=","fromEmail":"="},"credentials":{"smtp":{"id":"credential-id","name":"SMTP account"}},"typeVersion":2.1,"continueOnFail":true},{"id":"54755d53-0ca8-4a9e-92cb-e413edc4fda2","name":"Write SOC2 Audit Log","type":"n8n-nodes-base.googleSheets","position":[3440,832],"parameters":{"columns":{"value":{},"schema":[],"mappingMode":"autoMapInputData","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="},"authentication":"serviceAccount"},"credentials":{"googleApi":{"id":"credential-id","name":"Google Sheets- test"}},"typeVersion":4.5,"continueOnFail":true},{"id":"608c6615-a2db-4822-b083-6b5f75b830dc","name":"Respond to Emergency Scan Webhook","type":"n8n-nodes-base.respondToWebhook","position":[3440,1024],"parameters":{"options":{"responseHeaders":{"entries":[{"name":"Content-Type","value":"application/json"},{"name":"X-Vuln-Session-ID","value":"={{ $json.scanSession.scanSessionId }}"}]}},"respondWith":"json","responseBody":"={\n  \"scanSessionId\": \"{{ $json.scanSession.scanSessionId }}\",\n  \"status\": \"SCAN_INITIATED\",\n  \"vulnId\": \"{{ $json.vuln.vulnId }}\",\n  \"severity\": \"{{ $json.vuln.severity }}\",\n  \"priorityTier\": \"{{ $json.riskAssessment.priorityTier }}\",\n  \"dueDate\": \"{{ $json.dueDate.substring(0, 10) }}\",\n  \"message\": \"Vulnerability processed and tickets created.\"\n}"},"typeVersion":1},{"id":"e3858686-5145-477b-bb83-761d3e1cb2ef","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[832,-144],"parameters":{"color":4,"width":924,"height":412,"content":"## 5. Weekly Executive Report"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"af915885-236d-405e-9622-9326f1178199","connections":{"GPT-4o Model":{"ai_languageModel":[[{"node":"GPT-4 AI Risk Prioritization","type":"ai_languageModel","index":0}]]},"Build Scan Context":{"main":[[{"node":"Fetch Nessus Scan Results","type":"main","index":0},{"node":"Fetch Qualys Scan Results","type":"main","index":0},{"node":"Fetch Custom Scanner Results","type":"main","index":0}]]},"Merge Scan Triggers":{"main":[[{"node":"Build Scan Context","type":"main","index":0}]]},"Merge Post-Routing Paths":{"main":[[{"node":"Store to Vulnerability Registry","type":"main","index":0},{"node":"Check Patch Status in Registry","type":"main","index":0},{"node":"Email High Severity Digest","type":"main","index":0}]]},"Fetch Nessus Scan Results":{"main":[[{"node":"Normalize and Deduplicate Findings","type":"main","index":0}]]},"Fetch Qualys Scan Results":{"main":[[{"node":"Normalize and Deduplicate Findings","type":"main","index":0}]]},"Email High Severity Digest":{"main":[[{"node":"Write SOC2 Audit Log","type":"main","index":0}]]},"Parse GPT-4 Risk Assessment":{"main":[[{"node":"Severity Gate — Critical/High vs Medium/Low","type":"main","index":0}]]},"Daily Scan Schedule — 6 AM":{"main":[[{"node":"Merge Scan Triggers","type":"main","index":0}]]},"Fetch Custom Scanner Results":{"main":[[{"node":"Normalize and Deduplicate Findings","type":"main","index":0}]]},"GPT-4 AI Risk Prioritization":{"main":[[{"node":"Parse GPT-4 Risk Assessment","type":"main","index":0}]]},"Build Weekly Executive Report":{"main":[[{"node":"Send CISO Weekly Executive Report","type":"main","index":0}]]},"Check Patch Status in Registry":{"main":[[{"node":"Write SOC2 Audit Log","type":"main","index":0}]]},"Store to Vulnerability Registry":{"main":[[{"node":"Write SOC2 Audit Log","type":"main","index":0},{"node":"Respond to Emergency Scan Webhook","type":"main","index":0}]]},"On-Demand Emergency Scan Webhook":{"main":[[{"node":"Merge Scan Triggers","type":"main","index":1}]]},"Create Jira Ticket — Medium/Low":{"main":[[{"node":"Merge Post-Routing Paths","type":"main","index":1}]]},"Fetch Weekly Vuln Data for Report":{"main":[[{"node":"Build Weekly Executive Report","type":"main","index":0}]]},"Normalize and Deduplicate Findings":{"main":[[{"node":"GPT-4 AI Risk Prioritization","type":"main","index":0}]]},"Create Jira Ticket — Critical/High":{"main":[[{"node":"Merge Post-Routing Paths","type":"main","index":0}]]},"Weekly Report Schedule — Monday 7 AM":{"main":[[{"node":"Fetch Weekly Vuln Data for Report","type":"main","index":0}]]},"Slack Alert — Critical Vulnerabilities":{"main":[[{"node":"Merge Post-Routing Paths","type":"main","index":0}]]},"Severity Gate — Critical/High vs Medium/Low":{"main":[[{"node":"Create Jira Ticket — Critical/High","type":"main","index":0},{"node":"Slack Alert — Critical Vulnerabilities","type":"main","index":0}],[{"node":"Create Jira Ticket — Medium/Low","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":31,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.code":{"count":4},"n8n-nodes-base.merge":{"count":2},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.emailSend":{"count":2},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.httpRequest":{"count":6},"n8n-nodes-base.googleSheets":{"count":4},"@n8n/n8n-nodes-langchain.agent":{"count":1},"n8n-nodes-base.scheduleTrigger":{"count":2},"n8n-nodes-base.respondToWebhook":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Oneclick AI Squad","username":"oneclick-ai","bio":"The AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations  from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.","verified":true,"links":["https://www.oneclickitsolution.com/"],"avatar":"https://gravatar.com/avatar/848fca91367142f65f9e5c55d64e5c9952b160d7b060d103b52aa343c6bc7b3d?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":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"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-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/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"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/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"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/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"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-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/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"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":24,"icon":"file:merge.svg","name":"n8n-nodes-base.merge","codex":{"data":{"alias":["Join","Concatenate","Wait"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-sync-data-between-two-systems/","icon":"🏬","label":"How to synchronize data between two systems (one-way vs. two-way sync"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using 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"},{"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/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.merge/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Merge"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Merge","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"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/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"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/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/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"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/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/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/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"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/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-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":535,"icon":"file:webhook.svg","name":"n8n-nodes-base.respondToWebhook","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook/"}]},"categories":["Core Nodes","Utility"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"transform\"]","defaults":{"name":"Respond to Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Respond to Webhook","typeVersion":2,"nodeCategories":[{"id":7,"name":"Utility"},{"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"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":29,"name":"SecOps"},{"id":49,"name":"AI Summarization"}],"image":[]}}