{"_id":"@airlockapp/n8n-nodes-airlock","_rev":"10-4743c5ea04050babdb0b53afc9bbbd40","name":"@airlockapp/n8n-nodes-airlock","dist-tags":{"latest":"0.4.8"},"versions":{"0.3.6":{"name":"@airlockapp/n8n-nodes-airlock","version":"0.3.6","keywords":["n8ncommunity-node-package"],"author":{"name":"Airlock"},"license":"MIT","_id":"@airlockapp/n8n-nodes-airlock@0.3.6","maintainers":[{"name":"aliozgur","email":"aliozgur79@gmail.com"}],"homepage":"https://airlockapp.io","n8n":{"nodes":["dist/nodes/AirlockEcho/AirlockEcho.node.js","dist/nodes/AirlockEnforcer/AirlockEnforcer.node.js"],"credentials":["dist/credentials/AirlockGatewayApi.credentials.js"]},"dist":{"shasum":"f72c96010a5412d585267eea41c44f4e7b7e9763","tarball":"https://registry.npmjs.org/@airlockapp/n8n-nodes-airlock/-/n8n-nodes-airlock-0.3.6.tgz","fileCount":44,"integrity":"sha512-MTs6EOcJIH/zAmr1tIBwB3YM9E9EkhpYUKwoyV30K8Y//nxGHF1O7kFgOtmo+GWcB8966lgE/GG+23UuM8uRBw==","signatures":[{"sig":"MEYCIQDaWdshs53tVgssY1mXILyfMzPoAsZnYEL3spBDNjrmOwIhALnrC0fgdyr3AZwevJU7RGbLQYe5EnM9Y/quJC0f5soj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93546},"main":"dist/index.js","type":"commonjs","gitHead":"219c44df469b8f8fdedb73c6def834fa1f3d5695","scripts":{"dev":"tsc --watch","lint":"eslint .","test":"jest","build":"tsc"},"_npmUser":{"name":"aliozgur","email":"aliozgur79@gmail.com"},"_npmVersion":"10.9.4","description":"Integration for Airlock Gateway within n8n","directories":{},"_nodeVersion":"22.22.1","dependencies":{"n8n-core":"^2.14.0","n8n-workflow":"^2.14.0","@airlockapp/gateway-sdk":"^0.3.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","tslib":"^2.8.1","ts-jest":"^29.4.6","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-airlock_0.3.6_1774452500355_0.32183904404956265","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@airlockapp/n8n-nodes-airlock","version":"0.4.0","keywords":["n8ncommunity-node-package"],"author":{"name":"Airlock"},"license":"MIT","_id":"@airlockapp/n8n-nodes-airlock@0.4.0","maintainers":[{"name":"aliozgur","email":"aliozgur79@gmail.com"}],"homepage":"https://airlockapp.io","n8n":{"nodes":["dist/nodes/AirlockEcho/AirlockEcho.node.js","dist/nodes/AirlockEnforcer/AirlockEnforcer.node.js"],"credentials":["dist/credentials/AirlockGatewayApi.credentials.js"]},"dist":{"shasum":"08593e1974d25387e4611bb82daebb317fb0e576","tarball":"https://registry.npmjs.org/@airlockapp/n8n-nodes-airlock/-/n8n-nodes-airlock-0.4.0.tgz","fileCount":44,"integrity":"sha512-gMi8oVRhJZw9dSNMYXwzqP4ro+9theBjqXUGaF9LWuveg7qK+1gfaKKba0bsteJBe7gqLTWJ88BHQ6r5nVIqZQ==","signatures":[{"sig":"MEQCIE8vbT9MJLchsvN+PcZE8lR1ipYl1CKFkL8rtUt9eZ/JAiBaB7BU1AYmJV/TTeiFnvtczjGsVcQeMdTj9c7BEPjVbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94111},"main":"dist/index.js","type":"commonjs","gitHead":"d4020a56e216fbe4f8a1f3917351548176e0a5b5","scripts":{"dev":"tsc --watch","lint":"eslint .","test":"jest","build":"tsc"},"_npmUser":{"name":"aliozgur","email":"aliozgur79@gmail.com"},"_npmVersion":"10.9.4","description":"Integration for Airlock Gateway within n8n","directories":{},"_nodeVersion":"22.22.1","dependencies":{"n8n-core":"^2.14.0","n8n-workflow":"^2.14.0","@airlockapp/gateway-sdk":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","tslib":"^2.8.1","ts-jest":"^29.4.6","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-airlock_0.4.0_1774534898856_0.05664036216097257","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@airlockapp/n8n-nodes-airlock","version":"0.4.1","keywords":["n8ncommunity-node-package"],"author":{"name":"Airlock"},"license":"MIT","_id":"@airlockapp/n8n-nodes-airlock@0.4.1","maintainers":[{"name":"aliozgur","email":"aliozgur79@gmail.com"}],"homepage":"https://airlockapp.io","n8n":{"nodes":["dist/nodes/AirlockEcho/AirlockEcho.node.js","dist/nodes/AirlockEnforcer/AirlockEnforcer.node.js"],"credentials":["dist/credentials/AirlockGatewayApi.credentials.js"]},"dist":{"shasum":"71c21b22ea2e0b0357597c6e01b9a16315156bca","tarball":"https://registry.npmjs.org/@airlockapp/n8n-nodes-airlock/-/n8n-nodes-airlock-0.4.1.tgz","fileCount":44,"integrity":"sha512-opZ1zWbKDzt0FrqDlb9K8rwu0ArfNWoKT9sq5kpwUsQkkG6Q4gRlOSkgpIGh7HGz15fj9/JDd9g8XJ7atm/02g==","signatures":[{"sig":"MEQCIDjA4AC0jxEyW7YIzxTmJmLrDHwxP9/QcQO+n/0azmAzAiApjwEe46DsY2Gre3BYZjWYrHnItlS4eWtyHVXor1k76A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96341},"main":"dist/index.js","type":"commonjs","gitHead":"ca1ce3e1e41e65b64123dad3a7ccbb523271caa7","scripts":{"dev":"tsc --watch","lint":"eslint .","test":"jest","build":"tsc"},"_npmUser":{"name":"aliozgur","email":"aliozgur79@gmail.com"},"_npmVersion":"10.9.4","description":"Integration for Airlock Gateway within n8n","directories":{},"_nodeVersion":"22.22.1","dependencies":{"n8n-core":"^2.14.0","n8n-workflow":"^2.14.0","@airlockapp/gateway-sdk":"^0.4.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","tslib":"^2.8.1","ts-jest":"^29.4.6","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-airlock_0.4.1_1774622337050_0.47506990945653627","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@airlockapp/n8n-nodes-airlock","version":"0.4.2","keywords":["n8ncommunity-node-package"],"author":{"name":"Airlock"},"license":"MIT","_id":"@airlockapp/n8n-nodes-airlock@0.4.2","maintainers":[{"name":"aliozgur","email":"aliozgur79@gmail.com"}],"homepage":"https://airlockapp.io","n8n":{"nodes":["dist/nodes/AirlockEcho/AirlockEcho.node.js","dist/nodes/AirlockEnforcer/AirlockEnforcer.node.js"],"credentials":["dist/credentials/AirlockGatewayApi.credentials.js"]},"dist":{"shasum":"7a93a6463d3ab33a2679c5733f06346bad7825b8","tarball":"https://registry.npmjs.org/@airlockapp/n8n-nodes-airlock/-/n8n-nodes-airlock-0.4.2.tgz","fileCount":44,"integrity":"sha512-aQA6/5MxIKsCjd1BNG0OYCJ0rZYfO2ynrgatH0O0l4iyapnlsHBKNWAiRGpmXdeqCxcTM5ZfI944N+j356AWtQ==","signatures":[{"sig":"MEUCIQD6CEwDZGXvn5rUkN6/No4eDMcfv/SvOILMsLgmlGn7FgIgfy03ZPbwMBIAA99sNp1JJXFMqFGsTZwDcue6kuk2HsI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96341},"main":"dist/index.js","type":"commonjs","gitHead":"dc459ca4b0ec2259f2b2a06ceaed7ae1173f7de7","scripts":{"dev":"tsc --watch","lint":"eslint .","test":"jest","build":"tsc"},"_npmUser":{"name":"aliozgur","email":"aliozgur79@gmail.com"},"_npmVersion":"10.9.4","description":"Integration for Airlock Gateway within n8n","directories":{},"_nodeVersion":"22.22.1","dependencies":{"n8n-core":"^2.14.0","n8n-workflow":"^2.14.0","@airlockapp/gateway-sdk":"^0.4.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","tslib":"^2.8.1","ts-jest":"^29.4.6","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-airlock_0.4.2_1774902189493_0.44592035712263867","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@airlockapp/n8n-nodes-airlock","version":"0.4.3","keywords":["n8ncommunity-node-package"],"author":{"name":"Airlock"},"license":"MIT","_id":"@airlockapp/n8n-nodes-airlock@0.4.3","maintainers":[{"name":"aliozgur","email":"aliozgur79@gmail.com"}],"homepage":"https://airlockapp.io","n8n":{"nodes":["dist/nodes/AirlockEcho/AirlockEcho.node.js","dist/nodes/AirlockEnforcer/AirlockEnforcer.node.js"],"credentials":["dist/credentials/AirlockGatewayApi.credentials.js"]},"dist":{"shasum":"cb07c43777582695dbb5917adf692c0a9682c159","tarball":"https://registry.npmjs.org/@airlockapp/n8n-nodes-airlock/-/n8n-nodes-airlock-0.4.3.tgz","fileCount":44,"integrity":"sha512-4qN76hpcPV2OPB5FXbu6Kxm+UyZWaTut3oWhT7h0bZaT0UZX9TZqnIXB0MVtT4qfXtSuyPIBTJ45Jik1HIsmJA==","signatures":[{"sig":"MEUCIHhV4mguH6vpjaAlqoGYs0LIQZkP0bnYV+RxwpKvK3AyAiEAyrjnba2qKrOfXL36VHHdd2zGOR4MScSEGoPj3zXenpA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96533},"main":"dist/index.js","type":"commonjs","gitHead":"7c9482b47048dc970900c1a5f6cc51d7417162ef","scripts":{"dev":"tsc --watch","lint":"eslint .","test":"jest","build":"tsc"},"_npmUser":{"name":"aliozgur","email":"aliozgur79@gmail.com"},"_npmVersion":"10.9.4","description":"Integration for Airlock Gateway within n8n","directories":{},"_nodeVersion":"22.22.1","dependencies":{"n8n-core":"^2.14.0","n8n-workflow":"^2.14.0","@airlockapp/gateway-sdk":"^0.4.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","tslib":"^2.8.1","ts-jest":"^29.4.6","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-airlock_0.4.3_1774966633921_0.922690891324834","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@airlockapp/n8n-nodes-airlock","version":"0.4.4","keywords":["n8ncommunity-node-package"],"author":{"name":"Airlock"},"license":"MIT","_id":"@airlockapp/n8n-nodes-airlock@0.4.4","maintainers":[{"name":"aliozgur","email":"aliozgur79@gmail.com"}],"homepage":"https://airlockapp.io","n8n":{"nodes":["dist/nodes/AirlockEcho/AirlockEcho.node.js","dist/nodes/AirlockEnforcer/AirlockEnforcer.node.js"],"credentials":["dist/credentials/AirlockGatewayApi.credentials.js"]},"dist":{"shasum":"63e0f743d13eddd35812bb675ea080f10bcc9828","tarball":"https://registry.npmjs.org/@airlockapp/n8n-nodes-airlock/-/n8n-nodes-airlock-0.4.4.tgz","fileCount":44,"integrity":"sha512-LqQ+vLT26etOsWGQ1ANsPFPF2ibEOMtlAo1IjuwH+9ErhU2Hc/na94Oi0wwjsFpOrtSQUQbpt3cPEoLEQ0NrFQ==","signatures":[{"sig":"MEYCIQDd9NQ0/fb+3FIsE+9vvUfreoJBWTFGG3/xWgNQN7T5CwIhAJc8k7OpwiWrRgtBNKCUfQ8azXnbFcMtalnAJajnt8Xx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96533},"main":"dist/index.js","type":"commonjs","gitHead":"dae3a05cf471da4167f52154e976de0d5b2e9d4e","scripts":{"dev":"tsc --watch","lint":"eslint .","test":"jest","build":"tsc"},"_npmUser":{"name":"aliozgur","email":"aliozgur79@gmail.com"},"_npmVersion":"10.9.4","description":"Integration for Airlock Gateway within n8n","directories":{},"_nodeVersion":"22.22.1","dependencies":{"n8n-core":"^2.14.0","n8n-workflow":"^2.14.0","@airlockapp/gateway-sdk":"^0.4.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","tslib":"^2.8.1","ts-jest":"^29.4.6","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-airlock_0.4.4_1774968002658_0.8007724001705363","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@airlockapp/n8n-nodes-airlock","version":"0.4.5","keywords":["n8ncommunity-node-package"],"author":{"name":"Airlock"},"license":"MIT","_id":"@airlockapp/n8n-nodes-airlock@0.4.5","maintainers":[{"name":"aliozgur","email":"aliozgur79@gmail.com"}],"homepage":"https://airlockapp.io","n8n":{"nodes":["dist/nodes/AirlockEcho/AirlockEcho.node.js","dist/nodes/AirlockEnforcer/AirlockEnforcer.node.js"],"credentials":["dist/credentials/AirlockGatewayApi.credentials.js"]},"dist":{"shasum":"3c23b110544797733cafc040d358bc57501deee3","tarball":"https://registry.npmjs.org/@airlockapp/n8n-nodes-airlock/-/n8n-nodes-airlock-0.4.5.tgz","fileCount":44,"integrity":"sha512-6rH6HzYvdFZhTIfYEDbelhOMEQqA3ZA4INIibZA6hrP7i2HwOaF+8EjJ5YyaBo0xXbNunfT+m+aBGqMBTQwMCw==","signatures":[{"sig":"MEUCIQCQKmA5g7n/RvzFpGeRMLeh09tT1no9SqWO8d6hiYeogwIgXweTpwdaX+BDAgLQGseIkmoHwkl7IC06kJjhgKFxADY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96533},"main":"dist/index.js","type":"commonjs","gitHead":"b7f0af7fbf330f684464816ac823c291593f4061","scripts":{"dev":"tsc --watch","lint":"eslint .","test":"jest","build":"tsc"},"_npmUser":{"name":"aliozgur","email":"aliozgur79@gmail.com"},"_npmVersion":"10.9.4","description":"Integration for Airlock Gateway within n8n","directories":{},"_nodeVersion":"22.22.1","dependencies":{"n8n-core":"^2.14.0","n8n-workflow":"^2.14.0","@airlockapp/gateway-sdk":"^0.4.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","tslib":"^2.8.1","ts-jest":"^29.4.6","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-airlock_0.4.5_1775060559128_0.8297661550079893","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@airlockapp/n8n-nodes-airlock","version":"0.4.6","keywords":["n8ncommunity-node-package"],"author":{"name":"Airlock"},"license":"MIT","_id":"@airlockapp/n8n-nodes-airlock@0.4.6","maintainers":[{"name":"aliozgur","email":"aliozgur79@gmail.com"}],"homepage":"https://airlockapp.io","n8n":{"nodes":["dist/nodes/AirlockEcho/AirlockEcho.node.js","dist/nodes/AirlockEnforcer/AirlockEnforcer.node.js"],"credentials":["dist/credentials/AirlockGatewayApi.credentials.js"]},"dist":{"shasum":"3c9cd80d0f9d87235044a1e632e0d9d5e26d6cc3","tarball":"https://registry.npmjs.org/@airlockapp/n8n-nodes-airlock/-/n8n-nodes-airlock-0.4.6.tgz","fileCount":44,"integrity":"sha512-7Jf/yYpEO/WurynSslhRky5KXzgFv5LGLB9yaZaZrUPO8rjPV/VsolDjId/u4WAztGwptNSpip2uJbbSZ6UO0A==","signatures":[{"sig":"MEYCIQDSV0PeOXM2Dkxk6nyKzp4PyumLnU9QpBew03xYQtl3hAIhAMt29VCfP0RyyEwlYqWOcj6MRvGknMG1PQHEKIzGFZ3y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96533},"main":"dist/index.js","type":"commonjs","gitHead":"8fa2074cc22fd91a6111ce0227d85a1fa761d463","scripts":{"dev":"tsc --watch","lint":"eslint .","test":"jest","build":"tsc"},"_npmUser":{"name":"aliozgur","email":"aliozgur79@gmail.com"},"_npmVersion":"10.9.4","description":"Integration for Airlock Gateway within n8n","directories":{},"_nodeVersion":"22.22.1","dependencies":{"n8n-core":"^2.14.0","n8n-workflow":"^2.14.0","@airlockapp/gateway-sdk":"^0.4.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","tslib":"^2.8.1","ts-jest":"^29.4.6","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-airlock_0.4.6_1775074792335_0.22870921970598657","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"@airlockapp/n8n-nodes-airlock","version":"0.4.7","keywords":["n8ncommunity-node-package"],"author":{"name":"Airlock"},"license":"MIT","_id":"@airlockapp/n8n-nodes-airlock@0.4.7","maintainers":[{"name":"aliozgur","email":"aliozgur79@gmail.com"}],"homepage":"https://airlockapp.io","n8n":{"nodes":["dist/nodes/AirlockEcho/AirlockEcho.node.js","dist/nodes/AirlockEnforcer/AirlockEnforcer.node.js"],"credentials":["dist/credentials/AirlockGatewayApi.credentials.js"]},"dist":{"shasum":"d2b5c3a26c6dabdcd246dc780a97319262e07471","tarball":"https://registry.npmjs.org/@airlockapp/n8n-nodes-airlock/-/n8n-nodes-airlock-0.4.7.tgz","fileCount":44,"integrity":"sha512-HiSPO5+XdxsJUplvjaFUg6uMf+XaVUFQDqI5uCU/Hlk1yRfImXqYplDSAppJ+681e2ay35RCEX/ZhX7aAm6xIQ==","signatures":[{"sig":"MEYCIQCV+c2x7zAgItmzCBO1mwQp0z45T0Sg3XHyKV8qwDvPRwIhAMxohqXdn4WMSoDvYkQ8yYs8qWi7vQebljJMfOJtAzN6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96533},"main":"dist/index.js","type":"commonjs","gitHead":"d88994e110ed7fda33f7db981423a369de6e8185","scripts":{"dev":"tsc --watch","lint":"eslint .","test":"jest","build":"tsc"},"_npmUser":{"name":"aliozgur","email":"aliozgur79@gmail.com"},"_npmVersion":"10.9.7","description":"Integration for Airlock Gateway within n8n","directories":{},"_nodeVersion":"22.22.2","dependencies":{"n8n-core":"^2.14.0","n8n-workflow":"^2.14.0","@airlockapp/gateway-sdk":"^0.4.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","tslib":"^2.8.1","ts-jest":"^29.4.6","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-airlock_0.4.7_1775157565003_0.895116222856019","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"@airlockapp/n8n-nodes-airlock","version":"0.4.8","description":"Integration for Airlock Gateway within n8n","main":"dist/index.js","scripts":{"build":"tsc","dev":"tsc --watch","test":"jest","lint":"eslint ."},"keywords":["n8ncommunity-node-package"],"author":{"name":"Airlock"},"homepage":"https://airlockapp.io","license":"MIT","type":"commonjs","n8n":{"nodes":["dist/nodes/AirlockEcho/AirlockEcho.node.js","dist/nodes/AirlockEnforcer/AirlockEnforcer.node.js"],"credentials":["dist/credentials/AirlockGatewayApi.credentials.js"]},"dependencies":{"@airlockapp/gateway-sdk":"^0.4.1","n8n-core":"^2.14.0","n8n-workflow":"^2.14.0"},"devDependencies":{"@types/jest":"^30.0.0","@types/node":"^25.5.0","jest":"^30.3.0","ts-jest":"^29.4.6","tslib":"^2.8.1","typescript":"^5.9.3"},"_id":"@airlockapp/n8n-nodes-airlock@0.4.8","gitHead":"e291a1537ef0fbab5896e3e1b198f3c112c5e951","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-JjBWONViM2IlNzcL9A2IO2qKwCSYWB0XHUdNPYje0CcLLS+f1biTyEWRe+lLsgXBseZiHVEWd6O/6w1/vM+g+w==","shasum":"2fd3fec2a7e18b0fd31612ea86b5a051aaa6151c","tarball":"https://registry.npmjs.org/@airlockapp/n8n-nodes-airlock/-/n8n-nodes-airlock-0.4.8.tgz","fileCount":44,"unpackedSize":96533,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEqf/SMQoWDMfMpf7CRH5jXexUeV7DQJIJBc+7lYc2BSAiEAvi50KrMFeANQcitzgVhVmyLzYz5iayTmYC+y4zXQhVw="}]},"_npmUser":{"name":"aliozgur","email":"aliozgur79@gmail.com"},"directories":{},"maintainers":[{"name":"aliozgur","email":"aliozgur79@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/n8n-nodes-airlock_0.4.8_1775578583215_0.7690129149170468"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-25T15:28:20.257Z","modified":"2026-04-07T16:16:23.521Z","0.3.6":"2026-03-25T15:28:20.512Z","0.4.0":"2026-03-26T14:21:39.049Z","0.4.1":"2026-03-27T14:38:57.206Z","0.4.2":"2026-03-30T20:23:09.640Z","0.4.3":"2026-03-31T14:17:14.094Z","0.4.4":"2026-03-31T14:40:02.797Z","0.4.5":"2026-04-01T16:22:39.275Z","0.4.6":"2026-04-01T20:19:52.474Z","0.4.7":"2026-04-02T19:19:25.149Z","0.4.8":"2026-04-07T16:16:23.378Z"},"author":{"name":"Airlock"},"license":"MIT","homepage":"https://airlockapp.io","keywords":["n8ncommunity-node-package"],"description":"Integration for Airlock Gateway within n8n","maintainers":[{"name":"aliozgur","email":"aliozgur79@gmail.com"}],"readme":"# @airlockapp/n8n-nodes-airlock\n\nIntegration for Airlock Gateway within n8n. This package provides two nodes to seamlessly integrate your automated workflows with the human-in-the-loop approvals via the Airlock Mobile App.\n\n## 1. Credentials Configuration (Airlock Gateway API)\nBefore using the nodes, configure exactly one `Airlock Gateway API` credential to securely connect your workflows to the Airlock cloud.\n\n### General Settings\n- **Gateway URL**: Base URL of your Airlock Integrations Gateway.\n- **Enforcer ID**: A unique identifier for this n8n instance or specific workflow context.\n- **Workspace & Repository Name** (Optional): Text displayed in the Mobile App context card so the approver knows exactly which n8n instance they are interacting with.\n- **Wait Timeout (Seconds)**: Maximum time to wait for a mobile approver to make a decision (defaults to 60).\n- **Fail Mode**: \n  - `Fail Closed (Deny/Stop)`: Halts your workflow and throws a standard node error upon timeouts or connection failures.\n  - `Fail Open (Allow/Continue)`: Safely ignores the error, fakes an \"Allow\" decision, and lets your workflow proceed without missing a beat.\n\n### Secure Parameters\n- **Personal Access Token (PAT)**: Your Airlock user token (or service account token). This is structurally mutually exclusive to Client Credentials; use PAT by default for easiest setup.\n- **Client ID & Client Secret**: Application credentials reserved for strict machine-to-machine integrations without a tied user.\n- **Device Code**: Used strictly during the one-time pairing flow.\n- **Encryption Key & Routing Token**: Do not set these manually! Run the **Airlock Echo** node in Pair mode to auto-populate these fields via End-to-End Encryption key negotiation.\n\n---\n\n## 2. Airlock Echo Node (Setup & Connectivity)\nThe Echo node serves two essential operational purposes in the ecosystem.\n\n### A. Pair Device (One-Time Initialization)\n1. Type the *Pre-generated Device Code* (acquired from your mobile app) into your n8n Gateway Credentials.\n2. Run the Echo node in **Pair Device** mode.\n3. It securely communicates the X25519 pairing flow, establishes an E2EE shared secret, and **automatically saves the resulting Encryption Key and Routing Token back into your n8n Credentials**.\n\n### B. Echo / Consent Check (Connectivity Auditing)\nUsed inside live workflows to verify that the Gateway is online, avoiding mid-air crashes if connections sever.\n- If `Fail If Consent Not Approved` is enabled, the node halts execution directly if your Enforcer hasn't been granted global permission via the mobile app.\n\n---\n\n## 3. Airlock Enforcer Node (Human Approvals)\nThis node halts n8n execution, sends an encrypted payload to your mobile device, polls the server with heartbeats while it blocks, and resumes execution strictly once you approve or deny the request. Upon receiving a decision, the node sends a delivery acknowledgment (`POST /v1/acks`) to confirm receipt.\n\n### Node Configuration\n- **Artifact Type & Request Label**: Categorizes the prompt dynamically displayed on your app.\n- **Payload Mode**: \n  - **Raw Text**: Displays standard monospace payload information to the user.\n  - **JSON**: When valid JSON is provided via an expression (e.g., `={{ $json }}`), the mobile app intelligently parses it and dynamically displays every top-level key as a cleanly labeled row on the screen.\n- **Requested Actions (Buttons)**:\n  - You can use standard presets like *Allow/Deny* or build **Custom** action palettes (e.g., *Execute Trade (Primary)*, *Cancel Trade (Danger)*).\n\n---\n\n## 4. Sample Scenario: Algorithmic Trading Desk\n\nThis sample workflow automatically runs every minute. It randomly generates a synthetic stock trading signal calculating ticker, price, quantity, and risk.\nLow-risk signals route to a \"Standard Trade Approval\" enforcer, while high-risk signals (>$50,000 value) route to a specialized \"Compliance Committee Enforcer\" with custom `Execute/Cancel` actions. Finally, if the approver allowed the trade, it \"Executes\".\n\nYou can copy and **paste this JSON array directly into a blank n8n canvas** to import the whole workflow.\n\n```json\n{\n  \"nodes\": [\n    {\n      \"parameters\": {\n        \"rule\": {\n          \"interval\": [\n            {\n              \"field\": \"minutes\",\n              \"minutesInterval\": 1\n            }\n          ]\n        }\n      },\n      \"name\": \"Schedule (Every Minute)\",\n      \"type\": \"n8n-nodes-base.scheduleTrigger\",\n      \"typeVersion\": 1,\n      \"position\": [0, 300]\n    },\n    {\n      \"parameters\": {\n        \"operation\": \"echo\",\n        \"failOnConsent\": true,\n        \"includeRaw\": false\n      },\n      \"name\": \"Check Airlock Connectivity & Consent\",\n      \"type\": \"@airlockapp/n8n-nodes-airlock.airlockEcho\",\n      \"typeVersion\": 1,\n      \"position\": [220, 300],\n      \"notesInFlow\": true,\n      \"notes\": \"Verify Gateway is online\"\n    },\n    {\n      \"parameters\": {\n        \"jsCode\": \"const tickers = ['AAPL', 'MSFT', 'TSLA', 'NVDA', 'AMZN'];\\nconst actions = ['BUY', 'SELL'];\\n\\nconst ticker = tickers[Math.floor(Math.random() * tickers.length)];\\nconst action = actions[Math.floor(Math.random() * actions.length)];\\nconst price = parseFloat((Math.random() * 500 + 50).toFixed(2));\\nconst quantity = Math.floor(Math.random() * 900) + 100;\\nconst totalValue = parseFloat((price * quantity).toFixed(2));\\nconst riskLevel = totalValue >= 50000 ? 'High' : 'Low';\\n\\nreturn {\\n  signal: `${action} ${quantity} shares of ${ticker} @ $${price}`,\\n  ticker: ticker,\\n  action: action,\\n  price: price,\\n  quantity: quantity,\\n  totalValue: totalValue,\\n  riskLevel: riskLevel\\n};\"\n      },\n      \"name\": \"Generate Trade Signal\",\n      \"type\": \"n8n-nodes-base.code\",\n      \"typeVersion\": 2,\n      \"position\": [440, 300]\n    },\n    {\n      \"parameters\": {\n        \"conditions\": {\n          \"boolean\": [\n            {\n              \"value1\": \"={{ $json.totalValue >= 50000 }}\",\n              \"value2\": true\n            }\n          ]\n        }\n      },\n      \"name\": \"Is High Risk? (> $50k)\",\n      \"type\": \"n8n-nodes-base.if\",\n      \"typeVersion\": 1,\n      \"position\": [660, 300]\n    },\n    {\n      \"parameters\": {\n        \"requestLabel\": \"High-Risk Trade Approval\",\n        \"artifactType\": \"compliance.trade\",\n        \"payloadMode\": \"json\",\n        \"jsonPayload\": \"={{ $json }}\",\n        \"actionPreset\": \"custom\",\n        \"customActions\": {\n          \"actions\": [\n            {\n              \"id\": \"execute\",\n              \"caption\": \"Execute Trade\",\n              \"style\": \"primary\",\n              \"decision\": \"allow\"\n            },\n            {\n              \"id\": \"cancel\",\n              \"caption\": \"Cancel Trade\",\n              \"style\": \"danger\",\n              \"decision\": \"deny\"\n            }\n          ]\n        }\n      },\n      \"name\": \"Compliance Committee Enforcer\",\n      \"type\": \"@airlockapp/n8n-nodes-airlock.airlockEnforcer\",\n      \"typeVersion\": 1,\n      \"position\": [920, 180]\n    },\n    {\n      \"parameters\": {\n        \"requestLabel\": \"Standard Trade Approval\",\n        \"artifactType\": \"trading.standard\",\n        \"payloadMode\": \"json\",\n        \"jsonPayload\": \"={{ $json }}\",\n        \"actionPreset\": \"allow_deny\"\n      },\n      \"name\": \"Trading Desk Enforcer\",\n      \"type\": \"@airlockapp/n8n-nodes-airlock.airlockEnforcer\",\n      \"typeVersion\": 1,\n      \"position\": [920, 420]\n    },\n    {\n      \"parameters\": {\n        \"conditions\": {\n          \"string\": [\n            {\n              \"value1\": \"={{ $json.decision }}\",\n              \"value2\": \"allow\"\n            }\n          ]\n        }\n      },\n      \"name\": \"Check Final Decision\",\n      \"type\": \"n8n-nodes-base.if\",\n      \"typeVersion\": 1,\n      \"position\": [1180, 300]\n    },\n    {\n      \"parameters\": {\n        \"keepOnlySet\": true,\n        \"values\": {\n          \"string\": [\n            {\n              \"name\": \"message\",\n              \"value\": \"✅ Trade EXECUTED successfully!\"\n            }\n          ]\n        }\n      },\n      \"name\": \"Execute Trade\",\n      \"type\": \"n8n-nodes-base.set\",\n      \"typeVersion\": 2,\n      \"position\": [1420, 180]\n    },\n    {\n      \"parameters\": {\n        \"keepOnlySet\": true,\n        \"values\": {\n          \"string\": [\n            {\n              \"name\": \"message\",\n              \"value\": \"❌ Trade CANCELLED by human approver.\"\n            }\n          ]\n        }\n      },\n      \"name\": \"Cancel Trade\",\n      \"type\": \"n8n-nodes-base.set\",\n      \"typeVersion\": 2,\n      \"position\": [1420, 420]\n    }\n  ],\n  \"connections\": {\n    \"Schedule (Every Minute)\": {\n      \"main\": [\n        [\n          {\n            \"node\": \"Check Airlock Connectivity & Consent\",\n            \"type\": \"main\",\n            \"index\": 0\n          }\n        ]\n      ]\n    },\n    \"Check Airlock Connectivity & Consent\": {\n      \"main\": [\n        [\n          {\n            \"node\": \"Generate Trade Signal\",\n            \"type\": \"main\",\n            \"index\": 0\n          }\n        ]\n      ]\n    },\n    \"Generate Trade Signal\": {\n      \"main\": [\n        [\n          {\n            \"node\": \"Is High Risk? (> $50k)\",\n            \"type\": \"main\",\n            \"index\": 0\n          }\n        ]\n      ]\n    },\n    \"Is High Risk? (> $50k)\": {\n      \"main\": [\n        [\n          {\n            \"node\": \"Compliance Committee Enforcer\",\n            \"type\": \"main\",\n            \"index\": 0\n          }\n        ],\n        [\n          {\n            \"node\": \"Trading Desk Enforcer\",\n            \"type\": \"main\",\n            \"index\": 0\n          }\n        ]\n      ]\n    },\n    \"Compliance Committee Enforcer\": {\n      \"main\": [\n        [\n          {\n            \"node\": \"Check Final Decision\",\n            \"type\": \"main\",\n            \"index\": 0\n          }\n        ]\n      ]\n    },\n    \"Trading Desk Enforcer\": {\n      \"main\": [\n        [\n          {\n            \"node\": \"Check Final Decision\",\n            \"type\": \"main\",\n            \"index\": 0\n          }\n        ]\n      ]\n    },\n    \"Check Final Decision\": {\n      \"main\": [\n        [\n          {\n            \"node\": \"Execute Trade\",\n            \"type\": \"main\",\n            \"index\": 0\n          }\n        ],\n        [\n          {\n            \"node\": \"Cancel Trade\",\n            \"type\": \"main\",\n            \"index\": 0\n          }\n        ]\n      ]\n    }\n  }\n}\n```\n\n## Documentation & Resources\n\nFor full integration tutorials, conceptual overviews, and detailed API references, please visit the official Airlock Documentation:\n- **[Airlock Developer Guide](https://airlockapp.io/docs/developer-guide/)**\n- **[Airlock SDK Reference & Setup](https://airlockapp.io/docs/sdk/)**\n- **Airlock Approver** (mobile app): [App Store](https://apps.apple.com/us/app/airlock-approver/id6760250865) · [Google Play](https://play.google.com/store/apps/details?id=com.airlockapp.io)\n\n---\n\n## 5. Development & Local Docker Setup\n\nIf you are developing custom nodes or modifying the Airlock Enforcer logic, you can seamlessly test your changes locally using Docker by bind-mounting this project directly into an n8n container.\n\n### A. Environment Preparation\nAfter compiling the TypeScript codebase (`npm run build`), you need to pass an API key to the container. During the **Pair Device** flow, the Airlock Echo node intercepts the E2E public-key cryptography negotiation and securely auto-saves the resulting **Encryption Key** back into your n8n Credentials store using n8n's internal REST API.\n\nBecause the node uses this secure local pipeline, you **must set the `N8N_API_KEY`** environment variable when launching your container; otherwise, the automatic credential update process will fail.\n\n### B. Docker Compose Example\nHere is a barebones `docker-compose.yml` to safely test the custom nodes:\n\n```yaml\nversion: '3.8'\nservices:\n  n8n:\n    image: docker.n8n.io/n8nio/n8n:latest\n    ports:\n      - \"5678:5678\"\n    environment:\n      # Exposes the API for the Echo node to auto-save Pair credentials\n      - N8N_API_KEY=my-local-dev-key\n      - N8N_PORT=5678\n    volumes:\n      - ./n8n-data:/home/node/.n8n\n      # Bind-mount this repository folder directly into n8n's custom node directory\n      - /absolute/path/to/n8n-nodes-airlock:/home/node/.n8n/custom/node_modules/@airlockapp/n8n-nodes-airlock\n```\n\nWith this configuration, any time you run `npm run build` on your host machine to update your TS code, those `dist` changes are instantly mirrored inside the container. You simply stop and restart the n8n container to apply the hot-reloaded node changes!\n","readmeFilename":"README.md"}