{"_id":"@catdemon/n8n-nodes-grpc","_rev":"3-485d30cabad2cd09e1fd39ed36045c74","name":"@catdemon/n8n-nodes-grpc","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@catdemon/n8n-nodes-grpc","version":"1.0.0","keywords":["n8n","n8n-community-node-package","grpc","protobuf","rpc"],"author":{"name":"catdemon"},"license":"MIT","_id":"@catdemon/n8n-nodes-grpc@1.0.0","maintainers":[{"name":"catdemon","email":"artemnefedov11@gmail.com"}],"homepage":"https://github.com/l-CatDemon-l/n8n-nodes-grpc#readme","bugs":{"url":"https://github.com/l-CatDemon-l/n8n-nodes-grpc/issues"},"n8n":{"nodes":["dist/nodes/Grpc/Grpc.node.js"],"credentials":["dist/credentials/GrpcApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"bf20868b7a3f448ddef4d4a1dcb1ada1cb06d297","tarball":"https://registry.npmjs.org/@catdemon/n8n-nodes-grpc/-/n8n-nodes-grpc-1.0.0.tgz","fileCount":27,"integrity":"sha512-wSunTTTbhoS5pJP625m3P3cuTjL8KK/CSbKjTfyPxaX9CgToiYm6uSRAXOeAQXPqq7tlBpa8WnVDKecGDEkdLQ==","signatures":[{"sig":"MEUCIQCRDkEAIAXOmwX+u1ZTkNYzm2h6k20OxgS57hEtu4+CUgIgP1SRCTtC+GNfanFvQ2NAZl9nB8dr7rOPkQ1KRsPRdr8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101158},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"4f497aa2357272f4b6d9cfee874e9604df23c937","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","build":"tsc && gulp build:icons","lint:fix":"eslint src --ext .ts --fix","prepublishOnly":"npm run build"},"_npmUser":{"name":"catdemon","email":"artemnefedov11@gmail.com"},"repository":{"url":"git+https://github.com/l-CatDemon-l/n8n-nodes-grpc.git","type":"git"},"_npmVersion":"11.6.1","description":"n8n custom nodes for executing gRPC calls with dynamic proto parsing","directories":{},"_nodeVersion":"24.10.0","dependencies":{"protobufjs":"^7.2.0","n8n-workflow":"*","@grpc/grpc-js":"^1.9.0","@grpc/proto-loader":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"gulp":"^4.0.2","eslint":"^8.56.0","typescript":"^5.3.0","@types/node":"^20.10.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-grpc_1.0.0_1768389778000_0.9596158209534691","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@catdemon/n8n-nodes-grpc","version":"1.0.1","keywords":["n8n","n8n-community-node-package","grpc","protobuf","rpc"],"author":{"name":"catdemon"},"license":"MIT","_id":"@catdemon/n8n-nodes-grpc@1.0.1","maintainers":[{"name":"catdemon","email":"artemnefedov11@gmail.com"}],"homepage":"https://github.com/l-CatDemon-l/n8n-nodes-grpc#readme","bugs":{"url":"https://github.com/l-CatDemon-l/n8n-nodes-grpc/issues"},"n8n":{"nodes":["dist/nodes/Grpc/Grpc.node.js"],"credentials":["dist/credentials/GrpcApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"67e5eb217d80941586c4d7f0a73eafa879bd7ece","tarball":"https://registry.npmjs.org/@catdemon/n8n-nodes-grpc/-/n8n-nodes-grpc-1.0.1.tgz","fileCount":27,"integrity":"sha512-X3K0kfMAUacHjY0vabH9J0IMN3e44t9vsTH2GSmvKHb/pbcAu6snx8ldk19c7Cc29BAX2u4K+ThruppX2Mf+aQ==","signatures":[{"sig":"MEQCIGqA9PaqUTgty/HPFsnflRzH+rCiRApIJFdRGhVuDPmYAiAoRfgcI7JKbjzNeRGNWQ+xvEgLgZK/hC/gS72lpAG6ww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104690},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"498f8aa0d330b1ad37af73a468f8ec9beeee0b73","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","build":"tsc && gulp build:icons","lint:fix":"eslint src --ext .ts --fix","prepublishOnly":"npm run build"},"_npmUser":{"name":"catdemon","email":"artemnefedov11@gmail.com"},"repository":{"url":"git+https://github.com/l-CatDemon-l/n8n-nodes-grpc.git","type":"git"},"_npmVersion":"11.6.1","description":"n8n custom nodes for executing gRPC calls with dynamic proto parsing","directories":{},"_nodeVersion":"24.10.0","dependencies":{"protobufjs":"^7.2.0","n8n-workflow":"*","@grpc/grpc-js":"^1.9.0","@grpc/proto-loader":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"gulp":"^4.0.2","eslint":"^8.56.0","typescript":"^5.3.0","@types/node":"^20.10.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-grpc_1.0.1_1768392658369_0.5735029112134016","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@catdemon/n8n-nodes-grpc","version":"1.0.2","description":"n8n custom nodes for executing gRPC calls with dynamic proto parsing","keywords":["n8n","n8n-community-node-package","grpc","protobuf","rpc"],"license":"MIT","homepage":"https://github.com/l-CatDemon-l/n8n-nodes-grpc#readme","author":{"name":"catdemon"},"repository":{"type":"git","url":"git+https://github.com/l-CatDemon-l/n8n-nodes-grpc.git"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc && gulp build:icons","dev":"tsc --watch","lint":"eslint src --ext .ts","lint:fix":"eslint src --ext .ts --fix","prepublishOnly":"npm run build"},"n8n":{"n8nNodesApiVersion":1,"credentials":["dist/credentials/GrpcApi.credentials.js"],"nodes":["dist/nodes/Grpc/Grpc.node.js"]},"devDependencies":{"@types/node":"^20.10.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.56.0","gulp":"^4.0.2","typescript":"^5.3.0"},"dependencies":{"@grpc/grpc-js":"^1.9.0","@grpc/proto-loader":"^0.7.0","n8n-workflow":"*","protobufjs":"^7.2.0"},"peerDependencies":{"n8n-workflow":"*"},"gitHead":"167f8e2285e9bf2053194148bf19230b8eeea040","_id":"@catdemon/n8n-nodes-grpc@1.0.2","bugs":{"url":"https://github.com/l-CatDemon-l/n8n-nodes-grpc/issues"},"_nodeVersion":"24.10.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-JKIC+sXvchoOSj37+dzfHx8+G7c7ihRZBAA4hBAjriMIaDEfcaFxETdUDuVNs5RVE3i0sf9JJty5NS1GqQGuVQ==","shasum":"ffc2218512a794272b469778e034228f41ce23a3","tarball":"https://registry.npmjs.org/@catdemon/n8n-nodes-grpc/-/n8n-nodes-grpc-1.0.2.tgz","fileCount":27,"unpackedSize":110821,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHOUTagxHKOBzDfk0pryIx1mgpSQ+TUj/08LvoPWsbIJAiEAp/iS1nSQe9ZteJVfMoEVKjM+Ti3mcbuAAGvJA6X2yPU="}]},"_npmUser":{"name":"catdemon","email":"artemnefedov11@gmail.com"},"directories":{},"maintainers":[{"name":"catdemon","email":"artemnefedov11@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/n8n-nodes-grpc_1.0.2_1768393030849_0.11822710125981106"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-14T11:22:57.932Z","modified":"2026-01-14T12:17:11.149Z","1.0.0":"2026-01-14T11:22:58.146Z","1.0.1":"2026-01-14T12:10:58.515Z","1.0.2":"2026-01-14T12:17:11.014Z"},"bugs":{"url":"https://github.com/l-CatDemon-l/n8n-nodes-grpc/issues"},"author":{"name":"catdemon"},"license":"MIT","homepage":"https://github.com/l-CatDemon-l/n8n-nodes-grpc#readme","keywords":["n8n","n8n-community-node-package","grpc","protobuf","rpc"],"repository":{"type":"git","url":"git+https://github.com/l-CatDemon-l/n8n-nodes-grpc.git"},"description":"n8n custom nodes for executing gRPC calls with dynamic proto parsing","maintainers":[{"name":"catdemon","email":"artemnefedov11@gmail.com"}],"readme":"# n8n-nodes-grpc\n\nExecute gRPC calls in n8n workflows with dynamic protobuf support.\n\n## Features\n\n- ✅ **Dynamic Proto Parsing** - Load proto definitions directly in n8n\n- ✅ **Multi-file Support** - Handle imports between multiple proto files\n- ✅ **Google Well-Known Types** - Built-in support for `Any`, `Timestamp`, `Struct`, etc.\n- ✅ **Flexible Configuration** - Use credentials or define inline\n- ✅ **Streaming Support** - Server streaming RPC methods\n- ✅ **TLS/SSL** - Secure connections support\n- ✅ **Custom Metadata** - Add headers to gRPC calls\n\n## Installation\n\n```bash\nnpm install @novapo/n8n-nodes-grpc\n```\n\nIn n8n, go to **Settings** → **Community Nodes** and install `@novapo/n8n-nodes-grpc`.\n\n## Quick Start\n\n### 1. Add gRPC Node\n\nAdd the **gRPC** node to your workflow.\n\n### 2. Configure Connection\n\n**Option A: Using Credentials**\n- Toggle **Use Credentials** ON\n- Create/select gRPC credentials with:\n  - Host (e.g., `api.example.com:443`)\n  - Proto definitions\n  - TLS settings\n  - Metadata\n\n**Option B: Inline Configuration**\n- Toggle **Use Credentials** OFF\n- Fill in **Connection Settings**, **Metadata**, and **Protobuf Definitions** directly\n\n### 3. Define Proto Files\n\n#### Single File\n```protobuf\nsyntax = \"proto3\";\npackage myservice;\n\nservice Greeter {\n  rpc SayHello(HelloRequest) returns (HelloReply);\n}\n\nmessage HelloRequest {\n  string name = 1;\n}\n\nmessage HelloReply {\n  string message = 1;\n}\n```\n\n#### Multiple Files\nUse delimiters to separate files:\n```\n[[=============== common.proto ===============]]\nsyntax = \"proto3\";\npackage common;\n\nmessage Status {\n  int32 code = 1;\n  string message = 2;\n}\n\n[[=============== service.proto ===============]]\nsyntax = \"proto3\";\npackage myservice;\n\nimport \"common.proto\";\n\nservice MyService {\n  rpc GetStatus(Request) returns (common.Status);\n}\n```\n\n### 4. Select Service & Method\n\nChoose from auto-discovered services and methods.\n\n### 5. Build Request\n\nJSON format:\n```json\n{\n  \"name\": \"World\"\n}\n```\n\n## Using google.protobuf.Any\n\nFor `Any` type fields, use `@type` to specify the message type:\n\n```json\n{\n  \"requestId\": \"123\",\n  \"configData\": {\n    \"@type\": \"type.googleapis.com/mypackage.MyMessage\",\n    \"field_name\": \"value\",\n    \"nested_field\": 123\n  }\n}\n```\n\n**Important:**\n- Top-level fields: camelCase (`requestId`, `configData`)\n- Fields inside `@type`: snake_case (as defined in proto)\n\n## Configuration Options\n\n### Connection Settings\n- **Host**: `hostname:port` (e.g., `localhost:50051`)\n- **Use TLS**: Enable for secure connections\n\n### Metadata\nAdd custom headers:\n```\nKey: Authorization\nValue: Bearer token123\n```\n\n### Options\n- **Timeout**: Request timeout in milliseconds\n- **Response Format**: JSON or Raw\n\n## Examples\n\n### Basic Unary Call\n```json\n{\n  \"userId\": \"user-123\",\n  \"action\": \"GET_PROFILE\"\n}\n```\n\n### With Nested Messages\n```json\n{\n  \"user\": {\n    \"id\": \"123\",\n    \"name\": \"John\",\n    \"email\": \"john@example.com\"\n  },\n  \"preferences\": {\n    \"theme\": \"dark\",\n    \"notifications\": true\n  }\n}\n```\n\n### With Repeated Fields\n```json\n{\n  \"taskIds\": [\"task-1\", \"task-2\", \"task-3\"],\n  \"filters\": [\n    {\"field\": \"status\", \"value\": \"active\"},\n    {\"field\": \"priority\", \"value\": \"high\"}\n  ]\n}\n```\n\n## Supported Features\n\n| Feature | Status |\n|---------|--------|\n| Unary RPC | ✅ |\n| Server Streaming | ✅ |\n| Client Streaming | ❌ |\n| Bidirectional Streaming | ❌ |\n| TLS/SSL | ✅ |\n| Custom Metadata | ✅ |\n| google.protobuf.Any | ✅ |\n| google.protobuf.Timestamp | ✅ |\n| google.protobuf.Struct | ✅ |\n| Enums | ✅ |\n| Nested Messages | ✅ |\n| Repeated Fields | ✅ |\n\n## Troubleshooting\n\n### \"Service not found\"\n- Verify proto syntax is correct\n- Check service name matches proto definition\n\n### \"Type not found\" (Any type)\n- Ensure `@type` URL is correct: `type.googleapis.com/package.MessageType`\n- Verify the message type exists in your proto files\n\n### \"Enum error\"\n- Use exact enum name from proto (e.g., `RUNNING` not `running`)\n\n### Import errors\n- Use file delimiter syntax for multiple files\n- Ensure imported file is defined before import\n\n## License\n\nMIT\n\n## Links\n\n- [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)\n- [gRPC Documentation](https://grpc.io/docs/)\n- [Protocol Buffers Guide](https://protobuf.dev/)\n","readmeFilename":"README.md"}