{"_id":"@befroosh/n8n-nodes","_rev":"2-81e035a8eaef69520e0a1493c46c4f47","name":"@befroosh/n8n-nodes","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@befroosh/n8n-nodes","version":"0.1.0","keywords":["n8n","n8n-community-node-package","sms"],"author":{"name":"Befroosh"},"license":"UNLICENSED","_id":"@befroosh/n8n-nodes@0.1.0","maintainers":[{"name":"sinapiranix","email":"sinapiranidev@gmail.com"}],"n8n":{"nodes":["dist/nodes/BefrooshSms/BefrooshSms.node.js"],"credentials":["dist/credentials/NotrikaSmsApi.credentials.js","dist/credentials/BatabjamSmsApi.credentials.js","dist/credentials/MeliPayamakSmsApi.credentials.js","dist/credentials/BatabjamAboardSmsApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"8986a8b04adb4770dcc4717991e955827328f062","tarball":"https://registry.npmjs.org/@befroosh/n8n-nodes/-/n8n-nodes-0.1.0.tgz","fileCount":18,"integrity":"sha512-SwEw6DIZACeh/zcFnpDlXr3ddiPK7N5O1Ud3F6WFiHM1uzJZKGi6GJbmPerheCUeynbezfywcyy2zXVHy1x+ng==","signatures":[{"sig":"MEQCIDK4t8NlG2QsemtLYhM/s4fRQEFuKYxsVgV06I9ME1mVAiATwW6akt0uUXH3m98sicIQrUCYAmAidI48IlYjtvHwmg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31147},"main":"index.js","engines":{"node":">=18"},"gitHead":"ef89235f84d0ad219d021ca439a6c3941120c6c6","private":false,"scripts":{"dev":"tsc --watch","lint":"echo \"(no lint configured for @befroosh/n8n-nodes)\"","build":"rm -rf dist && tsc && node scripts/copy-icons.mjs","check-types":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"sinapiranix","email":"sinapiranidev@gmail.com"},"_npmVersion":"10.9.8","description":"Befroosh custom n8n nodes (SMS providers, etc.)","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.2","@types/node":"^20.11.0","n8n-workflow":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes_0.1.0_1781595614758_0.3666897032946439","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Renamed to n8n-nodes-befroosh (n8n requires the name to start with n8n-nodes-). Install n8n-nodes-befroosh instead."}},"time":{"created":"2026-06-16T07:40:14.565Z","modified":"2026-06-16T07:46:17.287Z","0.1.0":"2026-06-16T07:40:14.895Z"},"author":{"name":"Befroosh"},"license":"UNLICENSED","keywords":["n8n","n8n-community-node-package","sms"],"description":"Befroosh custom n8n nodes (SMS providers, etc.)","maintainers":[{"name":"sinapiranix","email":"sinapiranidev@gmail.com"}],"readme":"# @befroosh/n8n-nodes\n\nCustom **n8n** nodes for Befroosh. This package is the home for any n8n node we build;\nright now it ships the **Befroosh SMS** node.\n\n## Layout\n\n```\napps/n8n-nodes/\n├── credentials/            # one ICredentialType per SMS provider\n│   ├── NotrikaSmsApi.credentials.ts\n│   ├── BatabjamSmsApi.credentials.ts\n│   ├── MeliPayamakSmsApi.credentials.ts\n│   └── BatabjamAboardSmsApi.credentials.ts\n├── nodes/\n│   └── BefrooshSms/\n│       ├── BefrooshSms.node.ts\n│       └── sms.svg\n├── scripts/copy-icons.mjs  # copies .svg/.png into dist after tsc\n├── tsconfig.json\n└── package.json            # the \"n8n\" field registers nodes + credentials\n```\n\n## Develop\n\n```bash\npnpm --filter @befroosh/n8n-nodes build        # tsc → dist + icons\npnpm --filter @befroosh/n8n-nodes check-types   # type-check only\npnpm --filter @befroosh/n8n-nodes dev           # tsc --watch\n```\n\n### Add another node\n\n1. Create `nodes/<MyNode>/<MyNode>.node.ts` exporting a class that implements `INodeType`\n   (and an icon next to it).\n2. If it needs secrets, add `credentials/<MyApi>.credentials.ts` implementing `ICredentialType`.\n3. Register both in the `\"n8n\"` field of `package.json` (point at the compiled `dist/...js`).\n4. `pnpm --filter @befroosh/n8n-nodes build`.\n\n## Befroosh SMS node\n\nOne node, **Provider** dropdown selects which backend SMS service to use. Each provider has\nits own credential (shown only when that provider is selected). Request shapes mirror\n`apps/core/src/providers/sms/services/*`:\n\n| Provider | Endpoint | Auth | Operations |\n|----------|----------|------|------------|\n| Notrika | `POST api.notrikaco.ir/api/v1/messages/send/template` | `X-Api-Key` | Send Message, Send OTP |\n| Batabjam | `POST smsapi.pishgamrayan.com/Messages/Send` | `Authorization` token | Send Message |\n| MeliPayamak | `GET sms.toolzi.ir/post/Send.asmx/...` | username/password in query | Send Message, Send OTP |\n| Batabjam Aboard | login `/api/login.php` → `POST /api/send-bulk-sms.php` | bearer (from login) | Send Message, Send OTP |\n\nFields: **To** (Batabjam/Aboard accept comma-separated numbers), **Message** (Send Message)\nor **OTP Code** (Send OTP). Set the node to *Continue On Fail* if a send must never break a\nworkflow.\n\n## Install into an n8n instance\n\nA custom node has to be loaded by the n8n runtime (it is **not** importable as a workflow):\n\n- **Self-hosted:** build, then either `npm i /path/to/apps/n8n-nodes` into the n8n install,\n  drop the built package under `~/.n8n/custom/`, or publish to npm and use\n  **Settings → Community Nodes → Install**. Restart n8n.\n- **Managed/hosted (e.g. koochaa):** only works if the host allows custom/community nodes.\n  If it doesn't, use the HTTP-Request / sub-workflow approach in `Back/integrations/n8n/`\n  instead.\n","readmeFilename":"README.md"}