@n8n-dev/n8n-nodes-hcloud 1.0.0

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 (81) hide show
  1. package/README.md +26 -0
  2. package/dist/credentials/HcloudApi.credentials.d.ts +10 -0
  3. package/dist/credentials/HcloudApi.credentials.js +47 -0
  4. package/dist/credentials/HcloudApi.credentials.js.map +1 -0
  5. package/dist/icons/hcloud.dark.svg +4 -0
  6. package/dist/icons/hcloud.svg +4 -0
  7. package/dist/nodes/Hcloud/Hcloud.node.d.ts +4 -0
  8. package/dist/nodes/Hcloud/Hcloud.node.js +194 -0
  9. package/dist/nodes/Hcloud/Hcloud.node.js.map +1 -0
  10. package/dist/nodes/Hcloud/Hcloud.node.json +20 -0
  11. package/dist/nodes/Hcloud/hcloud.dark.svg +4 -0
  12. package/dist/nodes/Hcloud/hcloud.svg +4 -0
  13. package/dist/nodes/Hcloud/resources/actions/index.d.ts +2 -0
  14. package/dist/nodes/Hcloud/resources/actions/index.js +128 -0
  15. package/dist/nodes/Hcloud/resources/actions/index.js.map +1 -0
  16. package/dist/nodes/Hcloud/resources/certificates/index.d.ts +2 -0
  17. package/dist/nodes/Hcloud/resources/certificates/index.js +1062 -0
  18. package/dist/nodes/Hcloud/resources/certificates/index.js.map +1 -0
  19. package/dist/nodes/Hcloud/resources/datacenters/index.d.ts +2 -0
  20. package/dist/nodes/Hcloud/resources/datacenters/index.js +202 -0
  21. package/dist/nodes/Hcloud/resources/datacenters/index.js.map +1 -0
  22. package/dist/nodes/Hcloud/resources/firewalls/index.d.ts +2 -0
  23. package/dist/nodes/Hcloud/resources/firewalls/index.js +1153 -0
  24. package/dist/nodes/Hcloud/resources/firewalls/index.js.map +1 -0
  25. package/dist/nodes/Hcloud/resources/floating-ips/index.d.ts +2 -0
  26. package/dist/nodes/Hcloud/resources/floating-ips/index.js +1313 -0
  27. package/dist/nodes/Hcloud/resources/floating-ips/index.js.map +1 -0
  28. package/dist/nodes/Hcloud/resources/images/index.d.ts +2 -0
  29. package/dist/nodes/Hcloud/resources/images/index.js +1036 -0
  30. package/dist/nodes/Hcloud/resources/images/index.js.map +1 -0
  31. package/dist/nodes/Hcloud/resources/index.d.ts +21 -0
  32. package/dist/nodes/Hcloud/resources/index.js +46 -0
  33. package/dist/nodes/Hcloud/resources/index.js.map +1 -0
  34. package/dist/nodes/Hcloud/resources/isos/index.d.ts +2 -0
  35. package/dist/nodes/Hcloud/resources/isos/index.js +237 -0
  36. package/dist/nodes/Hcloud/resources/isos/index.js.map +1 -0
  37. package/dist/nodes/Hcloud/resources/load-balancer-types/index.d.ts +2 -0
  38. package/dist/nodes/Hcloud/resources/load-balancer-types/index.js +177 -0
  39. package/dist/nodes/Hcloud/resources/load-balancer-types/index.js.map +1 -0
  40. package/dist/nodes/Hcloud/resources/load-balancers/index.d.ts +2 -0
  41. package/dist/nodes/Hcloud/resources/load-balancers/index.js +2724 -0
  42. package/dist/nodes/Hcloud/resources/load-balancers/index.js.map +1 -0
  43. package/dist/nodes/Hcloud/resources/locations/index.d.ts +2 -0
  44. package/dist/nodes/Hcloud/resources/locations/index.js +202 -0
  45. package/dist/nodes/Hcloud/resources/locations/index.js.map +1 -0
  46. package/dist/nodes/Hcloud/resources/networks/index.d.ts +2 -0
  47. package/dist/nodes/Hcloud/resources/networks/index.js +1595 -0
  48. package/dist/nodes/Hcloud/resources/networks/index.js.map +1 -0
  49. package/dist/nodes/Hcloud/resources/placement-groups/index.d.ts +2 -0
  50. package/dist/nodes/Hcloud/resources/placement-groups/index.js +514 -0
  51. package/dist/nodes/Hcloud/resources/placement-groups/index.js.map +1 -0
  52. package/dist/nodes/Hcloud/resources/pricing/index.d.ts +2 -0
  53. package/dist/nodes/Hcloud/resources/pricing/index.js +53 -0
  54. package/dist/nodes/Hcloud/resources/pricing/index.js.map +1 -0
  55. package/dist/nodes/Hcloud/resources/primary-ips/index.d.ts +2 -0
  56. package/dist/nodes/Hcloud/resources/primary-ips/index.js +1428 -0
  57. package/dist/nodes/Hcloud/resources/primary-ips/index.js.map +1 -0
  58. package/dist/nodes/Hcloud/resources/server-types/index.d.ts +2 -0
  59. package/dist/nodes/Hcloud/resources/server-types/index.js +177 -0
  60. package/dist/nodes/Hcloud/resources/server-types/index.js.map +1 -0
  61. package/dist/nodes/Hcloud/resources/servers/index.d.ts +2 -0
  62. package/dist/nodes/Hcloud/resources/servers/index.js +3086 -0
  63. package/dist/nodes/Hcloud/resources/servers/index.js.map +1 -0
  64. package/dist/nodes/Hcloud/resources/ssh-keys/index.d.ts +2 -0
  65. package/dist/nodes/Hcloud/resources/ssh-keys/index.js +508 -0
  66. package/dist/nodes/Hcloud/resources/ssh-keys/index.js.map +1 -0
  67. package/dist/nodes/Hcloud/resources/storage-box-types/index.d.ts +2 -0
  68. package/dist/nodes/Hcloud/resources/storage-box-types/index.js +177 -0
  69. package/dist/nodes/Hcloud/resources/storage-box-types/index.js.map +1 -0
  70. package/dist/nodes/Hcloud/resources/storage-boxes/index.d.ts +2 -0
  71. package/dist/nodes/Hcloud/resources/storage-boxes/index.js +3281 -0
  72. package/dist/nodes/Hcloud/resources/storage-boxes/index.js.map +1 -0
  73. package/dist/nodes/Hcloud/resources/volumes/index.d.ts +2 -0
  74. package/dist/nodes/Hcloud/resources/volumes/index.js +1327 -0
  75. package/dist/nodes/Hcloud/resources/volumes/index.js.map +1 -0
  76. package/dist/nodes/Hcloud/resources/zones/index.d.ts +2 -0
  77. package/dist/nodes/Hcloud/resources/zones/index.js +3379 -0
  78. package/dist/nodes/Hcloud/resources/zones/index.js.map +1 -0
  79. package/dist/package.json +53 -0
  80. package/dist/tsconfig.tsbuildinfo +1 -0
  81. package/package.json +53 -0
