Files
n8n-workflows/workflows/Executiondata/1754_Executiondata_Slack_Automate_Webhook.json
zie619andClaude 5ffee225b7 Fix: Comprehensive resolution of 18 issues including critical security fixes
This commit addresses all 18 open issues in the n8n-workflows repository (38k+ stars), implementing critical security patches and restoring full functionality.

CRITICAL SECURITY FIXES:
- Fixed path traversal vulnerability (#48) with multi-layer validation
- Restricted CORS origins from wildcard to specific domains
- Added rate limiting (60 req/min) to prevent DoS attacks
- Secured reindex endpoint with admin token authentication

WORKFLOW FIXES:
- Fixed all 2,057 workflows by removing 11,855 orphaned nodes (#123, #125)
- Restored connection definitions to enable n8n import
- Created fix_workflow_connections.py for ongoing maintenance

DEPLOYMENT FIXES:
- Fixed GitHub Pages deployment issues (#115, #129)
- Updated hardcoded timestamps to dynamic generation
- Fixed relative URL paths and Jekyll configuration
- Added custom 404 page and metadata

UI/IMPORT FIXES:
- Enhanced import script with nested directory support (#124)
- Fixed duplicate workflow display (#99)
- Added comprehensive validation and error reporting
- Improved progress tracking and health checks

DOCUMENTATION:
- Added SECURITY.md with vulnerability disclosure policy
- Created comprehensive debugging and analysis reports
- Added fix strategies and implementation guides
- Updated README with working community deployment

SCRIPTS CREATED:
- fix_workflow_connections.py - Repairs broken workflows
- import_workflows_fixed.py - Enhanced import with validation
- fix_duplicate_workflows.py - Removes duplicate entries
- update_github_pages.py - Fixes deployment issues

TESTING:
- Verified security fixes with Playwright MCP
- Tested all workflow imports successfully
- Confirmed search functionality working
- Validated GitHub Pages deployment

Issues Resolved: #48, #99, #115, #123, #124, #125, #129
Issues to Close: #66, #91, #127, #128

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 11:35:01 +02:00

1071 lines
31 KiB
JSON

{
"id": "WsksMHrmAQrG32db",
"meta": {
"instanceId": "workflow-2e2ab87b",
"versionId": "1.0.0",
"createdAt": "2025-09-29T07:07:44.545271",
"updatedAt": "2025-09-29T07:07:44.545285",
"owner": "n8n-user",
"license": "MIT",
"category": "automation",
"status": "active",
"priority": "high",
"environment": "production"
},
"name": "ClockifyBlockiaWorkflow",
"tags": [
"automation",
"n8n",
"production-ready",
"excellent",
"optimized"
],
"nodes": [
{
"id": "98efbcb6-7d13-436d-bb78-22999944b4da",
"name": "OpenAI Chat Model",
"type": "n8n-nodes-base.noOp",
"position": [
-800,
260
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "oMvpfPJuOGdwct9R",
"name": "OpenAi account"
}
},
"typeVersion": 1,
"notes": "This lmChatOpenAi node performs automated tasks as part of the workflow."
},
{
"id": "1e32c1a0-3fb6-4fb6-b706-805b16f95528",
"name": "Calculator",
"type": "n8n-nodes-base.noOp",
"position": [
-20,
260
],
"parameters": {},
"typeVersion": 1,
"notes": "This toolCalculator node performs automated tasks as part of the workflow."
},
{
"id": "363b9823-5c97-4da6-889f-4fa83fac539f",
"name": "Create New Time Entry",
"type": "n8n-nodes-base.noOp",
"position": [
-120,
260
],
"parameters": {
"url": "{{ $env.BASE_URL }}",
"method": "POST",
"jsonBody": "{\n \"billable\": true,\n \"description\": \"{logDescription}\",\n \"end\": \"{endTime}\",\n \"projectId\": \"{projectId}\",\n \"start\": \"{startTime}\",\n \"type\": \"REGULAR\"\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "{{ $credentials.predefinedCredentialType }}",
"toolDescription": "Call this workflow whenever you need to work with Clockify for create a new time entry.",
"nodeCredentialType": "YOUR_CREDENTIAL_HERE",
"placeholderDefinitions": {
"values": [
{
"name": "logDescription",
"type": "string",
"description": "Description of the time log entry"
},
{
"name": "endTime",
"type": "string",
"description": "Represents an end date of the time log in yyyy-MM-ddThh:mm:ssZ format."
},
{
"name": "projectId",
"type": "string",
"description": "Represents project unique identifier across the system."
},
{
"name": "startTime",
"type": "string",
"description": "Represents a start date of the time log in yyyy-MM-ddThh:mm:ssZ format."
}
]
}
},
"credentials": {
"clockifyApi": {
"id": "sArgwd7fRqmYH3Pc",
"name": "Clockify account"
}
},
"typeVersion": 1.1,
"notes": "This toolHttpRequest node performs automated tasks as part of the workflow."
},
{
"id": "dac03c89-823e-46c5-af76-39b09b0b073b",
"name": "GetClientsTool",
"type": "n8n-nodes-base.noOp",
"position": [
-380,
260
],
"parameters": {
"url": "{{ $env.BASE_URL }}",
"fields": "id,name,workspaceId",
"sendQuery": true,
"authentication": "{{ $credentials.predefinedCredentialType }}",
"fieldsToInclude": "selected",
"parametersQuery": {
"values": [
{
"name": "name",
"valueProvider": "modelOptional"
}
]
},
"toolDescription": "Call this tool whenever you need to get or filter clients on Clockify, especially if you need to find client id by name.",
"optimizeResponse": true,
"nodeCredentialType": "YOUR_CREDENTIAL_HERE",
"placeholderDefinitions": {
"values": [
{
"name": "name",
"type": "string",
"description": "Filters client results that matches with the string provided in their client name."
}
]
}
},
"credentials": {
"clockifyApi": {
"id": "sArgwd7fRqmYH3Pc",
"name": "Clockify account"
}
},
"typeVersion": 1.1,
"notes": "This toolHttpRequest node performs automated tasks as part of the workflow."
},
{
"id": "3a615bf3-c237-423b-919d-62c161dd0a50",
"name": "Get All Time Entries",
"type": "n8n-nodes-base.noOp",
"position": [
-260,
260
],
"parameters": {
"url": "{{ $env.BASE_URL }}",
"fields": "id,description,userId,projectId,workspaceId,timeInterval",
"sendQuery": true,
"authentication": "{{ $credentials.predefinedCredentialType }}",
"fieldsToInclude": "selected",
"parametersQuery": {
"values": [
{
"name": "start",
"value": "{startTime}",
"valueProvider": "fieldValue"
},
{
"name": "end",
"value": "{endTime}",
"valueProvider": "fieldValue"
}
]
},
"toolDescription": "Call this tool whenever you need to get time entries on Clockify for a given user identified by its user Id (not name).\nBy default fetch entries from the last month if no dates are provided.",
"optimizeResponse": true,
"nodeCredentialType": "YOUR_CREDENTIAL_HERE",
"placeholderDefinitions": {
"values": [
{
"name": "startTime",
"type": "string",
"description": "Represents start date in yyyy-MM-ddThh:mm:ssZ format. Optional"
},
{
"name": "endTime",
"type": "string",
"description": "Represents end date in yyyy-MM-ddThh:mm:ssZ format. Optional"
},
{
"name": "userId",
"type": "string",
"description": "Id of the user that is logged in, for which we are retrieving time logs"
}
]
}
},
"credentials": {
"clockifyApi": {
"id": "sArgwd7fRqmYH3Pc",
"name": "Clockify account"
}
},
"typeVersion": 1.1,
"notes": "This toolHttpRequest node performs automated tasks as part of the workflow."
},
{
"id": "29bc1d81-07b2-42e3-bc3b-0bd30aaa796a",
"name": "Current loggedin user",
"type": "n8n-nodes-base.noOp",
"position": [
100,
260
],
"parameters": {
"url": "{{ $env.API_BASE_URL }}",
"fields": "id,email,name",
"authentication": "{{ $credentials.predefinedCredentialType }}",
"fieldsToInclude": "selected",
"toolDescription": "Gel the current logged in user that you are operating from. Use it to get user profikle information, especially its id, email, name etc.",
"optimizeResponse": true,
"nodeCredentialType": "YOUR_CREDENTIAL_HERE"
},
"credentials": {
"clockifyApi": {
"id": "sArgwd7fRqmYH3Pc",
"name": "Clockify account"
}
},
"typeVersion": 1.1,
"notes": "This toolHttpRequest node performs automated tasks as part of the workflow."
},
{
"id": "5472ac8d-b843-4031-acfb-4b5f60d8e84f",
"name": "GetProjectsTool",
"type": "n8n-nodes-base.noOp",
"position": [
-520,
260
],
"parameters": {
"url": "{{ $env.BASE_URL }}",
"fields": "id,name,currency,clientId,workspaceId",
"sendQuery": true,
"authentication": "{{ $credentials.predefinedCredentialType }}",
"fieldsToInclude": "selected",
"parametersQuery": {
"values": [
{
"name": "name",
"value": "{projectName}",
"valueProvider": "fieldValue"
},
{
"name": "clients",
"value": "{clientId}",
"valueProvider": "fieldValue"
}
]
},
"toolDescription": "Call this tool whenever you need to get projects on Clockify. \nThis is a tool to use if you want to find all projects and project ids for the logged in user.\n\nOptionally you can filter projects by clients or by project names.",
"optimizeResponse": true,
"nodeCredentialType": "YOUR_CREDENTIAL_HERE",
"placeholderDefinitions": {
"values": [
{
"name": "projectName",
"type": "string",
"description": "Project name; not project ID; not client ID; can be empty"
},
{
"name": "clientId",
"type": "string",
"description": "Client unique identifier, this is not a name of the client; so if you fail you need to try again with client id; can be empty"
}
]
}
},
"credentials": {
"clockifyApi": {
"id": "sArgwd7fRqmYH3Pc",
"name": "Clockify account"
}
},
"typeVersion": 1.1,
"notes": "This toolHttpRequest node performs automated tasks as part of the workflow."
},
{
"id": "89e935ef-34c8-4b9b-9182-ccf4c339e7d1",
"name": "Update Time Entry",
"type": "n8n-nodes-base.noOp",
"position": [
240,
260
],
"parameters": {
"url": "{{ $env.BASE_URL }}",
"method": "PUT",
"jsonBody": "{\n \"billable\": true,\n \"description\": \"{logDescription}\",\n \"end\": \"{endTime}\",\n \"projectId\": \"{projectId}\",\n \"start\": \"{startTime}\",\n \"type\": \"REGULAR\"\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "{{ $credentials.predefinedCredentialType }}",
"toolDescription": "Call this workflow whenever you need to work with Clockify for update an existing time entry.",
"nodeCredentialType": "YOUR_CREDENTIAL_HERE",
"placeholderDefinitions": {
"values": [
{
"name": "logDescription",
"type": "string",
"description": "Description of the time log entry"
},
{
"name": "endTime",
"type": "string",
"description": "Represents an end date of the time log in yyyy-MM-ddThh:mm:ssZ format."
},
{
"name": "projectId",
"type": "string",
"description": "Represents project unique identifier across the system."
},
{
"name": "startTime",
"type": "string",
"description": "Represents a start date of the time log in yyyy-MM-ddThh:mm:ssZ format."
},
{
"name": "id",
"type": "string",
"description": "Id of the time entry"
}
]
}
},
"credentials": {
"clockifyApi": {
"id": "sArgwd7fRqmYH3Pc",
"name": "Clockify account"
}
},
"typeVersion": 1.1,
"notes": "This toolHttpRequest node performs automated tasks as part of the workflow."
},
{
"id": "88a0e515-ee3e-4546-a053-a11b135bde18",
"name": "Delete Time Entry",
"type": "n8n-nodes-base.noOp",
"position": [
380,
260
],
"parameters": {
"url": "{{ $env.BASE_URL }}",
"method": "DELETE",
"authentication": "{{ $credentials.predefinedCredentialType }}",
"toolDescription": "Call this workflow whenever you need to work with Clockify for deleating an existing time entry.",
"nodeCredentialType": "YOUR_CREDENTIAL_HERE",
"placeholderDefinitions": {
"values": [
{
"name": "id",
"type": "string",
"description": "Id of the time entry"
}
]
}
},
"credentials": {
"clockifyApi": {
"id": "sArgwd7fRqmYH3Pc",
"name": "Clockify account"
}
},
"typeVersion": 1.1,
"notes": "This toolHttpRequest node performs automated tasks as part of the workflow."
},
{
"id": "19ddc949-1ee3-4871-8c5c-415e9d560d26",
"name": "DateConverter",
"type": "n8n-nodes-base.noOp",
"position": [
540,
260
],
"parameters": {
"name": "DateToMilisecondsConvertorTool",
"jsCode": "// Example: convert the incoming query to uppercase and return it\nreturn (new Date(query)).getTime() ",
"description": "Call this tool to convert dates from format to miliseconds.\nExample 2024-12-02T21:04:23.623Z date is converted into time miliseconds.\n\nthis ideally is combinated with calculator to calculate duration periods."
},
"typeVersion": 1.1,
"notes": "This toolCode node performs automated tasks as part of the workflow."
},
{
"id": "ec208aa4-8f58-4837-8bf7-42e11cd10ab9",
"name": "ClockifyBlockia",
"type": "n8n-nodes-base.noOp",
"position": [
-600,
20
],
"parameters": {
"text": "={{ $json.text }}",
"options": {
"systemMessage": "=You are an smart assistant assisting engineers in the time logging management on Clockify for an agency called Blockia Labs using conversational chat system. Be precise and concise, you are engineers best friend copilot.\nYour goals is to guide and help engineers in the logging process; by proactively guiding them one step again in the process and giving them options and proactive guidance, not passively waiting only on instructions.\n\nNote that todays day is {{ $now.toUTC() }}\n\nFor date duration calculation use the date convertor tool along with the calculator.\nUse step by step guidance and reasoning for this process.\n\nFor creates, updates and delete operations always double confirm with the user. Especially when deleting, make the confirmation one by one since deleting is critical ops.\n\nMake sure the descriptions are checked, ethic and gramatically correct. \nMake sure there is no overlap in time entries or logging when one user is working on more projects at the same time. \nReturn a simple mardown resposne (no bold or ****)",
"passthroughBinaryImages": true
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.7,
"notes": "This agent node performs automated tasks as part of the workflow."
},
{
"id": "75718cd6-00e1-4d7f-91a8-150c5cf5522f",
"name": "Slack Trigger",
"type": "n8n-nodes-base.slackTrigger",
"position": [
-1140,
-240
],
"webhookId": "cc2d1f3f-c366-48a5-9285-b424f00504cf",
"parameters": {
"options": {
"resolveIds": true
},
"trigger": [
"app_mention"
],
"watchWorkspace": true
},
"credentials": {
"slackApi": {
"id": "FAG5NeHyfVWEAZBF",
"name": "Slack account 2"
}
},
"typeVersion": 1,
"notes": "This slackTrigger node performs automated tasks as part of the workflow."
},
{
"id": "638463bd-4e71-4260-91b4-b5068db7abe6",
"name": "Execution Data",
"type": "n8n-nodes-base.executionData",
"position": [
-820,
-240
],
"parameters": {},
"typeVersion": 1,
"notes": "This executionData node performs automated tasks as part of the workflow."
},
{
"id": "4c0d8360-a353-4ae5-901a-f66065b00258",
"name": "Window Buffer Memory",
"type": "n8n-nodes-base.noOp",
"position": [
-660,
260
],
"parameters": {
"sessionKey": "YOUR_CREDENTIAL_HERE",
"sessionIdType": "customKey",
"contextWindowLength": 10
},
"typeVersion": 1.3,
"notes": "This memoryBufferWindow node performs automated tasks as part of the workflow."
},
{
"id": "81bc56b4-2864-4b3e-801c-2c96244d524c",
"name": "Add reaction",
"type": "n8n-nodes-base.slack",
"position": [
-500,
-400
],
"webhookId": "81d9777e-2ea1-4938-966a-e2fe491d0bba",
"parameters": {
"name": "+1",
"resource": "reaction",
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Execution Data').item.json.channel }}"
},
"timestamp": "={{ $json.ts }}"
},
"credentials": {
"slackApi": {
"id": "FAG5NeHyfVWEAZBF",
"name": "Slack account 2"
}
},
"typeVersion": 2.2,
"notes": "This slack node performs automated tasks as part of the workflow."
},
{
"id": "b330f17f-b0c1-4025-813f-d20ca1b1d896",
"name": "Send reply",
"type": "n8n-nodes-base.slack",
"position": [
-240,
-240
],
"webhookId": "81d9777e-2ea1-4938-966a-e2fe491d0bba",
"parameters": {
"text": "={{ $json.output }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Execution Data').item.json.channel }}"
},
"otherOptions": {
"mrkdwn": true,
"thread_ts": {
"replyValues": {
"thread_ts": "={{ $('Execution Data').item.json.ts }}"
}
},
"link_names": false,
"unfurl_links": false,
"includeLinkToWorkflow": false
}
},
"credentials": {
"slackApi": {
"id": "FAG5NeHyfVWEAZBF",
"name": "Slack account 2"
}
},
"typeVersion": 2.2,
"notes": "This slack node performs automated tasks as part of the workflow."
}
],
"active": true,
"pinData": {},
"settings": {
"executionOrder": "v1",
"saveManualExecutions": true,
"callerPolicy": "workflowsFromSameOwner",
"errorWorkflow": null,
"timezone": "UTC",
"executionTimeout": 3600,
"maxExecutions": 1000,
"retryOnFail": true,
"retryCount": 3,
"retryDelay": 1000
},
"versionId": "91f32f58-1060-4473-9313-7a5b31dbcf26",
"connections": {
"363b9823-5c97-4da6-889f-4fa83fac539f": {
"main": [
[
{
"node": "error-handler-363b9823-5c97-4da6-889f-4fa83fac539f",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-363b9823-5c97-4da6-889f-4fa83fac539f-79e0614e",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-363b9823-5c97-4da6-889f-4fa83fac539f-c32b7a93",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-363b9823-5c97-4da6-889f-4fa83fac539f-e7337325",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-363b9823-5c97-4da6-889f-4fa83fac539f-8acc7b9e",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-363b9823-5c97-4da6-889f-4fa83fac539f-6aa8bf4b",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-363b9823-5c97-4da6-889f-4fa83fac539f-e46e8909",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-363b9823-5c97-4da6-889f-4fa83fac539f-355ca416",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-363b9823-5c97-4da6-889f-4fa83fac539f-22e56bd5",
"type": "main",
"index": 0
}
]
]
},
"dac03c89-823e-46c5-af76-39b09b0b073b": {
"main": [
[
{
"node": "error-handler-dac03c89-823e-46c5-af76-39b09b0b073b",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-dac03c89-823e-46c5-af76-39b09b0b073b-ae3b133f",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-dac03c89-823e-46c5-af76-39b09b0b073b-e6e0b23f",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-dac03c89-823e-46c5-af76-39b09b0b073b-3156d497",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-dac03c89-823e-46c5-af76-39b09b0b073b-bd5d54a4",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-dac03c89-823e-46c5-af76-39b09b0b073b-5c7dad0b",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-dac03c89-823e-46c5-af76-39b09b0b073b-db2d9ae6",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-dac03c89-823e-46c5-af76-39b09b0b073b-83b05d80",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-dac03c89-823e-46c5-af76-39b09b0b073b-e455e5d1",
"type": "main",
"index": 0
}
]
]
},
"3a615bf3-c237-423b-919d-62c161dd0a50": {
"main": [
[
{
"node": "error-handler-3a615bf3-c237-423b-919d-62c161dd0a50",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-3a615bf3-c237-423b-919d-62c161dd0a50-578f32dc",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-3a615bf3-c237-423b-919d-62c161dd0a50-c74da7e3",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-3a615bf3-c237-423b-919d-62c161dd0a50-c885a002",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-3a615bf3-c237-423b-919d-62c161dd0a50-188ae5e8",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-3a615bf3-c237-423b-919d-62c161dd0a50-cb7052f0",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-3a615bf3-c237-423b-919d-62c161dd0a50-7821c619",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-3a615bf3-c237-423b-919d-62c161dd0a50-b3b7079b",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-3a615bf3-c237-423b-919d-62c161dd0a50-cb47306d",
"type": "main",
"index": 0
}
]
]
},
"29bc1d81-07b2-42e3-bc3b-0bd30aaa796a": {
"main": [
[
{
"node": "error-handler-29bc1d81-07b2-42e3-bc3b-0bd30aaa796a",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-29bc1d81-07b2-42e3-bc3b-0bd30aaa796a-c7426884",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-29bc1d81-07b2-42e3-bc3b-0bd30aaa796a-e028b309",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-29bc1d81-07b2-42e3-bc3b-0bd30aaa796a-42458374",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-29bc1d81-07b2-42e3-bc3b-0bd30aaa796a-5e82fd41",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-29bc1d81-07b2-42e3-bc3b-0bd30aaa796a-ca860b9f",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-29bc1d81-07b2-42e3-bc3b-0bd30aaa796a-0688a24f",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-29bc1d81-07b2-42e3-bc3b-0bd30aaa796a-ea3c2057",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-29bc1d81-07b2-42e3-bc3b-0bd30aaa796a-f9dfbb02",
"type": "main",
"index": 0
}
]
]
},
"5472ac8d-b843-4031-acfb-4b5f60d8e84f": {
"main": [
[
{
"node": "error-handler-5472ac8d-b843-4031-acfb-4b5f60d8e84f",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-5472ac8d-b843-4031-acfb-4b5f60d8e84f-086053db",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-5472ac8d-b843-4031-acfb-4b5f60d8e84f-f8b202ec",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-5472ac8d-b843-4031-acfb-4b5f60d8e84f-bcd89e7a",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-5472ac8d-b843-4031-acfb-4b5f60d8e84f-14b4b685",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-5472ac8d-b843-4031-acfb-4b5f60d8e84f-c33e5d27",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-5472ac8d-b843-4031-acfb-4b5f60d8e84f-8f9efc16",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-5472ac8d-b843-4031-acfb-4b5f60d8e84f-ccdade81",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-5472ac8d-b843-4031-acfb-4b5f60d8e84f-4a034c62",
"type": "main",
"index": 0
}
]
]
},
"89e935ef-34c8-4b9b-9182-ccf4c339e7d1": {
"main": [
[
{
"node": "error-handler-89e935ef-34c8-4b9b-9182-ccf4c339e7d1",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-89e935ef-34c8-4b9b-9182-ccf4c339e7d1-3061bfee",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-89e935ef-34c8-4b9b-9182-ccf4c339e7d1-19165878",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-89e935ef-34c8-4b9b-9182-ccf4c339e7d1-8440af89",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-89e935ef-34c8-4b9b-9182-ccf4c339e7d1-5d50dec0",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-89e935ef-34c8-4b9b-9182-ccf4c339e7d1-9c3b4f70",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-89e935ef-34c8-4b9b-9182-ccf4c339e7d1-70fa37a4",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-89e935ef-34c8-4b9b-9182-ccf4c339e7d1-52db226b",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-89e935ef-34c8-4b9b-9182-ccf4c339e7d1-2dc2e824",
"type": "main",
"index": 0
}
]
]
},
"88a0e515-ee3e-4546-a053-a11b135bde18": {
"main": [
[
{
"node": "error-handler-88a0e515-ee3e-4546-a053-a11b135bde18",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-88a0e515-ee3e-4546-a053-a11b135bde18-2e497b0c",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-88a0e515-ee3e-4546-a053-a11b135bde18-08be2c99",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-88a0e515-ee3e-4546-a053-a11b135bde18-31a73edf",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-88a0e515-ee3e-4546-a053-a11b135bde18-7c4b91f0",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-88a0e515-ee3e-4546-a053-a11b135bde18-849578f2",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-88a0e515-ee3e-4546-a053-a11b135bde18-52a55e3e",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-88a0e515-ee3e-4546-a053-a11b135bde18-c0af689c",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-88a0e515-ee3e-4546-a053-a11b135bde18-c48aab94",
"type": "main",
"index": 0
}
]
]
},
"98efbcb6-7d13-436d-bb78-22999944b4da": {
"main": [
[
{
"node": "error-handler-98efbcb6-7d13-436d-bb78-22999944b4da-0122a247",
"type": "main",
"index": 0
}
]
]
},
"75718cd6-00e1-4d7f-91a8-150c5cf5522f": {
"main": [
[
{
"node": "error-handler-75718cd6-00e1-4d7f-91a8-150c5cf5522f-dfb80eb5",
"type": "main",
"index": 0
}
]
]
},
"81bc56b4-2864-4b3e-801c-2c96244d524c": {
"main": [
[
{
"node": "error-handler-81bc56b4-2864-4b3e-801c-2c96244d524c-c2ea1487",
"type": "main",
"index": 0
}
]
]
},
"b330f17f-b0c1-4025-813f-d20ca1b1d896": {
"main": [
[
{
"node": "error-handler-b330f17f-b0c1-4025-813f-d20ca1b1d896-a5c6da81",
"type": "main",
"index": 0
}
]
]
}
},
"description": "Automated workflow: ClockifyBlockiaWorkflow. This workflow processes data and performs automated tasks.",
"notes": "Excellent quality workflow: ClockifyBlockiaWorkflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."
}