{"id":15541357,"url":"https://github.com/ivov/nodebuilder","last_synced_at":"2025-04-23T17:07:49.976Z","repository":{"id":46145370,"uuid":"333200700","full_name":"ivov/nodebuilder","owner":"ivov","description":"Build n8n nodes from OpenAPI specs and YAML files","archived":false,"fork":false,"pushed_at":"2022-02-01T10:27:17.000Z","size":672,"stargazers_count":71,"open_issues_count":3,"forks_count":8,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-23T17:07:29.873Z","etag":null,"topics":["n8n","openapi"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ivov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-26T19:56:34.000Z","updated_at":"2025-04-23T11:08:00.000Z","dependencies_parsed_at":"2022-09-10T00:12:20.662Z","dependency_job_id":null,"html_url":"https://github.com/ivov/nodebuilder","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivov%2Fnodebuilder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivov%2Fnodebuilder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivov%2Fnodebuilder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivov%2Fnodebuilder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ivov","download_url":"https://codeload.github.com/ivov/nodebuilder/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250477813,"owners_count":21437049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["n8n","openapi"],"created_at":"2024-10-02T12:16:46.474Z","updated_at":"2025-04-23T17:07:49.950Z","avatar_url":"https://github.com/ivov.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\r\n  \u003cimg src=\"docs/logo.png\" width=\"450\" alt=\"Nodemaker\" /\u003e\r\n\u003c/p\u003e\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003ch1 align=\"center\"\u003eNodebuilder\u003c/h1\u003e\r\n\u003c/p\u003e\r\n\r\n\u003cp align=\"center\"\u003e\r\n  Build n8n nodes from OpenAPI specs and custom API mappings\u003cbr /\u003e\r\n  by \u003ca href=\"https://github.com/ivov\"\u003eIván Ovejero\u003c/a\u003e\r\n\u003c/p\u003e\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e •\r\n  \u003ca href=\"#operation\"\u003eOperation\u003c/a\u003e •\r\n  \u003ca href=\"/docs/custom-spec-syntax.md\"\u003eCustom Spec Syntax\u003c/a\u003e\r\n\u003c/p\u003e\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg src=\"https://img.shields.io/badge/status-work%20in%20progress-blue\"\u003e\r\n  \u003ca href=\"https://github.com/n8n-io\"\u003e\u003cimg src=\"https://img.shields.io/badge/org-n8n-ff6d5a\"\u003e\u003c/a\u003e\r\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-brightgreen\"\u003e\r\n\u003c/p\u003e\r\n\r\n\u003cbr/\u003e\r\n\r\n**Nodebuilder** is a utility to generate n8n node files from\r\n\r\n- [OpenAPI specs in JSON and YAML](https://github.com/OAI/OpenAPI-Specification) and\r\n- [custom API mappings in YAML](#yaml).\r\n\r\nDeveloped to automate the node creation process for:\r\n\r\n- `*.node.ts`, logic for a regular node,\r\n- `GenericFunctions.ts`, helper functions, and\r\n- `*Description.ts`, parameter descriptions.\r\n\r\n## Installation\r\n\r\n```sh\r\n$ git clone https://github.com/ivov/nodebuilder.git\r\n$ cd nodebuilder \u0026\u0026 npm i\r\n```\r\n\r\n## Operation\r\n\r\n### OpenAPI\r\n\r\n1. Place the input file in `src/input/openApi/`\r\n2. Run `npm run generate`\r\n3. Inspect `src/output/`\r\n\r\nNotes:\r\n- OpenAPI parsing may fail at undetected edge cases. If your spec cannot be parsed, please open an issue.\r\n- OpenAPI parsing needs to be adjusted to respect n8n's resources-and-operations format. Work in progress.\r\n\r\n### YAML\r\n\r\n1. Write a YAML file in `src/input/custom/`\r\n2. Run `npm run generate`\r\n3. Inspect `src/output/`\r\n\r\nFor a full description of how to describe an API in YAML, refer to [this explanation](https://github.com/ivov/nodebuilder/blob/main/docs/yaml-mapping.md).\r\n\r\nFor a full example of an API description in YAML, refer to [`copper.yaml`](https://github.com/ivov/nodebuilder/blob/main/src/input/custom/copper.yaml).\r\n\r\n### Placement\r\n\r\nRun `npm run place` to place the output files in:\r\n\r\n- an n8n clone dir (located alongside the nodebuilder dir), or\r\n- the default custom nodes dir at `~/.n8n/custom`.\r\n\r\n## Pending\r\n\r\n**OpenAPI:**\r\n  - Add intermediate step to structure the result.\r\n  - Add support for more content types.\r\n\r\n**YAML:**\r\n  - Add support for `multiOptions`\r\n\r\n**Generator:**\r\n  - Add resource loaders to the TypeScript generator.\r\n  - Generate `*.credentials.ts`\r\n\r\n**Extras:**\r\n  - Implement testing with [`git.js`](https://github.com/steveukx/git-js)\r\n  - Explore integration with [VSCode YAML](https://github.com/redhat-developer/vscode-yaml)\r\n\r\n## Author\r\n\r\n© 2021 [Iván Ovejero](https://github.com/ivov)\r\n\r\n## License\r\n\r\nDistributed under the MIT License. See [LICENSE.md](LICENSE.md).\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivov%2Fnodebuilder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fivov%2Fnodebuilder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivov%2Fnodebuilder/lists"}