{"_id":"@axonflow/n8n-nodes-axonflow","_rev":"5-cf888e2522d7df575162883792cf8565","name":"@axonflow/n8n-nodes-axonflow","dist-tags":{"latest":"1.2.1"},"versions":{"1.0.0":{"name":"@axonflow/n8n-nodes-axonflow","version":"1.0.0","keywords":["n8n-community-node-package","axonflow","policy","hitl"],"author":{"url":"https://getaxonflow.com","name":"AxonFlow","email":"hello@getaxonflow.com"},"license":"MIT","_id":"@axonflow/n8n-nodes-axonflow@1.0.0","maintainers":[{"name":"saurabhjain1592","email":"saurabhjain1592@gmail.com"},{"name":"dev-axonflow","email":"dev@getaxonflow.com"}],"homepage":"https://github.com/getaxonflow/axonflow-n8n-node","bugs":{"url":"https://github.com/getaxonflow/axonflow-n8n-node/issues"},"n8n":{"nodes":["dist/nodes/AxonFlow/AxonFlow.node.js"],"credentials":["dist/credentials/AxonFlowApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"92f01b23da64f426946ba3e0bf61e4dec5e8892a","tarball":"https://registry.npmjs.org/@axonflow/n8n-nodes-axonflow/-/n8n-nodes-axonflow-1.0.0.tgz","fileCount":13,"integrity":"sha512-AL/5osehIql3gPOyaP+ICEKY4Ct33+y97SgGq8YoUjoXzTpNs8niALEK10q5sE02rGy1PmaDFqzdzkneTrAwpg==","signatures":[{"sig":"MEUCIASTvCDZolXBB9qg7kvd8j0c5Hvgr21DMPRDqIYBhQO1AiEAvB5cCRp5qITQ8+6pQTFFho6wUgqngoVnei7UpotXucs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53565},"engines":{"node":">=18.10"},"gitHead":"c7ab9b1b7dc939239a34a64ef7b77bf680e2635a","scripts":{"lint":"eslint nodes credentials package.json","test":"node --test --import tsx test/AxonFlow.node.test.ts test/AxonFlowApi.credentials.test.ts","build":"tsc && node ./scripts/copy-assets.js","format":"prettier nodes credentials --write","prepublishOnly":"npm run build"},"_npmUser":{"name":"saurabhjain1592","email":"saurabhjain1592@gmail.com"},"repository":{"url":"git+https://github.com/getaxonflow/axonflow-n8n-node.git","type":"git"},"_npmVersion":"11.8.0","description":"AxonFlow API integration for n8n — call AxonFlow policy and HITL endpoints from your workflows.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","eslint":"^8.57.0","prettier":"^3.3.3","typescript":"^5.4.0","@types/node":"^20.11.0","n8n-workflow":"^1.82.0","@typescript-eslint/parser":"^7.15.0","eslint-plugin-n8n-nodes-base":"^1.16.3","@typescript-eslint/eslint-plugin":"^7.15.0"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-axonflow_1.0.0_1779571809000_0.5221154777935104","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@axonflow/n8n-nodes-axonflow","version":"1.0.2","keywords":["n8n-community-node-package","axonflow","policy","hitl"],"author":{"url":"https://getaxonflow.com","name":"AxonFlow","email":"hello@getaxonflow.com"},"license":"MIT","_id":"@axonflow/n8n-nodes-axonflow@1.0.2","maintainers":[{"name":"saurabhjain1592","email":"saurabhjain1592@gmail.com"},{"name":"dev-axonflow","email":"dev@getaxonflow.com"}],"homepage":"https://github.com/getaxonflow/axonflow-n8n-node","bugs":{"url":"https://github.com/getaxonflow/axonflow-n8n-node/issues"},"n8n":{"nodes":["dist/nodes/AxonFlow/AxonFlow.node.js"],"credentials":["dist/credentials/AxonFlowApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"88af7ec0a7dc3390cfd6a1812bad68df511fa827","tarball":"https://registry.npmjs.org/@axonflow/n8n-nodes-axonflow/-/n8n-nodes-axonflow-1.0.2.tgz","fileCount":13,"integrity":"sha512-cN46pbf6XHTxUxR1ScX2yOyj0uS9A9RjwXHiuuLEHKwqd3qFtQVKAF8TxhOp0uqBGzcm8glNgdI0XEKyVwPy/g==","signatures":[{"sig":"MEUCIFny2V+rbMIMAO2ogjEJ3PzwzIbxklYOqViQE6fw0X1sAiEA7EejgfaC843lj7mO5kaXStx1/tMLEQw9qzbKk2k4mlc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axonflow%2fn8n-nodes-axonflow@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":54919},"engines":{"node":">=18.10"},"gitHead":"1cff0367f69eaf146046d27456df1eb39911a802","scripts":{"lint":"eslint nodes credentials package.json","test":"node --test --import tsx test/AxonFlow.node.test.ts test/AxonFlowApi.credentials.test.ts","build":"tsc && node ./scripts/copy-assets.js","format":"prettier nodes credentials --write","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f3fc9d42-bb2d-41b0-87b2-b3db9ffe5ee4"}},"repository":{"url":"git+https://github.com/getaxonflow/axonflow-n8n-node.git","type":"git"},"_npmVersion":"11.12.1","description":"AxonFlow API integration for n8n — call AxonFlow policy and HITL endpoints from your workflows.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","eslint":"^8.57.0","prettier":"^3.3.3","typescript":"^5.4.0","@types/node":"^20.11.0","n8n-workflow":"^1.82.0","@typescript-eslint/parser":"^7.15.0","eslint-plugin-n8n-nodes-base":"^1.16.3","@typescript-eslint/eslint-plugin":"^7.15.0"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-axonflow_1.0.2_1779717093183_0.38085516914420214","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@axonflow/n8n-nodes-axonflow","version":"1.1.0","keywords":["n8n-community-node-package","axonflow","policy","hitl"],"author":{"url":"https://getaxonflow.com","name":"AxonFlow","email":"hello@getaxonflow.com"},"license":"MIT","_id":"@axonflow/n8n-nodes-axonflow@1.1.0","maintainers":[{"name":"saurabhjain1592","email":"saurabhjain1592@gmail.com"},{"name":"dev-axonflow","email":"dev@getaxonflow.com"}],"homepage":"https://github.com/getaxonflow/axonflow-n8n-node","bugs":{"url":"https://github.com/getaxonflow/axonflow-n8n-node/issues"},"n8n":{"nodes":["dist/nodes/AxonFlow/AxonFlow.node.js"],"credentials":["dist/credentials/AxonFlowApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"1bc3e5a7f4d7a39a5578787d5b1036cd6098dbc7","tarball":"https://registry.npmjs.org/@axonflow/n8n-nodes-axonflow/-/n8n-nodes-axonflow-1.1.0.tgz","fileCount":13,"integrity":"sha512-PwkGB2XPZwKPWKLrmbEbOctE0hYRe6JtpLCbhzhBsueoJ4W1ztUAzJRCFZj9V2Kpnn/iBdxMGQvfnKwzZJyfJw==","signatures":[{"sig":"MEYCIQDr+OY+gd2NLUMaHm7icbwMbiDaBzEICslCRlCHNvN/wQIhAJzrjdZvTqLELqZWnqkhaSj8MbfAv2r/0UQcw2foLF36","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axonflow%2fn8n-nodes-axonflow@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":55166},"engines":{"node":">=18.10"},"gitHead":"eea31bd65c737286691181093c22088796b5425a","scripts":{"lint":"eslint nodes credentials package.json","test":"node --test --import tsx test/AxonFlow.node.test.ts test/AxonFlowApi.credentials.test.ts","build":"tsc && node ./scripts/copy-assets.js","format":"prettier nodes credentials --write","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f3fc9d42-bb2d-41b0-87b2-b3db9ffe5ee4"}},"overrides":{"esbuild":">=0.28.1","form-data":">=4.0.4"},"repository":{"url":"git+https://github.com/getaxonflow/axonflow-n8n-node.git","type":"git"},"_npmVersion":"11.16.0","description":"AxonFlow API integration for n8n: call AxonFlow policy and HITL endpoints from your workflows.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","eslint":"^8.57.0","prettier":"^3.3.3","typescript":"^5.4.0","@types/node":"^20.11.0","n8n-workflow":"^1.82.0","@typescript-eslint/parser":"^7.15.0","eslint-plugin-n8n-nodes-base":"^1.16.3","@typescript-eslint/eslint-plugin":"^7.15.0"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-axonflow_1.1.0_1784368789294_0.20325967154284608","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@axonflow/n8n-nodes-axonflow","version":"1.2.0","keywords":["n8n-community-node-package","axonflow","policy","hitl"],"author":{"url":"https://getaxonflow.com","name":"AxonFlow","email":"hello@getaxonflow.com"},"license":"MIT","_id":"@axonflow/n8n-nodes-axonflow@1.2.0","maintainers":[{"name":"saurabhjain1592","email":"saurabhjain1592@gmail.com"},{"name":"dev-axonflow","email":"dev@getaxonflow.com"}],"homepage":"https://github.com/getaxonflow/axonflow-n8n-node","bugs":{"url":"https://github.com/getaxonflow/axonflow-n8n-node/issues"},"n8n":{"nodes":["dist/nodes/AxonFlow/AxonFlow.node.js"],"credentials":["dist/credentials/AxonFlowApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"daf25ba5a5b26d1bd74a99ce699d21b5097f2753","tarball":"https://registry.npmjs.org/@axonflow/n8n-nodes-axonflow/-/n8n-nodes-axonflow-1.2.0.tgz","fileCount":17,"integrity":"sha512-5IqlvktNKvwDh/ulMjPEeMNpWZXmfF6cvcoFcZxQQVFH5UMjXTJhGTKWS7ltoObZmvmyArXeSat1ljzmbvRfpw==","signatures":[{"sig":"MEUCIGTczWKProW0ISOXpok4ySfwJKyN9SwVbgLFdwbs5jOaAiEA5jKx6fyNvkSoBVBnpOOVacCEPkRCnD2jiGG01u6Y0Kw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axonflow%2fn8n-nodes-axonflow@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":64109},"engines":{"node":">=18.10"},"gitHead":"54fac8e6be843e09a3887aa547b7438e87694966","scripts":{"lint":"eslint nodes credentials package.json","test":"node --test --import tsx test/AxonFlow.node.test.ts test/AxonFlowApi.credentials.test.ts test/pep-handshake.test.ts","build":"tsc && node ./scripts/copy-assets.js","format":"prettier nodes credentials --write","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f3fc9d42-bb2d-41b0-87b2-b3db9ffe5ee4"}},"overrides":{"esbuild":">=0.28.1","form-data":">=4.0.4"},"repository":{"url":"git+https://github.com/getaxonflow/axonflow-n8n-node.git","type":"git"},"_npmVersion":"11.19.0","description":"AxonFlow API integration for n8n: call AxonFlow policy and HITL endpoints from your workflows.","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","eslint":"^8.57.0","prettier":"^3.3.3","typescript":"^5.4.0","@types/node":"^20.11.0","n8n-workflow":"^1.82.0","@typescript-eslint/parser":"^7.15.0","eslint-plugin-n8n-nodes-base":"^1.16.3","@typescript-eslint/eslint-plugin":"^7.15.0"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-axonflow_1.2.0_1788739027456_0.09782548464463914","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"_id":"@axonflow/n8n-nodes-axonflow@1.2.1","n8n":{"nodes":["dist/nodes/AxonFlow/AxonFlow.node.js"],"credentials":["dist/credentials/AxonFlowApi.credentials.js"],"n8nNodesApiVersion":1},"bugs":{"url":"https://github.com/getaxonflow/axonflow-n8n-node/issues"},"dist":{"shasum":"4a978e7a58539bfd99bff5fca27aa8a8e1b6ccf0","tarball":"https://registry.npmjs.org/@axonflow/n8n-nodes-axonflow/-/n8n-nodes-axonflow-1.2.1.tgz","fileCount":17,"integrity":"sha512-qimubcE983P4agGp7w8r1wuelrQ0YftFlN0oCDg5Kx1lDY7yTWX9shh8BVQthD/PdhiX3pkr97+eW4bfDDxqoQ==","signatures":[{"sig":"MEYCIQCbm4RvvhXA/y7BpEtWlSspAVN9bjqx/JnqE/rS0mrM1gIhAL8WRtkyck8k/0ocjcSPyLRPc0jILRAfWa+2nyG0I1gy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCifvWrRISNJsuyV57k/OL+JQH9l016Uk1kM3UFGFEZtwIgUUqyyqsFf8xlQObbg4hHHK4EZkdZ2xyw6gyxyQRMxKo="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axonflow%2fn8n-nodes-axonflow@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":63848},"name":"@axonflow/n8n-nodes-axonflow","author":{"url":"https://getaxonflow.com","name":"AxonFlow","email":"hello@getaxonflow.com"},"engines":{"node":">=18.10"},"gitHead":"1edf6a8133b2395bbe004852359b1ad75c34004d","license":"MIT","scripts":{"lint":"eslint nodes credentials package.json","test":"node --test --import tsx test/AxonFlow.node.test.ts test/AxonFlowApi.credentials.test.ts test/pep-handshake.test.ts","build":"tsc && node ./scripts/copy-assets.js","format":"prettier nodes credentials --write","prepublishOnly":"npm run build"},"version":"1.2.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f3fc9d42-bb2d-41b0-87b2-b3db9ffe5ee4"}},"homepage":"https://github.com/getaxonflow/axonflow-n8n-node","keywords":["n8n-community-node-package","axonflow","policy","hitl"],"overrides":{"esbuild":">=0.28.1","form-data":">=4.0.4"},"repository":{"url":"git+https://github.com/getaxonflow/axonflow-n8n-node.git","type":"git"},"_npmVersion":"11.19.0","description":"AxonFlow API integration for n8n: call AxonFlow policy and HITL endpoints from your workflows.","directories":{},"maintainers":[{"name":"saurabhjain1592","email":"saurabhjain1592@gmail.com"},{"name":"dev-axonflow","email":"dev@getaxonflow.com"}],"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","eslint":"^8.57.0","prettier":"^3.3.3","typescript":"^5.4.0","@types/node":"^20.11.0","n8n-workflow":"^1.82.0","@typescript-eslint/parser":"^7.15.0","eslint-plugin-n8n-nodes-base":"^1.16.3","@typescript-eslint/eslint-plugin":"^7.15.0"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/n8n-nodes-axonflow_1.2.1_1789457436253_0.850208947118906"}}},"time":{"created":"2026-05-23T21:30:08.830Z","modified":"2026-09-15T07:30:36.692Z","1.0.0":"2026-05-23T21:30:09.152Z","1.0.2":"2026-05-25T13:51:33.318Z","1.1.0":"2026-07-18T09:59:49.430Z","1.2.0":"2026-09-06T23:57:07.594Z","1.2.1":"2026-09-15T07:30:36.338Z"},"bugs":{"url":"https://github.com/getaxonflow/axonflow-n8n-node/issues"},"author":{"url":"https://getaxonflow.com","name":"AxonFlow","email":"hello@getaxonflow.com"},"license":"MIT","homepage":"https://github.com/getaxonflow/axonflow-n8n-node","keywords":["n8n-community-node-package","axonflow","policy","hitl"],"repository":{"url":"git+https://github.com/getaxonflow/axonflow-n8n-node.git","type":"git"},"description":"AxonFlow API integration for n8n: call AxonFlow policy and HITL endpoints from your workflows.","maintainers":[{"name":"saurabhjain1592","email":"saurabhjain1592@gmail.com"},{"name":"dev-axonflow","email":"dev@getaxonflow.com"}],"readme":"# n8n-nodes-axonflow\n\nAxonFlow API integration for [n8n](https://n8n.io). Call the AxonFlow policy and HITL endpoints directly from your n8n workflows.\n\n[![npm version](https://img.shields.io/npm/v/@axonflow/n8n-nodes-axonflow)](https://www.npmjs.com/package/@axonflow/n8n-nodes-axonflow)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## What it does\n\nThis package contributes a single `AxonFlow` node with four operations against an AxonFlow Agent:\n\n| Operation | Endpoint | When to use |\n|---|---|---|\n| **Check Policy** | `POST /api/v1/mcp/check-input` | Before a workflow takes a sensitive action — receive `{allowed, block_reason?}` and branch on it. On a redact-not-block allow it also returns the masked text; see **Redaction: your workflow must use the masked text** below. |\n| **Record Decision** | `POST /api/v1/audit/tool-call` | After a successful action — capture inputs, outputs, policies applied. |\n| **Audit Log** | `POST /api/v1/audit/tool-call` | From error branches — record the failed action with `success: false` and `error_message`. |\n| **Wait for Approval** | `POST /api/v1/hitl/queue` | When the workflow needs a human in the loop — creates an approval entry and pairs with an n8n Wait node for webhook resume. |\n\nPlus a single `AxonFlow API` credential type holding the endpoint + Basic-auth (`clientId` + `userToken`).\n\n## Redaction: your workflow must use the masked text\n\n**Check Policy can allow an action and still require that you change it.** When\nthe statement you submitted carried sensitive data under a redact-not-block\npolicy, AxonFlow allows the call and returns the masked version alongside it:\n\n```json\n{\n  \"allowed\": true,\n  \"redacted\": true,\n  \"redaction_evaluated\": true,\n  \"redacted_statement\": \"transfer to [REDACTED]\"\n}\n```\n\n**This node passes those fields through to your workflow unchanged, and does\nnothing else with them.** It does not rewrite the action, and it cannot: the\nnode has no way to know which of your downstream parameters the statement came\nfrom. Applying the redaction is your workflow's job.\n\n**So when `redacted_statement` is present, use it in place of the original.** A\nworkflow that branches only on `allowed` will proceed with the unmasked text,\nand the platform's audit record will show a redaction that your workflow did not\napply.\n\nTwo rules worth building in:\n\n- **Treat `redaction_evaluated` as the trust signal.** When it is absent or\n  false the redaction detector did not run, so \"no masked text\" means \"nothing\n  looked\", not \"nothing found\". Fail closed there rather than proceeding.\n- **AxonFlow will not redact for you.** Substituting the masked text it returns\n  is the sanctioned way to satisfy a redaction policy; masking the text yourself\n  is not, because your patterns and the platform's will disagree.\n\nThis applies on every AxonFlow edition. On Community the call is allowed and\nrecorded either way, so **this paragraph is the control** - nothing downstream\nwill stop an unmasked value for you. On Enterprise the platform can additionally\nrefuse a call whose enforcement point has declared it cannot apply a redaction;\nthis node declares exactly that, honestly, because it performs no substitution\nof its own.\n\n## Install\n\n### n8n GUI (self-hosted)\n\n1. **Settings > Community Nodes > Install.**\n2. npm package name: `@axonflow/n8n-nodes-axonflow`.\n3. Restart n8n.\n\n### Manual (self-hosted)\n\n```bash\ncd ~/.n8n/custom\nnpm install @axonflow/n8n-nodes-axonflow\n# restart n8n\n```\n\n> n8n Cloud does not currently allow unverified community nodes. Use the [stock-HTTP-node recipe](https://docs.getaxonflow.com/docs/integration/n8n/) on n8n Cloud until this package is verified.\n\n## Configure the credential\n\n**Credentials > New > AxonFlow API.**\n\n| Field | Description |\n|---|---|\n| Endpoint | Base URL of your AxonFlow Agent. SaaS: `https://try.getaxonflow.com`. Self-hosted: typically port 8080. |\n| Client ID | Your tenant identifier. |\n| User Token | Sent as the password half of HTTP Basic auth. Stored encrypted in n8n. |\n\n## Quickstart\n\n1. Install the community node (see above).\n2. Create an **AxonFlow API** credential with your endpoint + Client ID + User Token.\n3. Add an **AxonFlow** node to your workflow.\n4. Pick an operation:\n   - **Check Policy** — submit a proposed action and branch on `allowed: true/false`.\n   - **Record Decision** — log the outcome of a downstream action.\n   - **Audit Log** — log a failed action from an error branch.\n   - **Wait for Approval** — create a HITL request and pair with a Wait node for webhook resume.\n5. Run the workflow.\n\n## Three things to know\n\n1. **Bearer Auth > Header Auth.** This credential uses the Header Auth pattern (Authorization built inline) rather than n8n's built-in Bearer Auth class, which silently drops the header in some n8n versions ([n8n#15261](https://github.com/n8n-io/n8n/issues/15261)).\n2. **Idempotency by default.** Every operation sends `Idempotency-Key: {executionId}-{itemIndex}-{nodeName}` so n8n's `Retry on Fail` doesn't double-record. Override at the node parameter level if you need a domain-specific key.\n3. **HITL pairs with the Wait node.** `Wait for Approval` creates the AxonFlow approval entry; pair it with a downstream Wait node configured for **On Webhook Call** mode. As of platform v8.1.0+, pass the Wait node's webhook URL as `notify_url` in the HITL queue request and AxonFlow will POST to it automatically on approval/rejection — no polling sidecar needed. For self-hosted deployments on v8.0.x, two manual paths work: (a) run a small **polling sidecar** that watches `GET /api/v1/hitl/queue/{id}` and POSTs to the Wait node's webhook URL when status changes, or (b) have a reviewer trigger the resume URL manually from the portal. See the [n8n integration docs](https://docs.getaxonflow.com/docs/integration/n8n/#hitl) for details.\n\n## Client identification\n\nEvery call this node makes to AxonFlow carries `X-Axonflow-Client: n8n-plugin/<version>`, set once on the credential so it rides every operation. The version is read from this package's own metadata.\n\n**What this is and is not.** It is attribution on a request the platform already receives — no additional request is made, and **this node sends no heartbeat or telemetry ping of its own**. It is never used for authentication: the platform authenticates on the `Authorization` header, so a missing or mangled value cannot fail a call. Nothing about your workflow data, statements, parameters, or identity is added by it.\n\n## Example workflow\n\n[`examples/governed-loan-workflow.json`](./examples/governed-loan-workflow.json) — an importable workflow that:\n\n1. Receives a loan request via HTTP trigger,\n2. Calls **Check Policy** on the amount,\n3. If `allowed=false`, branches to **Wait for Approval** (workflow pauses),\n4. On approval, calls the downstream loan-issuance HTTP endpoint,\n5. Records the outcome with **Record Decision**, with an error branch to **Audit Log**.\n\nImport in n8n: **Workflows > Import from File >** `governed-loan-workflow.json`.\n\n## Build from source\n\n```bash\ngit clone https://github.com/getaxonflow/axonflow-n8n-node.git\ncd axonflow-n8n-node\nnpm install\nnpm run build       # tsc > dist/\nnpm run lint\nnpm test            # node --test (25 tests)\n```\n\n## Documentation\n\n- [n8n + AxonFlow Integration Guide](https://docs.getaxonflow.com/docs/integration/n8n/) — full walkthrough including the stock-HTTP-node recipe, HITL polling sidecar, and idempotency details.\n- [AxonFlow](https://getaxonflow.com) — main project site.\n- [AxonFlow on GitHub](https://github.com/getaxonflow/axonflow) — community edition.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}