fix(16): repair broken connections, auth credentials, and dead code across 4 workflows

Phase 16 plans 16-02 through 16-05 introduced three classes of defects:

1. Connection keys used node IDs instead of node names (33 broken links
   across n8n-workflow.json, n8n-batch-ui.json, n8n-actions.json)
2. GraphQL HTTP nodes used $env.UNRAID_API_KEY manual headers instead of
   Header Auth credential, causing CSRF/UNAUTHENTICATED errors (20 nodes)
3. Duplicate node name "Execute Batch Update" (serial vs parallel paths)

Also fixes Build Cancel Return Submenu using $input.item.json instead of
$('Prepare Cancel From Confirm').item.json after GraphQL query chain.

Removes 12 dead/orphan nodes (6 pre-migration dead code chains,
6 unused utility templates). Node count: 193 -> 181.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Lucas Berger
2026-02-09 11:29:40 -05:00
parent c002ba8fd9
commit 216f3a406a
4 changed files with 259 additions and 574 deletions
+61 -154
View File
@@ -220,7 +220,7 @@
"parameters": {
"method": "POST",
"url": "={{ $env.UNRAID_HOST }}/graphql",
"authentication": "none",
"authentication": "genericCredentialType",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "{\"query\": \"query { docker { containers { id names state image } } }\"}",
@@ -230,10 +230,6 @@
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "x-api-key",
"value": "={{ $env.UNRAID_API_KEY }}"
}
]
},
@@ -244,7 +240,8 @@
"errorHandling": "continueRegularOutput"
}
}
}
},
"genericAuthType": "httpHeaderAuth"
},
"id": "http-fetch-containers-mode",
"name": "Fetch Containers For Mode",
@@ -253,7 +250,13 @@
"position": [
680,
100
]
],
"credentials": {
"httpHeaderAuth": {
"id": "unraid-api-key-credential-id",
"name": "Unraid API Key"
}
}
},
{
"parameters": {
@@ -316,7 +319,7 @@
"parameters": {
"method": "POST",
"url": "={{ $env.UNRAID_HOST }}/graphql",
"authentication": "none",
"authentication": "genericCredentialType",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "{\"query\": \"query { docker { containers { id names state image } } }\"}",
@@ -326,10 +329,6 @@
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "x-api-key",
"value": "={{ $env.UNRAID_API_KEY }}"
}
]
},
@@ -340,7 +339,8 @@
"errorHandling": "continueRegularOutput"
}
}
}
},
"genericAuthType": "httpHeaderAuth"
},
"id": "http-fetch-containers-toggle",
"name": "Fetch Containers For Update",
@@ -349,7 +349,13 @@
"position": [
1120,
100
]
],
"credentials": {
"httpHeaderAuth": {
"id": "unraid-api-key-credential-id",
"name": "Unraid API Key"
}
}
},
{
"parameters": {
@@ -368,7 +374,7 @@
"parameters": {
"method": "POST",
"url": "={{ $env.UNRAID_HOST }}/graphql",
"authentication": "none",
"authentication": "genericCredentialType",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "{\"query\": \"query { docker { containers { id names state image } } }\"}",
@@ -378,10 +384,6 @@
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "x-api-key",
"value": "={{ $env.UNRAID_API_KEY }}"
}
]
},
@@ -392,7 +394,8 @@
"errorHandling": "continueRegularOutput"
}
}
}
},
"genericAuthType": "httpHeaderAuth"
},
"id": "http-fetch-containers-exec",
"name": "Fetch Containers For Exec",
@@ -401,7 +404,13 @@
"position": [
680,
400
]
],
"credentials": {
"httpHeaderAuth": {
"id": "unraid-api-key-credential-id",
"name": "Unraid API Key"
}
}
},
{
"parameters": {
@@ -433,7 +442,7 @@
"parameters": {
"method": "POST",
"url": "={{ $env.UNRAID_HOST }}/graphql",
"authentication": "none",
"authentication": "genericCredentialType",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "{\"query\": \"query { docker { containers { id names state image } } }\"}",
@@ -443,10 +452,6 @@
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "x-api-key",
"value": "={{ $env.UNRAID_API_KEY }}"
}
]
},
@@ -457,7 +462,8 @@
"errorHandling": "continueRegularOutput"
}
}
}
},
"genericAuthType": "httpHeaderAuth"
},
"id": "http-fetch-containers-nav",
"name": "Fetch Containers For Nav",
@@ -466,7 +472,13 @@
"position": [
900,
300
]
],
"credentials": {
"httpHeaderAuth": {
"id": "unraid-api-key-credential-id",
"name": "Unraid API Key"
}
}
},
{
"parameters": {
@@ -498,7 +510,7 @@
"parameters": {
"method": "POST",
"url": "={{ $env.UNRAID_HOST }}/graphql",
"authentication": "none",
"authentication": "genericCredentialType",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "{\"query\": \"query { docker { containers { id names state image } } }\"}",
@@ -508,10 +520,6 @@
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "x-api-key",
"value": "={{ $env.UNRAID_API_KEY }}"
}
]
},
@@ -522,7 +530,8 @@
"errorHandling": "continueRegularOutput"
}
}
}
},
"genericAuthType": "httpHeaderAuth"
},
"id": "http-fetch-containers-clear",
"name": "Fetch Containers For Clear",
@@ -531,7 +540,13 @@
"position": [
900,
500
]
],
"credentials": {
"httpHeaderAuth": {
"id": "unraid-api-key-credential-id",
"name": "Unraid API Key"
}
}
},
{
"parameters": {
@@ -687,7 +702,7 @@
"main": [
[
{
"node": "Build Batch Keyboard",
"node": "Normalize GraphQL Response (Mode)",
"type": "main",
"index": 0
}
@@ -720,7 +735,7 @@
"main": [
[
{
"node": "Rebuild Keyboard After Toggle",
"node": "Normalize GraphQL Response (Toggle)",
"type": "main",
"index": 0
}
@@ -731,7 +746,7 @@
"main": [
[
{
"node": "Handle Exec",
"node": "Normalize GraphQL Response (Exec)",
"type": "main",
"index": 0
}
@@ -753,7 +768,7 @@
"main": [
[
{
"node": "Rebuild Keyboard For Nav",
"node": "Normalize GraphQL Response (Nav)",
"type": "main",
"index": 0
}
@@ -775,25 +790,14 @@
"main": [
[
{
"node": "Rebuild Keyboard After Clear",
"node": "Normalize GraphQL Response (Clear)",
"type": "main",
"index": 0
}
]
]
},
"http-fetch-containers-mode": {
"main": [
[
{
"node": "Normalize GraphQL Response (Mode)",
"type": "main",
"index": 0
}
]
]
},
"code-normalizer-mode": {
"Normalize GraphQL Response (Mode)": {
"main": [
[
{
@@ -804,18 +808,7 @@
]
]
},
"http-fetch-containers-toggle": {
"main": [
[
{
"node": "Normalize GraphQL Response (Toggle)",
"type": "main",
"index": 0
}
]
]
},
"code-normalizer-toggle": {
"Normalize GraphQL Response (Toggle)": {
"main": [
[
{
@@ -826,18 +819,7 @@
]
]
},
"http-fetch-containers-exec": {
"main": [
[
{
"node": "Normalize GraphQL Response (Exec)",
"type": "main",
"index": 0
}
]
]
},
"code-normalizer-exec": {
"Normalize GraphQL Response (Exec)": {
"main": [
[
{
@@ -848,18 +830,7 @@
]
]
},
"http-fetch-containers-nav": {
"main": [
[
{
"node": "Normalize GraphQL Response (Nav)",
"type": "main",
"index": 0
}
]
]
},
"code-normalizer-nav": {
"Normalize GraphQL Response (Nav)": {
"main": [
[
{
@@ -870,18 +841,7 @@
]
]
},
"http-fetch-containers-clear": {
"main": [
[
{
"node": "Normalize GraphQL Response (Clear)",
"type": "main",
"index": 0
}
]
]
},
"code-normalizer-clear": {
"Normalize GraphQL Response (Clear)": {
"main": [
[
{
@@ -891,63 +851,10 @@
}
]
]
},
"switch-route-batch-action": {
"main": [
[
{
"node": "Fetch Containers For Mode",
"type": "main",
"index": 0
}
],
[],
[],
[
{
"node": "Fetch Containers For Exec",
"type": "main",
"index": 0
}
]
]
},
"if-needs-keyboard-update": {
"main": [
[
{
"node": "Fetch Containers For Update",
"type": "main",
"index": 0
}
]
]
},
"code-handle-nav": {
"main": [
[
{
"node": "Fetch Containers For Nav",
"type": "main",
"index": 0
}
]
]
},
"code-handle-clear": {
"main": [
[
{
"node": "Fetch Containers For Clear",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1",
"callerPolicy": "any"
}
}
}