Workflow: Get all scaleway server info copy
Integrations: code, httpRequest, if, respondToWebhook, set, splitInBatches, splitOut, stickyNote, switch, webhook

{"id": "olDVR3wuxbUsTvuW", "meta": {"instanceId": "workflow-daf98164", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:54.667198", "updatedAt": "2025-09-29T07:07:54.667215", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production"}, "name": "Get all scaleway server info copy", "tags": ["automation", "n8n", "production-ready", "excellent", "optimized"], "nodes": [{"id": "9da28130-ed83-4129-b65c-82969fe3126d", "name": "Code", "type": "n8n-nodes-base.code", "position": [2000, -60], "parameters": {"jsCode": "// Function to extract essential information from servers\nfunction extractServers(serversArray) {\n    let servers = [];\n\n    if (!Array.isArray(serversArray)) {\n        console.log(\"\u26a0\ufe0f Invalid data received:\", JSON.stringify(serversArray, null, 2));\n        return servers; // Returns an empty array if the data is not valid\n    }\n\n    serversArray.forEach(server => {\n        servers.push({\n            name: server.name || \"Unknown\",\n            tags: server.tags && server.tags.length > 0 ? server.tags.join(\", \") : \"No tags\",\n            public_ip: getPublicIPs(server),\n            type: server.commercial_type || server.offer_name || \"Unknown\", // Baremetal does not have commercial_type, but offer_name\n            state: server.state || server.status || \"Unknown\", // Baremetal uses status instead of state\n            zone: server.zone || \"Unknown\",\n            user: getUser(server) // User management\n        });\n    });\n\n    return servers;\n}\n\n// Function to extract the public IP (IPv4 prioritized, otherwise IPv6)\nfunction getPublicIPs(server) {\n    let ipv4 = null;\n    let ipv6 = null;\n\n    // Case for Compute instances (public_ips is an array)\n    if (server.public_ips && Array.isArray(server.public_ips)) {\n        server.public_ips.forEach(ip => {\n            if (ip.family === \"inet\" && !ipv4) ipv4 = ip.address;\n            if (ip.family === \"inet6\" && !ipv6) ipv6 = ip.address;\n        });\n    }\n\n    // Some instances have public_ip as a single object\n    if (server.public_ip && server.public_ip.address) {\n        if (server.public_ip.family === \"inet\" && !ipv4) ipv4 = server.public_ip.address;\n        if (server.public_ip.family === \"inet6\" && !ipv6) ipv6 = server.public_ip.address;\n    }\n\n    // Case for Baremetal servers (ips is an array)\n    if (server.ips && Array.isArray(server.ips)) {\n        server.ips.forEach(ip => {\n            if (ip.version === \"IPv4\" && !ipv4) ipv4 = ip.address;\n            if (ip.version === \"IPv6\" && !ipv6) ipv6 = ip.address;\n        });\n    }\n\n    // Returns IPv4 if available, otherwise IPv6, otherwise \"No IP\"\n    return ipv4 || ipv6 || \"No IP\";\n}\n\n// Function to retrieve the user\nfunction getUser(server) {\n    // For Compute instances, the \"user\" field sometimes exists\n    if (server.user) return server.user;\n\n    // For Baremetal servers, user info is often found in install.user\n    if (server.install && server.install.user) return server.install.user;\n\n    // Default value\n    return \"root\";\n}\n\n// Retrieve all input items (from Loop Over Zone Instance)\nlet inputItems = $input.all();\nlet allServers = [];\n\n// Iterate over each item and extract servers if they are contained in a \"servers\" property\ninputItems.forEach(item => {\n    if (item.json.servers && Array.isArray(item.json.servers)) {\n        allServers = allServers.concat(extractServers(item.json.servers));\n    } else {\n        // If the item does not have a \"servers\" property, attempt to process the object itself as a server\n        allServers = allServers.concat(extractServers([item.json]));\n    }\n});\n\n// Return the final result as items (JSON object per server)\nreturn allServers.map(server => ({ json: server }));\n"}, "typeVersion": 2, "alwaysOutputData": true, "notes": "This code node performs automated tasks as part of the workflow."}, {"id": "12e10b9e-99ca-4ab8-b90d-be318ba2f9ff", "name": "Edit Fields", "type": "n8n-nodes-base.set", "position": [880, 0], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "e6764348-1fa6-439e-9279-3b423c7c73af", "name": "search_by", "type": "string", "value": "={{ $json.body.search_by }}"}, {"id": "5535e47b-c187-47eb-80af-bccb3972f4a5", "name": "search", "type": "string", "value": "={{ $json.body.search }}"}, {"id": "b69ff3d1-885e-4145-a277-074b8e517aaf", "name": "Scaleway-X-Auth-Token", "type": "string", "value": "<Your personal Scaleway X Auth Token>"}, {"id": "65ee376e-093f-4a8b-abe8-5d9173d26427", "name": "ZONE_INSTANCE", "type": "array", "value": "[\"fr-par-1\", \"fr-par-2\", \"fr-par-3\", \"nl-ams-1\", \"nl-ams-2\", \"nl-ams-3\", \"pl-waw-1\", \"pl-waw-2\", \"pl-waw-3\"]"}, {"id": "9a9fff0b-f812-4bb1-800e-2376b39381ed", "name": "ZONE_BAREMETAL", "type": "string", "value": "[\"fr-par-1\", \"fr-par-2\", \"nl-ams-1\", \"nl-ams-2\", \"pl-waw-2\", \"pl-waw-3\"]"}]}}, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "20398633-d856-4700-98a9-1f722f3d2a8f", "name": "Switch", "type": "n8n-nodes-base.switch", "position": [2260, -80], "parameters": {"rules": {"values": [{"conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "7ee5d5ae-3a88-4bef-820d-979c26499cbd", "operator": {"type": "string", "operation": "equals"}, "leftValue": "={{ $('Edit Fields').first().json.search_by }}", "rightValue": "tags"}]}}, {"conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "eb879619-5b97-4402-b3de-3f98e0a7d0d3", "operator": {"name": "filter.operator.equals", "type": "string", "operation": "equals"}, "leftValue": "={{ $('Edit Fields').first().json.search_by }}", "rightValue": "name"}]}}, {"conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "2d0b6397-e46d-484a-84a0-7af8d7345dea", "operator": {"name": "filter.operator.equals", "type": "string", "operation": "equals"}, "leftValue": "={{ $('Edit Fields').first().json.search_by }}", "rightValue": "public_ip"}]}}, {"conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "0ee8fb2d-cf38-4994-a49a-88c7482b46ab", "operator": {"name": "filter.operator.equals", "type": "string", "operation": "equals"}, "leftValue": "={{ $('Edit Fields').first().json.search_by }}", "rightValue": "zone"}]}}, {"conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "04a298b2-2a22-433a-a8db-3902dcff0425", "operator": {"name": "filter.operator.equals", "type": "string", "operation": "equals"}, "leftValue": "={{ $('Edit Fields').first().json.search_by }}", "rightValue": "null"}]}}]}, "options": {"ignoreCase": false, "fallbackOutput": "extra"}}, "typeVersion": 3.2, "notes": "This switch node performs automated tasks as part of the workflow."}, {"id": "f480f721-d2b3-49a4-9211-266af3e8fd42", "name": "Code search Tags", "type": "n8n-nodes-base.code", "position": [2680, -500], "parameters": {"jsCode": "// Retrieve all input items\nlet servers = $input.all();\n\n// Filter only servers with the tag \"STAGING\"\nlet filteredServers = servers.filter(server =>\n    server.json.tags && server.json.tags.includes($('Edit Fields').first().json.search)\n);\n\n// Return only servers that have \"search\" in the tags\nreturn filteredServers;\n"}, "typeVersion": 2, "alwaysOutputData": true, "notes": "This code node performs automated tasks as part of the workflow."}, {"id": "44ee26b2-1320-44a6-a705-ff102e789a9c", "name": "Code search Name", "type": "n8n-nodes-base.code", "position": [2680, -340], "parameters": {"jsCode": "// Retrieve all input items\nlet servers = $input.all();\n\n// Filter only servers with the tag \"STAGING\"\nlet filteredServers = servers.filter(server =>\n    server.json.name && server.json.name.includes($('Edit Fields').first().json.search)\n);\n\n// Return only servers that have \"search\" in the name\nreturn filteredServers;\n"}, "typeVersion": 2, "alwaysOutputData": true, "notes": "This code node performs automated tasks as part of the workflow."}, {"id": "b8e5f1b5-09a0-42f8-a5d6-a10989cb9f81", "name": "Code search public_ip", "type": "n8n-nodes-base.code", "position": [2680, -180], "parameters": {"jsCode": "// Retrieve all input items\nlet servers = $input.all();\n\n// Filter only servers with the tag \"STAGING\"\nlet filteredServers = servers.filter(server =>\n    server.json.public_ip && server.json.public_ip.includes($('Edit Fields').first().json.search)\n);\n\n// Return only servers that have \"search\" in the public_ip\nreturn filteredServers;\n"}, "typeVersion": 2, "alwaysOutputData": true, "notes": "This code node performs automated tasks as part of the workflow."}, {"id": "1029d9bc-8d42-4038-9dfe-f8957e9115b6", "name": "Code search zone", "type": "n8n-nodes-base.code", "position": [2680, -20], "parameters": {"jsCode": "// Retrieve all input items\nlet servers = $input.all();\n\n// Filter only servers with the tag \"STAGING\"\nlet filteredServers = servers.filter(server =>\n    server.json.public_ip && server.json.public_ip.includes($('Edit Fields').first().json.search)\n);\n\n// Return only servers that have \"search\" in the public_ip\nreturn filteredServers;\n"}, "typeVersion": 2, "alwaysOutputData": true, "notes": "This code node performs automated tasks as part of the workflow."}, {"id": "3dae20ba-07b2-4948-a58c-8b803f672dcb", "name": "Webhook", "type": "n8n-nodes-base.webhook", "position": [660, 0], "webhookId": "a6767312-3a4c-4819-b4fe-a03c9e0ade5c", "parameters": {"path": "a6767312-3a4c-4819-b4fe-a03c9e0ade5c", "options": {}, "httpMethod": "POST", "responseMode": "responseNode", "authentication": "{{ $credentials.basicAuth }}"}, "credentials": {"httpBasicAuth": {"id": "YzpBkNOC0UnKboCn", "name": "Endpoint Get server scalway info"}}, "typeVersion": 2, "notes": "This webhook node performs automated tasks as part of the workflow."}, {"id": "65f62d8f-aead-47cb-a9df-105054d8b666", "name": "Respond Error", "type": "n8n-nodes-base.respondToWebhook", "position": [2680, 300], "parameters": {"options": {}, "respondWith": "json", "responseBody": "={\n  \"error\": \"no search by {{ $('Edit Fields').item.json.search_by }} available. You can search by : tags, name, public_ip, zone\"\n}"}, "typeVersion": 1.1, "notes": "This respondToWebhook node performs automated tasks as part of the workflow."}, {"id": "9d8db89d-c318-4078-9a3d-8bc10022d059", "name": "Respond to Webhook1", "type": "n8n-nodes-base.respondToWebhook", "position": [2900, -340], "parameters": {"options": {}, "respondWith": "allIncomingItems"}, "typeVersion": 1.1, "notes": "This respondToWebhook node performs automated tasks as part of the workflow."}, {"id": "3009a593-8a23-448c-b8fd-58c6fc4b77b3", "name": "Respond to Webhook2", "type": "n8n-nodes-base.respondToWebhook", "position": [2900, -180], "parameters": {"options": {}, "respondWith": "allIncomingItems"}, "typeVersion": 1.1, "notes": "This respondToWebhook node performs automated tasks as part of the workflow."}, {"id": "27e1f543-c57c-4772-944b-d2207526dd9d", "name": "Respond to Webhook3", "type": "n8n-nodes-base.respondToWebhook", "position": [2900, -20], "parameters": {"options": {}, "respondWith": "allIncomingItems"}, "typeVersion": 1.1, "notes": "This respondToWebhook node performs automated tasks as part of the workflow."}, {"id": "90e51c36-9888-4942-ad13-28fa90235d13", "name": "Respond to Webhook", "type": "n8n-nodes-base.respondToWebhook", "position": [2900, -500], "parameters": {"options": {}, "respondWith": "allIncomingItems"}, "typeVersion": 1.1, "notes": "This respondToWebhook node performs automated tasks as part of the workflow."}, {"id": "92ad3cf2-c3b3-4c42-9d1b-7d55f3e5ad56", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [1000, -1240], "parameters": {"color": 4, "width": 1000, "height": 1080, "content": "# Technical Documentation\n\n## Description\n\nThis n8n workflow retrieves information about Scaleway servers\u2014both instances and baremetal\u2014from dynamically defined zones. It collects server details from the Scaleway API, aggregates them into a single dataset, and allows filtering of the results based on user-defined criteria (such as name, tags, public IP address, or zone) before returning the data via a webhook.\n\n## Operation\n\n### 1. Workflow Trigger\n\n- **Webhook Activation:**\n  The workflow is triggered by a Webhook node that listens for an HTTP POST request. This request uses basic authentication (basicAuth) and includes the search parameters:\n  - `search_by`: The filter type (e.g., \"tags\", \"name\", \"public_ip\", or \"zone\").\n  - `search`: The keyword to filter the server data.\n\n### 2. Retrieving Server Information\n\n- **HTTP Requests to Scaleway API:**\n  The workflow makes HTTP GET requests to two main Scaleway API endpoints:\n  - **Instances Endpoint:** Retrieves server instances from zones specified under the `ZONE_INSTANCE` variable.\n  - **Baremetal Endpoint:** Retrieves baremetal server information from zones defined in the `ZONE_BAREMETAL` variable.\n  - **Headers and Authentication:**\n    Each request sends the `X-Auth-Token` header along with a `Content-Type: application/json` header and expects a JSON response from the API.\n\n### 3. Data Processing\n\n- **Zone Splitting and Iteration:**\n  - A `Split Out ZONE_INSTANCE` node divides the list of predefined zones so each zone is processed separately.\n  - The `Loop Over Zone Instance` node iterates over the zones. An `If ZONE_BAREMETAL in ZONE_INSTANCE` node checks whether the current zone is configured for baremetal servers; if so, it directs the flow to the corresponding baremetal API request, otherwise to the instance request.\n  - **Aggregating and Structuring Data:**\n    The `Code` node aggregates all responses from each zone. It:\n    - Iterates over the incoming items.\n    - Uses helper functions (`extractServers`, `getPublicIPs`, `getUser`) to extract and normalize key information (name, tags, public IP, server type, state, zone, user).\n    - Consolidates the structured server information into a unified array for further processing.\n\n### 4. Dynamic Filtering\n\n- **Defining Search Criteria:**\n  A `Set` node captures the incoming search parameters (`search_by` and `search`) along with configuration details, such as the Scaleway authentication token and the lists of applicable zones.\n  - **Routing Based on Filter Type:**\n    The `Switch` node analyzes the value of `search_by` and routes the aggregated server data to one of four dedicated `Code` nodes that filter the data according to:\n    - `tags`\n    - `name`\n    - `public_ip`\n    - `zone`\n  - **Error Handling:**\n    If the `search_by` value does not match any of the valid filters, an error response is generated via a dedicated node that returns a JSON error message listing the available filter options.\n\n### 5. Response via Webhook\n\n- **Returning the Filtered Data:**\n  The filtered server data is sent back to the requester via one of several `Respond to Webhook` nodes assigned to handle the output from each filter type.\n  - **Error Response:**\n    In cases where no valid search criteria are provided, the workflow sends an error JSON response indicating that the valid filters are: `tags`, `name`, `public_ip`, and `zone`.\n\n## Example Usage\n\nTo use the workflow from an application or another workflow, send a POST request to the webhook endpoint with a JSON payload similar to this:\n\n```json\n{\n  \"search_by\": \"tags\",\n  \"search\": \"Apiv1\"\n}\n```\n\nIf executed successfully, the workflow will return a JSON array with server objects. Each object includes properties such as:\n- `name`\n- `tags`\n- `public_ip`\n- `type`\n- `state`\n- `zone`\n- `user`"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "0fc94a1e-2cb3-47d7-a198-a053b2bed8e4", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [1060, 520], "parameters": {"width": 960, "height": 660, "content": "# Usage in an External App or Another Workflow\n\nTo integrate this part of the workflow into your application or another workflow:\n\n1. **Send a POST Request:**\n   Use the Get Scalway Machines node\u2019s endpoint (displayed under the node) to send a POST request containing the search criteria. For example:\n\n   ```json\n   {\n     \"search_by\": \"tags\",\n     \"search\": \"Apiv1\"\n   }\n   ```\n\n2. **Process the Results:**\n   The Loop Over Items node will iterate over each response item, allowing you to handle multiple servers or records in one run.\n\n3. **Receive the Filtered Data:**\n   The returned data (each item representing a server) can then be processed further in your application or workflow, giving you a quick, automated way to retrieve and filter Scaleway server information."}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "d54772b2-40e7-43ff-9c4c-d4bbf176c3c2", "name": "Get Scalway Machines", "type": "n8n-nodes-base.httpRequest", "position": [1400, 1020], "parameters": {"url": "{{ $env.WEBHOOK_URL }}", "method": "POST", "options": {}, "sendBody": true, "authentication": "{{ $credentials.genericCredentialType }}", "bodyParameters": {"parameters": [{"name": "search_by", "value": "Available filters (name, tags, public_ip, zone) or null if you don't want to apply a filter"}, {"name": "search", "value": "Your search keyword"}]}, "genericAuthType": "httpBasicAuth"}, "credentials": {"httpBasicAuth": {"id": "YzpBkNOC0UnKboCn", "name": "Endpoint Get server scalway info"}}, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow."}, {"id": "710b2503-ccb9-42d2-877a-034082a6fef8", "name": "Loop Over Items", "type": "n8n-nodes-base.splitInBatches", "position": [1600, 1020], "parameters": {"options": {}}, "typeVersion": 3, "notes": "This splitInBatches node performs automated tasks as part of the workflow."}, {"id": "387d2a3d-8f2c-47be-a4c6-73ac110b03d0", "name": "Respond to Webhook4", "type": "n8n-nodes-base.respondToWebhook", "position": [2680, 140], "parameters": {"options": {}, "respondWith": "allIncomingItems"}, "typeVersion": 1.1, "notes": "This respondToWebhook node performs automated tasks as part of the workflow."}, {"id": "09f05bba-5fe3-4e3f-b5e6-b6f75eb9400d", "name": "Get scw instance by zone", "type": "n8n-nodes-base.httpRequest", "position": [1560, 80], "parameters": {"url": "{{ $env.BASE_URL }}", "options": {}, "sendHeaders": true, "headerParameters": {"parameters": [{"name": "X-Auth-Token", "value": "={{ $('Edit Fields').item.json['Scalway-X-Auth-Token'] }}"}, {"name": "Content-Type", "value": "application/json"}]}}, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow."}, {"id": "541d8cd6-f7db-49a1-b527-235813b82737", "name": "Loop Over Zone Instance", "type": "n8n-nodes-base.splitInBatches", "position": [1360, 0], "parameters": {"options": {}}, "typeVersion": 3, "notes": "This splitInBatches node performs automated tasks as part of the workflow."}, {"id": "be293c2d-bd39-46f5-8c09-766cc145f8b7", "name": "Get scw baremetal by zone", "type": "n8n-nodes-base.httpRequest", "position": [2000, 80], "parameters": {"url": "{{ $env.BASE_URL }}", "options": {}, "sendHeaders": true, "headerParameters": {"parameters": [{"name": "X-Auth-Token", "value": "={{ $('Edit Fields').item.json['Scalway-X-Auth-Token'] }}"}, {"name": "Content-Type", "value": "application/json"}]}}, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow."}, {"id": "b12396b5-8fd6-4b06-8c41-0a14d2382937", "name": "Split Out ZONE_INSTANCE", "type": "n8n-nodes-base.splitOut", "position": [1100, 0], "parameters": {"options": {}, "fieldToSplitOut": "ZONE_INSTANCE"}, "typeVersion": 1, "notes": "This splitOut node performs automated tasks as part of the workflow."}, {"id": "b96d5ee0-db41-4ea8-a23f-2db3cea63a3c", "name": "If ZONE_BAREMETAL in ZONE_INSTANCE", "type": "n8n-nodes-base.if", "position": [1780, 80], "parameters": {"options": {}, "conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "loose"}, "combinator": "and", "conditions": [{"id": "874626f1-ecf5-42c4-86fe-01a9c68cbb1a", "operator": {"type": "array", "operation": "contains", "rightType": "any"}, "leftValue": "={{ $('Edit Fields').item.json.ZONE_BAREMETAL }}", "rightValue": "={{ $('Loop Over Zone Instance').item.json.ZONE_INSTANCE }}"}]}, "looseTypeValidation": true}, "typeVersion": 2.2, "notes": "This if node performs automated tasks as part of the workflow."}, {"id": "30234c35-1788-4857-bc58-c1a581be318f", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [-20, -140], "parameters": {"color": 3, "width": 580, "height": 380, "content": "# Replace the Scaleway-X-Auth-Token Field\n\nTo ensure the workflow functions correctly, you must:\n\n1. Open the Edit Fields node in your workflow.\n2. Locate the Scaleway-X-Auth-Token field and enter your personal Scaleway token (replacing the default value).\n3. If you do not have a token yet:\n   - Log in to your Scaleway console.\n   - Create a new API Token by following the [Scaleway documentation]({{ $env.API_BASE_URL }}\n   - Copy the generated token and paste it into the Scaleway-X-Auth-Token field."}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}], "active": false, "pinData": {}, "settings": {"callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "executionOrder": "v1", "saveManualExecutions": true, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000}, "versionId": "b38207e8-da63-462c-ac51-925d029d5a1f", "connections": {"3dae20ba-07b2-4948-a58c-8b803f672dcb": {"main": [[{"node": "error-handler-3dae20ba-07b2-4948-a58c-8b803f672dcb", "type": "main", "index": 0}], [{"node": "error-handler-3dae20ba-07b2-4948-a58c-8b803f672dcb-39717a3d", "type": "main", "index": 0}], [{"node": "error-handler-3dae20ba-07b2-4948-a58c-8b803f672dcb-5ce9d7f6", "type": "main", "index": 0}], [{"node": "error-handler-3dae20ba-07b2-4948-a58c-8b803f672dcb-e124488f", "type": "main", "index": 0}], [{"node": "error-handler-3dae20ba-07b2-4948-a58c-8b803f672dcb-6f651c91", "type": "main", "index": 0}], [{"node": "error-handler-3dae20ba-07b2-4948-a58c-8b803f672dcb-197b7aa5", "type": "main", "index": 0}], [{"node": "error-handler-3dae20ba-07b2-4948-a58c-8b803f672dcb-88a7eb1a", "type": "main", "index": 0}], [{"node": "error-handler-3dae20ba-07b2-4948-a58c-8b803f672dcb-f20dd63a", "type": "main", "index": 0}], [{"node": "error-handler-3dae20ba-07b2-4948-a58c-8b803f672dcb-bf03923b", "type": "main", "index": 0}]]}, "65f62d8f-aead-47cb-a9df-105054d8b666": {"main": [[{"node": "error-handler-65f62d8f-aead-47cb-a9df-105054d8b666", "type": "main", "index": 0}], [{"node": "error-handler-65f62d8f-aead-47cb-a9df-105054d8b666-14d55694", "type": "main", "index": 0}], [{"node": "error-handler-65f62d8f-aead-47cb-a9df-105054d8b666-2fafc8f7", "type": "main", "index": 0}], [{"node": "error-handler-65f62d8f-aead-47cb-a9df-105054d8b666-a3b85993", "type": "main", "index": 0}], [{"node": "error-handler-65f62d8f-aead-47cb-a9df-105054d8b666-57dfc40b", "type": "main", "index": 0}], [{"node": "error-handler-65f62d8f-aead-47cb-a9df-105054d8b666-1730c388", "type": "main", "index": 0}], [{"node": "error-handler-65f62d8f-aead-47cb-a9df-105054d8b666-e8b68886", "type": "main", "index": 0}], [{"node": "error-handler-65f62d8f-aead-47cb-a9df-105054d8b666-fc90dfd9", "type": "main", "index": 0}], [{"node": "error-handler-65f62d8f-aead-47cb-a9df-105054d8b666-6b04c51d", "type": "main", "index": 0}]]}, "9d8db89d-c318-4078-9a3d-8bc10022d059": {"main": [[{"node": "error-handler-9d8db89d-c318-4078-9a3d-8bc10022d059", "type": "main", "index": 0}], [{"node": "error-handler-9d8db89d-c318-4078-9a3d-8bc10022d059-1294b881", "type": "main", "index": 0}], [{"node": "error-handler-9d8db89d-c318-4078-9a3d-8bc10022d059-0ba2b58f", "type": "main", "index": 0}], [{"node": "error-handler-9d8db89d-c318-4078-9a3d-8bc10022d059-a010aa3e", "type": "main", "index": 0}], [{"node": "error-handler-9d8db89d-c318-4078-9a3d-8bc10022d059-9116da85", "type": "main", "index": 0}], [{"node": "error-handler-9d8db89d-c318-4078-9a3d-8bc10022d059-2b180d9d", "type": "main", "index": 0}], [{"node": "error-handler-9d8db89d-c318-4078-9a3d-8bc10022d059-3e23b12e", "type": "main", "index": 0}], [{"node": "error-handler-9d8db89d-c318-4078-9a3d-8bc10022d059-a08a8ed1", "type": "main", "index": 0}], [{"node": "error-handler-9d8db89d-c318-4078-9a3d-8bc10022d059-6ec69760", "type": "main", "index": 0}]]}, "3009a593-8a23-448c-b8fd-58c6fc4b77b3": {"main": [[{"node": "error-handler-3009a593-8a23-448c-b8fd-58c6fc4b77b3", "type": "main", "index": 0}], [{"node": "error-handler-3009a593-8a23-448c-b8fd-58c6fc4b77b3-cba7d0d6", "type": "main", "index": 0}], [{"node": "error-handler-3009a593-8a23-448c-b8fd-58c6fc4b77b3-0e50a7ec", "type": "main", "index": 0}], [{"node": "error-handler-3009a593-8a23-448c-b8fd-58c6fc4b77b3-3eec48a9", "type": "main", "index": 0}], [{"node": "error-handler-3009a593-8a23-448c-b8fd-58c6fc4b77b3-ac9550d4", "type": "main", "index": 0}], [{"node": "error-handler-3009a593-8a23-448c-b8fd-58c6fc4b77b3-5e0bf072", "type": "main", "index": 0}], [{"node": "error-handler-3009a593-8a23-448c-b8fd-58c6fc4b77b3-35c91a16", "type": "main", "index": 0}], [{"node": "error-handler-3009a593-8a23-448c-b8fd-58c6fc4b77b3-2cda820f", "type": "main", "index": 0}], [{"node": "error-handler-3009a593-8a23-448c-b8fd-58c6fc4b77b3-d9b75ecd", "type": "main", "index": 0}]]}, "27e1f543-c57c-4772-944b-d2207526dd9d": {"main": [[{"node": "error-handler-27e1f543-c57c-4772-944b-d2207526dd9d", "type": "main", "index": 0}], [{"node": "error-handler-27e1f543-c57c-4772-944b-d2207526dd9d-4a178c70", "type": "main", "index": 0}], [{"node": "error-handler-27e1f543-c57c-4772-944b-d2207526dd9d-5cb3403b", "type": "main", "index": 0}], [{"node": "error-handler-27e1f543-c57c-4772-944b-d2207526dd9d-2dab2201", "type": "main", "index": 0}], [{"node": "error-handler-27e1f543-c57c-4772-944b-d2207526dd9d-eb8b2817", "type": "main", "index": 0}], [{"node": "error-handler-27e1f543-c57c-4772-944b-d2207526dd9d-571a01ce", "type": "main", "index": 0}], [{"node": "error-handler-27e1f543-c57c-4772-944b-d2207526dd9d-a5d6ffa9", "type": "main", "index": 0}], [{"node": "error-handler-27e1f543-c57c-4772-944b-d2207526dd9d-2f0cf715", "type": "main", "index": 0}], [{"node": "error-handler-27e1f543-c57c-4772-944b-d2207526dd9d-16645003", "type": "main", "index": 0}]]}, "90e51c36-9888-4942-ad13-28fa90235d13": {"main": [[{"node": "error-handler-90e51c36-9888-4942-ad13-28fa90235d13", "type": "main", "index": 0}], [{"node": "error-handler-90e51c36-9888-4942-ad13-28fa90235d13-4e94b649", "type": "main", "index": 0}], [{"node": "error-handler-90e51c36-9888-4942-ad13-28fa90235d13-3f13e1cf", "type": "main", "index": 0}], [{"node": "error-handler-90e51c36-9888-4942-ad13-28fa90235d13-ecb85eb8", "type": "main", "index": 0}], [{"node": "error-handler-90e51c36-9888-4942-ad13-28fa90235d13-b579c939", "type": "main", "index": 0}], [{"node": "error-handler-90e51c36-9888-4942-ad13-28fa90235d13-05639608", "type": "main", "index": 0}], [{"node": "error-handler-90e51c36-9888-4942-ad13-28fa90235d13-3f3ed498", "type": "main", "index": 0}], [{"node": "error-handler-90e51c36-9888-4942-ad13-28fa90235d13-901a8e5a", "type": "main", "index": 0}], [{"node": "error-handler-90e51c36-9888-4942-ad13-28fa90235d13-5ea199b4", "type": "main", "index": 0}]]}, "d54772b2-40e7-43ff-9c4c-d4bbf176c3c2": {"main": [[{"node": "error-handler-d54772b2-40e7-43ff-9c4c-d4bbf176c3c2", "type": "main", "index": 0}], [{"node": "error-handler-d54772b2-40e7-43ff-9c4c-d4bbf176c3c2-123bf3c0", "type": "main", "index": 0}], [{"node": "error-handler-d54772b2-40e7-43ff-9c4c-d4bbf176c3c2-94b2534e", "type": "main", "index": 0}], [{"node": "error-handler-d54772b2-40e7-43ff-9c4c-d4bbf176c3c2-00edeef3", "type": "main", "index": 0}], [{"node": "error-handler-d54772b2-40e7-43ff-9c4c-d4bbf176c3c2-846c7594", "type": "main", "index": 0}], [{"node": "error-handler-d54772b2-40e7-43ff-9c4c-d4bbf176c3c2-8e75c19d", "type": "main", "index": 0}], [{"node": "error-handler-d54772b2-40e7-43ff-9c4c-d4bbf176c3c2-c70bac2b", "type": "main", "index": 0}], [{"node": "error-handler-d54772b2-40e7-43ff-9c4c-d4bbf176c3c2-70e54f2a", "type": "main", "index": 0}], [{"node": "error-handler-d54772b2-40e7-43ff-9c4c-d4bbf176c3c2-8dd199ef", "type": "main", "index": 0}]]}, "387d2a3d-8f2c-47be-a4c6-73ac110b03d0": {"main": [[{"node": "error-handler-387d2a3d-8f2c-47be-a4c6-73ac110b03d0", "type": "main", "index": 0}], [{"node": "error-handler-387d2a3d-8f2c-47be-a4c6-73ac110b03d0-527845c4", "type": "main", "index": 0}], [{"node": "error-handler-387d2a3d-8f2c-47be-a4c6-73ac110b03d0-90993b0f", "type": "main", "index": 0}], [{"node": "error-handler-387d2a3d-8f2c-47be-a4c6-73ac110b03d0-2c124bc6", "type": "main", "index": 0}], [{"node": "error-handler-387d2a3d-8f2c-47be-a4c6-73ac110b03d0-6113807b", "type": "main", "index": 0}], [{"node": "error-handler-387d2a3d-8f2c-47be-a4c6-73ac110b03d0-7a84e9cb", "type": "main", "index": 0}], [{"node": "error-handler-387d2a3d-8f2c-47be-a4c6-73ac110b03d0-65414173", "type": "main", "index": 0}], [{"node": "error-handler-387d2a3d-8f2c-47be-a4c6-73ac110b03d0-50e3d688", "type": "main", "index": 0}], [{"node": "error-handler-387d2a3d-8f2c-47be-a4c6-73ac110b03d0-bd2f35a2", "type": "main", "index": 0}]]}, "09f05bba-5fe3-4e3f-b5e6-b6f75eb9400d": {"main": [[{"node": "error-handler-09f05bba-5fe3-4e3f-b5e6-b6f75eb9400d", "type": "main", "index": 0}], [{"node": "error-handler-09f05bba-5fe3-4e3f-b5e6-b6f75eb9400d-1ea7c3e6", "type": "main", "index": 0}], [{"node": "error-handler-09f05bba-5fe3-4e3f-b5e6-b6f75eb9400d-ac16d38f", "type": "main", "index": 0}], [{"node": "error-handler-09f05bba-5fe3-4e3f-b5e6-b6f75eb9400d-e88858dd", "type": "main", "index": 0}], [{"node": "error-handler-09f05bba-5fe3-4e3f-b5e6-b6f75eb9400d-9710f07a", "type": "main", "index": 0}], [{"node": "error-handler-09f05bba-5fe3-4e3f-b5e6-b6f75eb9400d-92134adb", "type": "main", "index": 0}], [{"node": "error-handler-09f05bba-5fe3-4e3f-b5e6-b6f75eb9400d-15e96c58", "type": "main", "index": 0}], [{"node": "error-handler-09f05bba-5fe3-4e3f-b5e6-b6f75eb9400d-0c5c7e76", "type": "main", "index": 0}], [{"node": "error-handler-09f05bba-5fe3-4e3f-b5e6-b6f75eb9400d-82f20bb5", "type": "main", "index": 0}]]}, "be293c2d-bd39-46f5-8c09-766cc145f8b7": {"main": [[{"node": "error-handler-be293c2d-bd39-46f5-8c09-766cc145f8b7", "type": "main", "index": 0}], [{"node": "error-handler-be293c2d-bd39-46f5-8c09-766cc145f8b7-cb805dfe", "type": "main", "index": 0}], [{"node": "error-handler-be293c2d-bd39-46f5-8c09-766cc145f8b7-fcc44999", "type": "main", "index": 0}], [{"node": "error-handler-be293c2d-bd39-46f5-8c09-766cc145f8b7-876f25c6", "type": "main", "index": 0}], [{"node": "error-handler-be293c2d-bd39-46f5-8c09-766cc145f8b7-eda0e7fc", "type": "main", "index": 0}], [{"node": "error-handler-be293c2d-bd39-46f5-8c09-766cc145f8b7-c8df1987", "type": "main", "index": 0}], [{"node": "error-handler-be293c2d-bd39-46f5-8c09-766cc145f8b7-55d38c6d", "type": "main", "index": 0}], [{"node": "error-handler-be293c2d-bd39-46f5-8c09-766cc145f8b7-118b7c0f", "type": "main", "index": 0}], [{"node": "error-handler-be293c2d-bd39-46f5-8c09-766cc145f8b7-5e93628d", "type": "main", "index": 0}]]}}, "description": "Automated workflow: Get all scaleway server info copy. This workflow integrates 11 different services: webhook, stickyNote, httpRequest, code, splitOut. It contains 44 nodes and follows best practices for error handling and security.", "notes": "Excellent quality workflow: Get all scaleway server info copy. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}