n8n-nodes-hudu 2.4.4 → 2.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +279 -279
  3. package/dist/credentials/hudu.svg +26 -26
  4. package/dist/nodes/Hudu/HuduAiTools.node.js +27 -3
  5. package/dist/nodes/Hudu/HuduAiTools.node.js.map +1 -1
  6. package/dist/nodes/Hudu/ai-tools/description-builders.js +18 -3
  7. package/dist/nodes/Hudu/ai-tools/description-builders.js.map +1 -1
  8. package/dist/nodes/Hudu/ai-tools/enrichment-executor.js +3 -3
  9. package/dist/nodes/Hudu/ai-tools/enrichment-executor.js.map +1 -1
  10. package/dist/nodes/Hudu/ai-tools/error-formatter.d.ts +43 -34
  11. package/dist/nodes/Hudu/ai-tools/error-formatter.js +69 -22
  12. package/dist/nodes/Hudu/ai-tools/error-formatter.js.map +1 -1
  13. package/dist/nodes/Hudu/ai-tools/help-registry.js +8 -12
  14. package/dist/nodes/Hudu/ai-tools/help-registry.js.map +1 -1
  15. package/dist/nodes/Hudu/ai-tools/resource-config.d.ts +1 -1
  16. package/dist/nodes/Hudu/ai-tools/resource-config.js.map +1 -1
  17. package/dist/nodes/Hudu/ai-tools/runtime.js +176 -48
  18. package/dist/nodes/Hudu/ai-tools/runtime.js.map +1 -1
  19. package/dist/nodes/Hudu/ai-tools/schema-generator.d.ts +12 -0
  20. package/dist/nodes/Hudu/ai-tools/schema-generator.js +213 -86
  21. package/dist/nodes/Hudu/ai-tools/schema-generator.js.map +1 -1
  22. package/dist/nodes/Hudu/ai-tools/tool-executor.js +12 -21
  23. package/dist/nodes/Hudu/ai-tools/tool-executor.js.map +1 -1
  24. package/dist/nodes/Hudu/descriptions/articles.description.js +3 -3
  25. package/dist/nodes/Hudu/descriptions/articles.description.js.map +1 -1
  26. package/dist/nodes/Hudu/descriptions/asset_passwords.description.js +3 -3
  27. package/dist/nodes/Hudu/descriptions/asset_passwords.description.js.map +1 -1
  28. package/dist/nodes/Hudu/descriptions/assets.description.js +2 -2
  29. package/dist/nodes/Hudu/descriptions/assets.description.js.map +1 -1
  30. package/dist/nodes/Hudu/descriptions/companies.description.js +2 -2
  31. package/dist/nodes/Hudu/descriptions/companies.description.js.map +1 -1
  32. package/dist/nodes/Hudu/descriptions/folders.description.js +3 -3
  33. package/dist/nodes/Hudu/descriptions/folders.description.js.map +1 -1
  34. package/dist/nodes/Hudu/descriptions/ip_addresses.description.js +2 -2
  35. package/dist/nodes/Hudu/descriptions/ip_addresses.description.js.map +1 -1
  36. package/dist/nodes/Hudu/descriptions/matchers.description.js +3 -3
  37. package/dist/nodes/Hudu/descriptions/matchers.description.js.map +1 -1
  38. package/dist/nodes/Hudu/descriptions/networks.description.js +3 -3
  39. package/dist/nodes/Hudu/descriptions/networks.description.js.map +1 -1
  40. package/dist/nodes/Hudu/descriptions/passwordFolders.descriptions.js +3 -3
  41. package/dist/nodes/Hudu/descriptions/passwordFolders.descriptions.js.map +1 -1
  42. package/dist/nodes/Hudu/descriptions/procedure_tasks.description.js +1 -1
  43. package/dist/nodes/Hudu/descriptions/procedure_tasks.description.js.map +1 -1
  44. package/dist/nodes/Hudu/descriptions/procedures.description.js +4 -4
  45. package/dist/nodes/Hudu/descriptions/procedures.description.js.map +1 -1
  46. package/dist/nodes/Hudu/descriptions/rack_storages.description.js +3 -3
  47. package/dist/nodes/Hudu/descriptions/rack_storages.description.js.map +1 -1
  48. package/dist/nodes/Hudu/descriptions/vlan_zones.description.js +3 -3
  49. package/dist/nodes/Hudu/descriptions/vlan_zones.description.js.map +1 -1
  50. package/dist/nodes/Hudu/descriptions/vlans.description.js +3 -3
  51. package/dist/nodes/Hudu/descriptions/vlans.description.js.map +1 -1
  52. package/dist/nodes/Hudu/descriptions/websites.description.js +1 -1
  53. package/dist/nodes/Hudu/descriptions/websites.description.js.map +1 -1
  54. package/dist/nodes/Hudu/hudu.svg +26 -26
  55. package/dist/nodes/Hudu/resources/articles/articles.handler.js +7 -2
  56. package/dist/nodes/Hudu/resources/articles/articles.handler.js.map +1 -1
  57. package/dist/nodes/Hudu/resources/asset_passwords/asset_passwords.handler.js +11 -1
  58. package/dist/nodes/Hudu/resources/asset_passwords/asset_passwords.handler.js.map +1 -1
  59. package/dist/nodes/Hudu/resources/assets/assets.handler.js +8 -2
  60. package/dist/nodes/Hudu/resources/assets/assets.handler.js.map +1 -1
  61. package/dist/nodes/Hudu/resources/companies/companies.handler.js +2 -2
  62. package/dist/nodes/Hudu/resources/companies/companies.handler.js.map +1 -1
  63. package/dist/nodes/Hudu/resources/folders/folders.handler.js +14 -0
  64. package/dist/nodes/Hudu/resources/folders/folders.handler.js.map +1 -1
  65. package/dist/nodes/Hudu/resources/ip_addresses/ip_addresses.handler.js +3 -3
  66. package/dist/nodes/Hudu/resources/ip_addresses/ip_addresses.handler.js.map +1 -1
  67. package/dist/nodes/Hudu/resources/matchers/matchers.handler.js +9 -4
  68. package/dist/nodes/Hudu/resources/matchers/matchers.handler.js.map +1 -1
  69. package/dist/nodes/Hudu/resources/networks/networks.handler.js +3 -3
  70. package/dist/nodes/Hudu/resources/networks/networks.handler.js.map +1 -1
  71. package/dist/nodes/Hudu/resources/password_folders/password_folders.handler.js +8 -2
  72. package/dist/nodes/Hudu/resources/password_folders/password_folders.handler.js.map +1 -1
  73. package/dist/nodes/Hudu/resources/procedure_tasks/procedure_tasks.handler.js +6 -0
  74. package/dist/nodes/Hudu/resources/procedure_tasks/procedure_tasks.handler.js.map +1 -1
  75. package/dist/nodes/Hudu/resources/procedures/procedures.handler.js +4 -4
  76. package/dist/nodes/Hudu/resources/procedures/procedures.handler.js.map +1 -1
  77. package/dist/nodes/Hudu/resources/rack_storages/rack_storages.handler.js +3 -3
  78. package/dist/nodes/Hudu/resources/rack_storages/rack_storages.handler.js.map +1 -1
  79. package/dist/nodes/Hudu/resources/vlan_zones/vlan_zones.handler.js +5 -2
  80. package/dist/nodes/Hudu/resources/vlan_zones/vlan_zones.handler.js.map +1 -1
  81. package/dist/nodes/Hudu/resources/vlans/vlans.handler.js +5 -2
  82. package/dist/nodes/Hudu/resources/vlans/vlans.handler.js.map +1 -1
  83. package/dist/nodes/Hudu/resources/websites/websites.handler.js +2 -2
  84. package/dist/nodes/Hudu/resources/websites/websites.handler.js.map +1 -1
  85. package/dist/nodes/Hudu/utils/companyResolver.d.ts +7 -0
  86. package/dist/nodes/Hudu/utils/companyResolver.js +45 -0
  87. package/dist/nodes/Hudu/utils/companyResolver.js.map +1 -0
  88. package/dist/nodes/Hudu/utils/index.d.ts +1 -0
  89. package/dist/nodes/Hudu/utils/index.js +1 -0
  90. package/dist/nodes/Hudu/utils/index.js.map +1 -1
  91. package/dist/nodes/Hudu/utils/operations/matchers.js +3 -2
  92. package/dist/nodes/Hudu/utils/operations/matchers.js.map +1 -1
  93. package/dist/package.json +16 -4
  94. package/dist/tsconfig.tsbuildinfo +1 -1
  95. package/package.json +79 -67
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2024 Max Soukhomlinov
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Max Soukhomlinov
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  SOFTWARE.
package/README.md CHANGED
@@ -1,279 +1,279 @@
1
- # n8n-nodes-hudu
2
- This community node enables seamless integration with the Hudu documentation platform in your n8n workflows, allowing you to automate and manage your IT documentation tasks.
3
-
4
- ![n8n-nodes-hudu](https://img.shields.io/badge/n8n--nodes--hudu-latest-blue)
5
- ![License](https://img.shields.io/badge/license-MIT-green)
6
-
7
- > **API Compatibility:** This node is aligned with Hudu API version 2.41.0 (reference: `api-docs-v2.41.0.json` in this repository). Some features require specific API versions. Compatibility with future Hudu versions is not guaranteed without further updates.
8
-
9
- [![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-Support-yellow.svg)](https://buymeacoffee.com/msoukhomlinov)
10
-
11
-
12
- ## Installation
13
-
14
- Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.
15
-
16
- ## Credentials
17
-
18
- To use this node, you need to:
19
-
20
- 1. Have a Hudu instance
21
- 2. Generate an API key in your Hudu settings
22
- 3. Configure the node with:
23
- - Base URL (e.g., https://your-hudu-instance.com)
24
- - API Key
25
-
26
- ## Features
27
-
28
- - Comprehensive pagination support for applicable resources
29
- - Robust error handling and debugging capabilities
30
- - Advanced filtering options with both API-side and client-side filtering
31
- - Support for both single and bulk operations
32
- - Dynamic loading of related resources (companies, users, assets, layouts, networks, groups, VLANs, VLAN Zones)
33
- - Date range filtering with preset options
34
- - Automatic type conversion and validation
35
- - Debug logging for troubleshooting (category-based; see DEBUG.md; requires N8N_LOG_LEVEL=debug when running n8n)
36
- - Central request sanitisation (omits empty optionals to prevent API 500s)
37
- - Resource-specific update collections across all resources
38
- - Optional article markdown conversion (HTML to Markdown) for Articles get/get many (uses internal regex-based converter)
39
- - Flexible identifier support: Get operations support both numeric IDs and slugs via Identifier Type toggle (Articles, Asset Layouts, Asset Passwords, Assets, Companies, Groups, Networks, Password Folders, Procedures, Users, VLAN Zones, VLANs, Websites)
40
- - **AI Agent support**: `Hudu AI Tools` node exposes Hudu operations as structured LangChain tools for use with n8n AI Agent workflows (compatible with Anthropic Claude, OpenAI, and other providers)
41
-
42
- ## Supported Resources & Operations
43
-
44
- ### Activity Logs
45
- - Get all activity logs with comprehensive filtering support
46
- - Filter by user (ID or email), action, resource (ID and type), and date range
47
- - Delete activity logs by datetime with optional unassigned logs filter
48
-
49
- ### API Info
50
- - Get API information and version details
51
-
52
- ### Articles
53
- - Create, update, archive, unarchive, delete, and retrieve articles
54
- - Get operation supports numeric ID or slug selection via Identifier Type toggle
55
- - List all articles with comprehensive filtering (company, draft, sharing, folder, name, fuzzy search, updated date range)
56
- - Get article version history
57
- - Include Markdown Content toggle to return `markdown_content` alongside original HTML
58
-
59
- ### Asset
60
- - **Manage core asset lifecycle & properties**: Create, retrieve, update core details, archive, unarchive, move layout, and delete assets
61
- - Get operation supports numeric ID or slug selection via Identifier Type toggle
62
- - Link assets to companies
63
- - Get single asset details, including all its field values
64
- - List all assets with enhanced filtering (e.g., by company, update date, archived status)
65
-
66
- ### Asset Layouts
67
- - Create and manage asset layout templates
68
- - Get operation supports numeric ID or slug selection via Identifier Type toggle
69
- - Get layout fields and configurations
70
- - List all layouts with filtering support
71
- - **Advanced custom field support:** Add hints, min/max, linkable asset layout IDs, expiration, options, and more to your custom fields. Use the "Other Data" input to specify any additional API-supported properties
72
-
73
- ### Asset Passwords
74
- - Create and manage asset-related passwords
75
- - Get operation supports numeric ID or slug selection via Identifier Type toggle
76
- - Link passwords to assets and companies
77
- - Filter by company and resource types
78
-
79
- ### Cards
80
- - Lookup cards by integration (supports integration ID or identifier)
81
- - Jump to card by integration ID or identifier
82
- - Filter by integration type and slug
83
-
84
- ### Companies
85
- - Create, update, delete, and retrieve companies
86
- - Get operation supports numeric ID or slug selection via Identifier Type toggle
87
- - List all companies with filtering support
88
- - Jump to company by integration
89
-
90
- ### Expirations
91
- - Get all expirations with comprehensive filtering (company, expiration type, resource ID/type, date ranges)
92
-
93
- ### Folders
94
- - Create and manage document folders
95
- - Support for nested folder structures
96
- - Filter by parent folder
97
- - Track child folder status
98
-
99
- ### IP Addresses
100
- - Track and manage IP addresses
101
- - Link to companies and networks
102
- - Filter by company and network
103
-
104
- ### Lists
105
- - Create, update, retrieve, and delete lists
106
- - Use this resource to manage the lists themselves
107
- - Create list items when creating a list, or add/update/remove items when updating a list
108
- - Filter lists by name or query
109
-
110
- ### List Options
111
- - Create, update, retrieve, and delete list items within a specific list
112
- - Use this resource to manage the items/options of a list
113
-
114
- ### Magic Dash
115
- - Create, update, get, and delete Magic Dash items
116
- - List all items with filtering by company and title
117
- - Delete by ID or by title + company name
118
-
119
- ### Matchers
120
- - Configure and manage integration matchers
121
- - Filter by match status and company
122
- - Support for sync identifiers
123
-
124
- ### Networks
125
- - Create and manage network information
126
- - Get operation supports numeric ID or slug selection via Identifier Type toggle
127
- - Link to companies
128
- - Filter by company and attributes
129
- - Pick related VLANs with an option loader
130
-
131
- ### Password Folders
132
- - Create, update, delete, and retrieve password folders
133
- - Get operation supports numeric ID or slug selection via Identifier Type toggle
134
- - Security modes: all users or specific groups (`allowed_groups` when `security = specific`)
135
- - Filter by name, company, search
136
- - Pick allowed groups with an option loader
137
-
138
- ### Exports
139
- - Initiate company exports with format options: PDF, CSV, or S3
140
- - Optional inclusions: websites, passwords, and specific asset layouts
141
-
142
- ### S3 Exports
143
- - Initiate S3 exports (uses credentials configured in Hudu account settings)
144
-
145
- ### Procedures
146
- - Create and manage procedures
147
- - Get operation supports numeric ID or slug selection via Identifier Type toggle
148
- - Create from templates
149
- - Duplicate existing procedures
150
- - Manage procedure tasks
151
- - Track task completion
152
-
153
- ### Relations
154
- - Create and manage resource relationships
155
- - Support for various resource types
156
- - Filter by relationship types and directions
157
-
158
- ### Groups
159
- - Retrieve groups and retrieve a group by ID
160
- - Get operation supports numeric ID or slug selection via Identifier Type toggle
161
- - Filters: name, default, search; supports pagination
162
-
163
- ### Users
164
- - Get user information
165
- - Get operation supports numeric ID or slug selection via Identifier Type toggle
166
- - List all users
167
- - Filter by role and status
168
-
169
- ### VLANs
170
- - Full CRUD support for VLANs, including filtering by company, name, and VLAN ID
171
- - Get operation supports numeric ID or slug selection via Identifier Type toggle
172
- - Pick VLAN Zone and Status List via option loaders
173
-
174
- ### VLAN Zones
175
- - Full CRUD support for VLAN Zones, including filtering by company, name, archive status, and date ranges
176
- - Get operation supports numeric ID or slug selection via Identifier Type toggle
177
- - Option loader available for selecting zones where referenced
178
-
179
- ### Uploads
180
- - Manage file uploads
181
- - Operations: Create (multipart upload), Get, Get Many, Delete
182
-
183
- ### Websites
184
- - Manage website records
185
- - Get operation supports numeric ID or slug selection via Identifier Type toggle
186
- - Link to companies
187
- - Filter by company and status
188
- - **All fields supported, including new email security fields:** `enable_dmarc_tracking`, `enable_dkim_tracking`, `enable_spf_tracking`, and more
189
-
190
- ## Hudu AI Tools Node
191
-
192
- The `Hudu AI Tools` node connects to n8n's **AI Agent** and exposes Hudu operations as individual structured tools that an LLM can invoke directly.
193
-
194
- ### How it works
195
-
196
- 1. Add a **Hudu AI Tools** node to your workflow
197
- 2. Connect it to an **AI Agent** node via the Tools connector
198
- 3. Select a **Resource** and the **Operations** to expose
199
- 4. Optionally enable **Allow Write Operations** to permit create / update / delete / archive
200
-
201
- The AI Agent receives one named tool per operation (e.g. `hudu_companies_getAll`, `hudu_assets_create`) and can call them autonomously based on the user's request. The `get` operation is exposed as `getById` (e.g. `hudu_companies_getById`) so the LLM clearly understands a numeric ID is required.
202
-
203
- ### Supported resources
204
-
205
- | Resource | Operations |
206
- |---|---|
207
- | Activity Logs | getAll |
208
- | Articles | get, getAll, create, update, delete, archive, unarchive |
209
- | Asset Layouts | get, getAll |
210
- | Asset Passwords | get, getAll, create, update, delete, archive, unarchive |
211
- | Assets | get, getAll, create, update, delete, archive, unarchive |
212
- | Companies | get, getAll, create, update, delete, archive, unarchive |
213
- | Expirations | get, getAll, create, update, delete |
214
- | Folders | get, getAll, create, update, delete |
215
- | Groups | get, getAll |
216
- | IP Addresses | get, getAll, create, update, delete |
217
- | Matchers | getAll |
218
- | Networks | get, getAll, create, update, delete, archive, unarchive |
219
- | Procedures | get, getAll, create, update, delete, archive, unarchive |
220
- | Relations | getAll, create, delete |
221
- | Users | get, getAll |
222
- | VLANs | get, getAll, create, update, delete |
223
- | VLAN Zones | get, getAll, create, update, delete |
224
- | Websites | get, getAll, create, update, delete, archive, unarchive |
225
-
226
- ### Notes
227
-
228
- - **Read-only by default**: write operations (create, update, delete, archive, unarchive) are hidden until `Allow Write Operations` is enabled
229
- - **Error handling**: all errors are returned as structured JSON with an `error`, `errorType`, and `nextAction` field so the LLM can self-correct without crashing the workflow
230
- - **Assets**: require `company_id` for create/update/delete/archive because Hudu's API routes asset mutations through the company endpoint
231
- - **Matchers**: `getAll` requires an `integration_id` parameter
232
- - **Websites**: the `name` field is the monitored URL and must include the protocol — e.g. `https://example.com`, not a display name
233
- - **n8n version compatibility**: works with n8n 2.9+ (ToolsAgent V3) and all earlier n8n versions
234
-
235
- ## Resources
236
-
237
- - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
238
- - [Hudu API Documentation](https://your-hudu-instance.com/api-docs)
239
- - [GitHub Repository](https://github.com/msoukhomlinov/n8n-nodes-hudu)
240
-
241
- ## Development
242
-
243
- ```bash
244
- npm run build # Compile TypeScript (n8n-node build)
245
- npm run dev # Hot-reload development server (n8n-node dev)
246
- npm run build:watch # TypeScript watch mode (tsc --watch)
247
- npm run lint # Lint with n8n-node lint
248
- npm run lint:fix # Lint and auto-fix
249
- npm run format # Format with Prettier
250
- npm run release # Publish via n8n-node release
251
- ```
252
-
253
- ## Contributing
254
-
255
- Contributions are welcome! If you'd like to contribute to this project:
256
-
257
- 1. Fork the repository
258
- 2. Create a feature branch (`git checkout -b feature/AmazingFeature`)
259
- 3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
260
- 4. Push to the branch (`git push origin feature/AmazingFeature`)
261
- 5. Open a Pull Request
262
-
263
- Please ensure your PR:
264
- - Clearly describes the changes
265
- - Includes any relevant documentation updates
266
- - Follows the existing code style
267
- - Includes tests if applicable
268
-
269
- For bug reports or feature requests, please use the GitHub issues section.
270
-
271
- ## Support
272
-
273
- If you find this node helpful and would like to support its development:
274
-
275
- [![Buy Me A Coffee](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://buymeacoffee.com/msoukhomlinov)
276
-
277
- ## License
278
-
279
- [MIT](LICENSE)
1
+ # n8n-nodes-hudu
2
+ This community node enables seamless integration with the Hudu documentation platform in your n8n workflows, allowing you to automate and manage your IT documentation tasks.
3
+
4
+ ![n8n-nodes-hudu](https://img.shields.io/badge/n8n--nodes--hudu-latest-blue)
5
+ ![License](https://img.shields.io/badge/license-MIT-green)
6
+
7
+ > **API Compatibility:** This node is aligned with Hudu API version 2.41.0 (reference: `api-docs-v2.41.0.json` in this repository). Some features require specific API versions. Compatibility with future Hudu versions is not guaranteed without further updates.
8
+
9
+ [![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-Support-yellow.svg)](https://buymeacoffee.com/msoukhomlinov)
10
+
11
+
12
+ ## Installation
13
+
14
+ Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.
15
+
16
+ ## Credentials
17
+
18
+ To use this node, you need to:
19
+
20
+ 1. Have a Hudu instance
21
+ 2. Generate an API key in your Hudu settings
22
+ 3. Configure the node with:
23
+ - Base URL (e.g., https://your-hudu-instance.com)
24
+ - API Key
25
+
26
+ ## Features
27
+
28
+ - Comprehensive pagination support for applicable resources
29
+ - Robust error handling and debugging capabilities
30
+ - Advanced filtering options with both API-side and client-side filtering
31
+ - Support for both single and bulk operations
32
+ - Dynamic loading of related resources (companies, users, assets, layouts, networks, groups, VLANs, VLAN Zones)
33
+ - Date range filtering with preset options
34
+ - Automatic type conversion and validation
35
+ - Debug logging for troubleshooting (category-based; see DEBUG.md; requires N8N_LOG_LEVEL=debug when running n8n)
36
+ - Central request sanitisation (omits empty optionals to prevent API 500s)
37
+ - Resource-specific update collections across all resources
38
+ - Optional article markdown conversion (HTML to Markdown) for Articles get/get many (uses internal regex-based converter)
39
+ - Flexible identifier support: Get operations support both numeric IDs and slugs via Identifier Type toggle (Articles, Asset Layouts, Asset Passwords, Assets, Companies, Groups, Networks, Password Folders, Procedures, Users, VLAN Zones, VLANs, Websites)
40
+ - **AI Agent support**: `Hudu AI Tools` node exposes Hudu operations as structured LangChain tools for use with n8n AI Agent workflows (compatible with Anthropic Claude, OpenAI, and other providers)
41
+
42
+ ## Supported Resources & Operations
43
+
44
+ ### Activity Logs
45
+ - Get all activity logs with comprehensive filtering support
46
+ - Filter by user (ID or email), action, resource (ID and type), and date range
47
+ - Delete activity logs by datetime with optional unassigned logs filter
48
+
49
+ ### API Info
50
+ - Get API information and version details
51
+
52
+ ### Articles
53
+ - Create, update, archive, unarchive, delete, and retrieve articles
54
+ - Get operation supports numeric ID or slug selection via Identifier Type toggle
55
+ - List all articles with comprehensive filtering (company, draft, sharing, folder, name, fuzzy search, updated date range)
56
+ - Get article version history
57
+ - Include Markdown Content toggle to return `markdown_content` alongside original HTML
58
+
59
+ ### Asset
60
+ - **Manage core asset lifecycle & properties**: Create, retrieve, update core details, archive, unarchive, move layout, and delete assets
61
+ - Get operation supports numeric ID or slug selection via Identifier Type toggle
62
+ - Link assets to companies
63
+ - Get single asset details, including all its field values
64
+ - List all assets with enhanced filtering (e.g., by company, update date, archived status)
65
+
66
+ ### Asset Layouts
67
+ - Create and manage asset layout templates
68
+ - Get operation supports numeric ID or slug selection via Identifier Type toggle
69
+ - Get layout fields and configurations
70
+ - List all layouts with filtering support
71
+ - **Advanced custom field support:** Add hints, min/max, linkable asset layout IDs, expiration, options, and more to your custom fields. Use the "Other Data" input to specify any additional API-supported properties
72
+
73
+ ### Asset Passwords
74
+ - Create and manage asset-related passwords
75
+ - Get operation supports numeric ID or slug selection via Identifier Type toggle
76
+ - Link passwords to assets and companies
77
+ - Filter by company and resource types
78
+
79
+ ### Cards
80
+ - Lookup cards by integration (supports integration ID or identifier)
81
+ - Jump to card by integration ID or identifier
82
+ - Filter by integration type and slug
83
+
84
+ ### Companies
85
+ - Create, update, delete, and retrieve companies
86
+ - Get operation supports numeric ID or slug selection via Identifier Type toggle
87
+ - List all companies with filtering support
88
+ - Jump to company by integration
89
+
90
+ ### Expirations
91
+ - Get all expirations with comprehensive filtering (company, expiration type, resource ID/type, date ranges)
92
+
93
+ ### Folders
94
+ - Create and manage document folders
95
+ - Support for nested folder structures
96
+ - Filter by parent folder
97
+ - Track child folder status
98
+
99
+ ### IP Addresses
100
+ - Track and manage IP addresses
101
+ - Link to companies and networks
102
+ - Filter by company and network
103
+
104
+ ### Lists
105
+ - Create, update, retrieve, and delete lists
106
+ - Use this resource to manage the lists themselves
107
+ - Create list items when creating a list, or add/update/remove items when updating a list
108
+ - Filter lists by name or query
109
+
110
+ ### List Options
111
+ - Create, update, retrieve, and delete list items within a specific list
112
+ - Use this resource to manage the items/options of a list
113
+
114
+ ### Magic Dash
115
+ - Create, update, get, and delete Magic Dash items
116
+ - List all items with filtering by company and title
117
+ - Delete by ID or by title + company name
118
+
119
+ ### Matchers
120
+ - Configure and manage integration matchers
121
+ - Filter by match status and company
122
+ - Support for sync identifiers
123
+
124
+ ### Networks
125
+ - Create and manage network information
126
+ - Get operation supports numeric ID or slug selection via Identifier Type toggle
127
+ - Link to companies
128
+ - Filter by company and attributes
129
+ - Pick related VLANs with an option loader
130
+
131
+ ### Password Folders
132
+ - Create, update, delete, and retrieve password folders
133
+ - Get operation supports numeric ID or slug selection via Identifier Type toggle
134
+ - Security modes: all users or specific groups (`allowed_groups` when `security = specific`)
135
+ - Filter by name, company, search
136
+ - Pick allowed groups with an option loader
137
+
138
+ ### Exports
139
+ - Initiate company exports with format options: PDF, CSV, or S3
140
+ - Optional inclusions: websites, passwords, and specific asset layouts
141
+
142
+ ### S3 Exports
143
+ - Initiate S3 exports (uses credentials configured in Hudu account settings)
144
+
145
+ ### Procedures
146
+ - Create and manage procedures
147
+ - Get operation supports numeric ID or slug selection via Identifier Type toggle
148
+ - Create from templates
149
+ - Duplicate existing procedures
150
+ - Manage procedure tasks
151
+ - Track task completion
152
+
153
+ ### Relations
154
+ - Create and manage resource relationships
155
+ - Support for various resource types
156
+ - Filter by relationship types and directions
157
+
158
+ ### Groups
159
+ - Retrieve groups and retrieve a group by ID
160
+ - Get operation supports numeric ID or slug selection via Identifier Type toggle
161
+ - Filters: name, default, search; supports pagination
162
+
163
+ ### Users
164
+ - Get user information
165
+ - Get operation supports numeric ID or slug selection via Identifier Type toggle
166
+ - List all users
167
+ - Filter by role and status
168
+
169
+ ### VLANs
170
+ - Full CRUD support for VLANs, including filtering by company, name, and VLAN ID
171
+ - Get operation supports numeric ID or slug selection via Identifier Type toggle
172
+ - Pick VLAN Zone and Status List via option loaders
173
+
174
+ ### VLAN Zones
175
+ - Full CRUD support for VLAN Zones, including filtering by company, name, archive status, and date ranges
176
+ - Get operation supports numeric ID or slug selection via Identifier Type toggle
177
+ - Option loader available for selecting zones where referenced
178
+
179
+ ### Uploads
180
+ - Manage file uploads
181
+ - Operations: Create (multipart upload), Get, Get Many, Delete
182
+
183
+ ### Websites
184
+ - Manage website records
185
+ - Get operation supports numeric ID or slug selection via Identifier Type toggle
186
+ - Link to companies
187
+ - Filter by company and status
188
+ - **All fields supported, including new email security fields:** `enable_dmarc_tracking`, `enable_dkim_tracking`, `enable_spf_tracking`, and more
189
+
190
+ ## Hudu AI Tools Node
191
+
192
+ The `Hudu AI Tools` node connects to n8n's **AI Agent** and exposes Hudu operations as individual structured tools that an LLM can invoke directly.
193
+
194
+ ### How it works
195
+
196
+ 1. Add a **Hudu AI Tools** node to your workflow
197
+ 2. Connect it to an **AI Agent** node via the Tools connector
198
+ 3. Select a **Resource** and the **Operations** to expose
199
+ 4. Optionally enable **Allow Write Operations** to permit create / update / delete / archive
200
+
201
+ The AI Agent receives one named tool per operation (e.g. `hudu_companies_getAll`, `hudu_assets_create`) and can call them autonomously based on the user's request. The `get` operation is exposed as `getById` (e.g. `hudu_companies_getById`) so the LLM clearly understands a numeric ID is required.
202
+
203
+ ### Supported resources
204
+
205
+ | Resource | Operations |
206
+ |---|---|
207
+ | Activity Logs | getAll |
208
+ | Articles | get, getAll, create, update, delete, archive, unarchive |
209
+ | Asset Layouts | get, getAll |
210
+ | Asset Passwords | get, getAll, create, update, delete, archive, unarchive |
211
+ | Assets | get, getAll, create, update, delete, archive, unarchive |
212
+ | Companies | get, getAll, create, update, delete, archive, unarchive |
213
+ | Expirations | get, getAll, create, update, delete |
214
+ | Folders | get, getAll, create, update, delete |
215
+ | Groups | get, getAll |
216
+ | IP Addresses | get, getAll, create, update, delete |
217
+ | Matchers | getAll |
218
+ | Networks | get, getAll, create, update, delete, archive, unarchive |
219
+ | Procedures | get, getAll, create, update, delete, archive, unarchive |
220
+ | Relations | getAll, create, delete |
221
+ | Users | get, getAll |
222
+ | VLANs | get, getAll, create, update, delete |
223
+ | VLAN Zones | get, getAll, create, update, delete |
224
+ | Websites | get, getAll, create, update, delete, archive, unarchive |
225
+
226
+ ### Notes
227
+
228
+ - **Read-only by default**: write operations (create, update, delete, archive, unarchive) are hidden until `Allow Write Operations` is enabled
229
+ - **Error handling**: all errors are returned as structured JSON with an `error`, `errorType`, and `nextAction` field so the LLM can self-correct without crashing the workflow
230
+ - **Assets**: require `company_id` for create/update/delete/archive because Hudu's API routes asset mutations through the company endpoint
231
+ - **Matchers**: `getAll` requires an `integration_id` parameter
232
+ - **Websites**: the `name` field is the monitored URL and must include the protocol — e.g. `https://example.com`, not a display name
233
+ - **n8n version compatibility**: works with n8n 2.9+ (ToolsAgent V3) and all earlier n8n versions
234
+
235
+ ## Resources
236
+
237
+ - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
238
+ - [Hudu API Documentation](https://your-hudu-instance.com/api-docs)
239
+ - [GitHub Repository](https://github.com/msoukhomlinov/n8n-nodes-hudu)
240
+
241
+ ## Development
242
+
243
+ ```bash
244
+ npm run build # Compile TypeScript (n8n-node build)
245
+ npm run dev # Hot-reload development server (n8n-node dev)
246
+ npm run build:watch # TypeScript watch mode (tsc --watch)
247
+ npm run lint # Lint with n8n-node lint
248
+ npm run lint:fix # Lint and auto-fix
249
+ npm run format # Format with Prettier
250
+ npm run release # Publish via n8n-node release
251
+ ```
252
+
253
+ ## Contributing
254
+
255
+ Contributions are welcome! If you'd like to contribute to this project:
256
+
257
+ 1. Fork the repository
258
+ 2. Create a feature branch (`git checkout -b feature/AmazingFeature`)
259
+ 3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
260
+ 4. Push to the branch (`git push origin feature/AmazingFeature`)
261
+ 5. Open a Pull Request
262
+
263
+ Please ensure your PR:
264
+ - Clearly describes the changes
265
+ - Includes any relevant documentation updates
266
+ - Follows the existing code style
267
+ - Includes tests if applicable
268
+
269
+ For bug reports or feature requests, please use the GitHub issues section.
270
+
271
+ ## Support
272
+
273
+ If you find this node helpful and would like to support its development:
274
+
275
+ [![Buy Me A Coffee](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://buymeacoffee.com/msoukhomlinov)
276
+
277
+ ## License
278
+
279
+ [MIT](LICENSE)
@@ -1,26 +1,26 @@
1
- <?xml version="1.0" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3
- "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4
- <svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5
- width="400.000000pt" height="400.000000pt" viewBox="0 0 400.000000 400.000000"
6
- preserveAspectRatio="xMidYMid meet">
7
- <metadata>
8
- Created by potrace 1.16, written by Peter Selinger 2001-2019
9
- </metadata>
10
- <g transform="translate(0.000000,400.000000) scale(0.100000,-0.100000)"
11
- fill="#663AF9" stroke="none">
12
- <path d="M1328 3115 c-98 -55 16 -329 246 -589 87 -99 231 -222 300 -258 69
13
- -35 126 -42 441 -58 116 -6 243 -15 284 -21 113 -16 117 3 30 137 -225 344
14
- -604 641 -979 765 -116 38 -276 50 -322 24z"/>
15
- <path d="M1015 2129 c-206 -11 -477 -36 -529 -50 -91 -24 -112 -90 -54 -170
16
- 87 -122 266 -261 421 -326 229 -97 486 -108 717 -33 156 51 260 113 260 155 0
17
- 6 -6 19 -13 29 -12 16 -16 15 -72 -10 -142 -62 -308 -81 -445 -48 -83 19 -193
18
- 73 -250 123 -38 33 -43 42 -34 58 16 26 89 41 253 53 147 9 390 0 519 -21 153
19
- -24 257 -94 309 -209 13 -27 18 -85 23 -245 6 -184 9 -217 29 -267 47 -122
20
- 145 -220 268 -270 57 -22 65 -23 384 -23 l325 0 76 38 c101 49 137 92 276 322
21
- 105 175 112 190 112 240 0 38 -6 61 -23 86 -30 45 -416 362 -492 404 -185 103
22
- -435 145 -970 165 -310 11 -855 11 -1090 -1z m1954 -402 c49 -25 107 -98 97
23
- -122 -9 -25 -86 -55 -140 -55 -62 0 -122 33 -160 89 -31 44 -29 54 17 78 75
24
- 39 128 42 186 10z"/>
25
- </g>
26
- </svg>
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4
+ <svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5
+ width="400.000000pt" height="400.000000pt" viewBox="0 0 400.000000 400.000000"
6
+ preserveAspectRatio="xMidYMid meet">
7
+ <metadata>
8
+ Created by potrace 1.16, written by Peter Selinger 2001-2019
9
+ </metadata>
10
+ <g transform="translate(0.000000,400.000000) scale(0.100000,-0.100000)"
11
+ fill="#663AF9" stroke="none">
12
+ <path d="M1328 3115 c-98 -55 16 -329 246 -589 87 -99 231 -222 300 -258 69
13
+ -35 126 -42 441 -58 116 -6 243 -15 284 -21 113 -16 117 3 30 137 -225 344
14
+ -604 641 -979 765 -116 38 -276 50 -322 24z"/>
15
+ <path d="M1015 2129 c-206 -11 -477 -36 -529 -50 -91 -24 -112 -90 -54 -170
16
+ 87 -122 266 -261 421 -326 229 -97 486 -108 717 -33 156 51 260 113 260 155 0
17
+ 6 -6 19 -13 29 -12 16 -16 15 -72 -10 -142 -62 -308 -81 -445 -48 -83 19 -193
18
+ 73 -250 123 -38 33 -43 42 -34 58 16 26 89 41 253 53 147 9 390 0 519 -21 153
19
+ -24 257 -94 309 -209 13 -27 18 -85 23 -245 6 -184 9 -217 29 -267 47 -122
20
+ 145 -220 268 -270 57 -22 65 -23 384 -23 l325 0 76 38 c101 49 137 92 276 322
21
+ 105 175 112 190 112 240 0 38 -6 61 -23 86 -30 45 -416 362 -492 404 -185 103
22
+ -435 145 -970 165 -310 11 -855 11 -1090 -1z m1954 -402 c49 -25 107 -98 97
23
+ -122 -9 -25 -86 -55 -140 -55 -62 0 -122 33 -160 89 -31 44 -29 54 17 78 75
24
+ 39 128 42 186 10z"/>
25
+ </g>
26
+ </svg>