package/README.md ADDED
@@ -0,0 +1,26 @@
1
+ # @n8n-dev/n8n-nodes-hcloud
2
+
3
+ > n8n community node for **hcloud** API
4
+
5
+ Hetzner Cloud API
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install @n8n-dev/n8n-nodes-hcloud
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ 1. In n8n: **Settings → Community Nodes → Install** → `@n8n-dev/n8n-nodes-hcloud`
16
+ 2. Add credentials: **hcloud API** → API Key
17
+ 3. Use the node in your workflows
18
+
19
+ ## Auto-generated
20
+
21
+ This node was auto-generated from an OpenAPI specification using
22
+ [@kelvinzer0/n8n-openapi-node-ultimate](https://github.com/kelvinzer0/n8n-openapi-node-ultimate).
23
+
24
+ ## License
25
+
26
+ MIT
@@ -0,0 +1,10 @@
1
+ import type { IAuthenticateGeneric, Icon, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class HcloudApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ icon: Icon;
6
+ documentationUrl: string;
7
+ properties: INodeProperties[];
8
+ authenticate: IAuthenticateGeneric;
9
+ test: ICredentialTestRequest;
10
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HcloudApi = void 0;
4
+ class HcloudApi {
5
+ constructor() {
6
+ this.name = 'N8nDevHcloudApi';
7
+ this.displayName = 'hcloud API';
8
+ this.icon = { light: 'file:../nodes/Hcloud/hcloud.svg', dark: 'file:../nodes/Hcloud/hcloud.dark.svg' };
9
+ this.documentationUrl = '';
10
+ this.properties = [
11
+ {
12
+ displayName: 'Base URL',
13
+ name: 'url',
14
+ type: 'string',
15
+ default: 'https://api.hetzner.cloud/v1',
16
+ required: true,
17
+ placeholder: 'https://api.hetzner.cloud/v1',
18
+ description: 'The base URL of your hcloud API server',
19
+ },
20
+ {
21
+ displayName: 'API Key',
22
+ name: 'apiKey',
23
+ type: 'string',
24
+ typeOptions: { password: true },
25
+ default: '',
26
+ required: true,
27
+ },
28
+ ];
29
+ this.authenticate = {
30
+ type: 'generic',
31
+ properties: {
32
+ headers: {
33
+ Authorization: '=Bearer {{$credentials.apiKey}}',
34
+ },
35
+ },
36
+ };
37
+ this.test = {
38
+ request: {
39
+ baseURL: '={{$credentials.url}}',
40
+ url: '/',
41
+ method: 'GET',
42
+ },
43
+ };
44
+ }
45
+ }
46
+ exports.HcloudApi = HcloudApi;
47
+ //# sourceMappingURL=HcloudApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HcloudApi.credentials.js","sourceRoot":"","sources":["../../credentials/HcloudApi.credentials.ts"],"names":[],"mappings":";;;AAQA,MAAa,SAAS;IAAtB;QACC,SAAI,GAAG,iBAAiB,CAAC;QAEzB,gBAAW,GAAG,YAAY,CAAC;QAE3B,SAAI,GAAS,EAAE,KAAK,EAAE,iCAAiC,EAAE,IAAI,EAAE,sCAAsC,EAAE,CAAC;QAExG,qBAAgB,GAAG,EAAE,CAAC;QAEtB,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,8BAA8B;gBACvC,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,8BAA8B;gBAC3C,WAAW,EAAE,wCAAwC;aACrD;YACD;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,iCAAiC;iBAChD;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,uBAAuB;gBAChC,GAAG,EAAE,GAAG;gBACR,MAAM,EAAE,KAAK;aACb;SACD,CAAC;IACH,CAAC;CAAA;AA7CD,8BA6CC"}
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60" fill="none">
2
+ <rect width="60" height="60" rx="8" fill="#2D2D2D"/>
3
+ <text x="30" y="36" text-anchor="middle" fill="#FF6D5A" font-family="Arial,sans-serif" font-size="24" font-weight="bold">H</text>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60" fill="none">
2
+ <rect width="60" height="60" rx="8" fill="#FF6D5A"/>
3
+ <text x="30" y="36" text-anchor="middle" fill="white" font-family="Arial,sans-serif" font-size="24" font-weight="bold">H</text>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ import { type INodeType, type INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class Hcloud implements INodeType {
3
+ description: INodeTypeDescription;
4
+ }
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Hcloud = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const actions_1 = require("./resources/actions");
6
+ const certificates_1 = require("./resources/certificates");
7
+ const datacenters_1 = require("./resources/datacenters");
8
+ const firewalls_1 = require("./resources/firewalls");
9
+ const floating_ips_1 = require("./resources/floating-ips");
10
+ const images_1 = require("./resources/images");
11
+ const isos_1 = require("./resources/isos");
12
+ const load_balancer_types_1 = require("./resources/load-balancer-types");
13
+ const load_balancers_1 = require("./resources/load-balancers");
14
+ const locations_1 = require("./resources/locations");
15
+ const networks_1 = require("./resources/networks");
16
+ const placement_groups_1 = require("./resources/placement-groups");
17
+ const pricing_1 = require("./resources/pricing");
18
+ const primary_ips_1 = require("./resources/primary-ips");
19
+ const server_types_1 = require("./resources/server-types");
20
+ const servers_1 = require("./resources/servers");
21
+ const ssh_keys_1 = require("./resources/ssh-keys");
22
+ const storage_box_types_1 = require("./resources/storage-box-types");
23
+ const storage_boxes_1 = require("./resources/storage-boxes");
24
+ const volumes_1 = require("./resources/volumes");
25
+ const zones_1 = require("./resources/zones");
26
+ class Hcloud {
27
+ constructor() {
28
+ this.description = {
29
+ displayName: 'hcloud',
30
+ name: 'N8nDevHcloud',
31
+ icon: { light: 'file:./hcloud.svg', dark: 'file:./hcloud.dark.svg' },
32
+ group: ['input'],
33
+ version: 1,
34
+ subtitle: '={{\$parameter["operation"] + ": " + \$parameter["resource"]}}',
35
+ description: 'Hetzner Cloud API',
36
+ defaults: { name: 'hcloud' },
37
+ usableAsTool: true,
38
+ inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
39
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
40
+ credentials: [
41
+ {
42
+ name: 'N8nDevHcloudApi',
43
+ required: true,
44
+ },
45
+ ],
46
+ requestDefaults: {
47
+ baseURL: '={{\$credentials.url}}',
48
+ headers: {
49
+ Accept: 'application/json',
50
+ 'Content-Type': 'application/json',
51
+ },
52
+ },
53
+ properties: [
54
+ {
55
+ "displayName": "Resource",
56
+ "name": "resource",
57
+ "type": "options",
58
+ "noDataExpression": true,
59
+ "options": [
60
+ {
61
+ "name": "Actions",
62
+ "value": "Actions",
63
+ "description": "Actions represent asynchronous tasks within the API, targeting one or more resources.\n\nSee Actions for more details.\n"
64
+ },
65
+ {
66
+ "name": "Certificates",
67
+ "value": "Certificates",
68
+ "description": "TLS/SSL Certificates prove the identity of a Server and are used to encrypt client traffic.\n"
69
+ },
70
+ {
71
+ "name": "Datacenters",
72
+ "value": "Datacenters",
73
+ "description": "Each Datacenter represents a _virtual_ Datacenter which is made up of possible many physical Datacenters where Servers are hosted.\n\nSee the [Hetzner Locations Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about Datacenters.\n"
74
+ },
75
+ {
76
+ "name": "Firewalls",
77
+ "value": "Firewalls",
78
+ "description": "Firewalls can limit the network access to or from your resources.\n\n- When applying a firewall with no `in` rule all inbound traffic will be dropped. The default for `in` is `DROP`.\n- When applying a firewall with no `out` rule all outbound traffic will be accepted. The default for `out` is `ACCEPT`.\n"
79
+ },
80
+ {
81
+ "name": "Floating Ips",
82
+ "value": "Floating Ips",
83
+ "description": "Floating IPs help you to create highly available setups. You can assign a Floating IP to any Server. The Server can then use this IP. You can reassign it to a different Server at any time, or you can choose to unassign the IP from Servers all together.\n\nFloating IPs can be used globally. This means you can assign a Floating IP to a Server in one Location and later reassign it to a Server in a different Location. For optimal routing and latency Floating IPs should be used in the Location they were created in.\n\nFor Floating IPs to work with your Server, you must configure them inside your operation system.\n\nFloating IPs of type `ipv4` use a single IPv4 address as their `ip` property. Floating IPs of type `ipv6` use a /64 network such as `fc00::/64` as their `ip` property. Any IP address within that network can be used on your host.\n\nFloating IPs are billed on a monthly basis.\n"
84
+ },
85
+ {
86
+ "name": "Images",
87
+ "value": "Images",
88
+ "description": "Images are blueprints for your VM disks. They can be of different types:\n\n### System Images\n\nDistribution Images maintained by us, e.g. “Ubuntu 20.04”\n\n### Snapshot Images\n\nMaintained by you, for example “Ubuntu 20.04 with my own settings”. These are billed per GB per month.\n\n### Backup Images\n\nDaily Backups of your Server. Will automatically be created for Servers which have backups enabled (`POST /servers/{id}/actions/enable_backup`)\n\nBound to exactly one Server. If you delete the Server, you also delete all backups bound to it. You may convert backup Images to snapshot Images to keep them.\n\nThese are billed at 20% of your server price for 7 backup slots.\n\n### App Images\n\nPrebuild images with specific software configurations, e.g. “Wordpress”. All app images are created by us.\n"
89
+ },
90
+ {
91
+ "name": "Isos",
92
+ "value": "Isos",
93
+ "description": "ISOs are read-only Images of DVDs. While we recommend using our Image functionality to install your Servers we also provide some stock ISOs so you can install more exotic operating systems by yourself.\n\nOn request our support uploads a private ISO just for you. These are marked with type `private` and only visible in your Project.\n\nTo attach an ISO to your Server use `POST /servers/{id}/actions/attach_iso`.\n"
94
+ },
95
+ {
96
+ "name": "Load Balancer Types",
97
+ "value": "Load Balancer Types",
98
+ "description": "Load Balancer types define kinds of Load Balancers offered. Each type has an hourly and a monthly cost. You will pay whichever amount is lower for your usage of this specific Load Balancer. Costs may differ between Locations.\n\nAll prices are displayed in the currency of the project owner's account.\n"
99
+ },
100
+ {
101
+ "name": "Load Balancers",
102
+ "value": "Load Balancers",
103
+ "description": ""
104
+ },
105
+ {
106
+ "name": "Locations",
107
+ "value": "Locations",
108
+ "description": "Datacenters are organized by Locations. Datacenters in the same Location are connected with very low latency links.\n"
109
+ },
110
+ {
111
+ "name": "Networks",
112
+ "value": "Networks",
113
+ "description": "Networks is a private networks feature. These Networks are optional and they coexist with the public network that every Server has by default.\n\nThey allow Servers to talk to each other over a dedicated network interface using private IP addresses not available publicly.\n\nThe IP addresses are allocated and managed via the API, they must conform to [RFC1918](https://tools.ietf.org/html/rfc1918#section-3) standard. IPs and network interfaces defined under Networks do not provide public internet connectivity, you will need to use the already existing public network interface for that.\n\nEach network has a user selected `ip_range` which defines all available IP addresses which can be used for Subnets within the Network.\n\nTo assign individual IPs to Servers you will need to create Network Subnets, described below.\n\nCurrently Networks support IPv4 only.\n\n### Subnets\n\nSubnets divide the `ip_range` from the parent Network object into multiple Subnetworks that you can use for different specific purposes.\n\nFor each subnet you need to specify its own `ip_range` which must be contained within the parent Network’s `ip_range`. Additionally each subnet must belong to one of the available Network Zones described below. Subnets can not have overlapping IP ranges.\n\nCurrently there are three types of subnet:\n\n- type `cloud` is used to connect cloud Resources into your Network.\n- type `server` was used to connect only cloud Servers into your Network. This type is deprecated and is replaced by type cloud.\n- type `vswitch` allows you to connect [Dedicated Server vSwitch](https://docs.hetzner.com/robot/dedicated-server/network/vswitch) - and all Dedicated Servers attached to it - into your Network\n\nSubnets of type `vswitch` must set a `vswitch_id` which is the ID of the existing vSwitch in Hetzner Robot that should be coupled.\n\n### Network Zones\n\nNetwork Zones are groups of Locations which have special high-speed network connections between them. The [Location object](https://docs.hetzner.cloud/reference/cloud#locations-get-a-location) contains the `network_zone` property each Location belongs to. Currently these network zones exist:\n\n| Network Zone | Contains Locations |\n| ------------ | ------------------ |\n| eu-central | nbg1, fsn1, hel1 |\n| us-east | ash |\n| us-west | hil |\n| ap-southeast | sin |\n\n### IP address management\n\nWhen a cloud Server is attached to a network without the user specifying an IP it automatically gets an IP address assigned from a subnet of type `server` in the same network zone. If you specify the optional `ip` parameter when attaching then we will try to assign that IP. Keep in mind that the Server’s location must be covered by the Subnet’s Network Zone if you specify an IP, or that at least one Subnet with the zone covering Server’s location must exist.\n\nA cloud Server can also have more than one IP address in a Network by specifying aliases. For details see the [attach to network action](https://docs.hetzner.cloud/reference/cloud#server-actions-attach-a-server-to-a-network).\n\nThe following IP addresses are reserved in networks and can not be used:\n\n- the first IP of the network `ip_range` as it will be used as a default gateway for the private Network interface.\n- `172.31.1.1` as it is being used as default gateway for our public Network interfaces.\n\n### Coupling Dedicated Servers\n\nBy using subnets of type `vswitch` you can couple the Cloud Networks with an existing [Dedicated Server vSwitch](https://docs.hetzner.com/robot/dedicated-server/network/vswitch) and enable dedicated and cloud servers to\ntalk to each other over the Network.\nIn order for this to work the dedicated servers may only use IPs from the subnet and must have a special network configuration. Please refer to [FAQ](https://docs.hetzner.com/cloud/networks/connect-dedi-vswitch). vSwitch Layer 2 features are not supported.\n\n### Routes\n\nNetworks also support the notion of routes which are automatically applied to private traffic. A route makes sure that all packets for a given `destination` IP prefix will be sent to the address specified in its `gateway`.\n"
114
+ },
115
+ {
116
+ "name": "Placement Groups",
117
+ "value": "Placement Groups",
118
+ "description": "Placement groups are used to influence the location of interdependent virtual servers in our data centers. The distribution of the different servers within a group is based on a pattern specified in the type. By enforcing certain rules on the placement of servers within our infrastructure, availability can be influenced in a way that fits your needs best.\n\nIn `spread` placement groups, all virtual servers will run on different physical servers. This decreases the probability that some servers might fail together.\n"
119
+ },
120
+ {
121
+ "name": "Pricing",
122
+ "value": "Pricing",
123
+ "description": "Returns prices for resources.\n"
124
+ },
125
+ {
126
+ "name": "Primary Ips",
127
+ "value": "Primary Ips",
128
+ "description": "Primary IPs help you to create more flexible networking setups. You can assign at most one Primary IP of type `ipv4` and one of type `ipv6` per Server. This Server then uses these IPs.\n\nYou can only unassign a Primary IP from a Server when it's powered off. This Primary IP can then be assigned to a different powered off Server, or you can keep it around for later use.\n\nPrimary IPs are bound to a specific Datacenter. You can not assign a Primary IP from one Datacenter to a Server in a different Datacenter. If you need this capability use Floating IPs instead.\n\nIf your Server's operating system supports cloud-init there is no further configuration needed to make Primary IPs work.\n\nPrimary IPs of type `ipv4` use a single IPv4 address as their `ip` property. Primary IPs of type `ipv6` use a /64 network such as `fc00::/64` as their `ip` property. Any IP address within that network can be used on your host.\n\nPrimary IPs are billed on an hourly basis.\n"
129
+ },
130
+ {
131
+ "name": "Server Types",
132
+ "value": "Server Types",
133
+ "description": "Server types define kinds of Servers offered. Each type has an hourly and a monthly cost. You will pay whichever cost is lower for your usage of this specific Server. Costs may differ between Locations.\n\nAll prices are displayed in the currency of the project owner's account.\n"
134
+ },
135
+ {
136
+ "name": "Servers",
137
+ "value": "Servers",
138
+ "description": "Servers are virtual machines that can be provisioned.\n"
139
+ },
140
+ {
141
+ "name": "Ssh Keys",
142
+ "value": "Ssh Keys",
143
+ "description": "SSH keys are public keys you provide to the cloud system. They can be injected into Servers at creation time. We highly recommend that you use keys instead of passwords to manage your Servers.\n"
144
+ },
145
+ {
146
+ "name": "Storage Box Types",
147
+ "value": "Storage Box Types",
148
+ "description": "Storage Box Types define storage products of different sizes. Each type has an hourly and a monthly cost. You will pay whichever cost is lower for your usage of this specific Storage Box. Costs may differ between Locations.\n\nAll prices are displayed in the currency of the project owner's account.\n"
149
+ },
150
+ {
151
+ "name": "Storage Boxes",
152
+ "value": "Storage Boxes",
153
+ "description": "Storage Boxes offer storage capacity for both small and large amounts of data. Any data you save in your Storage Box is saved on several disks configured in a RAID array, increasing redundancy and fault tolerance.\n\nPlease see [Hetzner Docs](https://docs.hetzner.com/storage/storage-box) for more details about Storage Boxes.\n\n<h3 id=\"tag/storage-boxes/password-policy\">Password policy</h3>\n\nThis policy applies to both Storage Boxes and Storage Box Subaccounts.\n\n- The password must be between 12 and 128 characters long\n- The password can only contain these characters: `a-z A-Z Ä Ö Ü ä ö ü ß 0-9 ^ ° ! § $ % / ( ) = ? + # - . , ; : ~ * @ { } _ &`\n- The password must contain at least one upper case letter, one lower case letter, one number, and a special character\n- The password must not have appeared in any known data breach\n"
154
+ },
155
+ {
156
+ "name": "Volumes",
157
+ "value": "Volumes",
158
+ "description": "A Volume is a highly-available, scalable, and SSD-based block storage for Servers.\n\nPricing for Volumes depends on the Volume size and Location, not the actual used storage.\n\nPlease see [Hetzner Docs](https://docs.hetzner.com/cloud/#Volumes) for more details about Volumes.\n"
159
+ },
160
+ {
161
+ "name": "Zones",
162
+ "value": "Zones",
163
+ "description": "A Zone represents a [Domain Name System (DNS) zone](https://wikipedia.org/wiki/DNS_zone) managed by Hetzner authoritative nameservers.\nPlease see [Hetzner Docs](https://docs.hetzner.com/dns-console/dns/general/dns-overview#the-difference-between-domain-and-zone) for the difference between zones and domains.\n\nThis API supports all zone names with [well-known public suffixes](https://publicsuffix.org/) (e.g. `.de`, `.com`, `.co.uk`).\nSubdomains are not supported.\n\n<h3 id=\"tag/zones/zone-modes\">Zone Modes</h3>\n\nThis API supports two types of zone modes.\n\n- In _primary_ mode, resource record sets (RRSets) and resource records (RRs) are managed via the Cloud API or Hetzner Console.\n- In _secondary_ mode, Hetzner's nameservers query RRSets and RRs from given primary nameservers via [AXFR](https://en.wikipedia.org/wiki/DNS_zone_transfer).\n\nThe zone mode cannot be changed, the zone must be deleted and re-created with a new mode.\n\n### SOA Serial\n\nFor zones in primary mode, Hetzner automatically increases the `SOA` record serial number.\nAs convention, a `YYYYMMDDnn` format with incrementing `nn` is used.\n\n<h3 id=\"tag/zones/zone-file-import\">Zone file import</h3>\n\nThis API supports importing a zone file in BIND (RFC [1034](https://datatracker.ietf.org/doc/html/rfc1034)/[1035](https://datatracker.ietf.org/doc/html/rfc1035)) format.\n\nImporting a zone file is only applicable for Zones in primary mode.\n\nDuring an import:\n\n- An `$ORIGIN` directive may be present, it must match the Zone's name with an ending dot\n- A `$TTL` directive may be present, it is used as new default Zone Time To Live (TTL)\n- Only `IN` (internet) class records are allowed\n- The assigned authoritative Hetzner nameservers must be present as `NS` records\n- A `SOA` record must be present\n- Comments for individual records are imported, comments on their own lines are discarded\n\nZone file example:\n\n```dns\n$ORIGIN\texample.com.\n$TTL\t3600\n\n@\tIN\tSOA\thydrogen.ns.hetzner.com. dns.hetzner.com. 2024010100 86400 10800 3600000 3600\n\n@\tIN\t10800\tNS\thydrogen.ns.hetzner.com. ; Some comment.\n@\tIN\t10800\tNS\toxygen.ns.hetzner.com.\n@\tIN\t10800\tNS\thelium.ns.hetzner.de.\n```\n"
164
+ }
165
+ ],
166
+ "default": ""
167
+ },
168
+ ...actions_1.actionsDescription,
169
+ ...certificates_1.certificatesDescription,
170
+ ...datacenters_1.datacentersDescription,
171
+ ...firewalls_1.firewallsDescription,
172
+ ...floating_ips_1.floatingIpsDescription,
173
+ ...images_1.imagesDescription,
174
+ ...isos_1.isosDescription,
175
+ ...load_balancer_types_1.loadBalancerTypesDescription,
176
+ ...load_balancers_1.loadBalancersDescription,
177
+ ...locations_1.locationsDescription,
178
+ ...networks_1.networksDescription,
179
+ ...placement_groups_1.placementGroupsDescription,
180
+ ...pricing_1.pricingDescription,
181
+ ...primary_ips_1.primaryIpsDescription,
182
+ ...server_types_1.serverTypesDescription,
183
+ ...servers_1.serversDescription,
184
+ ...ssh_keys_1.sshKeysDescription,
185
+ ...storage_box_types_1.storageBoxTypesDescription,
186
+ ...storage_boxes_1.storageBoxesDescription,
187
+ ...volumes_1.volumesDescription,
188
+ ...zones_1.zonesDescription
189
+ ],
190
+ };
191
+ }
192
+ }
193
+ exports.Hcloud = Hcloud;
194
+ //# sourceMappingURL=Hcloud.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Hcloud.node.js","sourceRoot":"","sources":["../../../nodes/Hcloud/Hcloud.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ {
2
+ "node": "N8nDevHcloud",
3
+ "nodeVersion": "1.0",
4
+ "codexVersion": "1.0",
5
+ "categories": [
6
+ "Development"
7
+ ],
8
+ "resources": {
9
+ "primaryDocumentation": [
10
+ {
11
+ "url": "https://github.com/kelvinzer0/n8n-nodes-hcloud"
12
+ }
13
+ ],
14
+ "credentialDocumentation": [
15
+ {
16
+ "url": "https://github.com/kelvinzer0/n8n-nodes-hcloud?tab=readme-ov-file#credentials"
17
+ }
18
+ ]
19
+ }
20
+ }
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60" fill="none">
2
+ <rect width="60" height="60" rx="8" fill="#2D2D2D"/>
3
+ <text x="30" y="36" text-anchor="middle" fill="#FF6D5A" font-family="Arial,sans-serif" font-size="24" font-weight="bold">H</text>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60" fill="none">
2
+ <rect width="60" height="60" rx="8" fill="#FF6D5A"/>
3
+ <text x="30" y="36" text-anchor="middle" fill="white" font-family="Arial,sans-serif" font-size="24" font-weight="bold">H</text>
4
+ </svg>
@@ -0,0 +1,2 @@
1
+ import type { INodeProperties } from 'n8n-workflow';
2
+ export declare const actionsDescription: INodeProperties[];
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.actionsDescription = void 0;
4
+ exports.actionsDescription = [
5
+ {
6
+ "displayName": "Operation",
7
+ "name": "operation",
8
+ "type": "options",
9
+ "noDataExpression": true,
10
+ "displayOptions": {
11
+ "show": {
12
+ "resource": [
13
+ "Actions"
14
+ ]
15
+ }
16
+ },
17
+ "options": [
18
+ {
19
+ "name": "Get Multiple Actions",
20
+ "value": "Get Multiple Actions",
21
+ "action": "Get multiple Actions",
22
+ "description": "Returns multiple Action objects specified by the `id` parameter.\n\n**Note**: This endpoint previously allowed listing all actions in the project. This functionality was deprecated in July 2023 and removed on 30 January 2025.\n\n- Announcement: https://docs.hetzner.cloud/changelog#2023-07-20-actions-list-endpoint-is-deprecated\n- Removal: https://docs.hetzner.cloud/changelog#2025-01-30-listing-arbitrary-actions-in-the-actions-list-endpoint-is-removed\n",
23
+ "routing": {
24
+ "request": {
25
+ "method": "GET",
26
+ "url": "=/actions"
27
+ }
28
+ }
29
+ },
30
+ {
31
+ "name": "Get Action",
32
+ "value": "Get Action",
33
+ "action": "Get an Action",
34
+ "description": "Returns a specific Action object.\n",
35
+ "routing": {
36
+ "request": {
37
+ "method": "GET",
38
+ "url": "=/actions/{{$parameter[\"id\"]}}"
39
+ }
40
+ }
41
+ }
42
+ ],
43
+ "default": ""
44
+ },
45
+ {
46
+ "displayName": "GET /actions",
47
+ "name": "operation",
48
+ "type": "notice",
49
+ "typeOptions": {
50
+ "theme": "info"
51
+ },
52
+ "default": "",
53
+ "displayOptions": {
54
+ "show": {
55
+ "resource": [
56
+ "Actions"
57
+ ],
58
+ "operation": [
59
+ "Get Multiple Actions"
60
+ ]
61
+ }
62
+ }
63
+ },
64
+ {
65
+ "displayName": "Id",
66
+ "name": "id",
67
+ "required": true,
68
+ "description": "Filter the actions by ID. Can be used multiple times. The response will only contain\nactions matching the specified IDs.\n",
69
+ "default": "[\n 42\n]",
70
+ "type": "json",
71
+ "routing": {
72
+ "send": {
73
+ "type": "query",
74
+ "property": "id",
75
+ "value": "={{ $value }}",
76
+ "propertyInDotNotation": false
77
+ }
78
+ },
79
+ "displayOptions": {
80
+ "show": {
81
+ "resource": [
82
+ "Actions"
83
+ ],
84
+ "operation": [
85
+ "Get Multiple Actions"
86
+ ]
87
+ }
88
+ }
89
+ },
90
+ {
91
+ "displayName": "GET /actions/{id}",
92
+ "name": "operation",
93
+ "type": "notice",
94
+ "typeOptions": {
95
+ "theme": "info"
96
+ },
97
+ "default": "",
98
+ "displayOptions": {
99
+ "show": {
100
+ "resource": [
101
+ "Actions"
102
+ ],
103
+ "operation": [
104
+ "Get Action"
105
+ ]
106
+ }
107
+ }
108
+ },
109
+ {
110
+ "displayName": "Id",
111
+ "name": "id",
112
+ "required": true,
113
+ "description": "ID of the Action.",
114
+ "default": 42,
115
+ "type": "number",
116
+ "displayOptions": {
117
+ "show": {
118
+ "resource": [
119
+ "Actions"
120
+ ],
121
+ "operation": [
122
+ "Get Action"
123
+ ]
124
+ }
125
+ }
126
+ },
127
+ ];
128
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../nodes/Hcloud/resources/actions/index.ts"],"names":[],"mappings":";;;AAEa,QAAA,kBAAkB,GAAsB;IACnD;QACC,aAAa,EAAE,WAAW;QAC1B,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,SAAS;QACjB,kBAAkB,EAAE,IAAI;QACxB,gBAAgB,EAAE;YACjB,MAAM,EAAE;gBACP,UAAU,EAAE;oBACX,SAAS;iBACT;aACD;SACD;QACD,SAAS,EAAE;YACV;gBACC,MAAM,EAAE,sBAAsB;gBAC9B,OAAO,EAAE,sBAAsB;gBAC/B,QAAQ,EAAE,sBAAsB;gBAChC,aAAa,EAAE,0cAA0c;gBACzd,SAAS,EAAE;oBACV,SAAS,EAAE;wBACV,QAAQ,EAAE,KAAK;wBACf,KAAK,EAAE,WAAW;qBAClB;iBACD;aACD;YACD;gBACC,MAAM,EAAE,YAAY;gBACpB,OAAO,EAAE,YAAY;gBACrB,QAAQ,EAAE,eAAe;gBACzB,aAAa,EAAE,qCAAqC;gBACpD,SAAS,EAAE;oBACV,SAAS,EAAE;wBACV,QAAQ,EAAE,KAAK;wBACf,KAAK,EAAE,kCAAkC;qBACzC;iBACD;aACD;SACD;QACD,SAAS,EAAE,EAAE;KACb;IACD;QACC,aAAa,EAAE,cAAc;QAC7B,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,QAAQ;QAChB,aAAa,EAAE;YACd,OAAO,EAAE,MAAM;SACf;QACD,SAAS,EAAE,EAAE;QACb,gBAAgB,EAAE;YACjB,MAAM,EAAE;gBACP,UAAU,EAAE;oBACX,SAAS;iBACT;gBACD,WAAW,EAAE;oBACZ,sBAAsB;iBACtB;aACD;SACD;KACD;IACD;QACC,aAAa,EAAE,IAAI;QACnB,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,6HAA6H;QAC5I,SAAS,EAAE,YAAY;QACvB,MAAM,EAAE,MAAM;QACd,SAAS,EAAE;YACV,MAAM,EAAE;gBACP,MAAM,EAAE,OAAO;gBACf,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,eAAe;gBACxB,uBAAuB,EAAE,KAAK;aAC9B;SACD;QACD,gBAAgB,EAAE;YACjB,MAAM,EAAE;gBACP,UAAU,EAAE;oBACX,SAAS;iBACT;gBACD,WAAW,EAAE;oBACZ,sBAAsB;iBACtB;aACD;SACD;KACD;IACD;QACC,aAAa,EAAE,mBAAmB;QAClC,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,QAAQ;QAChB,aAAa,EAAE;YACd,OAAO,EAAE,MAAM;SACf;QACD,SAAS,EAAE,EAAE;QACb,gBAAgB,EAAE;YACjB,MAAM,EAAE;gBACP,UAAU,EAAE;oBACX,SAAS;iBACT;gBACD,WAAW,EAAE;oBACZ,YAAY;iBACZ;aACD;SACD;KACD;IACD;QACC,aAAa,EAAE,IAAI;QACnB,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,mBAAmB;QAClC,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,QAAQ;QAChB,gBAAgB,EAAE;YACjB,MAAM,EAAE;gBACP,UAAU,EAAE;oBACX,SAAS;iBACT;gBACD,WAAW,EAAE;oBACZ,YAAY;iBACZ;aACD;SACD;KACD;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { INodeProperties } from 'n8n-workflow';
2
+ export declare const certificatesDescription: INodeProperties[];