{"name":"hcloud","version":"1.32.1","description":"A Pulumi package for creating and managing hcloud cloud resources.","keywords":["pulumi","hcloud"],"homepage":"https://pulumi.io","license":"Apache-2.0","attribution":"This Pulumi package is based on the [`hcloud` Terraform Provider](https://github.com/hetznercloud/terraform-provider-hcloud).","repository":"https://github.com/pulumi/pulumi-hcloud","meta":{"moduleFormat":"(.*)(?:/[^/]*)"},"language":{"csharp":{"packageReferences":{"Pulumi":"3.*"},"namespaces":{"hcloud":"HCloud"},"compatibility":"tfbridge20","respectSchemaVersion":true},"go":{"importBasePath":"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud","generateResourceContainerTypes":true,"generateExtraInputTypes":true,"respectSchemaVersion":true},"nodejs":{"packageDescription":"A Pulumi package for creating and managing hcloud cloud resources.","readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/hetznercloud/terraform-provider-hcloud)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-hcloud` repo](https://github.com/pulumi/pulumi-hcloud/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-hcloud` repo](https://github.com/hetznercloud/terraform-provider-hcloud/issues).","devDependencies":{"@types/mime":"^2.0.0","@types/node":"^10.0.0"},"compatibility":"tfbridge20","disableUnionOutputTypes":true,"respectSchemaVersion":true},"python":{"readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/hetznercloud/terraform-provider-hcloud)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-hcloud` repo](https://github.com/pulumi/pulumi-hcloud/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-hcloud` repo](https://github.com/hetznercloud/terraform-provider-hcloud/issues).","compatibility":"tfbridge20","respectSchemaVersion":true,"pyproject":{"enabled":true}}},"config":{"variables":{"endpoint":{"type":"string","description":"The Hetzner Cloud API endpoint, can be used to override the default API Endpoint https://api.hetzner.cloud/v1."},"endpointHetzner":{"type":"string","description":"The Hetzner API endpoint, can be used to override the default API Endpoint https://api.hetzner.com/v1."},"pollFunction":{"type":"string","description":"The type of function to be used during the polling."},"pollInterval":{"type":"string","description":"The interval at which actions are polled by the client. Default \u003cspan pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\"\u003e`500ms`\u003c/span\u003e. Increase this interval if you run into rate limiting errors."},"token":{"type":"string","description":"The Hetzner Cloud API token, can also be specified with the HCLOUD_TOKEN environment variable.","secret":true}}},"types":{"hcloud:index/FirewallApplyTo:FirewallApplyTo":{"properties":{"labelSelector":{"type":"string","description":"Label Selector to select servers the firewall should be applied to (only one\nof \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`labelSelector`\" pulumi-lang-dotnet=\"`LabelSelector`\" pulumi-lang-go=\"`labelSelector`\" pulumi-lang-python=\"`label_selector`\" pulumi-lang-yaml=\"`labelSelector`\" pulumi-lang-java=\"`labelSelector`\"\u003e`label_selector`\u003c/span\u003ecan be applied in one block)\n"},"server":{"type":"integer","description":"ID of the server you want to apply the firewall to (only one of \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e\nand \u003cspan pulumi-lang-nodejs=\"`labelSelector`\" pulumi-lang-dotnet=\"`LabelSelector`\" pulumi-lang-go=\"`labelSelector`\" pulumi-lang-python=\"`label_selector`\" pulumi-lang-yaml=\"`labelSelector`\" pulumi-lang-java=\"`labelSelector`\"\u003e`label_selector`\u003c/span\u003ecan be applied in one block)\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["labelSelector","server"]}}},"hcloud:index/FirewallRule:FirewallRule":{"properties":{"description":{"type":"string","description":"Description of the firewall rule\n"},"destinationIps":{"type":"array","items":{"type":"string"},"description":"List of IPs or CIDRs that are allowed within this Firewall Rule (when \u003cspan pulumi-lang-nodejs=\"`direction`\" pulumi-lang-dotnet=\"`Direction`\" pulumi-lang-go=\"`direction`\" pulumi-lang-python=\"`direction`\" pulumi-lang-yaml=\"`direction`\" pulumi-lang-java=\"`direction`\"\u003e`direction`\u003c/span\u003e\nis \u003cspan pulumi-lang-nodejs=\"`out`\" pulumi-lang-dotnet=\"`Out`\" pulumi-lang-go=\"`out`\" pulumi-lang-python=\"`out`\" pulumi-lang-yaml=\"`out`\" pulumi-lang-java=\"`out`\"\u003e`out`\u003c/span\u003e)\n"},"direction":{"type":"string","description":"Direction of the Firewall Rule. \u003cspan pulumi-lang-nodejs=\"`in`\" pulumi-lang-dotnet=\"`In`\" pulumi-lang-go=\"`in`\" pulumi-lang-python=\"`in`\" pulumi-lang-yaml=\"`in`\" pulumi-lang-java=\"`in`\"\u003e`in`\u003c/span\u003e\n"},"port":{"type":"string","description":"Port of the Firewall Rule. Required when \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e. You can use \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e\nto allow all ports for the specific protocol. Port ranges are also possible: `80-85` allows all ports between 80 and 85.\n"},"protocol":{"type":"string","description":"Protocol of the Firewall Rule. \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`icmp`\" pulumi-lang-dotnet=\"`Icmp`\" pulumi-lang-go=\"`icmp`\" pulumi-lang-python=\"`icmp`\" pulumi-lang-yaml=\"`icmp`\" pulumi-lang-java=\"`icmp`\"\u003e`icmp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gre`\" pulumi-lang-dotnet=\"`Gre`\" pulumi-lang-go=\"`gre`\" pulumi-lang-python=\"`gre`\" pulumi-lang-yaml=\"`gre`\" pulumi-lang-java=\"`gre`\"\u003e`gre`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`esp`\" pulumi-lang-dotnet=\"`Esp`\" pulumi-lang-go=\"`esp`\" pulumi-lang-python=\"`esp`\" pulumi-lang-yaml=\"`esp`\" pulumi-lang-java=\"`esp`\"\u003e`esp`\u003c/span\u003e\n"},"sourceIps":{"type":"array","items":{"type":"string"},"description":"List of IPs or CIDRs that are allowed within this Firewall Rule (when \u003cspan pulumi-lang-nodejs=\"`direction`\" pulumi-lang-dotnet=\"`Direction`\" pulumi-lang-go=\"`direction`\" pulumi-lang-python=\"`direction`\" pulumi-lang-yaml=\"`direction`\" pulumi-lang-java=\"`direction`\"\u003e`direction`\u003c/span\u003e\nis \u003cspan pulumi-lang-nodejs=\"`in`\" pulumi-lang-dotnet=\"`In`\" pulumi-lang-go=\"`in`\" pulumi-lang-python=\"`in`\" pulumi-lang-yaml=\"`in`\" pulumi-lang-java=\"`in`\"\u003e`in`\u003c/span\u003e)\n"}},"type":"object","required":["direction","protocol"]},"hcloud:index/LoadBalancerAlgorithm:LoadBalancerAlgorithm":{"properties":{"type":{"type":"string","description":"Type of the Load Balancer Algorithm. \u003cspan pulumi-lang-nodejs=\"`roundRobin`\" pulumi-lang-dotnet=\"`RoundRobin`\" pulumi-lang-go=\"`roundRobin`\" pulumi-lang-python=\"`round_robin`\" pulumi-lang-yaml=\"`roundRobin`\" pulumi-lang-java=\"`roundRobin`\"\u003e`round_robin`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`leastConnections`\" pulumi-lang-dotnet=\"`LeastConnections`\" pulumi-lang-go=\"`leastConnections`\" pulumi-lang-python=\"`least_connections`\" pulumi-lang-yaml=\"`leastConnections`\" pulumi-lang-java=\"`leastConnections`\"\u003e`least_connections`\u003c/span\u003e\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["type"]}}},"hcloud:index/LoadBalancerServiceHealthCheck:LoadBalancerServiceHealthCheck":{"properties":{"http":{"$ref":"#/types/hcloud:index/LoadBalancerServiceHealthCheckHttp:LoadBalancerServiceHealthCheckHttp","description":"HTTP configuration. Required if \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e.\n"},"interval":{"type":"integer","description":"Interval how often the health check will be performed, in seconds.\n"},"port":{"type":"integer","description":"Port the health check tries to connect to, required if protocol is \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e. Can be everything between \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`65535`\" pulumi-lang-dotnet=\"`65535`\" pulumi-lang-go=\"`65535`\" pulumi-lang-python=\"`65535`\" pulumi-lang-yaml=\"`65535`\" pulumi-lang-java=\"`65535`\"\u003e`65535`\u003c/span\u003e. Must be unique per Load Balancer.\n"},"protocol":{"type":"string","description":"Protocol the health check uses. \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e\n"},"retries":{"type":"integer","description":"Number of tries a health check will be performed until a target will be listed as \u003cspan pulumi-lang-nodejs=\"`unhealthy`\" pulumi-lang-dotnet=\"`Unhealthy`\" pulumi-lang-go=\"`unhealthy`\" pulumi-lang-python=\"`unhealthy`\" pulumi-lang-yaml=\"`unhealthy`\" pulumi-lang-java=\"`unhealthy`\"\u003e`unhealthy`\u003c/span\u003e.\n"},"timeout":{"type":"integer","description":"Timeout when a health check try will be canceled if there is no response, in seconds.\n"}},"type":"object","required":["interval","port","protocol","retries","timeout"],"language":{"nodejs":{"requiredOutputs":["http","interval","port","protocol","retries","timeout"]}}},"hcloud:index/LoadBalancerServiceHealthCheckHttp:LoadBalancerServiceHealthCheckHttp":{"properties":{"domain":{"type":"string","description":"Domain we try to access when performing the Health Check.\n"},"path":{"type":"string","description":"Path we try to access when performing the Health Check.\n"},"response":{"type":"string","description":"Response we expect to be included in the Target response when a Health Check was performed.\n"},"statusCodes":{"type":"array","items":{"type":"string"},"description":"We expect that the target answers with these status codes. If not the target is marked as \u003cspan pulumi-lang-nodejs=\"`unhealthy`\" pulumi-lang-dotnet=\"`Unhealthy`\" pulumi-lang-go=\"`unhealthy`\" pulumi-lang-python=\"`unhealthy`\" pulumi-lang-yaml=\"`unhealthy`\" pulumi-lang-java=\"`unhealthy`\"\u003e`unhealthy`\u003c/span\u003e.\n"},"tls":{"type":"boolean","description":"Enable TLS certificate checking.\n"}},"type":"object"},"hcloud:index/LoadBalancerServiceHttp:LoadBalancerServiceHttp":{"properties":{"certificates":{"type":"array","items":{"type":"integer"},"description":"List of IDs from certificates which the Load Balancer has.\n"},"cookieLifetime":{"type":"integer","description":"Lifetime of the cookie for sticky session (in seconds). Default: \u003cspan pulumi-lang-nodejs=\"`300`\" pulumi-lang-dotnet=\"`300`\" pulumi-lang-go=\"`300`\" pulumi-lang-python=\"`300`\" pulumi-lang-yaml=\"`300`\" pulumi-lang-java=\"`300`\"\u003e`300`\u003c/span\u003e\n"},"cookieName":{"type":"string","description":"Name of the cookie for sticky session. Default: `HCLBSTICKY`\n"},"redirectHttp":{"type":"boolean","description":"Redirect HTTP to HTTPS traffic. Only supported for services with \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e using the default HTTP port \u003cspan pulumi-lang-nodejs=\"`80`\" pulumi-lang-dotnet=\"`80`\" pulumi-lang-go=\"`80`\" pulumi-lang-python=\"`80`\" pulumi-lang-yaml=\"`80`\" pulumi-lang-java=\"`80`\"\u003e`80`\u003c/span\u003e.\n"},"stickySessions":{"type":"boolean","description":"Enable sticky sessions\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["certificates","cookieLifetime","cookieName","redirectHttp","stickySessions"]}}},"hcloud:index/LoadBalancerTarget:LoadBalancerTarget":{"properties":{"serverId":{"type":"integer"},"type":{"type":"string","description":"(string) Type of the Load Balancer Algorithm. \u003cspan pulumi-lang-nodejs=\"`roundRobin`\" pulumi-lang-dotnet=\"`RoundRobin`\" pulumi-lang-go=\"`roundRobin`\" pulumi-lang-python=\"`round_robin`\" pulumi-lang-yaml=\"`roundRobin`\" pulumi-lang-java=\"`roundRobin`\"\u003e`round_robin`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`leastConnections`\" pulumi-lang-dotnet=\"`LeastConnections`\" pulumi-lang-go=\"`leastConnections`\" pulumi-lang-python=\"`least_connections`\" pulumi-lang-yaml=\"`leastConnections`\" pulumi-lang-java=\"`leastConnections`\"\u003e`least_connections`\u003c/span\u003e\n"},"usePrivateIp":{"type":"boolean","deprecationMessage":"Does not work. Use the\u003cspan pulumi-lang-nodejs=\" hcloud.LoadBalancerTarget \" pulumi-lang-dotnet=\" hcloud.LoadBalancerTarget \" pulumi-lang-go=\" LoadBalancerTarget \" pulumi-lang-python=\" LoadBalancerTarget \" pulumi-lang-yaml=\" hcloud.LoadBalancerTarget \" pulumi-lang-java=\" hcloud.LoadBalancerTarget \"\u003e hcloud.LoadBalancerTarget \u003c/span\u003eresource instead."}},"type":"object","required":["type"]},"hcloud:index/ServerNetwork:ServerNetwork":{"properties":{"aliasIps":{"type":"array","items":{"type":"string"},"description":"Alias IPs the server should have in the Network.\n\nThere is a bug with Terraform `1.4+` which causes the network to be detached \u0026 attached on every apply. Set \u003cspan pulumi-lang-nodejs=\"`aliasIps \" pulumi-lang-dotnet=\"`AliasIps \" pulumi-lang-go=\"`aliasIps \" pulumi-lang-python=\"`alias_ips \" pulumi-lang-yaml=\"`aliasIps \" pulumi-lang-java=\"`aliasIps \"\u003e`alias_ips \u003c/span\u003e= []` to avoid this. See #650 for details.\n"},"ip":{"type":"string","description":"Specify the IP the server should get in the network\n"},"macAddress":{"type":"string","description":"(Optional, string) The MAC address the private interface of the server has\n"},"networkId":{"type":"integer","description":"ID of the network\n"}},"type":"object","required":["networkId"],"language":{"nodejs":{"requiredOutputs":["aliasIps","ip","macAddress","networkId"]}}},"hcloud:index/ServerPublicNet:ServerPublicNet":{"properties":{"ipv4":{"type":"integer"},"ipv4Enabled":{"type":"boolean"},"ipv6":{"type":"integer"},"ipv6Enabled":{"type":"boolean"}},"type":"object","language":{"nodejs":{"requiredOutputs":["ipv4","ipv6"]}}},"hcloud:index/StorageBoxAccessSettings:StorageBoxAccessSettings":{"properties":{"reachableExternally":{"type":"boolean","description":"Whether access from outside the Hetzner network is allowed.\n"},"sambaEnabled":{"type":"boolean","description":"Whether the Samba subsystem is enabled.\n"},"sshEnabled":{"type":"boolean","description":"Whether the SSH subsystem is enabled.\n"},"webdavEnabled":{"type":"boolean","description":"Whether the WebDAV subsystem is enabled.\n"},"zfsEnabled":{"type":"boolean","description":"Whether the ZFS snapshot folder is visible.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["reachableExternally","sambaEnabled","sshEnabled","webdavEnabled","zfsEnabled"]}}},"hcloud:index/StorageBoxSnapshotPlan:StorageBoxSnapshotPlan":{"properties":{"dayOfMonth":{"type":"integer","description":"Day of the month when the Snapshot Plan is executed. Null means every day.\n"},"dayOfWeek":{"type":"integer","description":"Day of the week when the Snapshot Plan is executed. Starts at 0 for Sunday til 6 for Saturday. Note that this differs from the API, which uses 1 (Monday) through 7 (Sunday). Null means every day.\n"},"hour":{"type":"integer","description":"Hour when the Snapshot Plan is executed (UTC).\n"},"maxSnapshots":{"type":"integer","description":"Maximum amount of Snapshots that will be created by this Snapshot Plan. Older Snapshots will be deleted.\n"},"minute":{"type":"integer","description":"Minute when the Snapshot Plan is executed (UTC).\n"}},"type":"object","required":["hour","maxSnapshots","minute"]},"hcloud:index/StorageBoxSubaccountAccessSettings:StorageBoxSubaccountAccessSettings":{"properties":{"reachableExternally":{"type":"boolean","description":"Whether access from outside the Hetzner network is allowed.\n"},"readonly":{"type":"boolean","description":"Whether the Subaccount is read-only.\n"},"sambaEnabled":{"type":"boolean","description":"Whether the Samba subsystem is enabled.\n"},"sshEnabled":{"type":"boolean","description":"Whether the SSH subsystem is enabled.\n"},"webdavEnabled":{"type":"boolean","description":"Whether the WebDAV subsystem is enabled.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["reachableExternally","readonly","sambaEnabled","sshEnabled","webdavEnabled"]}}},"hcloud:index/ZoneAuthoritativeNameservers:ZoneAuthoritativeNameservers":{"properties":{"assigneds":{"type":"array","items":{"type":"string"},"description":"Authoritative Hetzner nameservers assigned to the Zone.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["assigneds"]}}},"hcloud:index/ZonePrimaryNameserver:ZonePrimaryNameserver":{"properties":{"address":{"type":"string","description":"Public IPv4 or IPv6 address of the primary nameserver.\n"},"port":{"type":"integer","description":"Port of the primary nameserver.\n"},"tsigAlgorithm":{"type":"string","description":"Transaction signature (TSIG) algorithm used to generate the TSIG key.\n"},"tsigKey":{"type":"string","description":"Transaction signature (TSIG) key\n"}},"type":"object","required":["address"],"language":{"nodejs":{"requiredOutputs":["address","port"]}}},"hcloud:index/ZoneRrsetRecord:ZoneRrsetRecord":{"properties":{"comment":{"type":"string","description":"Comment of the record.\n"},"value":{"type":"string","description":"Value of the record.\n"}},"type":"object","required":["value"]},"hcloud:index/getCertificatesCertificate:getCertificatesCertificate":{"properties":{"certificate":{"type":"string"},"created":{"type":"string"},"domainNames":{"type":"array","items":{"type":"string"}},"fingerprint":{"type":"string"},"id":{"type":"integer"},"labels":{"type":"object","additionalProperties":{"type":"string"}},"name":{"type":"string"},"notValidAfter":{"type":"string"},"notValidBefore":{"type":"string"},"type":{"type":"string"}},"type":"object","required":["certificate","created","domainNames","fingerprint","id","labels","notValidAfter","notValidBefore","type"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getDatacentersDatacenter:getDatacentersDatacenter":{"properties":{"availableServerTypeIds":{"type":"array","items":{"type":"integer"},"description":"List of currently available Server Types in the Datacenter.\n"},"description":{"type":"string","description":"Description of the Datacenter.\n"},"id":{"type":"integer","description":"ID of the Datacenter.\n"},"location":{"type":"object","additionalProperties":{"type":"string"},"description":"Location of the Datacenter. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n"},"name":{"type":"string","description":"Name of the Datacenter.\n"},"supportedServerTypeIds":{"type":"array","items":{"type":"integer"},"description":"List of supported Server Types in the Datacenter.\n"}},"type":"object","required":["availableServerTypeIds","description","id","location","name","supportedServerTypeIds"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getFirewallApplyTo:getFirewallApplyTo":{"properties":{"labelSelector":{"type":"string","description":"(string) Label Selector to select servers the firewall is applied to. Empty if a server is directly\nreferenced\n"},"server":{"type":"integer","description":"(int) ID of a server where the firewall is applied to. \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e if applied to a label_selector\n"}},"type":"object","required":["labelSelector","server"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getFirewallRule:getFirewallRule":{"properties":{"description":{"type":"string","description":"(Optional, string) Description of the firewall rule\n"},"destinationIps":{"type":"array","items":{"type":"string"},"description":"(Required, List) List of CIDRs that are allowed within this Firewall Rule (when \u003cspan pulumi-lang-nodejs=\"`direction`\" pulumi-lang-dotnet=\"`Direction`\" pulumi-lang-go=\"`direction`\" pulumi-lang-python=\"`direction`\" pulumi-lang-yaml=\"`direction`\" pulumi-lang-java=\"`direction`\"\u003e`direction`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`out`\" pulumi-lang-dotnet=\"`Out`\" pulumi-lang-go=\"`out`\" pulumi-lang-python=\"`out`\" pulumi-lang-yaml=\"`out`\" pulumi-lang-java=\"`out`\"\u003e`out`\u003c/span\u003e)\n"},"direction":{"type":"string","description":"(Required, string) Direction of the Firewall Rule. \u003cspan pulumi-lang-nodejs=\"`in`\" pulumi-lang-dotnet=\"`In`\" pulumi-lang-go=\"`in`\" pulumi-lang-python=\"`in`\" pulumi-lang-yaml=\"`in`\" pulumi-lang-java=\"`in`\"\u003e`in`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`out`\" pulumi-lang-dotnet=\"`Out`\" pulumi-lang-go=\"`out`\" pulumi-lang-python=\"`out`\" pulumi-lang-yaml=\"`out`\" pulumi-lang-java=\"`out`\"\u003e`out`\u003c/span\u003e\n"},"port":{"type":"string","description":"(Required, string) Port of the Firewall Rule. Required when \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e\n"},"protocol":{"type":"string","description":"(Required, string) Protocol of the Firewall Rule. \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`icmp`\" pulumi-lang-dotnet=\"`Icmp`\" pulumi-lang-go=\"`icmp`\" pulumi-lang-python=\"`icmp`\" pulumi-lang-yaml=\"`icmp`\" pulumi-lang-java=\"`icmp`\"\u003e`icmp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gre`\" pulumi-lang-dotnet=\"`Gre`\" pulumi-lang-go=\"`gre`\" pulumi-lang-python=\"`gre`\" pulumi-lang-yaml=\"`gre`\" pulumi-lang-java=\"`gre`\"\u003e`gre`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`esp`\" pulumi-lang-dotnet=\"`Esp`\" pulumi-lang-go=\"`esp`\" pulumi-lang-python=\"`esp`\" pulumi-lang-yaml=\"`esp`\" pulumi-lang-java=\"`esp`\"\u003e`esp`\u003c/span\u003e\n"},"sourceIps":{"type":"array","items":{"type":"string"},"description":"(Required, List) List of CIDRs that are allowed within this Firewall Rule (when \u003cspan pulumi-lang-nodejs=\"`direction`\" pulumi-lang-dotnet=\"`Direction`\" pulumi-lang-go=\"`direction`\" pulumi-lang-python=\"`direction`\" pulumi-lang-yaml=\"`direction`\" pulumi-lang-java=\"`direction`\"\u003e`direction`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`in`\" pulumi-lang-dotnet=\"`In`\" pulumi-lang-go=\"`in`\" pulumi-lang-python=\"`in`\" pulumi-lang-yaml=\"`in`\" pulumi-lang-java=\"`in`\"\u003e`in`\u003c/span\u003e)\n"}},"type":"object","required":["direction"]},"hcloud:index/getFirewallsFirewall:getFirewallsFirewall":{"properties":{"applyTos":{"type":"array","items":{"$ref":"#/types/hcloud:index/getFirewallsFirewallApplyTo:getFirewallsFirewallApplyTo"}},"id":{"type":"integer"},"labels":{"type":"object","additionalProperties":{"type":"string"}},"name":{"type":"string"},"rules":{"type":"array","items":{"$ref":"#/types/hcloud:index/getFirewallsFirewallRule:getFirewallsFirewallRule"}}},"type":"object","required":["name"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getFirewallsFirewallApplyTo:getFirewallsFirewallApplyTo":{"properties":{"labelSelector":{"type":"string"},"server":{"type":"integer"}},"type":"object","required":["labelSelector","server"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getFirewallsFirewallRule:getFirewallsFirewallRule":{"properties":{"description":{"type":"string"},"destinationIps":{"type":"array","items":{"type":"string"}},"direction":{"type":"string"},"port":{"type":"string"},"protocol":{"type":"string"},"sourceIps":{"type":"array","items":{"type":"string"}}},"type":"object","required":["direction"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getFloatingIpsFloatingIp:getFloatingIpsFloatingIp":{"properties":{"deleteProtection":{"type":"boolean"},"description":{"type":"string"},"homeLocation":{"type":"string"},"id":{"type":"integer"},"ipAddress":{"type":"string"},"ipNetwork":{"type":"string"},"labels":{"type":"object","additionalProperties":{"type":"string"}},"name":{"type":"string"},"serverId":{"type":"integer"},"type":{"type":"string"}},"type":"object","required":["deleteProtection","description","homeLocation","id","ipAddress","ipNetwork","labels","serverId","type"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getImagesImage:getImagesImage":{"properties":{"architecture":{"type":"string"},"created":{"type":"string"},"deprecated":{"type":"string"},"description":{"type":"string"},"id":{"type":"integer"},"labels":{"type":"object","additionalProperties":{"type":"string"}},"name":{"type":"string"},"osFlavor":{"type":"string"},"osVersion":{"type":"string"},"rapidDeploy":{"type":"boolean"},"selector":{"type":"string","deprecationMessage":"Please use the\u003cspan pulumi-lang-nodejs=\" withSelector \" pulumi-lang-dotnet=\" WithSelector \" pulumi-lang-go=\" withSelector \" pulumi-lang-python=\" with_selector \" pulumi-lang-yaml=\" withSelector \" pulumi-lang-java=\" withSelector \"\u003e with_selector \u003c/span\u003eproperty instead."},"type":{"type":"string"}},"type":"object","required":["architecture","created","deprecated","description","id","labels","name","osFlavor","osVersion","rapidDeploy","type"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getLoadBalancerAlgorithm:getLoadBalancerAlgorithm":{"properties":{"type":{"type":"string","description":"(string) Type of the target. \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`labelSelector`\" pulumi-lang-dotnet=\"`LabelSelector`\" pulumi-lang-go=\"`labelSelector`\" pulumi-lang-python=\"`label_selector`\" pulumi-lang-yaml=\"`labelSelector`\" pulumi-lang-java=\"`labelSelector`\"\u003e`label_selector`\u003c/span\u003e\n"}},"type":"object","required":["type"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getLoadBalancerService:getLoadBalancerService":{"properties":{"destinationPort":{"type":"integer","description":"(int) Port the service connects to the targets on. Can be everything between \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`65535`\" pulumi-lang-dotnet=\"`65535`\" pulumi-lang-go=\"`65535`\" pulumi-lang-python=\"`65535`\" pulumi-lang-yaml=\"`65535`\" pulumi-lang-java=\"`65535`\"\u003e`65535`\u003c/span\u003e.\n"},"healthChecks":{"type":"array","items":{"$ref":"#/types/hcloud:index/getLoadBalancerServiceHealthCheck:getLoadBalancerServiceHealthCheck"},"description":"(list) List of http configurations when \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e.\n"},"https":{"type":"array","items":{"$ref":"#/types/hcloud:index/getLoadBalancerServiceHttp:getLoadBalancerServiceHttp"},"description":"(list) List of http configurations when \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e.\n"},"listenPort":{"type":"integer","description":"(int) Port the service listen on. Can be everything between \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`65535`\" pulumi-lang-dotnet=\"`65535`\" pulumi-lang-go=\"`65535`\" pulumi-lang-python=\"`65535`\" pulumi-lang-yaml=\"`65535`\" pulumi-lang-java=\"`65535`\"\u003e`65535`\u003c/span\u003e. Must be unique per Load Balancer.\n"},"protocol":{"type":"string","description":"(string) Protocol the health check uses. \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e\n"},"proxyprotocol":{"type":"boolean","description":"(bool) Enable proxyprotocol.\n"}},"type":"object","required":["destinationPort","healthChecks","https","listenPort","protocol","proxyprotocol"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getLoadBalancerServiceHealthCheck:getLoadBalancerServiceHealthCheck":{"properties":{"https":{"type":"array","items":{"$ref":"#/types/hcloud:index/getLoadBalancerServiceHealthCheckHttp:getLoadBalancerServiceHealthCheckHttp"},"description":"(list) List of http configurations when \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e.\n"},"interval":{"type":"integer","description":"(int) Interval how often the health check will be performed, in seconds.\n"},"port":{"type":"integer","description":"(int) Port the health check tries to connect to. Can be everything between \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`65535`\" pulumi-lang-dotnet=\"`65535`\" pulumi-lang-go=\"`65535`\" pulumi-lang-python=\"`65535`\" pulumi-lang-yaml=\"`65535`\" pulumi-lang-java=\"`65535`\"\u003e`65535`\u003c/span\u003e.\n"},"protocol":{"type":"string","description":"(string) Protocol the health check uses. \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e\n"},"retries":{"type":"integer","description":"(int) Number of tries a health check will be performed until a target will be listed as \u003cspan pulumi-lang-nodejs=\"`unhealthy`\" pulumi-lang-dotnet=\"`Unhealthy`\" pulumi-lang-go=\"`unhealthy`\" pulumi-lang-python=\"`unhealthy`\" pulumi-lang-yaml=\"`unhealthy`\" pulumi-lang-java=\"`unhealthy`\"\u003e`unhealthy`\u003c/span\u003e.\n"},"timeout":{"type":"integer","description":"(int) Timeout when a health check try will be canceled if there is no response, in seconds.\n"}},"type":"object","required":["https","interval","port","protocol","retries","timeout"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getLoadBalancerServiceHealthCheckHttp:getLoadBalancerServiceHealthCheckHttp":{"properties":{"domain":{"type":"string","description":"string) Domain we try to access when performing the Health Check.\n"},"path":{"type":"string","description":"(string) Path we try to access when performing the Health Check.\n"},"response":{"type":"string","description":"(string) Response we expect to be included in the Target response when a Health Check was performed.\n"},"statusCodes":{"type":"array","items":{"type":"integer"},"description":"(list[int]) We expect that the target answers with these status codes. If not the target is marked as \u003cspan pulumi-lang-nodejs=\"`unhealthy`\" pulumi-lang-dotnet=\"`Unhealthy`\" pulumi-lang-go=\"`unhealthy`\" pulumi-lang-python=\"`unhealthy`\" pulumi-lang-yaml=\"`unhealthy`\" pulumi-lang-java=\"`unhealthy`\"\u003e`unhealthy`\u003c/span\u003e.\n"},"tls":{"type":"boolean","description":"(bool) Enable TLS certificate checking.\n"}},"type":"object","required":["domain","path","response","statusCodes","tls"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getLoadBalancerServiceHttp:getLoadBalancerServiceHttp":{"properties":{"certificates":{"type":"array","items":{"type":"string"},"description":"(list[int]) List of IDs from certificates which the Load Balancer has.\n"},"cookieLifetime":{"type":"integer","description":"(int) Lifetime of the cookie for sticky session (in seconds).\n"},"cookieName":{"type":"string","description":"(string) Name of the cookie for sticky session.\n"},"redirectHttp":{"type":"boolean","description":"(string) Determine if all requests from port 80 should be redirected to port 443.\n"},"stickySessions":{"type":"boolean","description":"(string) Determine if sticky sessions are enabled or not.\n"}},"type":"object","required":["certificates","cookieLifetime","cookieName","redirectHttp","stickySessions"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getLoadBalancerTarget:getLoadBalancerTarget":{"properties":{"labelSelector":{"type":"string","description":"(string) Label Selector to add a group of resources based on the label.\n"},"serverId":{"type":"integer","description":"(int) ID of the server which should be a target for this Load Balancer.\n"},"type":{"type":"string","description":"(string) Type of the target. \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`labelSelector`\" pulumi-lang-dotnet=\"`LabelSelector`\" pulumi-lang-go=\"`labelSelector`\" pulumi-lang-python=\"`label_selector`\" pulumi-lang-yaml=\"`labelSelector`\" pulumi-lang-java=\"`labelSelector`\"\u003e`label_selector`\u003c/span\u003e\n"}},"type":"object","required":["labelSelector","serverId","type"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getLoadBalancerTypesLoadBalancerType:getLoadBalancerTypesLoadBalancerType":{"properties":{"description":{"type":"string","description":"Description of the Load Balancer Type.\n"},"id":{"type":"integer","description":"ID of the Load Balancer Type.\n"},"maxAssignedCertificates":{"type":"integer","description":"Maximum number of certificates that can be assigned for the Load Balancer of this type.\n"},"maxConnections":{"type":"integer","description":"Maximum number of simultaneous open connections for the Load Balancer of this type.\n"},"maxServices":{"type":"integer","description":"Maximum number of services for the Load Balancer of this type.\n"},"maxTargets":{"type":"integer","description":"Maximum number of targets for the Load Balancer of this type.\n"},"name":{"type":"string","description":"Name of the Load Balancer Type.\n"}},"type":"object","required":["description","id","maxAssignedCertificates","maxConnections","maxServices","maxTargets","name"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getLoadBalancersLoadBalancer:getLoadBalancersLoadBalancer":{"properties":{"algorithms":{"type":"array","items":{"$ref":"#/types/hcloud:index/getLoadBalancersLoadBalancerAlgorithm:getLoadBalancersLoadBalancerAlgorithm"}},"deleteProtection":{"type":"boolean"},"id":{"type":"integer"},"ipv4":{"type":"string"},"ipv6":{"type":"string"},"labels":{"type":"object","additionalProperties":{"type":"string"}},"loadBalancerType":{"type":"string"},"location":{"type":"string"},"name":{"type":"string"},"networkId":{"type":"integer"},"networkIp":{"type":"string"},"networkZone":{"type":"string"},"services":{"type":"array","items":{"$ref":"#/types/hcloud:index/getLoadBalancersLoadBalancerService:getLoadBalancersLoadBalancerService"}},"targets":{"type":"array","items":{"$ref":"#/types/hcloud:index/getLoadBalancersLoadBalancerTarget:getLoadBalancersLoadBalancerTarget"}}},"type":"object","required":["algorithms","deleteProtection","id","ipv4","ipv6","labels","loadBalancerType","location","networkId","networkIp","networkZone","services","targets"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getLoadBalancersLoadBalancerAlgorithm:getLoadBalancersLoadBalancerAlgorithm":{"properties":{"type":{"type":"string"}},"type":"object","required":["type"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getLoadBalancersLoadBalancerService:getLoadBalancersLoadBalancerService":{"properties":{"destinationPort":{"type":"integer"},"healthChecks":{"type":"array","items":{"$ref":"#/types/hcloud:index/getLoadBalancersLoadBalancerServiceHealthCheck:getLoadBalancersLoadBalancerServiceHealthCheck"}},"https":{"type":"array","items":{"$ref":"#/types/hcloud:index/getLoadBalancersLoadBalancerServiceHttp:getLoadBalancersLoadBalancerServiceHttp"}},"listenPort":{"type":"integer"},"protocol":{"type":"string"},"proxyprotocol":{"type":"boolean"}},"type":"object","required":["destinationPort","healthChecks","https","listenPort","protocol","proxyprotocol"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getLoadBalancersLoadBalancerServiceHealthCheck:getLoadBalancersLoadBalancerServiceHealthCheck":{"properties":{"https":{"type":"array","items":{"$ref":"#/types/hcloud:index/getLoadBalancersLoadBalancerServiceHealthCheckHttp:getLoadBalancersLoadBalancerServiceHealthCheckHttp"}},"interval":{"type":"integer"},"port":{"type":"integer"},"protocol":{"type":"string"},"retries":{"type":"integer"},"timeout":{"type":"integer"}},"type":"object","required":["https","interval","port","protocol","retries","timeout"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getLoadBalancersLoadBalancerServiceHealthCheckHttp:getLoadBalancersLoadBalancerServiceHealthCheckHttp":{"properties":{"domain":{"type":"string"},"path":{"type":"string"},"response":{"type":"string"},"statusCodes":{"type":"array","items":{"type":"integer"}},"tls":{"type":"boolean"}},"type":"object","required":["domain","path","response","statusCodes","tls"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getLoadBalancersLoadBalancerServiceHttp:getLoadBalancersLoadBalancerServiceHttp":{"properties":{"certificates":{"type":"array","items":{"type":"string"}},"cookieLifetime":{"type":"integer"},"cookieName":{"type":"string"},"redirectHttp":{"type":"boolean"},"stickySessions":{"type":"boolean"}},"type":"object","required":["certificates","cookieLifetime","cookieName","redirectHttp","stickySessions"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getLoadBalancersLoadBalancerTarget:getLoadBalancersLoadBalancerTarget":{"properties":{"labelSelector":{"type":"string"},"serverId":{"type":"integer"},"type":{"type":"string"}},"type":"object","required":["labelSelector","serverId","type"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getLocationsLocation:getLocationsLocation":{"properties":{"city":{"type":"string","description":"Name of the closest city to the Location. City name and optionally state in short form.\n"},"country":{"type":"string","description":"Country the Location resides in. ISO 3166-1 alpha-2 code of the country.\n"},"description":{"type":"string","description":"Description of the Location.\n"},"id":{"type":"integer","description":"ID of the Location.\n"},"latitude":{"type":"number","description":"Latitude of the city closest to the Location.\n"},"longitude":{"type":"number","description":"Longitude of the city closest to the Location.\n"},"name":{"type":"string","description":"Name of the Location.\n"},"networkZone":{"type":"string","description":"Name of the Network Zone this Location resides in.\n"}},"type":"object","required":["city","country","description","id","latitude","longitude","name","networkZone"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getNetworksNetwork:getNetworksNetwork":{"properties":{"deleteProtection":{"type":"boolean"},"exposeRoutesToVswitch":{"type":"boolean","description":"Indicates if the routes from this network should be exposed to the vSwitch connection. The exposing only takes effect if a vSwitch connection is active.\n"},"id":{"type":"integer"},"ipRange":{"type":"string"},"labels":{"type":"object","additionalProperties":{"type":"string"}},"name":{"type":"string"}},"type":"object","required":["deleteProtection","exposeRoutesToVswitch","id","ipRange","labels","name"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getPlacementGroupsPlacementGroup:getPlacementGroupsPlacementGroup":{"properties":{"id":{"type":"integer"},"labels":{"type":"object","additionalProperties":{"type":"string"}},"name":{"type":"string"},"servers":{"type":"array","items":{"type":"integer"}},"type":{"type":"string"}},"type":"object","required":["id","labels","name","servers","type"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getPrimaryIpsPrimaryIp:getPrimaryIpsPrimaryIp":{"properties":{"assigneeId":{"type":"integer"},"assigneeType":{"type":"string"},"autoDelete":{"type":"boolean"},"datacenter":{"type":"string","deprecationMessage":"The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters."},"deleteProtection":{"type":"boolean"},"id":{"type":"integer"},"ipAddress":{"type":"string"},"ipNetwork":{"type":"string"},"labels":{"type":"object","additionalProperties":{"type":"string"}},"location":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"}},"type":"object","required":["assigneeId","assigneeType","autoDelete","datacenter","deleteProtection","id","ipAddress","ipNetwork","labels","location","type"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getServerNetwork:getServerNetwork":{"properties":{"aliasIps":{"type":"array","items":{"type":"string"},"description":"(list) A list of alias IP addresses assigned to the server in the network.\n"},"ip":{"type":"string","description":"(string) The server's IP address within the network.\n"},"macAddress":{"type":"string","description":"(string) The MAC address associated with the server's private network interface.\n"},"networkId":{"type":"integer","description":"(int) The unique identifier for the network.\n"}},"type":"object","required":["aliasIps","ip","macAddress","networkId"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getServerTypeLocation:getServerTypeLocation":{"properties":{"deprecationAnnounced":{"type":"string","description":"Date of the Server Type deprecation announcement.\n"},"id":{"type":"integer","description":"ID of the Location.\n"},"isDeprecated":{"type":"boolean","description":"Whether the Server Type is deprecated.\n"},"name":{"type":"string","description":"Name of the Location.\n"},"unavailableAfter":{"type":"string","description":"Date of the Server Type removal. After this date, the Server Type cannot be used anymore.\n"}},"type":"object","required":["deprecationAnnounced","id","isDeprecated","name","unavailableAfter"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getServerTypesServerType:getServerTypesServerType":{"properties":{"architecture":{"type":"string","description":"Architecture of the cpu for a Server of this type.\n"},"category":{"type":"string","description":"Category of the Server Type.\n"},"cores":{"type":"integer","description":"Number of cpu cores for a Server of this type.\n"},"cpuType":{"type":"string","description":"Type of cpu for a Server of this type.\n"},"deprecationAnnounced":{"type":"string","description":"Date of the Server Type deprecation announcement.\n","deprecationMessage":"The field is deprecated and will gradually be phased out starting 2025-09-24. Use the deprecation in the locations list instead."},"description":{"type":"string","description":"Description of the Server Type.\n"},"disk":{"type":"integer","description":"Disk size in GB for a Server of this type.\n"},"id":{"type":"integer","description":"ID of the Server Type.\n"},"includedTraffic":{"type":"integer","deprecationMessage":"The field is deprecated and will always report 0 after 2024-08-05."},"isDeprecated":{"type":"boolean","description":"Whether the Server Type is deprecated.\n","deprecationMessage":"The field is deprecated and will gradually be phased out starting 2025-09-24. Use the deprecation in the locations list instead."},"locations":{"type":"array","items":{"$ref":"#/types/hcloud:index/getServerTypesServerTypeLocation:getServerTypesServerTypeLocation"},"description":"List of supported Locations for this Server Type.\n"},"memory":{"type":"integer","description":"Memory in GB for a Server of this type.\n"},"name":{"type":"string","description":"Name of the Server Type.\n"},"storageType":{"type":"string","description":"Type of boot drive for a Server of this type.\n"},"unavailableAfter":{"type":"string","description":"Date of the Server Type removal. After this date, the Server Type cannot be used anymore.\n","deprecationMessage":"The field is deprecated and will gradually be phased out starting 2025-09-24. Use the deprecation in the locations list instead."}},"type":"object","required":["architecture","category","cores","cpuType","deprecationAnnounced","description","disk","id","includedTraffic","isDeprecated","locations","memory","name","storageType","unavailableAfter"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getServerTypesServerTypeLocation:getServerTypesServerTypeLocation":{"properties":{"deprecationAnnounced":{"type":"string","description":"Date of the Server Type deprecation announcement.\n"},"id":{"type":"integer","description":"ID of the Location.\n"},"isDeprecated":{"type":"boolean","description":"Whether the Server Type is deprecated.\n"},"name":{"type":"string","description":"Name of the Location.\n"},"unavailableAfter":{"type":"string","description":"Date of the Server Type removal. After this date, the Server Type cannot be used anymore.\n"}},"type":"object","required":["deprecationAnnounced","id","isDeprecated","name","unavailableAfter"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getServersServer:getServersServer":{"properties":{"backupWindow":{"type":"string"},"backups":{"type":"boolean"},"datacenter":{"type":"string","deprecationMessage":"The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters."},"deleteProtection":{"type":"boolean"},"firewallIds":{"type":"array","items":{"type":"integer"}},"id":{"type":"integer"},"image":{"type":"string"},"ipv4Address":{"type":"string"},"ipv6Address":{"type":"string"},"ipv6Network":{"type":"string"},"iso":{"type":"string"},"labels":{"type":"object","additionalProperties":{"type":"string"}},"location":{"type":"string"},"name":{"type":"string"},"networks":{"type":"array","items":{"$ref":"#/types/hcloud:index/getServersServerNetwork:getServersServerNetwork"}},"placementGroupId":{"type":"integer"},"primaryDiskSize":{"type":"integer"},"rebuildProtection":{"type":"boolean"},"rescue":{"type":"string"},"serverType":{"type":"string"},"status":{"type":"string"}},"type":"object","required":["backupWindow","backups","datacenter","deleteProtection","firewallIds","id","image","ipv4Address","ipv6Address","ipv6Network","iso","labels","location","name","primaryDiskSize","rebuildProtection","rescue","serverType","status"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getServersServerNetwork:getServersServerNetwork":{"properties":{"aliasIps":{"type":"array","items":{"type":"string"}},"ip":{"type":"string"},"macAddress":{"type":"string"},"networkId":{"type":"integer"}},"type":"object","required":["aliasIps","ip","macAddress","networkId"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getSshKeysSshKey:getSshKeysSshKey":{"properties":{"fingerprint":{"type":"string","description":"Fingerprint of the SSH Key.\n"},"id":{"type":"integer","description":"ID of the SSH Key.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"name":{"type":"string","description":"Name of the SSH Key.\n"},"publicKey":{"type":"string","description":"Public key of the SSH Key pair.\n"}},"type":"object","required":["fingerprint","id","labels","name","publicKey"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getStorageBoxAccessSettings:getStorageBoxAccessSettings":{"properties":{"reachableExternally":{"type":"boolean","description":"Whether access from outside the Hetzner network is allowed.\n"},"sambaEnabled":{"type":"boolean","description":"Whether the Samba subsystem is enabled.\n"},"sshEnabled":{"type":"boolean","description":"Whether the SSH subsystem is enabled.\n"},"webdavEnabled":{"type":"boolean","description":"Whether the WebDAV subsystem is enabled.\n"},"zfsEnabled":{"type":"boolean","description":"Whether the ZFS snapshot folder is visible.\n"}},"type":"object","required":["reachableExternally","sambaEnabled","sshEnabled","webdavEnabled","zfsEnabled"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getStorageBoxSnapshotPlan:getStorageBoxSnapshotPlan":{"properties":{"dayOfMonth":{"type":"integer","description":"Day of the month when the Snapshot Plan is executed. Null means every day.\n"},"dayOfWeek":{"type":"integer","description":"Day of the week when the Snapshot Plan is executed. Starts at 0 for Sunday til 6 for Saturday. Note that this differs from the API, which uses 1 (Monday) through 7 (Sunday). Null means every day.\n"},"hour":{"type":"integer","description":"Hour when the Snapshot Plan is executed (UTC).\n"},"maxSnapshots":{"type":"integer","description":"Maximum amount of Snapshots that will be created by this Snapshot Plan. Older Snapshots will be deleted.\n"},"minute":{"type":"integer","description":"Minute when the Snapshot Plan is executed (UTC).\n"}},"type":"object","required":["dayOfMonth","dayOfWeek","hour","maxSnapshots","minute"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getStorageBoxSnapshotStats:getStorageBoxSnapshotStats":{"properties":{"size":{"type":"integer","description":"Current storage requirements of the Snapshot in bytes.\n"},"sizeFilesystem":{"type":"integer","description":"Size of the compressed file system contained in the Snapshot in bytes.\n"}},"type":"object","required":["size","sizeFilesystem"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getStorageBoxSnapshotsSnapshot:getStorageBoxSnapshotsSnapshot":{"properties":{"description":{"type":"string","description":"Description of the Storage Box Snapshot.\n"},"id":{"type":"integer","description":"ID of the Storage Box Snapshot.\n"},"isAutomatic":{"type":"boolean","description":"Whether the Storage Box Snapshot was created automatically.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"name":{"type":"string","description":"Name of the Storage Box Snapshot.\n"},"stats":{"$ref":"#/types/hcloud:index/getStorageBoxSnapshotsSnapshotStats:getStorageBoxSnapshotsSnapshotStats","description":"Statistics of the Storage Box Snapshot.\n"},"storageBoxId":{"type":"integer","description":"ID of the Storage Box.\n"}},"type":"object","required":["description","id","isAutomatic","labels","name","stats","storageBoxId"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getStorageBoxSnapshotsSnapshotStats:getStorageBoxSnapshotsSnapshotStats":{"properties":{"size":{"type":"integer","description":"Current storage requirements of the Snapshot in bytes.\n"},"sizeFilesystem":{"type":"integer","description":"Size of the compressed file system contained in the Snapshot in bytes.\n"}},"type":"object","required":["size","sizeFilesystem"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getStorageBoxSubaccountAccessSettings:getStorageBoxSubaccountAccessSettings":{"properties":{"reachableExternally":{"type":"boolean","description":"Whether access from outside the Hetzner network is allowed.\n"},"readonly":{"type":"boolean","description":"Whether the Subaccount is read-only.\n"},"sambaEnabled":{"type":"boolean","description":"Whether the Samba subsystem is enabled.\n"},"sshEnabled":{"type":"boolean","description":"Whether the SSH subsystem is enabled.\n"},"webdavEnabled":{"type":"boolean","description":"Whether the WebDAV subsystem is enabled.\n"}},"type":"object","required":["reachableExternally","readonly","sambaEnabled","sshEnabled","webdavEnabled"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getStorageBoxSubaccountsSubaccount:getStorageBoxSubaccountsSubaccount":{"properties":{"accessSettings":{"$ref":"#/types/hcloud:index/getStorageBoxSubaccountsSubaccountAccessSettings:getStorageBoxSubaccountsSubaccountAccessSettings","description":"Access settings for the Subaccount.\n"},"description":{"type":"string","description":"Description of the Storage Box Subaccount.\n"},"homeDirectory":{"type":"string","description":"Home directory of the Storage Box Subaccount.\n"},"id":{"type":"integer","description":"ID of the Storage Box Subaccount.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"name":{"type":"string","description":"Name of the Storage Box Subaccount.\n"},"server":{"type":"string","description":"FQDN of the Storage Box Subaccount.\n"},"storageBoxId":{"type":"integer","description":"ID of the Storage Box.\n"},"username":{"type":"string","description":"Username of the Storage Box Subaccount.\n"}},"type":"object","required":["accessSettings","description","homeDirectory","id","labels","name","server","storageBoxId","username"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getStorageBoxSubaccountsSubaccountAccessSettings:getStorageBoxSubaccountsSubaccountAccessSettings":{"properties":{"reachableExternally":{"type":"boolean","description":"Whether access from outside the Hetzner network is allowed.\n"},"readonly":{"type":"boolean","description":"Whether the Subaccount is read-only.\n"},"sambaEnabled":{"type":"boolean","description":"Whether the Samba subsystem is enabled.\n"},"sshEnabled":{"type":"boolean","description":"Whether the SSH subsystem is enabled.\n"},"webdavEnabled":{"type":"boolean","description":"Whether the WebDAV subsystem is enabled.\n"}},"type":"object","required":["reachableExternally","readonly","sambaEnabled","sshEnabled","webdavEnabled"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getStorageBoxTypesStorageBoxType:getStorageBoxTypesStorageBoxType":{"properties":{"automaticSnapshotLimit":{"type":"integer","description":"Maximum number of snapshots created automatically by a snapshot plan.\n"},"deprecationAnnounced":{"type":"string","description":"Date of the Storage Box Type deprecation announcement.\n"},"description":{"type":"string","description":"Description of the Storage Box Type.\n"},"id":{"type":"integer","description":"ID of the Storage Box Type.\n"},"isDeprecated":{"type":"boolean","description":"Whether the Storage Box Type is deprecated.\n"},"name":{"type":"string","description":"Name of the Storage Box Type.\n"},"size":{"type":"integer","description":"Available storage in bytes.\n"},"snapshotLimit":{"type":"integer","description":"Maximum number of allowed manual snapshots.\n"},"subaccountsLimit":{"type":"integer","description":"Maximum number of subaccounts.\n"},"unavailableAfter":{"type":"string","description":"Date of the Storage Box Type removal. After this date, the Storage Box Type cannot be used anymore.\n"}},"type":"object","required":["automaticSnapshotLimit","deprecationAnnounced","description","id","isDeprecated","name","size","snapshotLimit","subaccountsLimit","unavailableAfter"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getStorageBoxesStorageBox:getStorageBoxesStorageBox":{"properties":{"accessSettings":{"$ref":"#/types/hcloud:index/getStorageBoxesStorageBoxAccessSettings:getStorageBoxesStorageBoxAccessSettings","description":"Access settings of the Storage Box.\n"},"deleteProtection":{"type":"boolean","description":"Whether delete protection is enabled.\n"},"id":{"type":"integer","description":"ID of the Storage Box.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"location":{"type":"string","description":"Name of the Location.\n"},"name":{"type":"string","description":"Name of the Storage Box.\n"},"server":{"type":"string","description":"FQDN of the Storage Box.\n"},"snapshotPlan":{"$ref":"#/types/hcloud:index/getStorageBoxesStorageBoxSnapshotPlan:getStorageBoxesStorageBoxSnapshotPlan","description":"Details of the active snapshot plan.\n"},"storageBoxType":{"type":"string","description":"Name of the Storage Box Type.\n"},"system":{"type":"string","description":"Host system of the Storage Box.\n"},"username":{"type":"string","description":"Primary username of the Storage Box.\n"}},"type":"object","required":["accessSettings","deleteProtection","id","labels","location","name","server","snapshotPlan","storageBoxType","system","username"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getStorageBoxesStorageBoxAccessSettings:getStorageBoxesStorageBoxAccessSettings":{"properties":{"reachableExternally":{"type":"boolean","description":"Whether access from outside the Hetzner network is allowed.\n"},"sambaEnabled":{"type":"boolean","description":"Whether the Samba subsystem is enabled.\n"},"sshEnabled":{"type":"boolean","description":"Whether the SSH subsystem is enabled.\n"},"webdavEnabled":{"type":"boolean","description":"Whether the WebDAV subsystem is enabled.\n"},"zfsEnabled":{"type":"boolean","description":"Whether the ZFS snapshot folder is visible.\n"}},"type":"object","required":["reachableExternally","sambaEnabled","sshEnabled","webdavEnabled","zfsEnabled"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getStorageBoxesStorageBoxSnapshotPlan:getStorageBoxesStorageBoxSnapshotPlan":{"properties":{"dayOfMonth":{"type":"integer","description":"Day of the month when the Snapshot Plan is executed. Null means every day.\n"},"dayOfWeek":{"type":"integer","description":"Day of the week when the Snapshot Plan is executed. Starts at 0 for Sunday til 6 for Saturday. Note that this differs from the API, which uses 1 (Monday) through 7 (Sunday). Null means every day.\n"},"hour":{"type":"integer","description":"Hour when the Snapshot Plan is executed (UTC).\n"},"maxSnapshots":{"type":"integer","description":"Maximum amount of Snapshots that will be created by this Snapshot Plan. Older Snapshots will be deleted.\n"},"minute":{"type":"integer","description":"Minute when the Snapshot Plan is executed (UTC).\n"}},"type":"object","required":["dayOfMonth","dayOfWeek","hour","maxSnapshots","minute"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getVolumesVolume:getVolumesVolume":{"properties":{"deleteProtection":{"type":"boolean"},"id":{"type":"integer"},"labels":{"type":"object","additionalProperties":{"type":"string"}},"linuxDevice":{"type":"string"},"location":{"type":"string"},"name":{"type":"string"},"serverId":{"type":"integer"},"size":{"type":"integer"}},"type":"object","required":["deleteProtection","id","labels","linuxDevice","name","size"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getZoneAuthoritativeNameservers:getZoneAuthoritativeNameservers":{"properties":{"assigneds":{"type":"array","items":{"type":"string"},"description":"Authoritative Hetzner nameservers assigned to the Zone.\n"}},"type":"object","required":["assigneds"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getZonePrimaryNameserver:getZonePrimaryNameserver":{"properties":{"address":{"type":"string","description":"Public IPv4 or IPv6 address of the primary nameserver.\n"},"port":{"type":"integer","description":"Port of the primary nameserver.\n"},"tsigAlgorithm":{"type":"string","description":"Transaction signature (TSIG) algorithm used to generate the TSIG key.\n"},"tsigKey":{"type":"string","description":"Transaction signature (TSIG) key\n"}},"type":"object","required":["address","port","tsigAlgorithm","tsigKey"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getZoneRrsetRecord:getZoneRrsetRecord":{"properties":{"comment":{"type":"string","description":"Comment of the record.\n"},"value":{"type":"string","description":"Value of the record.\n"}},"type":"object","required":["comment","value"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getZoneRrsetsRrset:getZoneRrsetsRrset":{"properties":{"changeProtection":{"type":"boolean","description":"Whether change protection is enabled.\n"},"id":{"type":"string","description":"ID of the Zone RRSet.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"name":{"type":"string","description":"Name of the Zone RRSet.\n"},"records":{"type":"array","items":{"$ref":"#/types/hcloud:index/getZoneRrsetsRrsetRecord:getZoneRrsetsRrsetRecord"},"description":"Records of the Zone RRSet.\n"},"ttl":{"type":"integer","description":"Time To Live (TTL) of the Zone RRSet.\n"},"type":{"type":"string","description":"Type of the Zone RRSet.\n"},"zone":{"type":"string","description":"ID or Name of the parent Zone.\n"}},"type":"object","required":["changeProtection","id","labels","name","records","ttl","type","zone"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getZoneRrsetsRrsetRecord:getZoneRrsetsRrsetRecord":{"properties":{"comment":{"type":"string","description":"Comment of the record.\n"},"value":{"type":"string","description":"Value of the record.\n"}},"type":"object","required":["comment","value"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getZonesZone:getZonesZone":{"properties":{"authoritativeNameservers":{"$ref":"#/types/hcloud:index/getZonesZoneAuthoritativeNameservers:getZonesZoneAuthoritativeNameservers","description":"Authoritative nameservers of the Zone.\n"},"deleteProtection":{"type":"boolean","description":"Whether delete protection is enabled.\n"},"id":{"type":"integer","description":"ID of the Zone.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"mode":{"type":"string","description":"Mode of the Zone.\n"},"name":{"type":"string","description":"Name of the Zone.\n"},"primaryNameservers":{"type":"array","items":{"$ref":"#/types/hcloud:index/getZonesZonePrimaryNameserver:getZonesZonePrimaryNameserver"},"description":"Primary nameservers of the Zone.\n"},"registrar":{"type":"string","description":"Registrar of the Zone.\n"},"ttl":{"type":"integer","description":"Default Time To Live (TTL) of the Zone.\n"}},"type":"object","required":["authoritativeNameservers","deleteProtection","id","labels","mode","name","primaryNameservers","registrar","ttl"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getZonesZoneAuthoritativeNameservers:getZonesZoneAuthoritativeNameservers":{"properties":{"assigneds":{"type":"array","items":{"type":"string"},"description":"Authoritative Hetzner nameservers assigned to the Zone.\n"}},"type":"object","required":["assigneds"],"language":{"nodejs":{"requiredInputs":[]}}},"hcloud:index/getZonesZonePrimaryNameserver:getZonesZonePrimaryNameserver":{"properties":{"address":{"type":"string","description":"Public IPv4 or IPv6 address of the primary nameserver.\n"},"port":{"type":"integer","description":"Port of the primary nameserver.\n"},"tsigAlgorithm":{"type":"string","description":"Transaction signature (TSIG) algorithm used to generate the TSIG key.\n"},"tsigKey":{"type":"string","description":"Transaction signature (TSIG) key\n"}},"type":"object","required":["address","port","tsigAlgorithm","tsigKey"],"language":{"nodejs":{"requiredInputs":[]}}}},"provider":{"description":"The provider type for the hcloud package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n","properties":{"endpoint":{"type":"string","description":"The Hetzner Cloud API endpoint, can be used to override the default API Endpoint https://api.hetzner.cloud/v1."},"endpointHetzner":{"type":"string","description":"The Hetzner API endpoint, can be used to override the default API Endpoint https://api.hetzner.com/v1."},"pollFunction":{"type":"string","description":"The type of function to be used during the polling."},"pollInterval":{"type":"string","description":"The interval at which actions are polled by the client. Default \u003cspan pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\"\u003e`500ms`\u003c/span\u003e. Increase this interval if you run into rate limiting errors."},"token":{"type":"string","description":"The Hetzner Cloud API token, can also be specified with the HCLOUD_TOKEN environment variable.","secret":true}},"inputProperties":{"endpoint":{"type":"string","description":"The Hetzner Cloud API endpoint, can be used to override the default API Endpoint https://api.hetzner.cloud/v1."},"endpointHetzner":{"type":"string","description":"The Hetzner API endpoint, can be used to override the default API Endpoint https://api.hetzner.com/v1."},"pollFunction":{"type":"string","description":"The type of function to be used during the polling."},"pollInterval":{"type":"string","description":"The interval at which actions are polled by the client. Default \u003cspan pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\"\u003e`500ms`\u003c/span\u003e. Increase this interval if you run into rate limiting errors."},"token":{"type":"string","description":"The Hetzner Cloud API token, can also be specified with the HCLOUD_TOKEN environment variable.","secret":true}},"methods":{"terraformConfig":"pulumi:providers:hcloud/terraformConfig"}},"resources":{"hcloud:index/certificate:Certificate":{"description":"Alias for \u003cspan pulumi-lang-nodejs=\"`hcloud.UploadedCertificate`\" pulumi-lang-dotnet=\"`hcloud.UploadedCertificate`\" pulumi-lang-go=\"`UploadedCertificate`\" pulumi-lang-python=\"`UploadedCertificate`\" pulumi-lang-yaml=\"`hcloud.UploadedCertificate`\" pulumi-lang-java=\"`hcloud.UploadedCertificate`\"\u003e`hcloud.UploadedCertificate`\u003c/span\u003e to remain backwards compatible.\nDeprecated.\n","properties":{"certificate":{"type":"string","language":{"csharp":{"name":"CertificateContents"}}},"created":{"type":"string"},"domainNames":{"type":"array","items":{"type":"string"}},"fingerprint":{"type":"string"},"labels":{"type":"object","additionalProperties":{"type":"string"}},"name":{"type":"string"},"notValidAfter":{"type":"string"},"notValidBefore":{"type":"string"},"privateKey":{"type":"string","secret":true},"type":{"type":"string"}},"required":["certificate","created","domainNames","fingerprint","name","notValidAfter","notValidBefore","privateKey","type"],"inputProperties":{"certificate":{"type":"string","language":{"csharp":{"name":"CertificateContents"}},"willReplaceOnChanges":true},"labels":{"type":"object","additionalProperties":{"type":"string"}},"name":{"type":"string"},"privateKey":{"type":"string","secret":true,"willReplaceOnChanges":true}},"requiredInputs":["certificate","privateKey"],"stateInputs":{"description":"Input properties used for looking up and filtering Certificate resources.\n","properties":{"certificate":{"type":"string","language":{"csharp":{"name":"CertificateContents"}},"willReplaceOnChanges":true},"created":{"type":"string"},"domainNames":{"type":"array","items":{"type":"string"}},"fingerprint":{"type":"string"},"labels":{"type":"object","additionalProperties":{"type":"string"}},"name":{"type":"string"},"notValidAfter":{"type":"string"},"notValidBefore":{"type":"string"},"privateKey":{"type":"string","secret":true,"willReplaceOnChanges":true},"type":{"type":"string"}},"type":"object"}},"hcloud:index/firewall:Firewall":{"description":"Provides a Hetzner Cloud Firewall to represent a Firewall in the Hetzner Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst myfirewall = new hcloud.Firewall(\"myfirewall\", {\n    name: \"my-firewall\",\n    rules: [\n        {\n            direction: \"in\",\n            protocol: \"icmp\",\n            sourceIps: [\n                \"0.0.0.0/0\",\n                \"::/0\",\n            ],\n        },\n        {\n            direction: \"in\",\n            protocol: \"tcp\",\n            port: \"80-85\",\n            sourceIps: [\n                \"0.0.0.0/0\",\n                \"::/0\",\n            ],\n        },\n    ],\n});\nconst node1 = new hcloud.Server(\"node1\", {\n    name: \"node1\",\n    image: \"debian-12\",\n    serverType: \"cx23\",\n    firewallIds: [myfirewall.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nmyfirewall = hcloud.Firewall(\"myfirewall\",\n    name=\"my-firewall\",\n    rules=[\n        {\n            \"direction\": \"in\",\n            \"protocol\": \"icmp\",\n            \"source_ips\": [\n                \"0.0.0.0/0\",\n                \"::/0\",\n            ],\n        },\n        {\n            \"direction\": \"in\",\n            \"protocol\": \"tcp\",\n            \"port\": \"80-85\",\n            \"source_ips\": [\n                \"0.0.0.0/0\",\n                \"::/0\",\n            ],\n        },\n    ])\nnode1 = hcloud.Server(\"node1\",\n    name=\"node1\",\n    image=\"debian-12\",\n    server_type=\"cx23\",\n    firewall_ids=[myfirewall.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myfirewall = new HCloud.Firewall(\"myfirewall\", new()\n    {\n        Name = \"my-firewall\",\n        Rules = new[]\n        {\n            new HCloud.Inputs.FirewallRuleArgs\n            {\n                Direction = \"in\",\n                Protocol = \"icmp\",\n                SourceIps = new[]\n                {\n                    \"0.0.0.0/0\",\n                    \"::/0\",\n                },\n            },\n            new HCloud.Inputs.FirewallRuleArgs\n            {\n                Direction = \"in\",\n                Protocol = \"tcp\",\n                Port = \"80-85\",\n                SourceIps = new[]\n                {\n                    \"0.0.0.0/0\",\n                    \"::/0\",\n                },\n            },\n        },\n    });\n\n    var node1 = new HCloud.Server(\"node1\", new()\n    {\n        Name = \"node1\",\n        Image = \"debian-12\",\n        ServerType = \"cx23\",\n        FirewallIds = new[]\n        {\n            myfirewall.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyfirewall, err := hcloud.NewFirewall(ctx, \"myfirewall\", \u0026hcloud.FirewallArgs{\n\t\t\tName: pulumi.String(\"my-firewall\"),\n\t\t\tRules: hcloud.FirewallRuleArray{\n\t\t\t\t\u0026hcloud.FirewallRuleArgs{\n\t\t\t\t\tDirection: pulumi.String(\"in\"),\n\t\t\t\t\tProtocol:  pulumi.String(\"icmp\"),\n\t\t\t\t\tSourceIps: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t\tpulumi.String(\"::/0\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026hcloud.FirewallRuleArgs{\n\t\t\t\t\tDirection: pulumi.String(\"in\"),\n\t\t\t\t\tProtocol:  pulumi.String(\"tcp\"),\n\t\t\t\t\tPort:      pulumi.String(\"80-85\"),\n\t\t\t\t\tSourceIps: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t\tpulumi.String(\"::/0\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewServer(ctx, \"node1\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"node1\"),\n\t\t\tImage:      pulumi.String(\"debian-12\"),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t\tFirewallIds: pulumi.IntArray{\n\t\t\t\tmyfirewall.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Firewall;\nimport com.pulumi.hcloud.FirewallArgs;\nimport com.pulumi.hcloud.inputs.FirewallRuleArgs;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myfirewall = new Firewall(\"myfirewall\", FirewallArgs.builder()\n            .name(\"my-firewall\")\n            .rules(            \n                FirewallRuleArgs.builder()\n                    .direction(\"in\")\n                    .protocol(\"icmp\")\n                    .sourceIps(                    \n                        \"0.0.0.0/0\",\n                        \"::/0\")\n                    .build(),\n                FirewallRuleArgs.builder()\n                    .direction(\"in\")\n                    .protocol(\"tcp\")\n                    .port(\"80-85\")\n                    .sourceIps(                    \n                        \"0.0.0.0/0\",\n                        \"::/0\")\n                    .build())\n            .build());\n\n        var node1 = new Server(\"node1\", ServerArgs.builder()\n            .name(\"node1\")\n            .image(\"debian-12\")\n            .serverType(\"cx23\")\n            .firewallIds(myfirewall.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myfirewall:\n    type: hcloud:Firewall\n    properties:\n      name: my-firewall\n      rules:\n        - direction: in\n          protocol: icmp\n          sourceIps:\n            - 0.0.0.0/0\n            - ::/0\n        - direction: in\n          protocol: tcp\n          port: 80-85\n          sourceIps:\n            - 0.0.0.0/0\n            - ::/0\n  node1:\n    type: hcloud:Server\n    properties:\n      name: node1\n      image: debian-12\n      serverType: cx23\n      firewallIds:\n        - ${myfirewall.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFirewalls can be imported using its \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e:\n\n```sh\n$ pulumi import hcloud:index/firewall:Firewall example \"$FIREWALL_ID\"\n```\n\n","properties":{"applyTos":{"type":"array","items":{"$ref":"#/types/hcloud:index/FirewallApplyTo:FirewallApplyTo"},"description":"Resources the firewall should be assigned to\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"name":{"type":"string","description":"Name of the Firewall.\n"},"rules":{"type":"array","items":{"$ref":"#/types/hcloud:index/FirewallRule:FirewallRule"},"description":"Configuration of a Rule from this Firewall.\n"}},"required":["applyTos","labels","name"],"inputProperties":{"applyTos":{"type":"array","items":{"$ref":"#/types/hcloud:index/FirewallApplyTo:FirewallApplyTo"},"description":"Resources the firewall should be assigned to\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"name":{"type":"string","description":"Name of the Firewall.\n"},"rules":{"type":"array","items":{"$ref":"#/types/hcloud:index/FirewallRule:FirewallRule"},"description":"Configuration of a Rule from this Firewall.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Firewall resources.\n","properties":{"applyTos":{"type":"array","items":{"$ref":"#/types/hcloud:index/FirewallApplyTo:FirewallApplyTo"},"description":"Resources the firewall should be assigned to\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"name":{"type":"string","description":"Name of the Firewall.\n"},"rules":{"type":"array","items":{"$ref":"#/types/hcloud:index/FirewallRule:FirewallRule"},"description":"Configuration of a Rule from this Firewall.\n"}},"type":"object"}},"hcloud:index/firewallAttachment:FirewallAttachment":{"description":"Attaches resource to a Hetzner Cloud Firewall.\n\n_Note_: only one \u003cspan pulumi-lang-nodejs=\"`hcloud.FirewallAttachment`\" pulumi-lang-dotnet=\"`hcloud.FirewallAttachment`\" pulumi-lang-go=\"`FirewallAttachment`\" pulumi-lang-python=\"`FirewallAttachment`\" pulumi-lang-yaml=\"`hcloud.FirewallAttachment`\" pulumi-lang-java=\"`hcloud.FirewallAttachment`\"\u003e`hcloud.FirewallAttachment`\u003c/span\u003e per Firewall is allowed.\nAny resources that should be attached to that Firewall need to be\nspecified in that \u003cspan pulumi-lang-nodejs=\"`hcloud.FirewallAttachment`\" pulumi-lang-dotnet=\"`hcloud.FirewallAttachment`\" pulumi-lang-go=\"`FirewallAttachment`\" pulumi-lang-python=\"`FirewallAttachment`\" pulumi-lang-yaml=\"`hcloud.FirewallAttachment`\" pulumi-lang-java=\"`hcloud.FirewallAttachment`\"\u003e`hcloud.FirewallAttachment`\u003c/span\u003e.\n\n## Example Usage\n\n### Attach Servers\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst testServer = new hcloud.Server(\"test_server\", {\n    name: \"test-server\",\n    serverType: \"cx23\",\n    image: \"ubuntu-24.04\",\n});\nconst basicFirewall = new hcloud.Firewall(\"basic_firewall\", {name: \"basic_firewall\"});\nconst fwRef = new hcloud.FirewallAttachment(\"fw_ref\", {\n    firewallId: basicFirewall.id,\n    serverIds: [testServer.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\ntest_server = hcloud.Server(\"test_server\",\n    name=\"test-server\",\n    server_type=\"cx23\",\n    image=\"ubuntu-24.04\")\nbasic_firewall = hcloud.Firewall(\"basic_firewall\", name=\"basic_firewall\")\nfw_ref = hcloud.FirewallAttachment(\"fw_ref\",\n    firewall_id=basic_firewall.id,\n    server_ids=[test_server.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testServer = new HCloud.Server(\"test_server\", new()\n    {\n        Name = \"test-server\",\n        ServerType = \"cx23\",\n        Image = \"ubuntu-24.04\",\n    });\n\n    var basicFirewall = new HCloud.Firewall(\"basic_firewall\", new()\n    {\n        Name = \"basic_firewall\",\n    });\n\n    var fwRef = new HCloud.FirewallAttachment(\"fw_ref\", new()\n    {\n        FirewallId = basicFirewall.Id,\n        ServerIds = new[]\n        {\n            testServer.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestServer, err := hcloud.NewServer(ctx, \"test_server\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"test-server\"),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t\tImage:      pulumi.String(\"ubuntu-24.04\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicFirewall, err := hcloud.NewFirewall(ctx, \"basic_firewall\", \u0026hcloud.FirewallArgs{\n\t\t\tName: pulumi.String(\"basic_firewall\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewFirewallAttachment(ctx, \"fw_ref\", \u0026hcloud.FirewallAttachmentArgs{\n\t\t\tFirewallId: basicFirewall.ID(),\n\t\t\tServerIds: pulumi.IntArray{\n\t\t\t\ttestServer.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.Firewall;\nimport com.pulumi.hcloud.FirewallArgs;\nimport com.pulumi.hcloud.FirewallAttachment;\nimport com.pulumi.hcloud.FirewallAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var testServer = new Server(\"testServer\", ServerArgs.builder()\n            .name(\"test-server\")\n            .serverType(\"cx23\")\n            .image(\"ubuntu-24.04\")\n            .build());\n\n        var basicFirewall = new Firewall(\"basicFirewall\", FirewallArgs.builder()\n            .name(\"basic_firewall\")\n            .build());\n\n        var fwRef = new FirewallAttachment(\"fwRef\", FirewallAttachmentArgs.builder()\n            .firewallId(basicFirewall.id())\n            .serverIds(testServer.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testServer:\n    type: hcloud:Server\n    name: test_server\n    properties:\n      name: test-server\n      serverType: cx23\n      image: ubuntu-24.04\n  basicFirewall:\n    type: hcloud:Firewall\n    name: basic_firewall\n    properties:\n      name: basic_firewall\n  fwRef:\n    type: hcloud:FirewallAttachment\n    name: fw_ref\n    properties:\n      firewallId: ${basicFirewall.id}\n      serverIds:\n        - ${testServer.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Attach Label Selectors\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst testServer = new hcloud.Server(\"test_server\", {\n    name: \"test-server\",\n    serverType: \"cx23\",\n    image: \"ubuntu-24.04\",\n    labels: {\n        \"firewall-attachment\": \"test-server\",\n    },\n});\nconst basicFirewall = new hcloud.Firewall(\"basic_firewall\", {name: \"basic_firewall\"});\nconst fwRef = new hcloud.FirewallAttachment(\"fw_ref\", {\n    firewallId: basicFirewall.id,\n    labelSelectors: [\"firewall-attachment=test-server\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\ntest_server = hcloud.Server(\"test_server\",\n    name=\"test-server\",\n    server_type=\"cx23\",\n    image=\"ubuntu-24.04\",\n    labels={\n        \"firewall-attachment\": \"test-server\",\n    })\nbasic_firewall = hcloud.Firewall(\"basic_firewall\", name=\"basic_firewall\")\nfw_ref = hcloud.FirewallAttachment(\"fw_ref\",\n    firewall_id=basic_firewall.id,\n    label_selectors=[\"firewall-attachment=test-server\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testServer = new HCloud.Server(\"test_server\", new()\n    {\n        Name = \"test-server\",\n        ServerType = \"cx23\",\n        Image = \"ubuntu-24.04\",\n        Labels = \n        {\n            { \"firewall-attachment\", \"test-server\" },\n        },\n    });\n\n    var basicFirewall = new HCloud.Firewall(\"basic_firewall\", new()\n    {\n        Name = \"basic_firewall\",\n    });\n\n    var fwRef = new HCloud.FirewallAttachment(\"fw_ref\", new()\n    {\n        FirewallId = basicFirewall.Id,\n        LabelSelectors = new[]\n        {\n            \"firewall-attachment=test-server\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.NewServer(ctx, \"test_server\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"test-server\"),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t\tImage:      pulumi.String(\"ubuntu-24.04\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"firewall-attachment\": pulumi.String(\"test-server\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicFirewall, err := hcloud.NewFirewall(ctx, \"basic_firewall\", \u0026hcloud.FirewallArgs{\n\t\t\tName: pulumi.String(\"basic_firewall\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewFirewallAttachment(ctx, \"fw_ref\", \u0026hcloud.FirewallAttachmentArgs{\n\t\t\tFirewallId: basicFirewall.ID(),\n\t\t\tLabelSelectors: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"firewall-attachment=test-server\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.Firewall;\nimport com.pulumi.hcloud.FirewallArgs;\nimport com.pulumi.hcloud.FirewallAttachment;\nimport com.pulumi.hcloud.FirewallAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var testServer = new Server(\"testServer\", ServerArgs.builder()\n            .name(\"test-server\")\n            .serverType(\"cx23\")\n            .image(\"ubuntu-24.04\")\n            .labels(Map.of(\"firewall-attachment\", \"test-server\"))\n            .build());\n\n        var basicFirewall = new Firewall(\"basicFirewall\", FirewallArgs.builder()\n            .name(\"basic_firewall\")\n            .build());\n\n        var fwRef = new FirewallAttachment(\"fwRef\", FirewallAttachmentArgs.builder()\n            .firewallId(basicFirewall.id())\n            .labelSelectors(\"firewall-attachment=test-server\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testServer:\n    type: hcloud:Server\n    name: test_server\n    properties:\n      name: test-server\n      serverType: cx23\n      image: ubuntu-24.04\n      labels:\n        firewall-attachment: test-server\n  basicFirewall:\n    type: hcloud:Firewall\n    name: basic_firewall\n    properties:\n      name: basic_firewall\n  fwRef:\n    type: hcloud:FirewallAttachment\n    name: fw_ref\n    properties:\n      firewallId: ${basicFirewall.id}\n      labelSelectors:\n        - firewall-attachment=test-server\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Ensure a server is attached to a Firewall on first boot\n\nThe \u003cspan pulumi-lang-nodejs=\"`firewallIds`\" pulumi-lang-dotnet=\"`FirewallIds`\" pulumi-lang-go=\"`firewallIds`\" pulumi-lang-python=\"`firewall_ids`\" pulumi-lang-yaml=\"`firewallIds`\" pulumi-lang-java=\"`firewallIds`\"\u003e`firewall_ids`\u003c/span\u003e property of the \u003cspan pulumi-lang-nodejs=\"`hcloud.Server`\" pulumi-lang-dotnet=\"`hcloud.Server`\" pulumi-lang-go=\"`Server`\" pulumi-lang-python=\"`Server`\" pulumi-lang-yaml=\"`hcloud.Server`\" pulumi-lang-java=\"`hcloud.Server`\"\u003e`hcloud.Server`\u003c/span\u003e resource ensures that\na server is attached to the specified Firewalls before its first boot.\nThis is **not** the case when using the \u003cspan pulumi-lang-nodejs=\"`hcloud.FirewallAttachment`\" pulumi-lang-dotnet=\"`hcloud.FirewallAttachment`\" pulumi-lang-go=\"`FirewallAttachment`\" pulumi-lang-python=\"`FirewallAttachment`\" pulumi-lang-yaml=\"`hcloud.FirewallAttachment`\" pulumi-lang-java=\"`hcloud.FirewallAttachment`\"\u003e`hcloud.FirewallAttachment`\u003c/span\u003e\nresource to attach servers to a Firewall. In some scenarios this may\npose a security risk.\n\nThe following workaround ensures that a server is attached to a Firewall\n_before_ it first boots. However, the workaround requires two Firewalls.\nAdditionally the server resource definition needs to ignore any remote\nchanges to the `hcloud_server.firewall_ids` property. This is done using\nthe \u003cspan pulumi-lang-nodejs=\"`ignoreRemoteFirewallIds`\" pulumi-lang-dotnet=\"`IgnoreRemoteFirewallIds`\" pulumi-lang-go=\"`ignoreRemoteFirewallIds`\" pulumi-lang-python=\"`ignore_remote_firewall_ids`\" pulumi-lang-yaml=\"`ignoreRemoteFirewallIds`\" pulumi-lang-java=\"`ignoreRemoteFirewallIds`\"\u003e`ignore_remote_firewall_ids`\u003c/span\u003e property of \u003cspan pulumi-lang-nodejs=\"`hcloud.Server`\" pulumi-lang-dotnet=\"`hcloud.Server`\" pulumi-lang-go=\"`Server`\" pulumi-lang-python=\"`Server`\" pulumi-lang-yaml=\"`hcloud.Server`\" pulumi-lang-java=\"`hcloud.Server`\"\u003e`hcloud.Server`\u003c/span\u003e.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\nimport * as std from \"@pulumi/std\";\n\nconst denyAll = new hcloud.Firewall(\"deny_all\", {name: \"deny_all\"});\nconst testServer = new hcloud.Server(\"test_server\", {\n    name: \"test-server\",\n    serverType: \"cx23\",\n    image: \"ubuntu-24.04\",\n    ignoreRemoteFirewallIds: true,\n    firewallIds: [denyAll.id],\n});\nconst allowRules = new hcloud.Firewall(\"allow_rules\", {\n    name: \"allow_rules\",\n    rules: [{\n        direction: \"in\",\n        protocol: \"tcp\",\n        port: \"22\",\n        sourceIps: [\n            \"0.0.0.0/0\",\n            \"::/0\",\n        ],\n        destinationIps: [std.format({\n            input: \"%s/32\",\n            args: [testServer.ipv4Address],\n        }).then(invoke =\u003e invoke.result)],\n    }],\n});\nconst denyAllAtt = new hcloud.FirewallAttachment(\"deny_all_att\", {\n    firewallId: denyAll.id,\n    serverIds: [testServer.id],\n});\nconst allowRulesAtt = new hcloud.FirewallAttachment(\"allow_rules_att\", {\n    firewallId: allowRules.id,\n    serverIds: [testServer.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\nimport pulumi_std as std\n\ndeny_all = hcloud.Firewall(\"deny_all\", name=\"deny_all\")\ntest_server = hcloud.Server(\"test_server\",\n    name=\"test-server\",\n    server_type=\"cx23\",\n    image=\"ubuntu-24.04\",\n    ignore_remote_firewall_ids=True,\n    firewall_ids=[deny_all.id])\nallow_rules = hcloud.Firewall(\"allow_rules\",\n    name=\"allow_rules\",\n    rules=[{\n        \"direction\": \"in\",\n        \"protocol\": \"tcp\",\n        \"port\": \"22\",\n        \"source_ips\": [\n            \"0.0.0.0/0\",\n            \"::/0\",\n        ],\n        \"destination_ips\": [std.format(input=\"%s/32\",\n            args=[test_server.ipv4_address]).result],\n    }])\ndeny_all_att = hcloud.FirewallAttachment(\"deny_all_att\",\n    firewall_id=deny_all.id,\n    server_ids=[test_server.id])\nallow_rules_att = hcloud.FirewallAttachment(\"allow_rules_att\",\n    firewall_id=allow_rules.id,\n    server_ids=[test_server.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var denyAll = new HCloud.Firewall(\"deny_all\", new()\n    {\n        Name = \"deny_all\",\n    });\n\n    var testServer = new HCloud.Server(\"test_server\", new()\n    {\n        Name = \"test-server\",\n        ServerType = \"cx23\",\n        Image = \"ubuntu-24.04\",\n        IgnoreRemoteFirewallIds = true,\n        FirewallIds = new[]\n        {\n            denyAll.Id,\n        },\n    });\n\n    var allowRules = new HCloud.Firewall(\"allow_rules\", new()\n    {\n        Name = \"allow_rules\",\n        Rules = new[]\n        {\n            new HCloud.Inputs.FirewallRuleArgs\n            {\n                Direction = \"in\",\n                Protocol = \"tcp\",\n                Port = \"22\",\n                SourceIps = new[]\n                {\n                    \"0.0.0.0/0\",\n                    \"::/0\",\n                },\n                DestinationIps = new[]\n                {\n                    Std.Format.Invoke(new()\n                    {\n                        Input = \"%s/32\",\n                        Args = new[]\n                        {\n                            testServer.Ipv4Address,\n                        },\n                    }).Apply(invoke =\u003e invoke.Result),\n                },\n            },\n        },\n    });\n\n    var denyAllAtt = new HCloud.FirewallAttachment(\"deny_all_att\", new()\n    {\n        FirewallId = denyAll.Id,\n        ServerIds = new[]\n        {\n            testServer.Id,\n        },\n    });\n\n    var allowRulesAtt = new HCloud.FirewallAttachment(\"allow_rules_att\", new()\n    {\n        FirewallId = allowRules.Id,\n        ServerIds = new[]\n        {\n            testServer.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdenyAll, err := hcloud.NewFirewall(ctx, \"deny_all\", \u0026hcloud.FirewallArgs{\n\t\t\tName: pulumi.String(\"deny_all\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestServer, err := hcloud.NewServer(ctx, \"test_server\", \u0026hcloud.ServerArgs{\n\t\t\tName:                    pulumi.String(\"test-server\"),\n\t\t\tServerType:              pulumi.String(\"cx23\"),\n\t\t\tImage:                   pulumi.String(\"ubuntu-24.04\"),\n\t\t\tIgnoreRemoteFirewallIds: pulumi.Bool(true),\n\t\t\tFirewallIds: pulumi.IntArray{\n\t\t\t\tdenyAll.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFormat, err := std.Format(ctx, \u0026std.FormatArgs{\n\t\t\tInput: \"%s/32\",\n\t\t\tArgs: pulumi.StringArray{\n\t\t\t\ttestServer.Ipv4Address,\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tallowRules, err := hcloud.NewFirewall(ctx, \"allow_rules\", \u0026hcloud.FirewallArgs{\n\t\t\tName: pulumi.String(\"allow_rules\"),\n\t\t\tRules: hcloud.FirewallRuleArray{\n\t\t\t\t\u0026hcloud.FirewallRuleArgs{\n\t\t\t\t\tDirection: pulumi.String(\"in\"),\n\t\t\t\t\tProtocol:  pulumi.String(\"tcp\"),\n\t\t\t\t\tPort:      pulumi.String(\"22\"),\n\t\t\t\t\tSourceIps: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t\tpulumi.String(\"::/0\"),\n\t\t\t\t\t},\n\t\t\t\t\tDestinationIps: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(invokeFormat.Result),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewFirewallAttachment(ctx, \"deny_all_att\", \u0026hcloud.FirewallAttachmentArgs{\n\t\t\tFirewallId: denyAll.ID(),\n\t\t\tServerIds: pulumi.IntArray{\n\t\t\t\ttestServer.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewFirewallAttachment(ctx, \"allow_rules_att\", \u0026hcloud.FirewallAttachmentArgs{\n\t\t\tFirewallId: allowRules.ID(),\n\t\t\tServerIds: pulumi.IntArray{\n\t\t\t\ttestServer.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Firewall;\nimport com.pulumi.hcloud.FirewallArgs;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.inputs.FirewallRuleArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FormatArgs;\nimport com.pulumi.hcloud.FirewallAttachment;\nimport com.pulumi.hcloud.FirewallAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var denyAll = new Firewall(\"denyAll\", FirewallArgs.builder()\n            .name(\"deny_all\")\n            .build());\n\n        var testServer = new Server(\"testServer\", ServerArgs.builder()\n            .name(\"test-server\")\n            .serverType(\"cx23\")\n            .image(\"ubuntu-24.04\")\n            .ignoreRemoteFirewallIds(true)\n            .firewallIds(denyAll.id())\n            .build());\n\n        var allowRules = new Firewall(\"allowRules\", FirewallArgs.builder()\n            .name(\"allow_rules\")\n            .rules(FirewallRuleArgs.builder()\n                .direction(\"in\")\n                .protocol(\"tcp\")\n                .port(\"22\")\n                .sourceIps(                \n                    \"0.0.0.0/0\",\n                    \"::/0\")\n                .destinationIps(StdFunctions.format(FormatArgs.builder()\n                    .input(\"%s/32\")\n                    .args(testServer.ipv4Address())\n                    .build()).result())\n                .build())\n            .build());\n\n        var denyAllAtt = new FirewallAttachment(\"denyAllAtt\", FirewallAttachmentArgs.builder()\n            .firewallId(denyAll.id())\n            .serverIds(testServer.id())\n            .build());\n\n        var allowRulesAtt = new FirewallAttachment(\"allowRulesAtt\", FirewallAttachmentArgs.builder()\n            .firewallId(allowRules.id())\n            .serverIds(testServer.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  denyAll:\n    type: hcloud:Firewall\n    name: deny_all\n    properties:\n      name: deny_all\n  testServer:\n    type: hcloud:Server\n    name: test_server\n    properties:\n      name: test-server\n      serverType: cx23\n      image: ubuntu-24.04\n      ignoreRemoteFirewallIds: true\n      firewallIds:\n        - ${denyAll.id}\n  allowRules:\n    type: hcloud:Firewall\n    name: allow_rules\n    properties:\n      name: allow_rules\n      rules:\n        - direction: in\n          protocol: tcp\n          port: '22'\n          sourceIps:\n            - 0.0.0.0/0\n            - ::/0\n          destinationIps:\n            - fn::invoke:\n                function: std:format\n                arguments:\n                  input: '%s/32'\n                  args:\n                    - ${testServer.ipv4Address}\n                return: result\n  denyAllAtt:\n    type: hcloud:FirewallAttachment\n    name: deny_all_att\n    properties:\n      firewallId: ${denyAll.id}\n      serverIds:\n        - ${testServer.id}\n  allowRulesAtt:\n    type: hcloud:FirewallAttachment\n    name: allow_rules_att\n    properties:\n      firewallId: ${allowRules.id}\n      serverIds:\n        - ${testServer.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFirewall Attachments can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e of the firewall:\n\n```sh\n$ pulumi import hcloud:index/firewallAttachment:FirewallAttachment example \"$FIREWALL_ID\"\n```\n\n","properties":{"firewallId":{"type":"integer","description":"ID of the firewall the resources\nshould be attached to.\n"},"labelSelectors":{"type":"array","items":{"type":"string"},"description":"List of label selectors used to\nselect resources to attach to the firewall.\n"},"serverIds":{"type":"array","items":{"type":"integer"},"description":"List of Server IDs to attach to the\nfirewall.\n"}},"required":["firewallId"],"inputProperties":{"firewallId":{"type":"integer","description":"ID of the firewall the resources\nshould be attached to.\n","willReplaceOnChanges":true},"labelSelectors":{"type":"array","items":{"type":"string"},"description":"List of label selectors used to\nselect resources to attach to the firewall.\n"},"serverIds":{"type":"array","items":{"type":"integer"},"description":"List of Server IDs to attach to the\nfirewall.\n"}},"requiredInputs":["firewallId"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallAttachment resources.\n","properties":{"firewallId":{"type":"integer","description":"ID of the firewall the resources\nshould be attached to.\n","willReplaceOnChanges":true},"labelSelectors":{"type":"array","items":{"type":"string"},"description":"List of label selectors used to\nselect resources to attach to the firewall.\n"},"serverIds":{"type":"array","items":{"type":"integer"},"description":"List of Server IDs to attach to the\nfirewall.\n"}},"type":"object"}},"hcloud:index/floatingIp:FloatingIp":{"description":"Provides a Hetzner Cloud Floating IP to represent a publicly-accessible static IP address that can be mapped to one of your servers.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst node1 = new hcloud.Server(\"node1\", {\n    name: \"node1\",\n    image: \"debian-12\",\n    serverType: \"cx23\",\n});\nconst master = new hcloud.FloatingIp(\"master\", {\n    type: \"ipv4\",\n    serverId: node1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nnode1 = hcloud.Server(\"node1\",\n    name=\"node1\",\n    image=\"debian-12\",\n    server_type=\"cx23\")\nmaster = hcloud.FloatingIp(\"master\",\n    type=\"ipv4\",\n    server_id=node1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var node1 = new HCloud.Server(\"node1\", new()\n    {\n        Name = \"node1\",\n        Image = \"debian-12\",\n        ServerType = \"cx23\",\n    });\n\n    var master = new HCloud.FloatingIp(\"master\", new()\n    {\n        Type = \"ipv4\",\n        ServerId = node1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnode1, err := hcloud.NewServer(ctx, \"node1\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"node1\"),\n\t\t\tImage:      pulumi.String(\"debian-12\"),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewFloatingIp(ctx, \"master\", \u0026hcloud.FloatingIpArgs{\n\t\t\tType:     pulumi.String(\"ipv4\"),\n\t\t\tServerId: node1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.FloatingIp;\nimport com.pulumi.hcloud.FloatingIpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var node1 = new Server(\"node1\", ServerArgs.builder()\n            .name(\"node1\")\n            .image(\"debian-12\")\n            .serverType(\"cx23\")\n            .build());\n\n        var master = new FloatingIp(\"master\", FloatingIpArgs.builder()\n            .type(\"ipv4\")\n            .serverId(node1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  node1:\n    type: hcloud:Server\n    properties:\n      name: node1\n      image: debian-12\n      serverType: cx23\n  master:\n    type: hcloud:FloatingIp\n    properties:\n      type: ipv4\n      serverId: ${node1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFloating IPs can be imported using its \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e:\n\n```sh\n$ pulumi import hcloud:index/floatingIp:FloatingIp example \"$FLOATING_IP_ID\"\n```\n\n","properties":{"deleteProtection":{"type":"boolean","description":"Enable or disable delete protection. See \"Delete Protection\" in the Provider Docs for details.\n"},"description":{"type":"string","description":"Description of the Floating IP.\n"},"homeLocation":{"type":"string","description":"Name of home location (routing is optimized for that location). Optional if \u003cspan pulumi-lang-nodejs=\"`serverId`\" pulumi-lang-dotnet=\"`ServerId`\" pulumi-lang-go=\"`serverId`\" pulumi-lang-python=\"`server_id`\" pulumi-lang-yaml=\"`serverId`\" pulumi-lang-java=\"`serverId`\"\u003e`server_id`\u003c/span\u003e argument is passed.\n"},"ipAddress":{"type":"string","description":"(string) IP Address of the Floating IP.\n"},"ipNetwork":{"type":"string","description":"(string) IPv6 subnet. (Only set if \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e)\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"name":{"type":"string","description":"Name of the Floating IP.\n"},"serverId":{"type":"integer","description":"Server to assign the Floating IP to. Optional if \u003cspan pulumi-lang-nodejs=\"`homeLocation`\" pulumi-lang-dotnet=\"`HomeLocation`\" pulumi-lang-go=\"`homeLocation`\" pulumi-lang-python=\"`home_location`\" pulumi-lang-yaml=\"`homeLocation`\" pulumi-lang-java=\"`homeLocation`\"\u003e`home_location`\u003c/span\u003e argument is passed.\n"},"type":{"type":"string","description":"Type of the Floating IP. \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e\n"}},"required":["homeLocation","ipAddress","ipNetwork","name","serverId","type"],"inputProperties":{"deleteProtection":{"type":"boolean","description":"Enable or disable delete protection. See \"Delete Protection\" in the Provider Docs for details.\n"},"description":{"type":"string","description":"Description of the Floating IP.\n"},"homeLocation":{"type":"string","description":"Name of home location (routing is optimized for that location). Optional if \u003cspan pulumi-lang-nodejs=\"`serverId`\" pulumi-lang-dotnet=\"`ServerId`\" pulumi-lang-go=\"`serverId`\" pulumi-lang-python=\"`server_id`\" pulumi-lang-yaml=\"`serverId`\" pulumi-lang-java=\"`serverId`\"\u003e`server_id`\u003c/span\u003e argument is passed.\n","willReplaceOnChanges":true},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"name":{"type":"string","description":"Name of the Floating IP.\n"},"serverId":{"type":"integer","description":"Server to assign the Floating IP to. Optional if \u003cspan pulumi-lang-nodejs=\"`homeLocation`\" pulumi-lang-dotnet=\"`HomeLocation`\" pulumi-lang-go=\"`homeLocation`\" pulumi-lang-python=\"`home_location`\" pulumi-lang-yaml=\"`homeLocation`\" pulumi-lang-java=\"`homeLocation`\"\u003e`home_location`\u003c/span\u003e argument is passed.\n"},"type":{"type":"string","description":"Type of the Floating IP. \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e\n","willReplaceOnChanges":true}},"requiredInputs":["type"],"stateInputs":{"description":"Input properties used for looking up and filtering FloatingIp resources.\n","properties":{"deleteProtection":{"type":"boolean","description":"Enable or disable delete protection. See \"Delete Protection\" in the Provider Docs for details.\n"},"description":{"type":"string","description":"Description of the Floating IP.\n"},"homeLocation":{"type":"string","description":"Name of home location (routing is optimized for that location). Optional if \u003cspan pulumi-lang-nodejs=\"`serverId`\" pulumi-lang-dotnet=\"`ServerId`\" pulumi-lang-go=\"`serverId`\" pulumi-lang-python=\"`server_id`\" pulumi-lang-yaml=\"`serverId`\" pulumi-lang-java=\"`serverId`\"\u003e`server_id`\u003c/span\u003e argument is passed.\n","willReplaceOnChanges":true},"ipAddress":{"type":"string","description":"(string) IP Address of the Floating IP.\n"},"ipNetwork":{"type":"string","description":"(string) IPv6 subnet. (Only set if \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e)\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"name":{"type":"string","description":"Name of the Floating IP.\n"},"serverId":{"type":"integer","description":"Server to assign the Floating IP to. Optional if \u003cspan pulumi-lang-nodejs=\"`homeLocation`\" pulumi-lang-dotnet=\"`HomeLocation`\" pulumi-lang-go=\"`homeLocation`\" pulumi-lang-python=\"`home_location`\" pulumi-lang-yaml=\"`homeLocation`\" pulumi-lang-java=\"`homeLocation`\"\u003e`home_location`\u003c/span\u003e argument is passed.\n"},"type":{"type":"string","description":"Type of the Floating IP. \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e\n","willReplaceOnChanges":true}},"type":"object"}},"hcloud:index/floatingIpAssignment:FloatingIpAssignment":{"description":"Provides a Hetzner Cloud Floating IP Assignment to assign a Floating IP to a Hetzner Cloud Server. Deleting a Floating IP Assignment will unassign the Floating IP from the Server.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst node1 = new hcloud.Server(\"node1\", {\n    name: \"node1\",\n    image: \"debian-12\",\n    serverType: \"cx23\",\n    datacenter: \"fsn1-dc8\",\n});\nconst master = new hcloud.FloatingIp(\"master\", {\n    type: \"ipv4\",\n    homeLocation: \"nbg1\",\n});\nconst main = new hcloud.FloatingIpAssignment(\"main\", {\n    floatingIpId: master.id,\n    serverId: node1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nnode1 = hcloud.Server(\"node1\",\n    name=\"node1\",\n    image=\"debian-12\",\n    server_type=\"cx23\",\n    datacenter=\"fsn1-dc8\")\nmaster = hcloud.FloatingIp(\"master\",\n    type=\"ipv4\",\n    home_location=\"nbg1\")\nmain = hcloud.FloatingIpAssignment(\"main\",\n    floating_ip_id=master.id,\n    server_id=node1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var node1 = new HCloud.Server(\"node1\", new()\n    {\n        Name = \"node1\",\n        Image = \"debian-12\",\n        ServerType = \"cx23\",\n        Datacenter = \"fsn1-dc8\",\n    });\n\n    var master = new HCloud.FloatingIp(\"master\", new()\n    {\n        Type = \"ipv4\",\n        HomeLocation = \"nbg1\",\n    });\n\n    var main = new HCloud.FloatingIpAssignment(\"main\", new()\n    {\n        FloatingIpId = master.Id,\n        ServerId = node1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnode1, err := hcloud.NewServer(ctx, \"node1\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"node1\"),\n\t\t\tImage:      pulumi.String(\"debian-12\"),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t\tDatacenter: pulumi.String(\"fsn1-dc8\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmaster, err := hcloud.NewFloatingIp(ctx, \"master\", \u0026hcloud.FloatingIpArgs{\n\t\t\tType:         pulumi.String(\"ipv4\"),\n\t\t\tHomeLocation: pulumi.String(\"nbg1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewFloatingIpAssignment(ctx, \"main\", \u0026hcloud.FloatingIpAssignmentArgs{\n\t\t\tFloatingIpId: master.ID(),\n\t\t\tServerId:     node1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.FloatingIp;\nimport com.pulumi.hcloud.FloatingIpArgs;\nimport com.pulumi.hcloud.FloatingIpAssignment;\nimport com.pulumi.hcloud.FloatingIpAssignmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var node1 = new Server(\"node1\", ServerArgs.builder()\n            .name(\"node1\")\n            .image(\"debian-12\")\n            .serverType(\"cx23\")\n            .datacenter(\"fsn1-dc8\")\n            .build());\n\n        var master = new FloatingIp(\"master\", FloatingIpArgs.builder()\n            .type(\"ipv4\")\n            .homeLocation(\"nbg1\")\n            .build());\n\n        var main = new FloatingIpAssignment(\"main\", FloatingIpAssignmentArgs.builder()\n            .floatingIpId(master.id())\n            .serverId(node1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: hcloud:FloatingIpAssignment\n    properties:\n      floatingIpId: ${master.id}\n      serverId: ${node1.id}\n  node1:\n    type: hcloud:Server\n    properties:\n      name: node1\n      image: debian-12\n      serverType: cx23\n      datacenter: fsn1-dc8\n  master:\n    type: hcloud:FloatingIp\n    properties:\n      type: ipv4\n      homeLocation: nbg1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFloating IP Assignments can be imported using the \u003cspan pulumi-lang-nodejs=\"`floatingIpId`\" pulumi-lang-dotnet=\"`FloatingIpId`\" pulumi-lang-go=\"`floatingIpId`\" pulumi-lang-python=\"`floating_ip_id`\" pulumi-lang-yaml=\"`floatingIpId`\" pulumi-lang-java=\"`floatingIpId`\"\u003e`floating_ip_id`\u003c/span\u003e:\n\n```sh\n$ pulumi import hcloud:index/floatingIpAssignment:FloatingIpAssignment example \"$FLOATING_IP_ID\"\n```\n\n","properties":{"floatingIpId":{"type":"integer","description":"ID of the Floating IP.\n"},"serverId":{"type":"integer","description":"Server to assign the Floating IP to.\n"}},"required":["floatingIpId","serverId"],"inputProperties":{"floatingIpId":{"type":"integer","description":"ID of the Floating IP.\n","willReplaceOnChanges":true},"serverId":{"type":"integer","description":"Server to assign the Floating IP to.\n"}},"requiredInputs":["floatingIpId","serverId"],"stateInputs":{"description":"Input properties used for looking up and filtering FloatingIpAssignment resources.\n","properties":{"floatingIpId":{"type":"integer","description":"ID of the Floating IP.\n","willReplaceOnChanges":true},"serverId":{"type":"integer","description":"Server to assign the Floating IP to.\n"}},"type":"object"}},"hcloud:index/loadBalancer:LoadBalancer":{"description":"Provides a Hetzner Cloud Load Balancer to represent a Load Balancer in the Hetzner Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst myServer = new hcloud.Server(\"my_server\", {\n    name: \"server-%d\",\n    serverType: \"cx23\",\n    image: \"ubuntu-24.04\",\n});\nconst loadBalancer = new hcloud.LoadBalancer(\"load_balancer\", {\n    name: \"my-load-balancer\",\n    loadBalancerType: \"lb11\",\n    location: \"nbg1\",\n});\nconst loadBalancerTarget = new hcloud.LoadBalancerTarget(\"load_balancer_target\", {\n    type: \"server\",\n    loadBalancerId: loadBalancer.id,\n    serverId: myServer.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nmy_server = hcloud.Server(\"my_server\",\n    name=\"server-%d\",\n    server_type=\"cx23\",\n    image=\"ubuntu-24.04\")\nload_balancer = hcloud.LoadBalancer(\"load_balancer\",\n    name=\"my-load-balancer\",\n    load_balancer_type=\"lb11\",\n    location=\"nbg1\")\nload_balancer_target = hcloud.LoadBalancerTarget(\"load_balancer_target\",\n    type=\"server\",\n    load_balancer_id=load_balancer.id,\n    server_id=my_server.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myServer = new HCloud.Server(\"my_server\", new()\n    {\n        Name = \"server-%d\",\n        ServerType = \"cx23\",\n        Image = \"ubuntu-24.04\",\n    });\n\n    var loadBalancer = new HCloud.LoadBalancer(\"load_balancer\", new()\n    {\n        Name = \"my-load-balancer\",\n        LoadBalancerType = \"lb11\",\n        Location = \"nbg1\",\n    });\n\n    var loadBalancerTarget = new HCloud.LoadBalancerTarget(\"load_balancer_target\", new()\n    {\n        Type = \"server\",\n        LoadBalancerId = loadBalancer.Id,\n        ServerId = myServer.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyServer, err := hcloud.NewServer(ctx, \"my_server\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"server-%d\"),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t\tImage:      pulumi.String(\"ubuntu-24.04\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tloadBalancer, err := hcloud.NewLoadBalancer(ctx, \"load_balancer\", \u0026hcloud.LoadBalancerArgs{\n\t\t\tName:             pulumi.String(\"my-load-balancer\"),\n\t\t\tLoadBalancerType: pulumi.String(\"lb11\"),\n\t\t\tLocation:         pulumi.String(\"nbg1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewLoadBalancerTarget(ctx, \"load_balancer_target\", \u0026hcloud.LoadBalancerTargetArgs{\n\t\t\tType:           pulumi.String(\"server\"),\n\t\t\tLoadBalancerId: loadBalancer.ID(),\n\t\t\tServerId:       myServer.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.LoadBalancer;\nimport com.pulumi.hcloud.LoadBalancerArgs;\nimport com.pulumi.hcloud.LoadBalancerTarget;\nimport com.pulumi.hcloud.LoadBalancerTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myServer = new Server(\"myServer\", ServerArgs.builder()\n            .name(\"server-%d\")\n            .serverType(\"cx23\")\n            .image(\"ubuntu-24.04\")\n            .build());\n\n        var loadBalancer = new LoadBalancer(\"loadBalancer\", LoadBalancerArgs.builder()\n            .name(\"my-load-balancer\")\n            .loadBalancerType(\"lb11\")\n            .location(\"nbg1\")\n            .build());\n\n        var loadBalancerTarget = new LoadBalancerTarget(\"loadBalancerTarget\", LoadBalancerTargetArgs.builder()\n            .type(\"server\")\n            .loadBalancerId(loadBalancer.id())\n            .serverId(myServer.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myServer:\n    type: hcloud:Server\n    name: my_server\n    properties:\n      name: server-%d\n      serverType: cx23\n      image: ubuntu-24.04\n  loadBalancer:\n    type: hcloud:LoadBalancer\n    name: load_balancer\n    properties:\n      name: my-load-balancer\n      loadBalancerType: lb11\n      location: nbg1\n  loadBalancerTarget:\n    type: hcloud:LoadBalancerTarget\n    name: load_balancer_target\n    properties:\n      type: server\n      loadBalancerId: ${loadBalancer.id}\n      serverId: ${myServer.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancers can be imported using its \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e:\n\n```sh\n$ pulumi import hcloud:index/loadBalancer:LoadBalancer example \"$LOAD_BALANCER_ID\"\n```\n\n","properties":{"algorithm":{"$ref":"#/types/hcloud:index/LoadBalancerAlgorithm:LoadBalancerAlgorithm","description":"Configuration of the algorithm the Load Balancer use.\n"},"deleteProtection":{"type":"boolean","description":"Enable or disable delete protection. See \"Delete Protection\" in the Provider Docs for details.\n"},"ipv4":{"type":"string","description":"(string) IPv4 Address of the Load Balancer.\n"},"ipv6":{"type":"string","description":"(string) IPv6 Address of the Load Balancer.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"loadBalancerType":{"type":"string","description":"Type of the Load Balancer.\n"},"location":{"type":"string","description":"The location name of the Load Balancer. Require when no\u003cspan pulumi-lang-nodejs=\" networkZone \" pulumi-lang-dotnet=\" NetworkZone \" pulumi-lang-go=\" networkZone \" pulumi-lang-python=\" network_zone \" pulumi-lang-yaml=\" networkZone \" pulumi-lang-java=\" networkZone \"\u003e network_zone \u003c/span\u003eis set. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n"},"name":{"type":"string","description":"Name of the Load Balancer.\n"},"networkId":{"type":"integer","description":"(int) ID of the first private network that this Load Balancer is connected to.\n"},"networkIp":{"type":"string","description":"(string) IP of the Load Balancer in the first private network that it is connected to.\n"},"networkZone":{"type":"string","description":"The Network Zone of the Load Balancer. Require when no location is set.\n"},"targets":{"type":"array","items":{"$ref":"#/types/hcloud:index/LoadBalancerTarget:LoadBalancerTarget"},"deprecationMessage":"Use\u003cspan pulumi-lang-nodejs=\" hcloud.LoadBalancerTarget \" pulumi-lang-dotnet=\" hcloud.LoadBalancerTarget \" pulumi-lang-go=\" LoadBalancerTarget \" pulumi-lang-python=\" LoadBalancerTarget \" pulumi-lang-yaml=\" hcloud.LoadBalancerTarget \" pulumi-lang-java=\" hcloud.LoadBalancerTarget \"\u003e hcloud.LoadBalancerTarget \u003c/span\u003eresource instead. This allows the full control over the selected targets."}},"required":["algorithm","ipv4","ipv6","labels","loadBalancerType","location","name","networkId","networkIp","networkZone","targets"],"inputProperties":{"algorithm":{"$ref":"#/types/hcloud:index/LoadBalancerAlgorithm:LoadBalancerAlgorithm","description":"Configuration of the algorithm the Load Balancer use.\n"},"deleteProtection":{"type":"boolean","description":"Enable or disable delete protection. See \"Delete Protection\" in the Provider Docs for details.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"loadBalancerType":{"type":"string","description":"Type of the Load Balancer.\n"},"location":{"type":"string","description":"The location name of the Load Balancer. Require when no\u003cspan pulumi-lang-nodejs=\" networkZone \" pulumi-lang-dotnet=\" NetworkZone \" pulumi-lang-go=\" networkZone \" pulumi-lang-python=\" network_zone \" pulumi-lang-yaml=\" networkZone \" pulumi-lang-java=\" networkZone \"\u003e network_zone \u003c/span\u003eis set. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Name of the Load Balancer.\n"},"networkZone":{"type":"string","description":"The Network Zone of the Load Balancer. Require when no location is set.\n","willReplaceOnChanges":true},"targets":{"type":"array","items":{"$ref":"#/types/hcloud:index/LoadBalancerTarget:LoadBalancerTarget"},"deprecationMessage":"Use\u003cspan pulumi-lang-nodejs=\" hcloud.LoadBalancerTarget \" pulumi-lang-dotnet=\" hcloud.LoadBalancerTarget \" pulumi-lang-go=\" LoadBalancerTarget \" pulumi-lang-python=\" LoadBalancerTarget \" pulumi-lang-yaml=\" hcloud.LoadBalancerTarget \" pulumi-lang-java=\" hcloud.LoadBalancerTarget \"\u003e hcloud.LoadBalancerTarget \u003c/span\u003eresource instead. This allows the full control over the selected targets."}},"requiredInputs":["loadBalancerType"],"stateInputs":{"description":"Input properties used for looking up and filtering LoadBalancer resources.\n","properties":{"algorithm":{"$ref":"#/types/hcloud:index/LoadBalancerAlgorithm:LoadBalancerAlgorithm","description":"Configuration of the algorithm the Load Balancer use.\n"},"deleteProtection":{"type":"boolean","description":"Enable or disable delete protection. See \"Delete Protection\" in the Provider Docs for details.\n"},"ipv4":{"type":"string","description":"(string) IPv4 Address of the Load Balancer.\n"},"ipv6":{"type":"string","description":"(string) IPv6 Address of the Load Balancer.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"loadBalancerType":{"type":"string","description":"Type of the Load Balancer.\n"},"location":{"type":"string","description":"The location name of the Load Balancer. Require when no\u003cspan pulumi-lang-nodejs=\" networkZone \" pulumi-lang-dotnet=\" NetworkZone \" pulumi-lang-go=\" networkZone \" pulumi-lang-python=\" network_zone \" pulumi-lang-yaml=\" networkZone \" pulumi-lang-java=\" networkZone \"\u003e network_zone \u003c/span\u003eis set. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Name of the Load Balancer.\n"},"networkId":{"type":"integer","description":"(int) ID of the first private network that this Load Balancer is connected to.\n"},"networkIp":{"type":"string","description":"(string) IP of the Load Balancer in the first private network that it is connected to.\n"},"networkZone":{"type":"string","description":"The Network Zone of the Load Balancer. Require when no location is set.\n","willReplaceOnChanges":true},"targets":{"type":"array","items":{"$ref":"#/types/hcloud:index/LoadBalancerTarget:LoadBalancerTarget"},"deprecationMessage":"Use\u003cspan pulumi-lang-nodejs=\" hcloud.LoadBalancerTarget \" pulumi-lang-dotnet=\" hcloud.LoadBalancerTarget \" pulumi-lang-go=\" LoadBalancerTarget \" pulumi-lang-python=\" LoadBalancerTarget \" pulumi-lang-yaml=\" hcloud.LoadBalancerTarget \" pulumi-lang-java=\" hcloud.LoadBalancerTarget \"\u003e hcloud.LoadBalancerTarget \u003c/span\u003eresource instead. This allows the full control over the selected targets."}},"type":"object"}},"hcloud:index/loadBalancerNetwork:LoadBalancerNetwork":{"description":"Manage the attachment of a Load Balancer in a Network in the Hetzner Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst main = new hcloud.LoadBalancer(\"main\", {\n    name: \"main\",\n    loadBalancerType: \"lb11\",\n    networkZone: \"eu-central\",\n});\nconst network = new hcloud.Network(\"network\", {\n    name: \"network\",\n    ipRange: \"10.0.0.0/16\",\n});\nconst subnet = new hcloud.NetworkSubnet(\"subnet\", {\n    networkId: network.id,\n    type: \"cloud\",\n    networkZone: \"eu-central\",\n    ipRange: \"10.0.1.0/24\",\n});\nconst attachment = new hcloud.LoadBalancerNetwork(\"attachment\", {\n    loadBalancerId: main.id,\n    subnetId: subnet.id,\n    ip: \"10.0.1.5\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nmain = hcloud.LoadBalancer(\"main\",\n    name=\"main\",\n    load_balancer_type=\"lb11\",\n    network_zone=\"eu-central\")\nnetwork = hcloud.Network(\"network\",\n    name=\"network\",\n    ip_range=\"10.0.0.0/16\")\nsubnet = hcloud.NetworkSubnet(\"subnet\",\n    network_id=network.id,\n    type=\"cloud\",\n    network_zone=\"eu-central\",\n    ip_range=\"10.0.1.0/24\")\nattachment = hcloud.LoadBalancerNetwork(\"attachment\",\n    load_balancer_id=main.id,\n    subnet_id=subnet.id,\n    ip=\"10.0.1.5\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new HCloud.LoadBalancer(\"main\", new()\n    {\n        Name = \"main\",\n        LoadBalancerType = \"lb11\",\n        NetworkZone = \"eu-central\",\n    });\n\n    var network = new HCloud.Network(\"network\", new()\n    {\n        Name = \"network\",\n        IpRange = \"10.0.0.0/16\",\n    });\n\n    var subnet = new HCloud.NetworkSubnet(\"subnet\", new()\n    {\n        NetworkId = network.Id,\n        Type = \"cloud\",\n        NetworkZone = \"eu-central\",\n        IpRange = \"10.0.1.0/24\",\n    });\n\n    var attachment = new HCloud.LoadBalancerNetwork(\"attachment\", new()\n    {\n        LoadBalancerId = main.Id,\n        SubnetId = subnet.Id,\n        Ip = \"10.0.1.5\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := hcloud.NewLoadBalancer(ctx, \"main\", \u0026hcloud.LoadBalancerArgs{\n\t\t\tName:             pulumi.String(\"main\"),\n\t\t\tLoadBalancerType: pulumi.String(\"lb11\"),\n\t\t\tNetworkZone:      pulumi.String(\"eu-central\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := hcloud.NewNetwork(ctx, \"network\", \u0026hcloud.NetworkArgs{\n\t\t\tName:    pulumi.String(\"network\"),\n\t\t\tIpRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet, err := hcloud.NewNetworkSubnet(ctx, \"subnet\", \u0026hcloud.NetworkSubnetArgs{\n\t\t\tNetworkId:   network.ID(),\n\t\t\tType:        pulumi.String(\"cloud\"),\n\t\t\tNetworkZone: pulumi.String(\"eu-central\"),\n\t\t\tIpRange:     pulumi.String(\"10.0.1.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewLoadBalancerNetwork(ctx, \"attachment\", \u0026hcloud.LoadBalancerNetworkArgs{\n\t\t\tLoadBalancerId: main.ID(),\n\t\t\tSubnetId:       subnet.ID(),\n\t\t\tIp:             pulumi.String(\"10.0.1.5\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.LoadBalancer;\nimport com.pulumi.hcloud.LoadBalancerArgs;\nimport com.pulumi.hcloud.Network;\nimport com.pulumi.hcloud.NetworkArgs;\nimport com.pulumi.hcloud.NetworkSubnet;\nimport com.pulumi.hcloud.NetworkSubnetArgs;\nimport com.pulumi.hcloud.LoadBalancerNetwork;\nimport com.pulumi.hcloud.LoadBalancerNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var main = new LoadBalancer(\"main\", LoadBalancerArgs.builder()\n            .name(\"main\")\n            .loadBalancerType(\"lb11\")\n            .networkZone(\"eu-central\")\n            .build());\n\n        var network = new Network(\"network\", NetworkArgs.builder()\n            .name(\"network\")\n            .ipRange(\"10.0.0.0/16\")\n            .build());\n\n        var subnet = new NetworkSubnet(\"subnet\", NetworkSubnetArgs.builder()\n            .networkId(network.id())\n            .type(\"cloud\")\n            .networkZone(\"eu-central\")\n            .ipRange(\"10.0.1.0/24\")\n            .build());\n\n        var attachment = new LoadBalancerNetwork(\"attachment\", LoadBalancerNetworkArgs.builder()\n            .loadBalancerId(main.id())\n            .subnetId(subnet.id())\n            .ip(\"10.0.1.5\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: hcloud:LoadBalancer\n    properties:\n      name: main\n      loadBalancerType: lb11\n      networkZone: eu-central\n  network:\n    type: hcloud:Network\n    properties:\n      name: network\n      ipRange: 10.0.0.0/16\n  subnet:\n    type: hcloud:NetworkSubnet\n    properties:\n      networkId: ${network.id}\n      type: cloud\n      networkZone: eu-central\n      ipRange: 10.0.1.0/24\n  attachment:\n    type: hcloud:LoadBalancerNetwork\n    properties:\n      loadBalancerId: ${main.id}\n      subnetId: ${subnet.id}\n      ip: 10.0.1.5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import hcloud:index/loadBalancerNetwork:LoadBalancerNetwork example \"$LOAD_BALANCER_ID-$NETWORK_ID\"\n```\n\n","properties":{"enablePublicInterface":{"type":"boolean","description":"Wether the Load Balancer public interface is enabled. Default is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"ip":{"type":"string","description":"IP to assign to the Load Balancer.\n"},"loadBalancerId":{"type":"integer","description":"ID of the Load Balancer.\n"},"networkId":{"type":"integer","description":"ID of the Network to attach the Load Balancer to. Using \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e is preferred. Required if \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e is not set. If \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e are not set, the Load Balancer will be attached to the last subnet (ordered by \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ip_range`\u003c/span\u003e).\n"},"subnetId":{"type":"string","description":"ID of the Subnet to attach the Load Balancer to. Required if \u003cspan pulumi-lang-nodejs=\"`networkId`\" pulumi-lang-dotnet=\"`NetworkId`\" pulumi-lang-go=\"`networkId`\" pulumi-lang-python=\"`network_id`\" pulumi-lang-yaml=\"`networkId`\" pulumi-lang-java=\"`networkId`\"\u003e`network_id`\u003c/span\u003e is not set.\n"}},"required":["enablePublicInterface","ip","loadBalancerId","networkId"],"inputProperties":{"enablePublicInterface":{"type":"boolean","description":"Wether the Load Balancer public interface is enabled. Default is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"ip":{"type":"string","description":"IP to assign to the Load Balancer.\n"},"loadBalancerId":{"type":"integer","description":"ID of the Load Balancer.\n"},"networkId":{"type":"integer","description":"ID of the Network to attach the Load Balancer to. Using \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e is preferred. Required if \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e is not set. If \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e are not set, the Load Balancer will be attached to the last subnet (ordered by \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ip_range`\u003c/span\u003e).\n"},"subnetId":{"type":"string","description":"ID of the Subnet to attach the Load Balancer to. Required if \u003cspan pulumi-lang-nodejs=\"`networkId`\" pulumi-lang-dotnet=\"`NetworkId`\" pulumi-lang-go=\"`networkId`\" pulumi-lang-python=\"`network_id`\" pulumi-lang-yaml=\"`networkId`\" pulumi-lang-java=\"`networkId`\"\u003e`network_id`\u003c/span\u003e is not set.\n"}},"requiredInputs":["loadBalancerId"],"stateInputs":{"description":"Input properties used for looking up and filtering LoadBalancerNetwork resources.\n","properties":{"enablePublicInterface":{"type":"boolean","description":"Wether the Load Balancer public interface is enabled. Default is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"ip":{"type":"string","description":"IP to assign to the Load Balancer.\n"},"loadBalancerId":{"type":"integer","description":"ID of the Load Balancer.\n"},"networkId":{"type":"integer","description":"ID of the Network to attach the Load Balancer to. Using \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e is preferred. Required if \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e is not set. If \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e are not set, the Load Balancer will be attached to the last subnet (ordered by \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ip_range`\u003c/span\u003e).\n"},"subnetId":{"type":"string","description":"ID of the Subnet to attach the Load Balancer to. Required if \u003cspan pulumi-lang-nodejs=\"`networkId`\" pulumi-lang-dotnet=\"`NetworkId`\" pulumi-lang-go=\"`networkId`\" pulumi-lang-python=\"`network_id`\" pulumi-lang-yaml=\"`networkId`\" pulumi-lang-java=\"`networkId`\"\u003e`network_id`\u003c/span\u003e is not set.\n"}},"type":"object"}},"hcloud:index/loadBalancerService:LoadBalancerService":{"description":"Define services for Hetzner Cloud Load Balancers.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst loadBalancer = new hcloud.LoadBalancer(\"load_balancer\", {\n    name: \"my-load-balancer\",\n    loadBalancerType: \"lb11\",\n    location: \"nbg1\",\n});\nconst loadBalancerService = new hcloud.LoadBalancerService(\"load_balancer_service\", {\n    loadBalancerId: loadBalancer.id,\n    protocol: \"http\",\n    http: {\n        stickySessions: true,\n        cookieName: \"EXAMPLE_STICKY\",\n    },\n    healthCheck: {\n        protocol: \"http\",\n        port: 80,\n        interval: 10,\n        timeout: 5,\n        http: {\n            domain: \"example.com\",\n            path: \"/healthz\",\n            response: \"OK\",\n            tls: true,\n            statusCodes: [\"200\"],\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nload_balancer = hcloud.LoadBalancer(\"load_balancer\",\n    name=\"my-load-balancer\",\n    load_balancer_type=\"lb11\",\n    location=\"nbg1\")\nload_balancer_service = hcloud.LoadBalancerService(\"load_balancer_service\",\n    load_balancer_id=load_balancer.id,\n    protocol=\"http\",\n    http={\n        \"sticky_sessions\": True,\n        \"cookie_name\": \"EXAMPLE_STICKY\",\n    },\n    health_check={\n        \"protocol\": \"http\",\n        \"port\": 80,\n        \"interval\": 10,\n        \"timeout\": 5,\n        \"http\": {\n            \"domain\": \"example.com\",\n            \"path\": \"/healthz\",\n            \"response\": \"OK\",\n            \"tls\": True,\n            \"status_codes\": [\"200\"],\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var loadBalancer = new HCloud.LoadBalancer(\"load_balancer\", new()\n    {\n        Name = \"my-load-balancer\",\n        LoadBalancerType = \"lb11\",\n        Location = \"nbg1\",\n    });\n\n    var loadBalancerService = new HCloud.LoadBalancerService(\"load_balancer_service\", new()\n    {\n        LoadBalancerId = loadBalancer.Id,\n        Protocol = \"http\",\n        Http = new HCloud.Inputs.LoadBalancerServiceHttpArgs\n        {\n            StickySessions = true,\n            CookieName = \"EXAMPLE_STICKY\",\n        },\n        HealthCheck = new HCloud.Inputs.LoadBalancerServiceHealthCheckArgs\n        {\n            Protocol = \"http\",\n            Port = 80,\n            Interval = 10,\n            Timeout = 5,\n            Http = new HCloud.Inputs.LoadBalancerServiceHealthCheckHttpArgs\n            {\n                Domain = \"example.com\",\n                Path = \"/healthz\",\n                Response = \"OK\",\n                Tls = true,\n                StatusCodes = new[]\n                {\n                    \"200\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tloadBalancer, err := hcloud.NewLoadBalancer(ctx, \"load_balancer\", \u0026hcloud.LoadBalancerArgs{\n\t\t\tName:             pulumi.String(\"my-load-balancer\"),\n\t\t\tLoadBalancerType: pulumi.String(\"lb11\"),\n\t\t\tLocation:         pulumi.String(\"nbg1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewLoadBalancerService(ctx, \"load_balancer_service\", \u0026hcloud.LoadBalancerServiceArgs{\n\t\t\tLoadBalancerId: loadBalancer.ID(),\n\t\t\tProtocol:       pulumi.String(\"http\"),\n\t\t\tHttp: \u0026hcloud.LoadBalancerServiceHttpArgs{\n\t\t\t\tStickySessions: pulumi.Bool(true),\n\t\t\t\tCookieName:     pulumi.String(\"EXAMPLE_STICKY\"),\n\t\t\t},\n\t\t\tHealthCheck: \u0026hcloud.LoadBalancerServiceHealthCheckArgs{\n\t\t\t\tProtocol: pulumi.String(\"http\"),\n\t\t\t\tPort:     pulumi.Int(80),\n\t\t\t\tInterval: pulumi.Int(10),\n\t\t\t\tTimeout:  pulumi.Int(5),\n\t\t\t\tHttp: \u0026hcloud.LoadBalancerServiceHealthCheckHttpArgs{\n\t\t\t\t\tDomain:   pulumi.String(\"example.com\"),\n\t\t\t\t\tPath:     pulumi.String(\"/healthz\"),\n\t\t\t\t\tResponse: pulumi.String(\"OK\"),\n\t\t\t\t\tTls:      pulumi.Bool(true),\n\t\t\t\t\tStatusCodes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"200\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.LoadBalancer;\nimport com.pulumi.hcloud.LoadBalancerArgs;\nimport com.pulumi.hcloud.LoadBalancerService;\nimport com.pulumi.hcloud.LoadBalancerServiceArgs;\nimport com.pulumi.hcloud.inputs.LoadBalancerServiceHttpArgs;\nimport com.pulumi.hcloud.inputs.LoadBalancerServiceHealthCheckArgs;\nimport com.pulumi.hcloud.inputs.LoadBalancerServiceHealthCheckHttpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var loadBalancer = new LoadBalancer(\"loadBalancer\", LoadBalancerArgs.builder()\n            .name(\"my-load-balancer\")\n            .loadBalancerType(\"lb11\")\n            .location(\"nbg1\")\n            .build());\n\n        var loadBalancerService = new LoadBalancerService(\"loadBalancerService\", LoadBalancerServiceArgs.builder()\n            .loadBalancerId(loadBalancer.id())\n            .protocol(\"http\")\n            .http(LoadBalancerServiceHttpArgs.builder()\n                .stickySessions(true)\n                .cookieName(\"EXAMPLE_STICKY\")\n                .build())\n            .healthCheck(LoadBalancerServiceHealthCheckArgs.builder()\n                .protocol(\"http\")\n                .port(80)\n                .interval(10)\n                .timeout(5)\n                .http(LoadBalancerServiceHealthCheckHttpArgs.builder()\n                    .domain(\"example.com\")\n                    .path(\"/healthz\")\n                    .response(\"OK\")\n                    .tls(true)\n                    .statusCodes(\"200\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  loadBalancer:\n    type: hcloud:LoadBalancer\n    name: load_balancer\n    properties:\n      name: my-load-balancer\n      loadBalancerType: lb11\n      location: nbg1\n  loadBalancerService:\n    type: hcloud:LoadBalancerService\n    name: load_balancer_service\n    properties:\n      loadBalancerId: ${loadBalancer.id}\n      protocol: http\n      http:\n        stickySessions: true\n        cookieName: EXAMPLE_STICKY\n      healthCheck:\n        protocol: http\n        port: 80\n        interval: 10\n        timeout: 5\n        http:\n          domain: example.com\n          path: /healthz\n          response: OK\n          tls: true\n          statusCodes:\n            - '200'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancer Service entries can be imported using a compound ID with the following format:\n`\u003cload-balancer-id\u003e__\u003clisten-port\u003e`\n\n```sh\n$ pulumi import hcloud:index/loadBalancerService:LoadBalancerService example \"${LOAD_BALANCER_ID}__${LISTEN_PORT}\"\n```\n\n","properties":{"destinationPort":{"type":"integer","description":"Port the service connects to the targets on, required if protocol is \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e. Can be everything between \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`65535`\" pulumi-lang-dotnet=\"`65535`\" pulumi-lang-go=\"`65535`\" pulumi-lang-python=\"`65535`\" pulumi-lang-yaml=\"`65535`\" pulumi-lang-java=\"`65535`\"\u003e`65535`\u003c/span\u003e.\n"},"healthCheck":{"$ref":"#/types/hcloud:index/LoadBalancerServiceHealthCheck:LoadBalancerServiceHealthCheck","description":"Health Check configuration when \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e.\n"},"http":{"$ref":"#/types/hcloud:index/LoadBalancerServiceHttp:LoadBalancerServiceHttp","description":"HTTP configuration when \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e.\n"},"listenPort":{"type":"integer","description":"Port the service listen on, required if protocol is \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e. Can be everything between \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`65535`\" pulumi-lang-dotnet=\"`65535`\" pulumi-lang-go=\"`65535`\" pulumi-lang-python=\"`65535`\" pulumi-lang-yaml=\"`65535`\" pulumi-lang-java=\"`65535`\"\u003e`65535`\u003c/span\u003e. Must be unique per Load Balancer.\n"},"loadBalancerId":{"type":"string","description":"Id of the load balancer this service belongs to.\n"},"protocol":{"type":"string","description":"Protocol of the service. \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e\n"},"proxyprotocol":{"type":"boolean","description":"Enable proxyprotocol.\n"}},"required":["destinationPort","healthCheck","http","listenPort","loadBalancerId","protocol","proxyprotocol"],"inputProperties":{"destinationPort":{"type":"integer","description":"Port the service connects to the targets on, required if protocol is \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e. Can be everything between \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`65535`\" pulumi-lang-dotnet=\"`65535`\" pulumi-lang-go=\"`65535`\" pulumi-lang-python=\"`65535`\" pulumi-lang-yaml=\"`65535`\" pulumi-lang-java=\"`65535`\"\u003e`65535`\u003c/span\u003e.\n"},"healthCheck":{"$ref":"#/types/hcloud:index/LoadBalancerServiceHealthCheck:LoadBalancerServiceHealthCheck","description":"Health Check configuration when \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e.\n"},"http":{"$ref":"#/types/hcloud:index/LoadBalancerServiceHttp:LoadBalancerServiceHttp","description":"HTTP configuration when \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e.\n"},"listenPort":{"type":"integer","description":"Port the service listen on, required if protocol is \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e. Can be everything between \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`65535`\" pulumi-lang-dotnet=\"`65535`\" pulumi-lang-go=\"`65535`\" pulumi-lang-python=\"`65535`\" pulumi-lang-yaml=\"`65535`\" pulumi-lang-java=\"`65535`\"\u003e`65535`\u003c/span\u003e. Must be unique per Load Balancer.\n","willReplaceOnChanges":true},"loadBalancerId":{"type":"string","description":"Id of the load balancer this service belongs to.\n","willReplaceOnChanges":true},"protocol":{"type":"string","description":"Protocol of the service. \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e\n","willReplaceOnChanges":true},"proxyprotocol":{"type":"boolean","description":"Enable proxyprotocol.\n"}},"requiredInputs":["loadBalancerId","protocol"],"stateInputs":{"description":"Input properties used for looking up and filtering LoadBalancerService resources.\n","properties":{"destinationPort":{"type":"integer","description":"Port the service connects to the targets on, required if protocol is \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e. Can be everything between \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`65535`\" pulumi-lang-dotnet=\"`65535`\" pulumi-lang-go=\"`65535`\" pulumi-lang-python=\"`65535`\" pulumi-lang-yaml=\"`65535`\" pulumi-lang-java=\"`65535`\"\u003e`65535`\u003c/span\u003e.\n"},"healthCheck":{"$ref":"#/types/hcloud:index/LoadBalancerServiceHealthCheck:LoadBalancerServiceHealthCheck","description":"Health Check configuration when \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e.\n"},"http":{"$ref":"#/types/hcloud:index/LoadBalancerServiceHttp:LoadBalancerServiceHttp","description":"HTTP configuration when \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e.\n"},"listenPort":{"type":"integer","description":"Port the service listen on, required if protocol is \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e. Can be everything between \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`65535`\" pulumi-lang-dotnet=\"`65535`\" pulumi-lang-go=\"`65535`\" pulumi-lang-python=\"`65535`\" pulumi-lang-yaml=\"`65535`\" pulumi-lang-java=\"`65535`\"\u003e`65535`\u003c/span\u003e. Must be unique per Load Balancer.\n","willReplaceOnChanges":true},"loadBalancerId":{"type":"string","description":"Id of the load balancer this service belongs to.\n","willReplaceOnChanges":true},"protocol":{"type":"string","description":"Protocol of the service. \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e\n","willReplaceOnChanges":true},"proxyprotocol":{"type":"boolean","description":"Enable proxyprotocol.\n"}},"type":"object"}},"hcloud:index/loadBalancerTarget:LoadBalancerTarget":{"description":"Adds a target to a Hetzner Cloud Load Balancer.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst myServer = new hcloud.Server(\"my_server\", {\n    name: \"my-server\",\n    serverType: \"cx23\",\n    image: \"ubuntu-24.04\",\n});\nconst loadBalancer = new hcloud.LoadBalancer(\"load_balancer\", {\n    name: \"my-load-balancer\",\n    loadBalancerType: \"lb11\",\n    location: \"nbg1\",\n});\nconst loadBalancerTarget = new hcloud.LoadBalancerTarget(\"load_balancer_target\", {\n    type: \"server\",\n    loadBalancerId: loadBalancer.id,\n    serverId: myServer.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nmy_server = hcloud.Server(\"my_server\",\n    name=\"my-server\",\n    server_type=\"cx23\",\n    image=\"ubuntu-24.04\")\nload_balancer = hcloud.LoadBalancer(\"load_balancer\",\n    name=\"my-load-balancer\",\n    load_balancer_type=\"lb11\",\n    location=\"nbg1\")\nload_balancer_target = hcloud.LoadBalancerTarget(\"load_balancer_target\",\n    type=\"server\",\n    load_balancer_id=load_balancer.id,\n    server_id=my_server.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myServer = new HCloud.Server(\"my_server\", new()\n    {\n        Name = \"my-server\",\n        ServerType = \"cx23\",\n        Image = \"ubuntu-24.04\",\n    });\n\n    var loadBalancer = new HCloud.LoadBalancer(\"load_balancer\", new()\n    {\n        Name = \"my-load-balancer\",\n        LoadBalancerType = \"lb11\",\n        Location = \"nbg1\",\n    });\n\n    var loadBalancerTarget = new HCloud.LoadBalancerTarget(\"load_balancer_target\", new()\n    {\n        Type = \"server\",\n        LoadBalancerId = loadBalancer.Id,\n        ServerId = myServer.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyServer, err := hcloud.NewServer(ctx, \"my_server\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"my-server\"),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t\tImage:      pulumi.String(\"ubuntu-24.04\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tloadBalancer, err := hcloud.NewLoadBalancer(ctx, \"load_balancer\", \u0026hcloud.LoadBalancerArgs{\n\t\t\tName:             pulumi.String(\"my-load-balancer\"),\n\t\t\tLoadBalancerType: pulumi.String(\"lb11\"),\n\t\t\tLocation:         pulumi.String(\"nbg1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewLoadBalancerTarget(ctx, \"load_balancer_target\", \u0026hcloud.LoadBalancerTargetArgs{\n\t\t\tType:           pulumi.String(\"server\"),\n\t\t\tLoadBalancerId: loadBalancer.ID(),\n\t\t\tServerId:       myServer.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.LoadBalancer;\nimport com.pulumi.hcloud.LoadBalancerArgs;\nimport com.pulumi.hcloud.LoadBalancerTarget;\nimport com.pulumi.hcloud.LoadBalancerTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myServer = new Server(\"myServer\", ServerArgs.builder()\n            .name(\"my-server\")\n            .serverType(\"cx23\")\n            .image(\"ubuntu-24.04\")\n            .build());\n\n        var loadBalancer = new LoadBalancer(\"loadBalancer\", LoadBalancerArgs.builder()\n            .name(\"my-load-balancer\")\n            .loadBalancerType(\"lb11\")\n            .location(\"nbg1\")\n            .build());\n\n        var loadBalancerTarget = new LoadBalancerTarget(\"loadBalancerTarget\", LoadBalancerTargetArgs.builder()\n            .type(\"server\")\n            .loadBalancerId(loadBalancer.id())\n            .serverId(myServer.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myServer:\n    type: hcloud:Server\n    name: my_server\n    properties:\n      name: my-server\n      serverType: cx23\n      image: ubuntu-24.04\n  loadBalancer:\n    type: hcloud:LoadBalancer\n    name: load_balancer\n    properties:\n      name: my-load-balancer\n      loadBalancerType: lb11\n      location: nbg1\n  loadBalancerTarget:\n    type: hcloud:LoadBalancerTarget\n    name: load_balancer_target\n    properties:\n      type: server\n      loadBalancerId: ${loadBalancer.id}\n      serverId: ${myServer.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancer Target entries can be imported using a compound ID with the following format:\n`\u003cload-balancer-id\u003e__\u003ctype\u003e__\u003cidentifier\u003e`\n\nWhere _identifier_ depends on the _type_:\n\n- \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e: server id, for example: \u003cspan pulumi-lang-nodejs=\"`123`\" pulumi-lang-dotnet=\"`123`\" pulumi-lang-go=\"`123`\" pulumi-lang-python=\"`123`\" pulumi-lang-yaml=\"`123`\" pulumi-lang-java=\"`123`\"\u003e`123`\u003c/span\u003e\n- \u003cspan pulumi-lang-nodejs=\"`labelSelector`\" pulumi-lang-dotnet=\"`LabelSelector`\" pulumi-lang-go=\"`labelSelector`\" pulumi-lang-python=\"`label_selector`\" pulumi-lang-yaml=\"`labelSelector`\" pulumi-lang-java=\"`labelSelector`\"\u003e`label_selector`\u003c/span\u003e: label selector, for example: `foo=bar`\n- \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e: ip address, for example: `203.0.113.123`\n\n```sh\n$ pulumi import hcloud:index/loadBalancerTarget:LoadBalancerTarget server \"${LOAD_BALANCER_ID}__server__${SERVER_ID}\"\n$ pulumi import hcloud:index/loadBalancerTarget:LoadBalancerTarget label \"${LOAD_BALANCER_ID}__label_selector__${LABEL_SELECTOR}\"\n$ pulumi import hcloud:index/loadBalancerTarget:LoadBalancerTarget ip \"${LOAD_BALANCER_ID}__ip__${IP}\"\n```\n\n","properties":{"ip":{"type":"string","description":"IP address for an IP Target. Required if\n\u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e.\n"},"labelSelector":{"type":"string","description":"Label Selector selecting targets\nfor this Load Balancer. Required if \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`labelSelector`\" pulumi-lang-dotnet=\"`LabelSelector`\" pulumi-lang-go=\"`labelSelector`\" pulumi-lang-python=\"`label_selector`\" pulumi-lang-yaml=\"`labelSelector`\" pulumi-lang-java=\"`labelSelector`\"\u003e`label_selector`\u003c/span\u003e.\n"},"loadBalancerId":{"type":"integer","description":"ID of the Load Balancer to which\nthe target gets attached.\n"},"serverId":{"type":"integer","description":"ID of the server which should be a\ntarget for this Load Balancer. Required if \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e\n"},"type":{"type":"string","description":"Type of the target. Possible values\n\u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`labelSelector`\" pulumi-lang-dotnet=\"`LabelSelector`\" pulumi-lang-go=\"`labelSelector`\" pulumi-lang-python=\"`label_selector`\" pulumi-lang-yaml=\"`labelSelector`\" pulumi-lang-java=\"`labelSelector`\"\u003e`label_selector`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e.\n"},"usePrivateIp":{"type":"boolean","description":"use the private IP to connect to\nLoad Balancer targets. Only allowed if type is \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e or\n\u003cspan pulumi-lang-nodejs=\"`labelSelector`\" pulumi-lang-dotnet=\"`LabelSelector`\" pulumi-lang-go=\"`labelSelector`\" pulumi-lang-python=\"`label_selector`\" pulumi-lang-yaml=\"`labelSelector`\" pulumi-lang-java=\"`labelSelector`\"\u003e`label_selector`\u003c/span\u003e.\n"}},"required":["loadBalancerId","type","usePrivateIp"],"inputProperties":{"ip":{"type":"string","description":"IP address for an IP Target. Required if\n\u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e.\n","willReplaceOnChanges":true},"labelSelector":{"type":"string","description":"Label Selector selecting targets\nfor this Load Balancer. Required if \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`labelSelector`\" pulumi-lang-dotnet=\"`LabelSelector`\" pulumi-lang-go=\"`labelSelector`\" pulumi-lang-python=\"`label_selector`\" pulumi-lang-yaml=\"`labelSelector`\" pulumi-lang-java=\"`labelSelector`\"\u003e`label_selector`\u003c/span\u003e.\n","willReplaceOnChanges":true},"loadBalancerId":{"type":"integer","description":"ID of the Load Balancer to which\nthe target gets attached.\n","willReplaceOnChanges":true},"serverId":{"type":"integer","description":"ID of the server which should be a\ntarget for this Load Balancer. Required if \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e\n","willReplaceOnChanges":true},"type":{"type":"string","description":"Type of the target. Possible values\n\u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`labelSelector`\" pulumi-lang-dotnet=\"`LabelSelector`\" pulumi-lang-go=\"`labelSelector`\" pulumi-lang-python=\"`label_selector`\" pulumi-lang-yaml=\"`labelSelector`\" pulumi-lang-java=\"`labelSelector`\"\u003e`label_selector`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e.\n"},"usePrivateIp":{"type":"boolean","description":"use the private IP to connect to\nLoad Balancer targets. Only allowed if type is \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e or\n\u003cspan pulumi-lang-nodejs=\"`labelSelector`\" pulumi-lang-dotnet=\"`LabelSelector`\" pulumi-lang-go=\"`labelSelector`\" pulumi-lang-python=\"`label_selector`\" pulumi-lang-yaml=\"`labelSelector`\" pulumi-lang-java=\"`labelSelector`\"\u003e`label_selector`\u003c/span\u003e.\n"}},"requiredInputs":["loadBalancerId","type"],"stateInputs":{"description":"Input properties used for looking up and filtering LoadBalancerTarget resources.\n","properties":{"ip":{"type":"string","description":"IP address for an IP Target. Required if\n\u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e.\n","willReplaceOnChanges":true},"labelSelector":{"type":"string","description":"Label Selector selecting targets\nfor this Load Balancer. Required if \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`labelSelector`\" pulumi-lang-dotnet=\"`LabelSelector`\" pulumi-lang-go=\"`labelSelector`\" pulumi-lang-python=\"`label_selector`\" pulumi-lang-yaml=\"`labelSelector`\" pulumi-lang-java=\"`labelSelector`\"\u003e`label_selector`\u003c/span\u003e.\n","willReplaceOnChanges":true},"loadBalancerId":{"type":"integer","description":"ID of the Load Balancer to which\nthe target gets attached.\n","willReplaceOnChanges":true},"serverId":{"type":"integer","description":"ID of the server which should be a\ntarget for this Load Balancer. Required if \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e\n","willReplaceOnChanges":true},"type":{"type":"string","description":"Type of the target. Possible values\n\u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`labelSelector`\" pulumi-lang-dotnet=\"`LabelSelector`\" pulumi-lang-go=\"`labelSelector`\" pulumi-lang-python=\"`label_selector`\" pulumi-lang-yaml=\"`labelSelector`\" pulumi-lang-java=\"`labelSelector`\"\u003e`label_selector`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e.\n"},"usePrivateIp":{"type":"boolean","description":"use the private IP to connect to\nLoad Balancer targets. Only allowed if type is \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e or\n\u003cspan pulumi-lang-nodejs=\"`labelSelector`\" pulumi-lang-dotnet=\"`LabelSelector`\" pulumi-lang-go=\"`labelSelector`\" pulumi-lang-python=\"`label_selector`\" pulumi-lang-yaml=\"`labelSelector`\" pulumi-lang-java=\"`labelSelector`\"\u003e`label_selector`\u003c/span\u003e.\n"}},"type":"object"}},"hcloud:index/managedCertificate:ManagedCertificate":{"description":"Obtain a Hetzner Cloud managed TLS certificate.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst managedCert = new hcloud.ManagedCertificate(\"managed_cert\", {\n    name: \"managed_cert\",\n    domainNames: [\n        \"*.example.com\",\n        \"example.com\",\n    ],\n    labels: {\n        label_1: \"value_1\",\n        label_2: \"value_2\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nmanaged_cert = hcloud.ManagedCertificate(\"managed_cert\",\n    name=\"managed_cert\",\n    domain_names=[\n        \"*.example.com\",\n        \"example.com\",\n    ],\n    labels={\n        \"label_1\": \"value_1\",\n        \"label_2\": \"value_2\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var managedCert = new HCloud.ManagedCertificate(\"managed_cert\", new()\n    {\n        Name = \"managed_cert\",\n        DomainNames = new[]\n        {\n            \"*.example.com\",\n            \"example.com\",\n        },\n        Labels = \n        {\n            { \"label_1\", \"value_1\" },\n            { \"label_2\", \"value_2\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.NewManagedCertificate(ctx, \"managed_cert\", \u0026hcloud.ManagedCertificateArgs{\n\t\t\tName: pulumi.String(\"managed_cert\"),\n\t\t\tDomainNames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"*.example.com\"),\n\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label_1\": pulumi.String(\"value_1\"),\n\t\t\t\t\"label_2\": pulumi.String(\"value_2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.ManagedCertificate;\nimport com.pulumi.hcloud.ManagedCertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var managedCert = new ManagedCertificate(\"managedCert\", ManagedCertificateArgs.builder()\n            .name(\"managed_cert\")\n            .domainNames(            \n                \"*.example.com\",\n                \"example.com\")\n            .labels(Map.ofEntries(\n                Map.entry(\"label_1\", \"value_1\"),\n                Map.entry(\"label_2\", \"value_2\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  managedCert:\n    type: hcloud:ManagedCertificate\n    name: managed_cert\n    properties:\n      name: managed_cert\n      domainNames:\n        - '*.example.com'\n        - example.com\n      labels:\n        label_1: value_1\n        label_2: value_2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nManaged certificates can be imported using their \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e:\n\n```sh\n$ pulumi import hcloud:index/managedCertificate:ManagedCertificate example \"$CERTIFICATE_ID\"\n```\n\n","properties":{"certificate":{"type":"string","description":"(string) PEM encoded TLS certificate.\n"},"created":{"type":"string","description":"(string) Point in time when the Certificate was created at Hetzner Cloud (in ISO-8601 format).\n"},"domainNames":{"type":"array","items":{"type":"string"},"description":"Domain names for which a certificate\nshould be obtained.\n"},"fingerprint":{"type":"string","description":"(string) Fingerprint of the certificate.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) the\ncertificate should be created with.\n"},"name":{"type":"string","description":"Name of the Certificate.\n"},"notValidAfter":{"type":"string","description":"(string) Point in time when the Certificate stops being valid (in ISO-8601 format).\n"},"notValidBefore":{"type":"string","description":"(string) Point in time when the Certificate becomes valid (in ISO-8601 format).\n"},"type":{"type":"string"}},"required":["certificate","created","domainNames","fingerprint","name","notValidAfter","notValidBefore","type"],"inputProperties":{"domainNames":{"type":"array","items":{"type":"string"},"description":"Domain names for which a certificate\nshould be obtained.\n","willReplaceOnChanges":true},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) the\ncertificate should be created with.\n"},"name":{"type":"string","description":"Name of the Certificate.\n"}},"requiredInputs":["domainNames"],"stateInputs":{"description":"Input properties used for looking up and filtering ManagedCertificate resources.\n","properties":{"certificate":{"type":"string","description":"(string) PEM encoded TLS certificate.\n"},"created":{"type":"string","description":"(string) Point in time when the Certificate was created at Hetzner Cloud (in ISO-8601 format).\n"},"domainNames":{"type":"array","items":{"type":"string"},"description":"Domain names for which a certificate\nshould be obtained.\n","willReplaceOnChanges":true},"fingerprint":{"type":"string","description":"(string) Fingerprint of the certificate.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) the\ncertificate should be created with.\n"},"name":{"type":"string","description":"Name of the Certificate.\n"},"notValidAfter":{"type":"string","description":"(string) Point in time when the Certificate stops being valid (in ISO-8601 format).\n"},"notValidBefore":{"type":"string","description":"(string) Point in time when the Certificate becomes valid (in ISO-8601 format).\n"},"type":{"type":"string"}},"type":"object"}},"hcloud:index/network:Network":{"description":"Provides a Hetzner Cloud Network to represent a Network in the Hetzner Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst privNet = new hcloud.Network(\"privNet\", {\n    name: \"my-net\",\n    ipRange: \"10.0.1.0/24\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\npriv_net = hcloud.Network(\"privNet\",\n    name=\"my-net\",\n    ip_range=\"10.0.1.0/24\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var privNet = new HCloud.Network(\"privNet\", new()\n    {\n        Name = \"my-net\",\n        IpRange = \"10.0.1.0/24\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.NewNetwork(ctx, \"privNet\", \u0026hcloud.NetworkArgs{\n\t\t\tName:    pulumi.String(\"my-net\"),\n\t\t\tIpRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Network;\nimport com.pulumi.hcloud.NetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var privNet = new Network(\"privNet\", NetworkArgs.builder()\n            .name(\"my-net\")\n            .ipRange(\"10.0.1.0/24\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  privNet:\n    type: hcloud:Network\n    properties:\n      name: my-net\n      ipRange: 10.0.1.0/24\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworks can be imported using its \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e:\n\n```sh\n$ pulumi import hcloud:index/network:Network example \"$NETWORK_ID\"\n```\n\n","properties":{"deleteProtection":{"type":"boolean","description":"Enable or disable delete protection. See \"Delete Protection\" in the Provider Docs for details.\n"},"exposeRoutesToVswitch":{"type":"boolean","description":"Enable or disable exposing the routes to the vSwitch connection. The exposing only takes effect if a vSwitch connection is active.\n"},"ipRange":{"type":"string","description":"IP Range of the whole Network which must span all included subnets and route destinations. Must be one of the private ipv4 ranges of RFC1918.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"name":{"type":"string","description":"Name of the Network to create (must be unique per project).\n"}},"required":["ipRange","name"],"inputProperties":{"deleteProtection":{"type":"boolean","description":"Enable or disable delete protection. See \"Delete Protection\" in the Provider Docs for details.\n"},"exposeRoutesToVswitch":{"type":"boolean","description":"Enable or disable exposing the routes to the vSwitch connection. The exposing only takes effect if a vSwitch connection is active.\n"},"ipRange":{"type":"string","description":"IP Range of the whole Network which must span all included subnets and route destinations. Must be one of the private ipv4 ranges of RFC1918.\n","willReplaceOnChanges":true},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"name":{"type":"string","description":"Name of the Network to create (must be unique per project).\n"}},"requiredInputs":["ipRange"],"stateInputs":{"description":"Input properties used for looking up and filtering Network resources.\n","properties":{"deleteProtection":{"type":"boolean","description":"Enable or disable delete protection. See \"Delete Protection\" in the Provider Docs for details.\n"},"exposeRoutesToVswitch":{"type":"boolean","description":"Enable or disable exposing the routes to the vSwitch connection. The exposing only takes effect if a vSwitch connection is active.\n"},"ipRange":{"type":"string","description":"IP Range of the whole Network which must span all included subnets and route destinations. Must be one of the private ipv4 ranges of RFC1918.\n","willReplaceOnChanges":true},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"name":{"type":"string","description":"Name of the Network to create (must be unique per project).\n"}},"type":"object"}},"hcloud:index/networkRoute:NetworkRoute":{"description":"Provides a Hetzner Cloud Network Route to represent a Network route in the Hetzner Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst mynet = new hcloud.Network(\"mynet\", {\n    name: \"my-net\",\n    ipRange: \"10.0.0.0/8\",\n});\nconst privNet = new hcloud.NetworkRoute(\"privNet\", {\n    networkId: mynet.id,\n    destination: \"10.100.1.0/24\",\n    gateway: \"10.0.1.1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nmynet = hcloud.Network(\"mynet\",\n    name=\"my-net\",\n    ip_range=\"10.0.0.0/8\")\npriv_net = hcloud.NetworkRoute(\"privNet\",\n    network_id=mynet.id,\n    destination=\"10.100.1.0/24\",\n    gateway=\"10.0.1.1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mynet = new HCloud.Network(\"mynet\", new()\n    {\n        Name = \"my-net\",\n        IpRange = \"10.0.0.0/8\",\n    });\n\n    var privNet = new HCloud.NetworkRoute(\"privNet\", new()\n    {\n        NetworkId = mynet.Id,\n        Destination = \"10.100.1.0/24\",\n        Gateway = \"10.0.1.1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmynet, err := hcloud.NewNetwork(ctx, \"mynet\", \u0026hcloud.NetworkArgs{\n\t\t\tName:    pulumi.String(\"my-net\"),\n\t\t\tIpRange: pulumi.String(\"10.0.0.0/8\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewNetworkRoute(ctx, \"privNet\", \u0026hcloud.NetworkRouteArgs{\n\t\t\tNetworkId:   mynet.ID(),\n\t\t\tDestination: pulumi.String(\"10.100.1.0/24\"),\n\t\t\tGateway:     pulumi.String(\"10.0.1.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Network;\nimport com.pulumi.hcloud.NetworkArgs;\nimport com.pulumi.hcloud.NetworkRoute;\nimport com.pulumi.hcloud.NetworkRouteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var mynet = new Network(\"mynet\", NetworkArgs.builder()\n            .name(\"my-net\")\n            .ipRange(\"10.0.0.0/8\")\n            .build());\n\n        var privNet = new NetworkRoute(\"privNet\", NetworkRouteArgs.builder()\n            .networkId(mynet.id())\n            .destination(\"10.100.1.0/24\")\n            .gateway(\"10.0.1.1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mynet:\n    type: hcloud:Network\n    properties:\n      name: my-net\n      ipRange: 10.0.0.0/8\n  privNet:\n    type: hcloud:NetworkRoute\n    properties:\n      networkId: ${mynet.id}\n      destination: 10.100.1.0/24\n      gateway: 10.0.1.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetwork Route entries can be imported using a compound ID with the following format:\n`\u003cnetwork-id\u003e-\u003cdestination\u003e`\n\n```sh\n$ pulumi import hcloud:index/networkRoute:NetworkRoute example \"$NETWORK_ID-$DESTINATION\"\n```\n\n","properties":{"destination":{"type":"string","description":"Destination network or host of this route. Must be a subnet of the\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ip_range \u003c/span\u003eof the Network. Must not overlap with an existing\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ip_range \u003c/span\u003ein any subnets or with any destinations in other routes or with the first ip of the networks\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ip_range \u003c/span\u003eor with 172.31.1.1.\n"},"gateway":{"type":"string","description":"Gateway for the route. Cannot be the first ip of the networks\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ip_range \u003c/span\u003eand also cannot be 172.31.1.1 as this IP is being used as a gateway for the public network interface of servers.\n"},"networkId":{"type":"integer","description":"ID of the Network the route should be added to.\n"}},"required":["destination","gateway","networkId"],"inputProperties":{"destination":{"type":"string","description":"Destination network or host of this route. Must be a subnet of the\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ip_range \u003c/span\u003eof the Network. Must not overlap with an existing\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ip_range \u003c/span\u003ein any subnets or with any destinations in other routes or with the first ip of the networks\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ip_range \u003c/span\u003eor with 172.31.1.1.\n","willReplaceOnChanges":true},"gateway":{"type":"string","description":"Gateway for the route. Cannot be the first ip of the networks\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ip_range \u003c/span\u003eand also cannot be 172.31.1.1 as this IP is being used as a gateway for the public network interface of servers.\n","willReplaceOnChanges":true},"networkId":{"type":"integer","description":"ID of the Network the route should be added to.\n","willReplaceOnChanges":true}},"requiredInputs":["destination","gateway","networkId"],"stateInputs":{"description":"Input properties used for looking up and filtering NetworkRoute resources.\n","properties":{"destination":{"type":"string","description":"Destination network or host of this route. Must be a subnet of the\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ip_range \u003c/span\u003eof the Network. Must not overlap with an existing\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ip_range \u003c/span\u003ein any subnets or with any destinations in other routes or with the first ip of the networks\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ip_range \u003c/span\u003eor with 172.31.1.1.\n","willReplaceOnChanges":true},"gateway":{"type":"string","description":"Gateway for the route. Cannot be the first ip of the networks\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ip_range \u003c/span\u003eand also cannot be 172.31.1.1 as this IP is being used as a gateway for the public network interface of servers.\n","willReplaceOnChanges":true},"networkId":{"type":"integer","description":"ID of the Network the route should be added to.\n","willReplaceOnChanges":true}},"type":"object"}},"hcloud:index/networkSubnet:NetworkSubnet":{"description":"Provides a Hetzner Cloud Network Subnet to represent a Subnet in the Hetzner Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst mynet = new hcloud.Network(\"mynet\", {\n    name: \"my-net\",\n    ipRange: \"10.0.0.0/8\",\n});\nconst foonet = new hcloud.NetworkSubnet(\"foonet\", {\n    networkId: mynet.id,\n    type: \"cloud\",\n    networkZone: \"eu-central\",\n    ipRange: \"10.0.1.0/24\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nmynet = hcloud.Network(\"mynet\",\n    name=\"my-net\",\n    ip_range=\"10.0.0.0/8\")\nfoonet = hcloud.NetworkSubnet(\"foonet\",\n    network_id=mynet.id,\n    type=\"cloud\",\n    network_zone=\"eu-central\",\n    ip_range=\"10.0.1.0/24\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mynet = new HCloud.Network(\"mynet\", new()\n    {\n        Name = \"my-net\",\n        IpRange = \"10.0.0.0/8\",\n    });\n\n    var foonet = new HCloud.NetworkSubnet(\"foonet\", new()\n    {\n        NetworkId = mynet.Id,\n        Type = \"cloud\",\n        NetworkZone = \"eu-central\",\n        IpRange = \"10.0.1.0/24\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmynet, err := hcloud.NewNetwork(ctx, \"mynet\", \u0026hcloud.NetworkArgs{\n\t\t\tName:    pulumi.String(\"my-net\"),\n\t\t\tIpRange: pulumi.String(\"10.0.0.0/8\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewNetworkSubnet(ctx, \"foonet\", \u0026hcloud.NetworkSubnetArgs{\n\t\t\tNetworkId:   mynet.ID(),\n\t\t\tType:        pulumi.String(\"cloud\"),\n\t\t\tNetworkZone: pulumi.String(\"eu-central\"),\n\t\t\tIpRange:     pulumi.String(\"10.0.1.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Network;\nimport com.pulumi.hcloud.NetworkArgs;\nimport com.pulumi.hcloud.NetworkSubnet;\nimport com.pulumi.hcloud.NetworkSubnetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var mynet = new Network(\"mynet\", NetworkArgs.builder()\n            .name(\"my-net\")\n            .ipRange(\"10.0.0.0/8\")\n            .build());\n\n        var foonet = new NetworkSubnet(\"foonet\", NetworkSubnetArgs.builder()\n            .networkId(mynet.id())\n            .type(\"cloud\")\n            .networkZone(\"eu-central\")\n            .ipRange(\"10.0.1.0/24\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mynet:\n    type: hcloud:Network\n    properties:\n      name: my-net\n      ipRange: 10.0.0.0/8\n  foonet:\n    type: hcloud:NetworkSubnet\n    properties:\n      networkId: ${mynet.id}\n      type: cloud\n      networkZone: eu-central\n      ipRange: 10.0.1.0/24\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetwork Subnet entries can be imported using a compound ID with the following format:\n`\u003cnetwork-id\u003e-\u003cip_range\u003e`\n\n```sh\n$ pulumi import hcloud:index/networkSubnet:NetworkSubnet example \"$NETWORK_ID-$IP_RANGE\"\n```\n\n","properties":{"gateway":{"type":"string"},"ipRange":{"type":"string","description":"Range to allocate IPs from. Must be a subnet of the\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ip_range \u003c/span\u003eof the Network and must not overlap with any other subnets or with any destinations in routes.\n"},"networkId":{"type":"integer","description":"ID of the Network the subnet should be added to.\n"},"networkZone":{"type":"string","description":"Name of network zone.\n"},"type":{"type":"string","description":"Type of subnet. \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\"\u003e`cloud`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vswitch`\" pulumi-lang-dotnet=\"`Vswitch`\" pulumi-lang-go=\"`vswitch`\" pulumi-lang-python=\"`vswitch`\" pulumi-lang-yaml=\"`vswitch`\" pulumi-lang-java=\"`vswitch`\"\u003e`vswitch`\u003c/span\u003e\n"},"vswitchId":{"type":"integer","description":"ID of the vswitch, Required if type is \u003cspan pulumi-lang-nodejs=\"`vswitch`\" pulumi-lang-dotnet=\"`Vswitch`\" pulumi-lang-go=\"`vswitch`\" pulumi-lang-python=\"`vswitch`\" pulumi-lang-yaml=\"`vswitch`\" pulumi-lang-java=\"`vswitch`\"\u003e`vswitch`\u003c/span\u003e\n"}},"required":["gateway","ipRange","networkId","networkZone","type"],"inputProperties":{"ipRange":{"type":"string","description":"Range to allocate IPs from. Must be a subnet of the\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ip_range \u003c/span\u003eof the Network and must not overlap with any other subnets or with any destinations in routes.\n","willReplaceOnChanges":true},"networkId":{"type":"integer","description":"ID of the Network the subnet should be added to.\n","willReplaceOnChanges":true},"networkZone":{"type":"string","description":"Name of network zone.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"Type of subnet. \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\"\u003e`cloud`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vswitch`\" pulumi-lang-dotnet=\"`Vswitch`\" pulumi-lang-go=\"`vswitch`\" pulumi-lang-python=\"`vswitch`\" pulumi-lang-yaml=\"`vswitch`\" pulumi-lang-java=\"`vswitch`\"\u003e`vswitch`\u003c/span\u003e\n","willReplaceOnChanges":true},"vswitchId":{"type":"integer","description":"ID of the vswitch, Required if type is \u003cspan pulumi-lang-nodejs=\"`vswitch`\" pulumi-lang-dotnet=\"`Vswitch`\" pulumi-lang-go=\"`vswitch`\" pulumi-lang-python=\"`vswitch`\" pulumi-lang-yaml=\"`vswitch`\" pulumi-lang-java=\"`vswitch`\"\u003e`vswitch`\u003c/span\u003e\n","willReplaceOnChanges":true}},"requiredInputs":["ipRange","networkId","networkZone","type"],"stateInputs":{"description":"Input properties used for looking up and filtering NetworkSubnet resources.\n","properties":{"gateway":{"type":"string"},"ipRange":{"type":"string","description":"Range to allocate IPs from. Must be a subnet of the\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ip_range \u003c/span\u003eof the Network and must not overlap with any other subnets or with any destinations in routes.\n","willReplaceOnChanges":true},"networkId":{"type":"integer","description":"ID of the Network the subnet should be added to.\n","willReplaceOnChanges":true},"networkZone":{"type":"string","description":"Name of network zone.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"Type of subnet. \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\"\u003e`cloud`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vswitch`\" pulumi-lang-dotnet=\"`Vswitch`\" pulumi-lang-go=\"`vswitch`\" pulumi-lang-python=\"`vswitch`\" pulumi-lang-yaml=\"`vswitch`\" pulumi-lang-java=\"`vswitch`\"\u003e`vswitch`\u003c/span\u003e\n","willReplaceOnChanges":true},"vswitchId":{"type":"integer","description":"ID of the vswitch, Required if type is \u003cspan pulumi-lang-nodejs=\"`vswitch`\" pulumi-lang-dotnet=\"`Vswitch`\" pulumi-lang-go=\"`vswitch`\" pulumi-lang-python=\"`vswitch`\" pulumi-lang-yaml=\"`vswitch`\" pulumi-lang-java=\"`vswitch`\"\u003e`vswitch`\u003c/span\u003e\n","willReplaceOnChanges":true}},"type":"object"}},"hcloud:index/placementGroup:PlacementGroup":{"description":"Provides a Hetzner Cloud Placement Group to represent a Placement Group in the Hetzner Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst my_placement_group = new hcloud.PlacementGroup(\"my-placement-group\", {\n    name: \"my-placement-group\",\n    type: \"spread\",\n    labels: {\n        key: \"value\",\n    },\n});\nconst node1 = new hcloud.Server(\"node1\", {\n    name: \"node1\",\n    image: \"debian-12\",\n    serverType: \"cx23\",\n    placementGroupId: my_placement_group.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nmy_placement_group = hcloud.PlacementGroup(\"my-placement-group\",\n    name=\"my-placement-group\",\n    type=\"spread\",\n    labels={\n        \"key\": \"value\",\n    })\nnode1 = hcloud.Server(\"node1\",\n    name=\"node1\",\n    image=\"debian-12\",\n    server_type=\"cx23\",\n    placement_group_id=my_placement_group.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var my_placement_group = new HCloud.PlacementGroup(\"my-placement-group\", new()\n    {\n        Name = \"my-placement-group\",\n        Type = \"spread\",\n        Labels = \n        {\n            { \"key\", \"value\" },\n        },\n    });\n\n    var node1 = new HCloud.Server(\"node1\", new()\n    {\n        Name = \"node1\",\n        Image = \"debian-12\",\n        ServerType = \"cx23\",\n        PlacementGroupId = my_placement_group.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmy_placement_group, err := hcloud.NewPlacementGroup(ctx, \"my-placement-group\", \u0026hcloud.PlacementGroupArgs{\n\t\t\tName: pulumi.String(\"my-placement-group\"),\n\t\t\tType: pulumi.String(\"spread\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewServer(ctx, \"node1\", \u0026hcloud.ServerArgs{\n\t\t\tName:             pulumi.String(\"node1\"),\n\t\t\tImage:            pulumi.String(\"debian-12\"),\n\t\t\tServerType:       pulumi.String(\"cx23\"),\n\t\t\tPlacementGroupId: my_placement_group.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.PlacementGroup;\nimport com.pulumi.hcloud.PlacementGroupArgs;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_placement_group = new PlacementGroup(\"my-placement-group\", PlacementGroupArgs.builder()\n            .name(\"my-placement-group\")\n            .type(\"spread\")\n            .labels(Map.of(\"key\", \"value\"))\n            .build());\n\n        var node1 = new Server(\"node1\", ServerArgs.builder()\n            .name(\"node1\")\n            .image(\"debian-12\")\n            .serverType(\"cx23\")\n            .placementGroupId(my_placement_group.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-placement-group:\n    type: hcloud:PlacementGroup\n    properties:\n      name: my-placement-group\n      type: spread\n      labels:\n        key: value\n  node1:\n    type: hcloud:Server\n    properties:\n      name: node1\n      image: debian-12\n      serverType: cx23\n      placementGroupId: ${[\"my-placement-group\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPlacement Groups can be imported using its \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e:\n\n```sh\n$ pulumi import hcloud:index/placementGroup:PlacementGroup example \"$PLACEMENT_GROUP_ID\"\n```\n\n","properties":{"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"name":{"type":"string","description":"Name of the Placement Group.\n"},"servers":{"type":"array","items":{"type":"integer"}},"type":{"type":"string","description":"Type of the Placement Group.\n"}},"required":["name","servers","type"],"inputProperties":{"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"name":{"type":"string","description":"Name of the Placement Group.\n"},"type":{"type":"string","description":"Type of the Placement Group.\n"}},"requiredInputs":["type"],"stateInputs":{"description":"Input properties used for looking up and filtering PlacementGroup resources.\n","properties":{"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"name":{"type":"string","description":"Name of the Placement Group.\n"},"servers":{"type":"array","items":{"type":"integer"}},"type":{"type":"string","description":"Type of the Placement Group.\n"}},"type":"object"}},"hcloud:index/primaryIp:PrimaryIp":{"description":"Provides a Hetzner Cloud Primary IP to represent a publicly-accessible static IP address that can be mapped to one of your servers.\n\nIf a server is getting created, it has to have a primary ip. If a server is getting created without defining primary ips, two of them (one ipv4 and one ipv6) getting created \u0026 attached.\nCurrently, Primary IPs can be only attached to servers.\n\n## Deprecations\n\n### \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e attribute\n\nThe \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e attribute is deprecated, use the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e attribute instead.\n\nSee our the [API changelog](https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters) for more details.\n\n\u003e Please upgrade to `v1.58.0+` of the provider to avoid issues once the Hetzner Cloud API no longer accepts\nand returns the \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e attribute. This version of the provider remains backward compatible by preserving\nthe \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e value in the state and by extracting the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e name from the \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e attribute when\ncommunicating with the API.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst main = new hcloud.PrimaryIp(\"main\", {\n    name: \"primary_ip_test\",\n    datacenter: \"fsn1-dc14\",\n    type: \"ipv4\",\n    assigneeType: \"server\",\n    autoDelete: true,\n    labels: {\n        hallo: \"welt\",\n    },\n});\n// Link a server to a primary IP\nconst serverTest = new hcloud.Server(\"server_test\", {\n    name: \"test-server\",\n    image: \"ubuntu-24.04\",\n    serverType: \"cx23\",\n    datacenter: \"fsn1-dc14\",\n    labels: {\n        test: \"tessst1\",\n    },\n    publicNets: [{\n        ipv4: main.id,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nmain = hcloud.PrimaryIp(\"main\",\n    name=\"primary_ip_test\",\n    datacenter=\"fsn1-dc14\",\n    type=\"ipv4\",\n    assignee_type=\"server\",\n    auto_delete=True,\n    labels={\n        \"hallo\": \"welt\",\n    })\n# Link a server to a primary IP\nserver_test = hcloud.Server(\"server_test\",\n    name=\"test-server\",\n    image=\"ubuntu-24.04\",\n    server_type=\"cx23\",\n    datacenter=\"fsn1-dc14\",\n    labels={\n        \"test\": \"tessst1\",\n    },\n    public_nets=[{\n        \"ipv4\": main.id,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new HCloud.PrimaryIp(\"main\", new()\n    {\n        Name = \"primary_ip_test\",\n        Datacenter = \"fsn1-dc14\",\n        Type = \"ipv4\",\n        AssigneeType = \"server\",\n        AutoDelete = true,\n        Labels = \n        {\n            { \"hallo\", \"welt\" },\n        },\n    });\n\n    // Link a server to a primary IP\n    var serverTest = new HCloud.Server(\"server_test\", new()\n    {\n        Name = \"test-server\",\n        Image = \"ubuntu-24.04\",\n        ServerType = \"cx23\",\n        Datacenter = \"fsn1-dc14\",\n        Labels = \n        {\n            { \"test\", \"tessst1\" },\n        },\n        PublicNets = new[]\n        {\n            new HCloud.Inputs.ServerPublicNetArgs\n            {\n                Ipv4 = main.Id,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := hcloud.NewPrimaryIp(ctx, \"main\", \u0026hcloud.PrimaryIpArgs{\n\t\t\tName:         pulumi.String(\"primary_ip_test\"),\n\t\t\tDatacenter:   pulumi.String(\"fsn1-dc14\"),\n\t\t\tType:         pulumi.String(\"ipv4\"),\n\t\t\tAssigneeType: pulumi.String(\"server\"),\n\t\t\tAutoDelete:   pulumi.Bool(true),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"hallo\": pulumi.String(\"welt\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Link a server to a primary IP\n\t\t_, err = hcloud.NewServer(ctx, \"server_test\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"test-server\"),\n\t\t\tImage:      pulumi.String(\"ubuntu-24.04\"),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t\tDatacenter: pulumi.String(\"fsn1-dc14\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"test\": pulumi.String(\"tessst1\"),\n\t\t\t},\n\t\t\tPublicNets: hcloud.ServerPublicNetArray{\n\t\t\t\t\u0026hcloud.ServerPublicNetArgs{\n\t\t\t\t\tIpv4: main.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.PrimaryIp;\nimport com.pulumi.hcloud.PrimaryIpArgs;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.inputs.ServerPublicNetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var main = new PrimaryIp(\"main\", PrimaryIpArgs.builder()\n            .name(\"primary_ip_test\")\n            .datacenter(\"fsn1-dc14\")\n            .type(\"ipv4\")\n            .assigneeType(\"server\")\n            .autoDelete(true)\n            .labels(Map.of(\"hallo\", \"welt\"))\n            .build());\n\n        // Link a server to a primary IP\n        var serverTest = new Server(\"serverTest\", ServerArgs.builder()\n            .name(\"test-server\")\n            .image(\"ubuntu-24.04\")\n            .serverType(\"cx23\")\n            .datacenter(\"fsn1-dc14\")\n            .labels(Map.of(\"test\", \"tessst1\"))\n            .publicNets(ServerPublicNetArgs.builder()\n                .ipv4(main.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: hcloud:PrimaryIp\n    properties:\n      name: primary_ip_test\n      datacenter: fsn1-dc14\n      type: ipv4\n      assigneeType: server\n      autoDelete: true\n      labels:\n        hallo: welt\n  # Link a server to a primary IP\n  serverTest:\n    type: hcloud:Server\n    name: server_test\n    properties:\n      name: test-server\n      image: ubuntu-24.04\n      serverType: cx23\n      datacenter: fsn1-dc14\n      labels:\n        test: tessst1\n      publicNets:\n        - ipv4: ${main.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPrimary IPs can be imported using its \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e:\n\n```sh\n$ pulumi import hcloud:index/primaryIp:PrimaryIp example \"$PRIMARY_IP_ID\"\n```\n\n","properties":{"assigneeId":{"type":"integer","description":"ID of the assigned resource.\n"},"assigneeType":{"type":"string","description":"The type of the assigned resource. Currently supported: \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e\n"},"autoDelete":{"type":"boolean","description":"Whether auto delete is enabled.\n`Important note:`It is recommended to set \u003cspan pulumi-lang-nodejs=\"`autoDelete`\" pulumi-lang-dotnet=\"`AutoDelete`\" pulumi-lang-go=\"`autoDelete`\" pulumi-lang-python=\"`auto_delete`\" pulumi-lang-yaml=\"`autoDelete`\" pulumi-lang-java=\"`autoDelete`\"\u003e`auto_delete`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, because if a server assigned to the managed ip is getting deleted, it will also delete the primary IP which will break the TF state.\n"},"datacenter":{"type":"string","description":"The datacenter name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.\n","deprecationMessage":"The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters."},"deleteProtection":{"type":"boolean","description":"Whether delete protection is enabled. See \"Delete Protection\" in the Provider Docs for details.\n\nNote: At least one of \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`assigneeId`\" pulumi-lang-dotnet=\"`AssigneeId`\" pulumi-lang-go=\"`assigneeId`\" pulumi-lang-python=\"`assignee_id`\" pulumi-lang-yaml=\"`assigneeId`\" pulumi-lang-java=\"`assigneeId`\"\u003e`assignee_id`\u003c/span\u003e is required.\n"},"ipAddress":{"type":"string","description":"(string) IP Address of the Primary IP.\n"},"ipNetwork":{"type":"string","description":"(string) IPv6 subnet of the Primary IP for IPv6 addresses. (Only set if \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e)\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs).\n"},"location":{"type":"string","description":"The location name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n"},"name":{"type":"string","description":"Name of the Primary IP.\n"},"type":{"type":"string","description":"Type of the Primary IP. \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e\n"}},"required":["assigneeId","assigneeType","autoDelete","datacenter","ipAddress","ipNetwork","location","name","type"],"inputProperties":{"assigneeId":{"type":"integer","description":"ID of the assigned resource.\n"},"assigneeType":{"type":"string","description":"The type of the assigned resource. Currently supported: \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e\n"},"autoDelete":{"type":"boolean","description":"Whether auto delete is enabled.\n`Important note:`It is recommended to set \u003cspan pulumi-lang-nodejs=\"`autoDelete`\" pulumi-lang-dotnet=\"`AutoDelete`\" pulumi-lang-go=\"`autoDelete`\" pulumi-lang-python=\"`auto_delete`\" pulumi-lang-yaml=\"`autoDelete`\" pulumi-lang-java=\"`autoDelete`\"\u003e`auto_delete`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, because if a server assigned to the managed ip is getting deleted, it will also delete the primary IP which will break the TF state.\n"},"datacenter":{"type":"string","description":"The datacenter name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.\n","deprecationMessage":"The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.","willReplaceOnChanges":true},"deleteProtection":{"type":"boolean","description":"Whether delete protection is enabled. See \"Delete Protection\" in the Provider Docs for details.\n\nNote: At least one of \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`assigneeId`\" pulumi-lang-dotnet=\"`AssigneeId`\" pulumi-lang-go=\"`assigneeId`\" pulumi-lang-python=\"`assignee_id`\" pulumi-lang-yaml=\"`assigneeId`\" pulumi-lang-java=\"`assigneeId`\"\u003e`assignee_id`\u003c/span\u003e is required.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs).\n"},"location":{"type":"string","description":"The location name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Name of the Primary IP.\n"},"type":{"type":"string","description":"Type of the Primary IP. \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e\n","willReplaceOnChanges":true}},"requiredInputs":["assigneeType","autoDelete","type"],"stateInputs":{"description":"Input properties used for looking up and filtering PrimaryIp resources.\n","properties":{"assigneeId":{"type":"integer","description":"ID of the assigned resource.\n"},"assigneeType":{"type":"string","description":"The type of the assigned resource. Currently supported: \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e\n"},"autoDelete":{"type":"boolean","description":"Whether auto delete is enabled.\n`Important note:`It is recommended to set \u003cspan pulumi-lang-nodejs=\"`autoDelete`\" pulumi-lang-dotnet=\"`AutoDelete`\" pulumi-lang-go=\"`autoDelete`\" pulumi-lang-python=\"`auto_delete`\" pulumi-lang-yaml=\"`autoDelete`\" pulumi-lang-java=\"`autoDelete`\"\u003e`auto_delete`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, because if a server assigned to the managed ip is getting deleted, it will also delete the primary IP which will break the TF state.\n"},"datacenter":{"type":"string","description":"The datacenter name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.\n","deprecationMessage":"The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.","willReplaceOnChanges":true},"deleteProtection":{"type":"boolean","description":"Whether delete protection is enabled. See \"Delete Protection\" in the Provider Docs for details.\n\nNote: At least one of \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`assigneeId`\" pulumi-lang-dotnet=\"`AssigneeId`\" pulumi-lang-go=\"`assigneeId`\" pulumi-lang-python=\"`assignee_id`\" pulumi-lang-yaml=\"`assigneeId`\" pulumi-lang-java=\"`assigneeId`\"\u003e`assignee_id`\u003c/span\u003e is required.\n"},"ipAddress":{"type":"string","description":"(string) IP Address of the Primary IP.\n"},"ipNetwork":{"type":"string","description":"(string) IPv6 subnet of the Primary IP for IPv6 addresses. (Only set if \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e)\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs).\n"},"location":{"type":"string","description":"The location name to create the resource in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Name of the Primary IP.\n"},"type":{"type":"string","description":"Type of the Primary IP. \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e\n","willReplaceOnChanges":true}},"type":"object"}},"hcloud:index/rdns:Rdns":{"description":"Provides a Hetzner Cloud Reverse DNS Entry to create, modify and reset reverse dns entries for Hetzner Cloud Servers, Primary IPs, Floating IPs or Load Balancers.\n\n## Example Usage\n\nFor servers:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst node1 = new hcloud.Server(\"node1\", {\n    name: \"node1\",\n    image: \"debian-12\",\n    serverType: \"cx23\",\n});\nconst master = new hcloud.Rdns(\"master\", {\n    serverId: node1.id,\n    ipAddress: node1.ipv4Address,\n    dnsPtr: \"example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nnode1 = hcloud.Server(\"node1\",\n    name=\"node1\",\n    image=\"debian-12\",\n    server_type=\"cx23\")\nmaster = hcloud.Rdns(\"master\",\n    server_id=node1.id,\n    ip_address=node1.ipv4_address,\n    dns_ptr=\"example.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var node1 = new HCloud.Server(\"node1\", new()\n    {\n        Name = \"node1\",\n        Image = \"debian-12\",\n        ServerType = \"cx23\",\n    });\n\n    var master = new HCloud.Rdns(\"master\", new()\n    {\n        ServerId = node1.Id,\n        IpAddress = node1.Ipv4Address,\n        DnsPtr = \"example.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnode1, err := hcloud.NewServer(ctx, \"node1\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"node1\"),\n\t\t\tImage:      pulumi.String(\"debian-12\"),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewRdns(ctx, \"master\", \u0026hcloud.RdnsArgs{\n\t\t\tServerId:  node1.ID(),\n\t\t\tIpAddress: node1.Ipv4Address,\n\t\t\tDnsPtr:    pulumi.String(\"example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.Rdns;\nimport com.pulumi.hcloud.RdnsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var node1 = new Server(\"node1\", ServerArgs.builder()\n            .name(\"node1\")\n            .image(\"debian-12\")\n            .serverType(\"cx23\")\n            .build());\n\n        var master = new Rdns(\"master\", RdnsArgs.builder()\n            .serverId(node1.id())\n            .ipAddress(node1.ipv4Address())\n            .dnsPtr(\"example.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  node1:\n    type: hcloud:Server\n    properties:\n      name: node1\n      image: debian-12\n      serverType: cx23\n  master:\n    type: hcloud:Rdns\n    properties:\n      serverId: ${node1.id}\n      ipAddress: ${node1.ipv4Address}\n      dnsPtr: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nFor Primary IPs:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst primary1 = new hcloud.PrimaryIp(\"primary1\", {\n    datacenter: \"nbg1-dc3\",\n    type: \"ipv4\",\n});\nconst primary1Rdns = new hcloud.Rdns(\"primary1\", {\n    primaryIpId: primary1.id,\n    ipAddress: primary1.ipAddress,\n    dnsPtr: \"example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nprimary1 = hcloud.PrimaryIp(\"primary1\",\n    datacenter=\"nbg1-dc3\",\n    type=\"ipv4\")\nprimary1_rdns = hcloud.Rdns(\"primary1\",\n    primary_ip_id=primary1.id,\n    ip_address=primary1.ip_address,\n    dns_ptr=\"example.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var primary1 = new HCloud.PrimaryIp(\"primary1\", new()\n    {\n        Datacenter = \"nbg1-dc3\",\n        Type = \"ipv4\",\n    });\n\n    var primary1Rdns = new HCloud.Rdns(\"primary1\", new()\n    {\n        PrimaryIpId = primary1.Id,\n        IpAddress = primary1.IpAddress,\n        DnsPtr = \"example.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary1, err := hcloud.NewPrimaryIp(ctx, \"primary1\", \u0026hcloud.PrimaryIpArgs{\n\t\t\tDatacenter: pulumi.String(\"nbg1-dc3\"),\n\t\t\tType:       pulumi.String(\"ipv4\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewRdns(ctx, \"primary1\", \u0026hcloud.RdnsArgs{\n\t\t\tPrimaryIpId: primary1.ID(),\n\t\t\tIpAddress:   primary1.IpAddress,\n\t\t\tDnsPtr:      pulumi.String(\"example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.PrimaryIp;\nimport com.pulumi.hcloud.PrimaryIpArgs;\nimport com.pulumi.hcloud.Rdns;\nimport com.pulumi.hcloud.RdnsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var primary1 = new PrimaryIp(\"primary1\", PrimaryIpArgs.builder()\n            .datacenter(\"nbg1-dc3\")\n            .type(\"ipv4\")\n            .build());\n\n        var primary1Rdns = new Rdns(\"primary1Rdns\", RdnsArgs.builder()\n            .primaryIpId(primary1.id())\n            .ipAddress(primary1.ipAddress())\n            .dnsPtr(\"example.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  primary1:\n    type: hcloud:PrimaryIp\n    properties:\n      datacenter: nbg1-dc3\n      type: ipv4\n  primary1Rdns:\n    type: hcloud:Rdns\n    name: primary1\n    properties:\n      primaryIpId: ${primary1.id}\n      ipAddress: ${primary1.ipAddress}\n      dnsPtr: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nFor Floating IPs:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst floating1 = new hcloud.FloatingIp(\"floating1\", {\n    homeLocation: \"nbg1\",\n    type: \"ipv4\",\n});\nconst floatingMaster = new hcloud.Rdns(\"floating_master\", {\n    floatingIpId: floating1.id,\n    ipAddress: floating1.ipAddress,\n    dnsPtr: \"example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nfloating1 = hcloud.FloatingIp(\"floating1\",\n    home_location=\"nbg1\",\n    type=\"ipv4\")\nfloating_master = hcloud.Rdns(\"floating_master\",\n    floating_ip_id=floating1.id,\n    ip_address=floating1.ip_address,\n    dns_ptr=\"example.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var floating1 = new HCloud.FloatingIp(\"floating1\", new()\n    {\n        HomeLocation = \"nbg1\",\n        Type = \"ipv4\",\n    });\n\n    var floatingMaster = new HCloud.Rdns(\"floating_master\", new()\n    {\n        FloatingIpId = floating1.Id,\n        IpAddress = floating1.IpAddress,\n        DnsPtr = \"example.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfloating1, err := hcloud.NewFloatingIp(ctx, \"floating1\", \u0026hcloud.FloatingIpArgs{\n\t\t\tHomeLocation: pulumi.String(\"nbg1\"),\n\t\t\tType:         pulumi.String(\"ipv4\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewRdns(ctx, \"floating_master\", \u0026hcloud.RdnsArgs{\n\t\t\tFloatingIpId: floating1.ID(),\n\t\t\tIpAddress:    floating1.IpAddress,\n\t\t\tDnsPtr:       pulumi.String(\"example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.FloatingIp;\nimport com.pulumi.hcloud.FloatingIpArgs;\nimport com.pulumi.hcloud.Rdns;\nimport com.pulumi.hcloud.RdnsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var floating1 = new FloatingIp(\"floating1\", FloatingIpArgs.builder()\n            .homeLocation(\"nbg1\")\n            .type(\"ipv4\")\n            .build());\n\n        var floatingMaster = new Rdns(\"floatingMaster\", RdnsArgs.builder()\n            .floatingIpId(floating1.id())\n            .ipAddress(floating1.ipAddress())\n            .dnsPtr(\"example.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  floating1:\n    type: hcloud:FloatingIp\n    properties:\n      homeLocation: nbg1\n      type: ipv4\n  floatingMaster:\n    type: hcloud:Rdns\n    name: floating_master\n    properties:\n      floatingIpId: ${floating1.id}\n      ipAddress: ${floating1.ipAddress}\n      dnsPtr: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nFor Load Balancers:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst loadBalancer1 = new hcloud.LoadBalancer(\"load_balancer1\", {\n    name: \"load_balancer1\",\n    loadBalancerType: \"lb11\",\n    location: \"fsn1\",\n});\nconst loadBalancerMaster = new hcloud.Rdns(\"load_balancer_master\", {\n    loadBalancerId: loadBalancer1.id,\n    ipAddress: loadBalancer1.ipv4,\n    dnsPtr: \"example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nload_balancer1 = hcloud.LoadBalancer(\"load_balancer1\",\n    name=\"load_balancer1\",\n    load_balancer_type=\"lb11\",\n    location=\"fsn1\")\nload_balancer_master = hcloud.Rdns(\"load_balancer_master\",\n    load_balancer_id=load_balancer1.id,\n    ip_address=load_balancer1.ipv4,\n    dns_ptr=\"example.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var loadBalancer1 = new HCloud.LoadBalancer(\"load_balancer1\", new()\n    {\n        Name = \"load_balancer1\",\n        LoadBalancerType = \"lb11\",\n        Location = \"fsn1\",\n    });\n\n    var loadBalancerMaster = new HCloud.Rdns(\"load_balancer_master\", new()\n    {\n        LoadBalancerId = loadBalancer1.Id,\n        IpAddress = loadBalancer1.Ipv4,\n        DnsPtr = \"example.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tloadBalancer1, err := hcloud.NewLoadBalancer(ctx, \"load_balancer1\", \u0026hcloud.LoadBalancerArgs{\n\t\t\tName:             pulumi.String(\"load_balancer1\"),\n\t\t\tLoadBalancerType: pulumi.String(\"lb11\"),\n\t\t\tLocation:         pulumi.String(\"fsn1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewRdns(ctx, \"load_balancer_master\", \u0026hcloud.RdnsArgs{\n\t\t\tLoadBalancerId: loadBalancer1.ID(),\n\t\t\tIpAddress:      loadBalancer1.Ipv4,\n\t\t\tDnsPtr:         pulumi.String(\"example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.LoadBalancer;\nimport com.pulumi.hcloud.LoadBalancerArgs;\nimport com.pulumi.hcloud.Rdns;\nimport com.pulumi.hcloud.RdnsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var loadBalancer1 = new LoadBalancer(\"loadBalancer1\", LoadBalancerArgs.builder()\n            .name(\"load_balancer1\")\n            .loadBalancerType(\"lb11\")\n            .location(\"fsn1\")\n            .build());\n\n        var loadBalancerMaster = new Rdns(\"loadBalancerMaster\", RdnsArgs.builder()\n            .loadBalancerId(loadBalancer1.id())\n            .ipAddress(loadBalancer1.ipv4())\n            .dnsPtr(\"example.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  loadBalancer1:\n    type: hcloud:LoadBalancer\n    name: load_balancer1\n    properties:\n      name: load_balancer1\n      loadBalancerType: lb11\n      location: fsn1\n  loadBalancerMaster:\n    type: hcloud:Rdns\n    name: load_balancer_master\n    properties:\n      loadBalancerId: ${loadBalancer1.id}\n      ipAddress: ${loadBalancer1.ipv4}\n      dnsPtr: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nReverse DNS entries can be imported using a compound ID with the following format:\n`\u003cprefix (s for server/ f for floating ip / l for load balancer)\u003e-\u003cserver, floating ip or load balancer ID\u003e-\u003cIP address\u003e`\n\n```sh\n$ pulumi import hcloud:index/rdns:Rdns example \"$PREFIX-$ID-$IP\"\n```\n\nimport reverse dns entry on server with id 123, ip 192.168.100.1\n\n```sh\n$ pulumi import hcloud:index/rdns:Rdns myrdns s-123-192.168.100.1\n```\n\nimport reverse dns entry on primary ip with id 123, ip 2001:db8::1\n\n```sh\n$ pulumi import hcloud:index/rdns:Rdns myrdns p-123-2001:db8::1\n```\n\nimport reverse dns entry on floating ip with id 123, ip 2001:db8::1\n\n```sh\n$ pulumi import hcloud:index/rdns:Rdns myrdns f-123-2001:db8::1\n```\n\nimport reverse dns entry on load balancer with id 123, ip 2001:db8::1\n\n```sh\n$ pulumi import hcloud:index/rdns:Rdns myrdns l-123-2001:db8::1\n```\n\n","properties":{"dnsPtr":{"type":"string","description":"The DNS address the \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\"\u003e`ip_address`\u003c/span\u003e should resolve to.\n"},"floatingIpId":{"type":"integer","description":"The Floating IP the \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\"\u003e`ip_address`\u003c/span\u003e belongs to.\n"},"ipAddress":{"type":"string","description":"The IP address that should point to \u003cspan pulumi-lang-nodejs=\"`dnsPtr`\" pulumi-lang-dotnet=\"`DnsPtr`\" pulumi-lang-go=\"`dnsPtr`\" pulumi-lang-python=\"`dns_ptr`\" pulumi-lang-yaml=\"`dnsPtr`\" pulumi-lang-java=\"`dnsPtr`\"\u003e`dns_ptr`\u003c/span\u003e.\n"},"loadBalancerId":{"type":"integer","description":"The Load Balancer the \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\"\u003e`ip_address`\u003c/span\u003e belongs to.\n"},"primaryIpId":{"type":"integer","description":"The Primary IP the \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\"\u003e`ip_address`\u003c/span\u003e belongs to.\n"},"serverId":{"type":"integer","description":"The server the \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\"\u003e`ip_address`\u003c/span\u003e belongs to.\n"}},"required":["dnsPtr","ipAddress"],"inputProperties":{"dnsPtr":{"type":"string","description":"The DNS address the \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\"\u003e`ip_address`\u003c/span\u003e should resolve to.\n"},"floatingIpId":{"type":"integer","description":"The Floating IP the \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\"\u003e`ip_address`\u003c/span\u003e belongs to.\n","willReplaceOnChanges":true},"ipAddress":{"type":"string","description":"The IP address that should point to \u003cspan pulumi-lang-nodejs=\"`dnsPtr`\" pulumi-lang-dotnet=\"`DnsPtr`\" pulumi-lang-go=\"`dnsPtr`\" pulumi-lang-python=\"`dns_ptr`\" pulumi-lang-yaml=\"`dnsPtr`\" pulumi-lang-java=\"`dnsPtr`\"\u003e`dns_ptr`\u003c/span\u003e.\n","willReplaceOnChanges":true},"loadBalancerId":{"type":"integer","description":"The Load Balancer the \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\"\u003e`ip_address`\u003c/span\u003e belongs to.\n","willReplaceOnChanges":true},"primaryIpId":{"type":"integer","description":"The Primary IP the \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\"\u003e`ip_address`\u003c/span\u003e belongs to.\n","willReplaceOnChanges":true},"serverId":{"type":"integer","description":"The server the \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\"\u003e`ip_address`\u003c/span\u003e belongs to.\n","willReplaceOnChanges":true}},"requiredInputs":["dnsPtr","ipAddress"],"stateInputs":{"description":"Input properties used for looking up and filtering Rdns resources.\n","properties":{"dnsPtr":{"type":"string","description":"The DNS address the \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\"\u003e`ip_address`\u003c/span\u003e should resolve to.\n"},"floatingIpId":{"type":"integer","description":"The Floating IP the \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\"\u003e`ip_address`\u003c/span\u003e belongs to.\n","willReplaceOnChanges":true},"ipAddress":{"type":"string","description":"The IP address that should point to \u003cspan pulumi-lang-nodejs=\"`dnsPtr`\" pulumi-lang-dotnet=\"`DnsPtr`\" pulumi-lang-go=\"`dnsPtr`\" pulumi-lang-python=\"`dns_ptr`\" pulumi-lang-yaml=\"`dnsPtr`\" pulumi-lang-java=\"`dnsPtr`\"\u003e`dns_ptr`\u003c/span\u003e.\n","willReplaceOnChanges":true},"loadBalancerId":{"type":"integer","description":"The Load Balancer the \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\"\u003e`ip_address`\u003c/span\u003e belongs to.\n","willReplaceOnChanges":true},"primaryIpId":{"type":"integer","description":"The Primary IP the \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\"\u003e`ip_address`\u003c/span\u003e belongs to.\n","willReplaceOnChanges":true},"serverId":{"type":"integer","description":"The server the \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\"\u003e`ip_address`\u003c/span\u003e belongs to.\n","willReplaceOnChanges":true}},"type":"object"}},"hcloud:index/server:Server":{"description":"Provides an Hetzner Cloud server resource. This can be used to create, modify, and delete servers. Servers also support provisioning.\n\n## Deprecations\n\n### \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e attribute\n\nThe \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e attribute is deprecated, use the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e attribute instead.\n\nSee our the [API changelog](https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters) for more details.\n\n\u003e Please upgrade to `v1.58.0+` of the provider to avoid issues once the Hetzner Cloud API no longer accepts\nand returns the \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e attribute. This version of the provider remains backward compatible by preserving\nthe \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e value in the state and by extracting the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e name from the \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e attribute when\ncommunicating with the API.\n\n## Example Usage\n\n### Basic server creation\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\n// Create a new server running debian\nconst node1 = new hcloud.Server(\"node1\", {\n    name: \"node1\",\n    image: \"debian-12\",\n    serverType: \"cx23\",\n    publicNets: [{\n        ipv4Enabled: true,\n        ipv6Enabled: true,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\n# Create a new server running debian\nnode1 = hcloud.Server(\"node1\",\n    name=\"node1\",\n    image=\"debian-12\",\n    server_type=\"cx23\",\n    public_nets=[{\n        \"ipv4_enabled\": True,\n        \"ipv6_enabled\": True,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create a new server running debian\n    var node1 = new HCloud.Server(\"node1\", new()\n    {\n        Name = \"node1\",\n        Image = \"debian-12\",\n        ServerType = \"cx23\",\n        PublicNets = new[]\n        {\n            new HCloud.Inputs.ServerPublicNetArgs\n            {\n                Ipv4Enabled = true,\n                Ipv6Enabled = true,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create a new server running debian\n\t\t_, err := hcloud.NewServer(ctx, \"node1\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"node1\"),\n\t\t\tImage:      pulumi.String(\"debian-12\"),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t\tPublicNets: hcloud.ServerPublicNetArray{\n\t\t\t\t\u0026hcloud.ServerPublicNetArgs{\n\t\t\t\t\tIpv4Enabled: pulumi.Bool(true),\n\t\t\t\t\tIpv6Enabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.inputs.ServerPublicNetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create a new server running debian\n        var node1 = new Server(\"node1\", ServerArgs.builder()\n            .name(\"node1\")\n            .image(\"debian-12\")\n            .serverType(\"cx23\")\n            .publicNets(ServerPublicNetArgs.builder()\n                .ipv4Enabled(true)\n                .ipv6Enabled(true)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a new server running debian\n  node1:\n    type: hcloud:Server\n    properties:\n      name: node1\n      image: debian-12\n      serverType: cx23\n      publicNets:\n        - ipv4Enabled: true\n          ipv6Enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\n//## Server creation with one linked primary ip (ipv4)\nconst primaryIp1 = new hcloud.PrimaryIp(\"primary_ip_1\", {\n    name: \"primary_ip_test\",\n    location: \"hel1\",\n    type: \"ipv4\",\n    assigneeType: \"server\",\n    autoDelete: true,\n    labels: {\n        hallo: \"welt\",\n    },\n});\nconst serverTest = new hcloud.Server(\"server_test\", {\n    name: \"test-server\",\n    image: \"ubuntu-24.04\",\n    serverType: \"cx23\",\n    location: \"hel1\",\n    labels: {\n        test: \"tessst1\",\n    },\n    publicNets: [{\n        ipv4Enabled: true,\n        ipv4: primaryIp1.id,\n        ipv6Enabled: false,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\n### Server creation with one linked primary ip (ipv4)\nprimary_ip1 = hcloud.PrimaryIp(\"primary_ip_1\",\n    name=\"primary_ip_test\",\n    location=\"hel1\",\n    type=\"ipv4\",\n    assignee_type=\"server\",\n    auto_delete=True,\n    labels={\n        \"hallo\": \"welt\",\n    })\nserver_test = hcloud.Server(\"server_test\",\n    name=\"test-server\",\n    image=\"ubuntu-24.04\",\n    server_type=\"cx23\",\n    location=\"hel1\",\n    labels={\n        \"test\": \"tessst1\",\n    },\n    public_nets=[{\n        \"ipv4_enabled\": True,\n        \"ipv4\": primary_ip1.id,\n        \"ipv6_enabled\": False,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## Server creation with one linked primary ip (ipv4)\n    var primaryIp1 = new HCloud.PrimaryIp(\"primary_ip_1\", new()\n    {\n        Name = \"primary_ip_test\",\n        Location = \"hel1\",\n        Type = \"ipv4\",\n        AssigneeType = \"server\",\n        AutoDelete = true,\n        Labels = \n        {\n            { \"hallo\", \"welt\" },\n        },\n    });\n\n    var serverTest = new HCloud.Server(\"server_test\", new()\n    {\n        Name = \"test-server\",\n        Image = \"ubuntu-24.04\",\n        ServerType = \"cx23\",\n        Location = \"hel1\",\n        Labels = \n        {\n            { \"test\", \"tessst1\" },\n        },\n        PublicNets = new[]\n        {\n            new HCloud.Inputs.ServerPublicNetArgs\n            {\n                Ipv4Enabled = true,\n                Ipv4 = primaryIp1.Id,\n                Ipv6Enabled = false,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## Server creation with one linked primary ip (ipv4)\n\t\tprimaryIp1, err := hcloud.NewPrimaryIp(ctx, \"primary_ip_1\", \u0026hcloud.PrimaryIpArgs{\n\t\t\tName:         pulumi.String(\"primary_ip_test\"),\n\t\t\tLocation:     pulumi.String(\"hel1\"),\n\t\t\tType:         pulumi.String(\"ipv4\"),\n\t\t\tAssigneeType: pulumi.String(\"server\"),\n\t\t\tAutoDelete:   pulumi.Bool(true),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"hallo\": pulumi.String(\"welt\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewServer(ctx, \"server_test\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"test-server\"),\n\t\t\tImage:      pulumi.String(\"ubuntu-24.04\"),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t\tLocation:   pulumi.String(\"hel1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"test\": pulumi.String(\"tessst1\"),\n\t\t\t},\n\t\t\tPublicNets: hcloud.ServerPublicNetArray{\n\t\t\t\t\u0026hcloud.ServerPublicNetArgs{\n\t\t\t\t\tIpv4Enabled: pulumi.Bool(true),\n\t\t\t\t\tIpv4:        primaryIp1.ID(),\n\t\t\t\t\tIpv6Enabled: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.PrimaryIp;\nimport com.pulumi.hcloud.PrimaryIpArgs;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.inputs.ServerPublicNetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        //## Server creation with one linked primary ip (ipv4)\n        var primaryIp1 = new PrimaryIp(\"primaryIp1\", PrimaryIpArgs.builder()\n            .name(\"primary_ip_test\")\n            .location(\"hel1\")\n            .type(\"ipv4\")\n            .assigneeType(\"server\")\n            .autoDelete(true)\n            .labels(Map.of(\"hallo\", \"welt\"))\n            .build());\n\n        var serverTest = new Server(\"serverTest\", ServerArgs.builder()\n            .name(\"test-server\")\n            .image(\"ubuntu-24.04\")\n            .serverType(\"cx23\")\n            .location(\"hel1\")\n            .labels(Map.of(\"test\", \"tessst1\"))\n            .publicNets(ServerPublicNetArgs.builder()\n                .ipv4Enabled(true)\n                .ipv4(primaryIp1.id())\n                .ipv6Enabled(false)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ### Server creation with one linked primary ip (ipv4)\n  primaryIp1:\n    type: hcloud:PrimaryIp\n    name: primary_ip_1\n    properties:\n      name: primary_ip_test\n      location: hel1\n      type: ipv4\n      assigneeType: server\n      autoDelete: true\n      labels:\n        hallo: welt\n  serverTest:\n    type: hcloud:Server\n    name: server_test\n    properties:\n      name: test-server\n      image: ubuntu-24.04\n      serverType: cx23\n      location: hel1\n      labels:\n        test: tessst1\n      publicNets:\n        - ipv4Enabled: true\n          ipv4: ${primaryIp1.id}\n          ipv6Enabled: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Server creation with network\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst network = new hcloud.Network(\"network\", {\n    name: \"network\",\n    ipRange: \"10.0.0.0/16\",\n});\nconst network_subnet = new hcloud.NetworkSubnet(\"network-subnet\", {\n    type: \"cloud\",\n    networkId: network.id,\n    networkZone: \"eu-central\",\n    ipRange: \"10.0.1.0/24\",\n});\nconst server = new hcloud.Server(\"server\", {\n    name: \"server\",\n    serverType: \"cx23\",\n    image: \"ubuntu-24.04\",\n    location: \"nbg1\",\n    networks: [{\n        networkId: network.id,\n        ip: \"10.0.1.5\",\n        aliasIps: [\n            \"10.0.1.6\",\n            \"10.0.1.7\",\n        ],\n    }],\n}, {\n    dependsOn: [network_subnet],\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nnetwork = hcloud.Network(\"network\",\n    name=\"network\",\n    ip_range=\"10.0.0.0/16\")\nnetwork_subnet = hcloud.NetworkSubnet(\"network-subnet\",\n    type=\"cloud\",\n    network_id=network.id,\n    network_zone=\"eu-central\",\n    ip_range=\"10.0.1.0/24\")\nserver = hcloud.Server(\"server\",\n    name=\"server\",\n    server_type=\"cx23\",\n    image=\"ubuntu-24.04\",\n    location=\"nbg1\",\n    networks=[{\n        \"network_id\": network.id,\n        \"ip\": \"10.0.1.5\",\n        \"alias_ips\": [\n            \"10.0.1.6\",\n            \"10.0.1.7\",\n        ],\n    }],\n    opts = pulumi.ResourceOptions(depends_on=[network_subnet]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network = new HCloud.Network(\"network\", new()\n    {\n        Name = \"network\",\n        IpRange = \"10.0.0.0/16\",\n    });\n\n    var network_subnet = new HCloud.NetworkSubnet(\"network-subnet\", new()\n    {\n        Type = \"cloud\",\n        NetworkId = network.Id,\n        NetworkZone = \"eu-central\",\n        IpRange = \"10.0.1.0/24\",\n    });\n\n    var server = new HCloud.Server(\"server\", new()\n    {\n        Name = \"server\",\n        ServerType = \"cx23\",\n        Image = \"ubuntu-24.04\",\n        Location = \"nbg1\",\n        Networks = new[]\n        {\n            new HCloud.Inputs.ServerNetworkArgs\n            {\n                NetworkId = network.Id,\n                Ip = \"10.0.1.5\",\n                AliasIps = new[]\n                {\n                    \"10.0.1.6\",\n                    \"10.0.1.7\",\n                },\n            },\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            network_subnet,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := hcloud.NewNetwork(ctx, \"network\", \u0026hcloud.NetworkArgs{\n\t\t\tName:    pulumi.String(\"network\"),\n\t\t\tIpRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork_subnet, err := hcloud.NewNetworkSubnet(ctx, \"network-subnet\", \u0026hcloud.NetworkSubnetArgs{\n\t\t\tType:        pulumi.String(\"cloud\"),\n\t\t\tNetworkId:   network.ID(),\n\t\t\tNetworkZone: pulumi.String(\"eu-central\"),\n\t\t\tIpRange:     pulumi.String(\"10.0.1.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewServer(ctx, \"server\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"server\"),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t\tImage:      pulumi.String(\"ubuntu-24.04\"),\n\t\t\tLocation:   pulumi.String(\"nbg1\"),\n\t\t\tNetworks: hcloud.ServerNetworkTypeArray{\n\t\t\t\t\u0026hcloud.ServerNetworkTypeArgs{\n\t\t\t\t\tNetworkId: network.ID(),\n\t\t\t\t\tIp:        pulumi.String(\"10.0.1.5\"),\n\t\t\t\t\tAliasIps: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.0.1.6\"),\n\t\t\t\t\t\tpulumi.String(\"10.0.1.7\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tnetwork_subnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Network;\nimport com.pulumi.hcloud.NetworkArgs;\nimport com.pulumi.hcloud.NetworkSubnet;\nimport com.pulumi.hcloud.NetworkSubnetArgs;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.inputs.ServerNetworkArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var network = new Network(\"network\", NetworkArgs.builder()\n            .name(\"network\")\n            .ipRange(\"10.0.0.0/16\")\n            .build());\n\n        var network_subnet = new NetworkSubnet(\"network-subnet\", NetworkSubnetArgs.builder()\n            .type(\"cloud\")\n            .networkId(network.id())\n            .networkZone(\"eu-central\")\n            .ipRange(\"10.0.1.0/24\")\n            .build());\n\n        var server = new Server(\"server\", ServerArgs.builder()\n            .name(\"server\")\n            .serverType(\"cx23\")\n            .image(\"ubuntu-24.04\")\n            .location(\"nbg1\")\n            .networks(ServerNetworkArgs.builder()\n                .networkId(network.id())\n                .ip(\"10.0.1.5\")\n                .aliasIps(                \n                    \"10.0.1.6\",\n                    \"10.0.1.7\")\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(network_subnet)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network:\n    type: hcloud:Network\n    properties:\n      name: network\n      ipRange: 10.0.0.0/16\n  network-subnet:\n    type: hcloud:NetworkSubnet\n    properties:\n      type: cloud\n      networkId: ${network.id}\n      networkZone: eu-central\n      ipRange: 10.0.1.0/24\n  server:\n    type: hcloud:Server\n    properties:\n      name: server\n      serverType: cx23\n      image: ubuntu-24.04\n      location: nbg1\n      networks:\n        - networkId: ${network.id}\n          ip: 10.0.1.5\n          aliasIps:\n            - 10.0.1.6\n            - 10.0.1.7\n    options:\n      dependsOn:\n        - ${[\"network-subnet\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Server creation from snapshot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\n// Get image infos because we need the ID\nconst packerSnapshot = hcloud.getImage({\n    withSelector: \"app=foobar\",\n    mostRecent: true,\n});\n// Create a new server from the snapshot\nconst fromSnapshot = new hcloud.Server(\"from_snapshot\", {\n    name: \"from-snapshot\",\n    image: packerSnapshot.then(packerSnapshot =\u003e packerSnapshot.id),\n    serverType: \"cx23\",\n    publicNets: [{\n        ipv4Enabled: true,\n        ipv6Enabled: true,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\n# Get image infos because we need the ID\npacker_snapshot = hcloud.get_image(with_selector=\"app=foobar\",\n    most_recent=True)\n# Create a new server from the snapshot\nfrom_snapshot = hcloud.Server(\"from_snapshot\",\n    name=\"from-snapshot\",\n    image=packer_snapshot.id,\n    server_type=\"cx23\",\n    public_nets=[{\n        \"ipv4_enabled\": True,\n        \"ipv6_enabled\": True,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Get image infos because we need the ID\n    var packerSnapshot = HCloud.GetImage.Invoke(new()\n    {\n        WithSelector = \"app=foobar\",\n        MostRecent = true,\n    });\n\n    // Create a new server from the snapshot\n    var fromSnapshot = new HCloud.Server(\"from_snapshot\", new()\n    {\n        Name = \"from-snapshot\",\n        Image = packerSnapshot.Apply(getImageResult =\u003e getImageResult.Id),\n        ServerType = \"cx23\",\n        PublicNets = new[]\n        {\n            new HCloud.Inputs.ServerPublicNetArgs\n            {\n                Ipv4Enabled = true,\n                Ipv6Enabled = true,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Get image infos because we need the ID\n\t\tpackerSnapshot, err := hcloud.GetImage(ctx, \u0026hcloud.GetImageArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"app=foobar\"),\n\t\t\tMostRecent:   pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a new server from the snapshot\n\t\t_, err = hcloud.NewServer(ctx, \"from_snapshot\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"from-snapshot\"),\n\t\t\tImage:      pulumi.Int(packerSnapshot.Id),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t\tPublicNets: hcloud.ServerPublicNetArray{\n\t\t\t\t\u0026hcloud.ServerPublicNetArgs{\n\t\t\t\t\tIpv4Enabled: pulumi.Bool(true),\n\t\t\t\t\tIpv6Enabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetImageArgs;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.inputs.ServerPublicNetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Get image infos because we need the ID\n        final var packerSnapshot = HcloudFunctions.getImage(GetImageArgs.builder()\n            .withSelector(\"app=foobar\")\n            .mostRecent(true)\n            .build());\n\n        // Create a new server from the snapshot\n        var fromSnapshot = new Server(\"fromSnapshot\", ServerArgs.builder()\n            .name(\"from-snapshot\")\n            .image(packerSnapshot.id())\n            .serverType(\"cx23\")\n            .publicNets(ServerPublicNetArgs.builder()\n                .ipv4Enabled(true)\n                .ipv6Enabled(true)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a new server from the snapshot\n  fromSnapshot:\n    type: hcloud:Server\n    name: from_snapshot\n    properties:\n      name: from-snapshot\n      image: ${packerSnapshot.id}\n      serverType: cx23\n      publicNets:\n        - ipv4Enabled: true\n          ipv6Enabled: true\nvariables:\n  # Get image infos because we need the ID\n  packerSnapshot:\n    fn::invoke:\n      function: hcloud:getImage\n      arguments:\n        withSelector: app=foobar\n        mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Primary IPs\n\nWhen creating a server without linking at least one ´primary_ip´, it automatically creates \u0026 assigns two (ipv4 \u0026 ipv6).\nWith the\u003cspan pulumi-lang-nodejs=\" publicNet \" pulumi-lang-dotnet=\" PublicNet \" pulumi-lang-go=\" publicNet \" pulumi-lang-python=\" public_net \" pulumi-lang-yaml=\" publicNet \" pulumi-lang-java=\" publicNet \"\u003e public_net \u003c/span\u003eblock, you can enable or link primary ips. If you don't define this block, two primary ips (ipv4, ipv6) will be created and assigned to the server automatically.\n\n## Import\n\nServers can be imported using the server \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e:\n\n```sh\n$ pulumi import hcloud:index/server:Server example \"$SERVER_ID\"\n```\n\n","properties":{"allowDeprecatedImages":{"type":"boolean","description":"Enable the use of deprecated images (default: false). **Note** Deprecated images will be removed after three months. Using them is then no longer possible.\n"},"backupWindow":{"type":"string","description":"(string) The backup window of the server, if enabled.\n","deprecationMessage":"You should remove this property from your terraform configuration."},"backups":{"type":"boolean","description":"Enable or disable backups.\n"},"datacenter":{"type":"string","description":"The datacenter name to create the server in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.\n","deprecationMessage":"The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters."},"deleteProtection":{"type":"boolean","description":"Enable or disable delete protection (Needs to be the same as \u003cspan pulumi-lang-nodejs=\"`rebuildProtection`\" pulumi-lang-dotnet=\"`RebuildProtection`\" pulumi-lang-go=\"`rebuildProtection`\" pulumi-lang-python=\"`rebuild_protection`\" pulumi-lang-yaml=\"`rebuildProtection`\" pulumi-lang-java=\"`rebuildProtection`\"\u003e`rebuild_protection`\u003c/span\u003e). See \"Delete Protection\" in the Provider Docs for details.\n"},"firewallIds":{"type":"array","items":{"type":"integer"},"description":"Firewall IDs the server should be attached to on creation.\n"},"ignoreRemoteFirewallIds":{"type":"boolean","description":"Ignores any updates\nto the \u003cspan pulumi-lang-nodejs=\"`firewallIds`\" pulumi-lang-dotnet=\"`FirewallIds`\" pulumi-lang-go=\"`firewallIds`\" pulumi-lang-python=\"`firewall_ids`\" pulumi-lang-yaml=\"`firewallIds`\" pulumi-lang-java=\"`firewallIds`\"\u003e`firewall_ids`\u003c/span\u003e argument which were received from the server.\nThis should not be used in normal cases. See the documentation of the\n\u003cspan pulumi-lang-nodejs=\"`hcloud.FirewallAttachment`\" pulumi-lang-dotnet=\"`hcloud.FirewallAttachment`\" pulumi-lang-go=\"`FirewallAttachment`\" pulumi-lang-python=\"`FirewallAttachment`\" pulumi-lang-yaml=\"`hcloud.FirewallAttachment`\" pulumi-lang-java=\"`hcloud.FirewallAttachment`\"\u003e`hcloud.FirewallAttachment`\u003c/span\u003e resource for a reason to use this\nargument.\n"},"image":{"type":"string","description":"Name or ID of the image the server is created from. **Note** the \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e property is only required when using the resource to create servers. As the Hetzner Cloud API may return servers without an image ID set it is not marked as required in the Terraform Provider itself. Thus, users will get an error from the underlying client library if they forget to set the property and try to create a server.\n"},"ipv4Address":{"type":"string","description":"(string) The IPv4 address.\n"},"ipv6Address":{"type":"string","description":"(string) The first IPv6 address of the assigned network.\n"},"ipv6Network":{"type":"string","description":"(string) The IPv6 network.\n"},"iso":{"type":"string","description":"ID or Name of an ISO image to mount.\n"},"keepDisk":{"type":"boolean","description":"If true, do not upgrade the disk. This allows downgrading the server type later.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"location":{"type":"string","description":"The location name to create the server in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n"},"name":{"type":"string","description":"Name of the server to create (must be unique per project and a valid hostname as per RFC 1123).\n"},"networks":{"type":"array","items":{"$ref":"#/types/hcloud:index/ServerNetwork:ServerNetwork"},"description":"Network the server should be attached to on creation. (Can be specified multiple times)\n"},"placementGroupId":{"type":"integer","description":"Placement Group ID the server added to on creation.\n"},"primaryDiskSize":{"type":"integer","description":"(int) The size of the primary disk in GB.\n"},"publicNets":{"type":"array","items":{"$ref":"#/types/hcloud:index/ServerPublicNet:ServerPublicNet"},"description":"In this block you can either enable / disable ipv4 and ipv6 or link existing primary IPs (checkout the examples).\nIf this block is not defined, two primary (ipv4 \u0026 ipv6) ips getting auto generated.\n"},"rebuildProtection":{"type":"boolean","description":"Enable or disable rebuild protection (Needs to be the same as \u003cspan pulumi-lang-nodejs=\"`deleteProtection`\" pulumi-lang-dotnet=\"`DeleteProtection`\" pulumi-lang-go=\"`deleteProtection`\" pulumi-lang-python=\"`delete_protection`\" pulumi-lang-yaml=\"`deleteProtection`\" pulumi-lang-java=\"`deleteProtection`\"\u003e`delete_protection`\u003c/span\u003e).\n"},"rescue":{"type":"string","description":"Enable and boot in to the specified rescue system. This enables simple installation of custom operating systems. \u003cspan pulumi-lang-nodejs=\"`linux64`\" pulumi-lang-dotnet=\"`Linux64`\" pulumi-lang-go=\"`linux64`\" pulumi-lang-python=\"`linux64`\" pulumi-lang-yaml=\"`linux64`\" pulumi-lang-java=\"`linux64`\"\u003e`linux64`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`linux32`\" pulumi-lang-dotnet=\"`Linux32`\" pulumi-lang-go=\"`linux32`\" pulumi-lang-python=\"`linux32`\" pulumi-lang-yaml=\"`linux32`\" pulumi-lang-java=\"`linux32`\"\u003e`linux32`\u003c/span\u003e\n"},"serverType":{"type":"string","description":"Name of the server type this server should be created with.\n"},"shutdownBeforeDeletion":{"type":"boolean","description":"Whether to try shutting the server down gracefully before deleting it.\n"},"sshKeys":{"type":"array","items":{"type":"string"},"description":"SSH key IDs or names which should be injected into the server at creation time. Once the server is created, you can not update the list of SSH Keys. If you do change this, you will be prompted to destroy and recreate the server. You can avoid this by setting lifecycle.ignore_changes to `[\u003cspan pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"\u003e ssh_keys \u003c/span\u003e]`.\n"},"status":{"type":"string","description":"(string) The status of the server.\n"},"userData":{"type":"string","description":"Cloud-Init user data to use during server creation\n"}},"required":["backupWindow","datacenter","firewallIds","ipv4Address","ipv6Address","ipv6Network","location","name","primaryDiskSize","serverType","status"],"inputProperties":{"allowDeprecatedImages":{"type":"boolean","description":"Enable the use of deprecated images (default: false). **Note** Deprecated images will be removed after three months. Using them is then no longer possible.\n"},"backups":{"type":"boolean","description":"Enable or disable backups.\n"},"datacenter":{"type":"string","description":"The datacenter name to create the server in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.\n","deprecationMessage":"The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.","willReplaceOnChanges":true},"deleteProtection":{"type":"boolean","description":"Enable or disable delete protection (Needs to be the same as \u003cspan pulumi-lang-nodejs=\"`rebuildProtection`\" pulumi-lang-dotnet=\"`RebuildProtection`\" pulumi-lang-go=\"`rebuildProtection`\" pulumi-lang-python=\"`rebuild_protection`\" pulumi-lang-yaml=\"`rebuildProtection`\" pulumi-lang-java=\"`rebuildProtection`\"\u003e`rebuild_protection`\u003c/span\u003e). See \"Delete Protection\" in the Provider Docs for details.\n"},"firewallIds":{"type":"array","items":{"type":"integer"},"description":"Firewall IDs the server should be attached to on creation.\n"},"ignoreRemoteFirewallIds":{"type":"boolean","description":"Ignores any updates\nto the \u003cspan pulumi-lang-nodejs=\"`firewallIds`\" pulumi-lang-dotnet=\"`FirewallIds`\" pulumi-lang-go=\"`firewallIds`\" pulumi-lang-python=\"`firewall_ids`\" pulumi-lang-yaml=\"`firewallIds`\" pulumi-lang-java=\"`firewallIds`\"\u003e`firewall_ids`\u003c/span\u003e argument which were received from the server.\nThis should not be used in normal cases. See the documentation of the\n\u003cspan pulumi-lang-nodejs=\"`hcloud.FirewallAttachment`\" pulumi-lang-dotnet=\"`hcloud.FirewallAttachment`\" pulumi-lang-go=\"`FirewallAttachment`\" pulumi-lang-python=\"`FirewallAttachment`\" pulumi-lang-yaml=\"`hcloud.FirewallAttachment`\" pulumi-lang-java=\"`hcloud.FirewallAttachment`\"\u003e`hcloud.FirewallAttachment`\u003c/span\u003e resource for a reason to use this\nargument.\n"},"image":{"type":"string","description":"Name or ID of the image the server is created from. **Note** the \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e property is only required when using the resource to create servers. As the Hetzner Cloud API may return servers without an image ID set it is not marked as required in the Terraform Provider itself. Thus, users will get an error from the underlying client library if they forget to set the property and try to create a server.\n","willReplaceOnChanges":true},"iso":{"type":"string","description":"ID or Name of an ISO image to mount.\n"},"keepDisk":{"type":"boolean","description":"If true, do not upgrade the disk. This allows downgrading the server type later.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"location":{"type":"string","description":"The location name to create the server in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Name of the server to create (must be unique per project and a valid hostname as per RFC 1123).\n"},"networks":{"type":"array","items":{"$ref":"#/types/hcloud:index/ServerNetwork:ServerNetwork"},"description":"Network the server should be attached to on creation. (Can be specified multiple times)\n"},"placementGroupId":{"type":"integer","description":"Placement Group ID the server added to on creation.\n"},"publicNets":{"type":"array","items":{"$ref":"#/types/hcloud:index/ServerPublicNet:ServerPublicNet"},"description":"In this block you can either enable / disable ipv4 and ipv6 or link existing primary IPs (checkout the examples).\nIf this block is not defined, two primary (ipv4 \u0026 ipv6) ips getting auto generated.\n"},"rebuildProtection":{"type":"boolean","description":"Enable or disable rebuild protection (Needs to be the same as \u003cspan pulumi-lang-nodejs=\"`deleteProtection`\" pulumi-lang-dotnet=\"`DeleteProtection`\" pulumi-lang-go=\"`deleteProtection`\" pulumi-lang-python=\"`delete_protection`\" pulumi-lang-yaml=\"`deleteProtection`\" pulumi-lang-java=\"`deleteProtection`\"\u003e`delete_protection`\u003c/span\u003e).\n"},"rescue":{"type":"string","description":"Enable and boot in to the specified rescue system. This enables simple installation of custom operating systems. \u003cspan pulumi-lang-nodejs=\"`linux64`\" pulumi-lang-dotnet=\"`Linux64`\" pulumi-lang-go=\"`linux64`\" pulumi-lang-python=\"`linux64`\" pulumi-lang-yaml=\"`linux64`\" pulumi-lang-java=\"`linux64`\"\u003e`linux64`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`linux32`\" pulumi-lang-dotnet=\"`Linux32`\" pulumi-lang-go=\"`linux32`\" pulumi-lang-python=\"`linux32`\" pulumi-lang-yaml=\"`linux32`\" pulumi-lang-java=\"`linux32`\"\u003e`linux32`\u003c/span\u003e\n"},"serverType":{"type":"string","description":"Name of the server type this server should be created with.\n"},"shutdownBeforeDeletion":{"type":"boolean","description":"Whether to try shutting the server down gracefully before deleting it.\n"},"sshKeys":{"type":"array","items":{"type":"string"},"description":"SSH key IDs or names which should be injected into the server at creation time. Once the server is created, you can not update the list of SSH Keys. If you do change this, you will be prompted to destroy and recreate the server. You can avoid this by setting lifecycle.ignore_changes to `[\u003cspan pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"\u003e ssh_keys \u003c/span\u003e]`.\n","willReplaceOnChanges":true},"userData":{"type":"string","description":"Cloud-Init user data to use during server creation\n","willReplaceOnChanges":true}},"requiredInputs":["serverType"],"stateInputs":{"description":"Input properties used for looking up and filtering Server resources.\n","properties":{"allowDeprecatedImages":{"type":"boolean","description":"Enable the use of deprecated images (default: false). **Note** Deprecated images will be removed after three months. Using them is then no longer possible.\n"},"backupWindow":{"type":"string","description":"(string) The backup window of the server, if enabled.\n","deprecationMessage":"You should remove this property from your terraform configuration."},"backups":{"type":"boolean","description":"Enable or disable backups.\n"},"datacenter":{"type":"string","description":"The datacenter name to create the server in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.\n","deprecationMessage":"The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.","willReplaceOnChanges":true},"deleteProtection":{"type":"boolean","description":"Enable or disable delete protection (Needs to be the same as \u003cspan pulumi-lang-nodejs=\"`rebuildProtection`\" pulumi-lang-dotnet=\"`RebuildProtection`\" pulumi-lang-go=\"`rebuildProtection`\" pulumi-lang-python=\"`rebuild_protection`\" pulumi-lang-yaml=\"`rebuildProtection`\" pulumi-lang-java=\"`rebuildProtection`\"\u003e`rebuild_protection`\u003c/span\u003e). See \"Delete Protection\" in the Provider Docs for details.\n"},"firewallIds":{"type":"array","items":{"type":"integer"},"description":"Firewall IDs the server should be attached to on creation.\n"},"ignoreRemoteFirewallIds":{"type":"boolean","description":"Ignores any updates\nto the \u003cspan pulumi-lang-nodejs=\"`firewallIds`\" pulumi-lang-dotnet=\"`FirewallIds`\" pulumi-lang-go=\"`firewallIds`\" pulumi-lang-python=\"`firewall_ids`\" pulumi-lang-yaml=\"`firewallIds`\" pulumi-lang-java=\"`firewallIds`\"\u003e`firewall_ids`\u003c/span\u003e argument which were received from the server.\nThis should not be used in normal cases. See the documentation of the\n\u003cspan pulumi-lang-nodejs=\"`hcloud.FirewallAttachment`\" pulumi-lang-dotnet=\"`hcloud.FirewallAttachment`\" pulumi-lang-go=\"`FirewallAttachment`\" pulumi-lang-python=\"`FirewallAttachment`\" pulumi-lang-yaml=\"`hcloud.FirewallAttachment`\" pulumi-lang-java=\"`hcloud.FirewallAttachment`\"\u003e`hcloud.FirewallAttachment`\u003c/span\u003e resource for a reason to use this\nargument.\n"},"image":{"type":"string","description":"Name or ID of the image the server is created from. **Note** the \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e property is only required when using the resource to create servers. As the Hetzner Cloud API may return servers without an image ID set it is not marked as required in the Terraform Provider itself. Thus, users will get an error from the underlying client library if they forget to set the property and try to create a server.\n","willReplaceOnChanges":true},"ipv4Address":{"type":"string","description":"(string) The IPv4 address.\n"},"ipv6Address":{"type":"string","description":"(string) The first IPv6 address of the assigned network.\n"},"ipv6Network":{"type":"string","description":"(string) The IPv6 network.\n"},"iso":{"type":"string","description":"ID or Name of an ISO image to mount.\n"},"keepDisk":{"type":"boolean","description":"If true, do not upgrade the disk. This allows downgrading the server type later.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"location":{"type":"string","description":"The location name to create the server in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Name of the server to create (must be unique per project and a valid hostname as per RFC 1123).\n"},"networks":{"type":"array","items":{"$ref":"#/types/hcloud:index/ServerNetwork:ServerNetwork"},"description":"Network the server should be attached to on creation. (Can be specified multiple times)\n"},"placementGroupId":{"type":"integer","description":"Placement Group ID the server added to on creation.\n"},"primaryDiskSize":{"type":"integer","description":"(int) The size of the primary disk in GB.\n"},"publicNets":{"type":"array","items":{"$ref":"#/types/hcloud:index/ServerPublicNet:ServerPublicNet"},"description":"In this block you can either enable / disable ipv4 and ipv6 or link existing primary IPs (checkout the examples).\nIf this block is not defined, two primary (ipv4 \u0026 ipv6) ips getting auto generated.\n"},"rebuildProtection":{"type":"boolean","description":"Enable or disable rebuild protection (Needs to be the same as \u003cspan pulumi-lang-nodejs=\"`deleteProtection`\" pulumi-lang-dotnet=\"`DeleteProtection`\" pulumi-lang-go=\"`deleteProtection`\" pulumi-lang-python=\"`delete_protection`\" pulumi-lang-yaml=\"`deleteProtection`\" pulumi-lang-java=\"`deleteProtection`\"\u003e`delete_protection`\u003c/span\u003e).\n"},"rescue":{"type":"string","description":"Enable and boot in to the specified rescue system. This enables simple installation of custom operating systems. \u003cspan pulumi-lang-nodejs=\"`linux64`\" pulumi-lang-dotnet=\"`Linux64`\" pulumi-lang-go=\"`linux64`\" pulumi-lang-python=\"`linux64`\" pulumi-lang-yaml=\"`linux64`\" pulumi-lang-java=\"`linux64`\"\u003e`linux64`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`linux32`\" pulumi-lang-dotnet=\"`Linux32`\" pulumi-lang-go=\"`linux32`\" pulumi-lang-python=\"`linux32`\" pulumi-lang-yaml=\"`linux32`\" pulumi-lang-java=\"`linux32`\"\u003e`linux32`\u003c/span\u003e\n"},"serverType":{"type":"string","description":"Name of the server type this server should be created with.\n"},"shutdownBeforeDeletion":{"type":"boolean","description":"Whether to try shutting the server down gracefully before deleting it.\n"},"sshKeys":{"type":"array","items":{"type":"string"},"description":"SSH key IDs or names which should be injected into the server at creation time. Once the server is created, you can not update the list of SSH Keys. If you do change this, you will be prompted to destroy and recreate the server. You can avoid this by setting lifecycle.ignore_changes to `[\u003cspan pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"\u003e ssh_keys \u003c/span\u003e]`.\n","willReplaceOnChanges":true},"status":{"type":"string","description":"(string) The status of the server.\n"},"userData":{"type":"string","description":"Cloud-Init user data to use during server creation\n","willReplaceOnChanges":true}},"type":"object"}},"hcloud:index/serverNetwork:ServerNetwork":{"description":"Manage the attachment of a Server in a Network in the Hetzner Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst node1 = new hcloud.Server(\"node1\", {\n    name: \"node1\",\n    image: \"debian-12\",\n    serverType: \"cx23\",\n});\nconst network = new hcloud.Network(\"network\", {\n    name: \"network\",\n    ipRange: \"10.0.0.0/16\",\n});\nconst subnet1 = new hcloud.NetworkSubnet(\"subnet1\", {\n    networkId: network.id,\n    type: \"cloud\",\n    networkZone: \"eu-central\",\n    ipRange: \"10.0.1.0/24\",\n});\nconst node1Subnet1 = new hcloud.ServerNetwork(\"node1_subnet1\", {\n    serverId: node1.id,\n    subnetId: subnet1.id,\n    ip: \"10.0.1.5\",\n    aliasIps: [\"10.0.1.10\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nnode1 = hcloud.Server(\"node1\",\n    name=\"node1\",\n    image=\"debian-12\",\n    server_type=\"cx23\")\nnetwork = hcloud.Network(\"network\",\n    name=\"network\",\n    ip_range=\"10.0.0.0/16\")\nsubnet1 = hcloud.NetworkSubnet(\"subnet1\",\n    network_id=network.id,\n    type=\"cloud\",\n    network_zone=\"eu-central\",\n    ip_range=\"10.0.1.0/24\")\nnode1_subnet1 = hcloud.ServerNetwork(\"node1_subnet1\",\n    server_id=node1.id,\n    subnet_id=subnet1.id,\n    ip=\"10.0.1.5\",\n    alias_ips=[\"10.0.1.10\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var node1 = new HCloud.Server(\"node1\", new()\n    {\n        Name = \"node1\",\n        Image = \"debian-12\",\n        ServerType = \"cx23\",\n    });\n\n    var network = new HCloud.Network(\"network\", new()\n    {\n        Name = \"network\",\n        IpRange = \"10.0.0.0/16\",\n    });\n\n    var subnet1 = new HCloud.NetworkSubnet(\"subnet1\", new()\n    {\n        NetworkId = network.Id,\n        Type = \"cloud\",\n        NetworkZone = \"eu-central\",\n        IpRange = \"10.0.1.0/24\",\n    });\n\n    var node1Subnet1 = new HCloud.ServerNetwork(\"node1_subnet1\", new()\n    {\n        ServerId = node1.Id,\n        SubnetId = subnet1.Id,\n        Ip = \"10.0.1.5\",\n        AliasIps = new[]\n        {\n            \"10.0.1.10\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnode1, err := hcloud.NewServer(ctx, \"node1\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"node1\"),\n\t\t\tImage:      pulumi.String(\"debian-12\"),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := hcloud.NewNetwork(ctx, \"network\", \u0026hcloud.NetworkArgs{\n\t\t\tName:    pulumi.String(\"network\"),\n\t\t\tIpRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet1, err := hcloud.NewNetworkSubnet(ctx, \"subnet1\", \u0026hcloud.NetworkSubnetArgs{\n\t\t\tNetworkId:   network.ID(),\n\t\t\tType:        pulumi.String(\"cloud\"),\n\t\t\tNetworkZone: pulumi.String(\"eu-central\"),\n\t\t\tIpRange:     pulumi.String(\"10.0.1.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewServerNetwork(ctx, \"node1_subnet1\", \u0026hcloud.ServerNetworkArgs{\n\t\t\tServerId: node1.ID(),\n\t\t\tSubnetId: subnet1.ID(),\n\t\t\tIp:       pulumi.String(\"10.0.1.5\"),\n\t\t\tAliasIps: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.1.10\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.Network;\nimport com.pulumi.hcloud.NetworkArgs;\nimport com.pulumi.hcloud.NetworkSubnet;\nimport com.pulumi.hcloud.NetworkSubnetArgs;\nimport com.pulumi.hcloud.ServerNetwork;\nimport com.pulumi.hcloud.ServerNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var node1 = new Server(\"node1\", ServerArgs.builder()\n            .name(\"node1\")\n            .image(\"debian-12\")\n            .serverType(\"cx23\")\n            .build());\n\n        var network = new Network(\"network\", NetworkArgs.builder()\n            .name(\"network\")\n            .ipRange(\"10.0.0.0/16\")\n            .build());\n\n        var subnet1 = new NetworkSubnet(\"subnet1\", NetworkSubnetArgs.builder()\n            .networkId(network.id())\n            .type(\"cloud\")\n            .networkZone(\"eu-central\")\n            .ipRange(\"10.0.1.0/24\")\n            .build());\n\n        var node1Subnet1 = new ServerNetwork(\"node1Subnet1\", ServerNetworkArgs.builder()\n            .serverId(node1.id())\n            .subnetId(subnet1.id())\n            .ip(\"10.0.1.5\")\n            .aliasIps(\"10.0.1.10\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  node1:\n    type: hcloud:Server\n    properties:\n      name: node1\n      image: debian-12\n      serverType: cx23\n  network:\n    type: hcloud:Network\n    properties:\n      name: network\n      ipRange: 10.0.0.0/16\n  subnet1:\n    type: hcloud:NetworkSubnet\n    properties:\n      networkId: ${network.id}\n      type: cloud\n      networkZone: eu-central\n      ipRange: 10.0.1.0/24\n  node1Subnet1:\n    type: hcloud:ServerNetwork\n    name: node1_subnet1\n    properties:\n      serverId: ${node1.id}\n      subnetId: ${subnet1.id}\n      ip: 10.0.1.5\n      aliasIps:\n        - 10.0.1.10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import hcloud:index/serverNetwork:ServerNetwork example \"$SERVER_ID-$NETWORK_ID\"\n```\n\n","properties":{"aliasIps":{"type":"array","items":{"type":"string"},"description":"Additional IPs to assign to the Server.\n"},"ip":{"type":"string","description":"IP to assign to the Server.\n"},"macAddress":{"type":"string","description":"MAC address of the Server on the Network.\n"},"networkId":{"type":"integer","description":"ID of the Network to attach the Server to. Using \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e is preferred. Required if \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e is not set. If \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e are not set, the Server will be attached to the last subnet (ordered by \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ip_range`\u003c/span\u003e).\n"},"serverId":{"type":"integer","description":"ID of the Server.\n"},"subnetId":{"type":"string","description":"ID of the Subnet to attach the Server to. Required if \u003cspan pulumi-lang-nodejs=\"`networkId`\" pulumi-lang-dotnet=\"`NetworkId`\" pulumi-lang-go=\"`networkId`\" pulumi-lang-python=\"`network_id`\" pulumi-lang-yaml=\"`networkId`\" pulumi-lang-java=\"`networkId`\"\u003e`network_id`\u003c/span\u003e is not set.\n"}},"required":["aliasIps","ip","macAddress","networkId","serverId"],"inputProperties":{"aliasIps":{"type":"array","items":{"type":"string"},"description":"Additional IPs to assign to the Server.\n"},"ip":{"type":"string","description":"IP to assign to the Server.\n"},"networkId":{"type":"integer","description":"ID of the Network to attach the Server to. Using \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e is preferred. Required if \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e is not set. If \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e are not set, the Server will be attached to the last subnet (ordered by \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ip_range`\u003c/span\u003e).\n"},"serverId":{"type":"integer","description":"ID of the Server.\n"},"subnetId":{"type":"string","description":"ID of the Subnet to attach the Server to. Required if \u003cspan pulumi-lang-nodejs=\"`networkId`\" pulumi-lang-dotnet=\"`NetworkId`\" pulumi-lang-go=\"`networkId`\" pulumi-lang-python=\"`network_id`\" pulumi-lang-yaml=\"`networkId`\" pulumi-lang-java=\"`networkId`\"\u003e`network_id`\u003c/span\u003e is not set.\n"}},"requiredInputs":["serverId"],"stateInputs":{"description":"Input properties used for looking up and filtering ServerNetwork resources.\n","properties":{"aliasIps":{"type":"array","items":{"type":"string"},"description":"Additional IPs to assign to the Server.\n"},"ip":{"type":"string","description":"IP to assign to the Server.\n"},"macAddress":{"type":"string","description":"MAC address of the Server on the Network.\n"},"networkId":{"type":"integer","description":"ID of the Network to attach the Server to. Using \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e is preferred. Required if \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e is not set. If \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e are not set, the Server will be attached to the last subnet (ordered by \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ip_range`\u003c/span\u003e).\n"},"serverId":{"type":"integer","description":"ID of the Server.\n"},"subnetId":{"type":"string","description":"ID of the Subnet to attach the Server to. Required if \u003cspan pulumi-lang-nodejs=\"`networkId`\" pulumi-lang-dotnet=\"`NetworkId`\" pulumi-lang-go=\"`networkId`\" pulumi-lang-python=\"`network_id`\" pulumi-lang-yaml=\"`networkId`\" pulumi-lang-java=\"`networkId`\"\u003e`network_id`\u003c/span\u003e is not set.\n"}},"type":"object"}},"hcloud:index/snapshot:Snapshot":{"description":"Provides a Hetzner Cloud snapshot to represent an image with type snapshot in the Hetzner Cloud. This resource makes it easy to create a snapshot of your server.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst node1 = new hcloud.Server(\"node1\", {\n    name: \"node1\",\n    image: \"debian-12\",\n    serverType: \"cx23\",\n});\nconst my_snapshot = new hcloud.Snapshot(\"my-snapshot\", {serverId: node1.id});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nnode1 = hcloud.Server(\"node1\",\n    name=\"node1\",\n    image=\"debian-12\",\n    server_type=\"cx23\")\nmy_snapshot = hcloud.Snapshot(\"my-snapshot\", server_id=node1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var node1 = new HCloud.Server(\"node1\", new()\n    {\n        Name = \"node1\",\n        Image = \"debian-12\",\n        ServerType = \"cx23\",\n    });\n\n    var my_snapshot = new HCloud.Snapshot(\"my-snapshot\", new()\n    {\n        ServerId = node1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnode1, err := hcloud.NewServer(ctx, \"node1\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"node1\"),\n\t\t\tImage:      pulumi.String(\"debian-12\"),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewSnapshot(ctx, \"my-snapshot\", \u0026hcloud.SnapshotArgs{\n\t\t\tServerId: node1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.Snapshot;\nimport com.pulumi.hcloud.SnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var node1 = new Server(\"node1\", ServerArgs.builder()\n            .name(\"node1\")\n            .image(\"debian-12\")\n            .serverType(\"cx23\")\n            .build());\n\n        var my_snapshot = new Snapshot(\"my-snapshot\", SnapshotArgs.builder()\n            .serverId(node1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  node1:\n    type: hcloud:Server\n    properties:\n      name: node1\n      image: debian-12\n      serverType: cx23\n  my-snapshot:\n    type: hcloud:Snapshot\n    properties:\n      serverId: ${node1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSnapshots can be imported using its image \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e:\n\n```sh\n$ pulumi import hcloud:index/snapshot:Snapshot example \"$IMAGE_ID\"\n```\n\n","properties":{"description":{"type":"string","description":"Description of the snapshot.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"serverId":{"type":"integer","description":"Server to the snapshot should be created from.\n"}},"required":["serverId"],"inputProperties":{"description":{"type":"string","description":"Description of the snapshot.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"serverId":{"type":"integer","description":"Server to the snapshot should be created from.\n","willReplaceOnChanges":true}},"requiredInputs":["serverId"],"stateInputs":{"description":"Input properties used for looking up and filtering Snapshot resources.\n","properties":{"description":{"type":"string","description":"Description of the snapshot.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) should be created with.\n"},"serverId":{"type":"integer","description":"Server to the snapshot should be created from.\n","willReplaceOnChanges":true}},"type":"object"}},"hcloud:index/sshKey:SshKey":{"description":"Provides a Hetzner Cloud SSH Key resource to manage SSH Keys for server access.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\nimport * as std from \"@pulumi/std\";\n\nconst main = new hcloud.SshKey(\"main\", {\n    name: \"my-ssh-key\",\n    publicKey: std.file({\n        input: \"~/.ssh/id_ed25519.pub\",\n    }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\nimport pulumi_std as std\n\nmain = hcloud.SshKey(\"main\",\n    name=\"my-ssh-key\",\n    public_key=std.file(input=\"~/.ssh/id_ed25519.pub\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new HCloud.SshKey(\"main\", new()\n    {\n        Name = \"my-ssh-key\",\n        PublicKey = Std.File.Invoke(new()\n        {\n            Input = \"~/.ssh/id_ed25519.pub\",\n        }).Apply(invoke =\u003e invoke.Result),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"~/.ssh/id_ed25519.pub\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewSshKey(ctx, \"main\", \u0026hcloud.SshKeyArgs{\n\t\t\tName:      pulumi.String(\"my-ssh-key\"),\n\t\t\tPublicKey: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.SshKey;\nimport com.pulumi.hcloud.SshKeyArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var main = new SshKey(\"main\", SshKeyArgs.builder()\n            .name(\"my-ssh-key\")\n            .publicKey(StdFunctions.file(FileArgs.builder()\n                .input(\"~/.ssh/id_ed25519.pub\")\n                .build()).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: hcloud:SshKey\n    properties:\n      name: my-ssh-key\n      publicKey:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: ~/.ssh/id_ed25519.pub\n          return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import hcloud:index/sshKey:SshKey example \"$SSH_KEY_ID\"\n```\n\n","properties":{"fingerprint":{"type":"string","description":"Fingerprint of the SSH public key.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"name":{"type":"string","description":"Name of the SSH Key.\n"},"publicKey":{"type":"string","description":"Public key of the SSH Key pair. If this is a file, it can be read using the \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\"\u003e`file`\u003c/span\u003e interpolation function.\n"}},"required":["fingerprint","labels","name","publicKey"],"inputProperties":{"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"name":{"type":"string","description":"Name of the SSH Key.\n"},"publicKey":{"type":"string","description":"Public key of the SSH Key pair. If this is a file, it can be read using the \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\"\u003e`file`\u003c/span\u003e interpolation function.\n"}},"requiredInputs":["publicKey"],"stateInputs":{"description":"Input properties used for looking up and filtering SshKey resources.\n","properties":{"fingerprint":{"type":"string","description":"Fingerprint of the SSH public key.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"name":{"type":"string","description":"Name of the SSH Key.\n"},"publicKey":{"type":"string","description":"Public key of the SSH Key pair. If this is a file, it can be read using the \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\"\u003e`file`\u003c/span\u003e interpolation function.\n"}},"type":"object"}},"hcloud:index/storageBox:StorageBox":{"description":"Provides a Hetzner Storage Box resource.\n\nSee the [Storage Box API documentation](https://docs.hetzner.cloud/reference/hetzner#storage-boxes) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\nimport * as std from \"@pulumi/std\";\n\nconst backups = new hcloud.StorageBox(\"backups\", {\n    name: \"backups\",\n    storageBoxType: \"bx21\",\n    location: \"hel1\",\n    password: storageBoxPassword,\n    labels: {\n        foo: \"bar\",\n    },\n    accessSettings: {\n        reachableExternally: true,\n        sambaEnabled: true,\n        sshEnabled: true,\n        webdavEnabled: true,\n        zfsEnabled: true,\n    },\n    snapshotPlan: {\n        maxSnapshots: 10,\n        minute: 16,\n        hour: 18,\n        dayOfWeek: 3,\n    },\n    deleteProtection: true,\n});\nconst sshKey = new hcloud.StorageBox(\"ssh_key\", {\n    name: \"backups\",\n    storageBoxType: \"bx21\",\n    location: \"hel1\",\n    password: storageBoxPassword,\n    sshKeys: [\n        myKey.publicKey,\n        std.file({\n            input: \"~/.ssh/id_ed25519.pub\",\n        }).then(invoke =\u003e invoke.result),\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\nimport pulumi_std as std\n\nbackups = hcloud.StorageBox(\"backups\",\n    name=\"backups\",\n    storage_box_type=\"bx21\",\n    location=\"hel1\",\n    password=storage_box_password,\n    labels={\n        \"foo\": \"bar\",\n    },\n    access_settings={\n        \"reachable_externally\": True,\n        \"samba_enabled\": True,\n        \"ssh_enabled\": True,\n        \"webdav_enabled\": True,\n        \"zfs_enabled\": True,\n    },\n    snapshot_plan={\n        \"max_snapshots\": 10,\n        \"minute\": 16,\n        \"hour\": 18,\n        \"day_of_week\": 3,\n    },\n    delete_protection=True)\nssh_key = hcloud.StorageBox(\"ssh_key\",\n    name=\"backups\",\n    storage_box_type=\"bx21\",\n    location=\"hel1\",\n    password=storage_box_password,\n    ssh_keys=[\n        my_key[\"publicKey\"],\n        std.file(input=\"~/.ssh/id_ed25519.pub\").result,\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var backups = new HCloud.StorageBox(\"backups\", new()\n    {\n        Name = \"backups\",\n        StorageBoxType = \"bx21\",\n        Location = \"hel1\",\n        Password = storageBoxPassword,\n        Labels = \n        {\n            { \"foo\", \"bar\" },\n        },\n        AccessSettings = new HCloud.Inputs.StorageBoxAccessSettingsArgs\n        {\n            ReachableExternally = true,\n            SambaEnabled = true,\n            SshEnabled = true,\n            WebdavEnabled = true,\n            ZfsEnabled = true,\n        },\n        SnapshotPlan = new HCloud.Inputs.StorageBoxSnapshotPlanArgs\n        {\n            MaxSnapshots = 10,\n            Minute = 16,\n            Hour = 18,\n            DayOfWeek = 3,\n        },\n        DeleteProtection = true,\n    });\n\n    var sshKey = new HCloud.StorageBox(\"ssh_key\", new()\n    {\n        Name = \"backups\",\n        StorageBoxType = \"bx21\",\n        Location = \"hel1\",\n        Password = storageBoxPassword,\n        SshKeys = new[]\n        {\n            myKey.PublicKey,\n            Std.File.Invoke(new()\n            {\n                Input = \"~/.ssh/id_ed25519.pub\",\n            }).Apply(invoke =\u003e invoke.Result),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.NewStorageBox(ctx, \"backups\", \u0026hcloud.StorageBoxArgs{\n\t\t\tName:           pulumi.String(\"backups\"),\n\t\t\tStorageBoxType: pulumi.String(\"bx21\"),\n\t\t\tLocation:       pulumi.String(\"hel1\"),\n\t\t\tPassword:       pulumi.Any(storageBoxPassword),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tAccessSettings: \u0026hcloud.StorageBoxAccessSettingsArgs{\n\t\t\t\tReachableExternally: pulumi.Bool(true),\n\t\t\t\tSambaEnabled:        pulumi.Bool(true),\n\t\t\t\tSshEnabled:          pulumi.Bool(true),\n\t\t\t\tWebdavEnabled:       pulumi.Bool(true),\n\t\t\t\tZfsEnabled:          pulumi.Bool(true),\n\t\t\t},\n\t\t\tSnapshotPlan: \u0026hcloud.StorageBoxSnapshotPlanArgs{\n\t\t\t\tMaxSnapshots: pulumi.Int(10),\n\t\t\t\tMinute:       pulumi.Int(16),\n\t\t\t\tHour:         pulumi.Int(18),\n\t\t\t\tDayOfWeek:    pulumi.Int(3),\n\t\t\t},\n\t\t\tDeleteProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"~/.ssh/id_ed25519.pub\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewStorageBox(ctx, \"ssh_key\", \u0026hcloud.StorageBoxArgs{\n\t\t\tName:           pulumi.String(\"backups\"),\n\t\t\tStorageBoxType: pulumi.String(\"bx21\"),\n\t\t\tLocation:       pulumi.String(\"hel1\"),\n\t\t\tPassword:       pulumi.Any(storageBoxPassword),\n\t\t\tSshKeys: pulumi.StringArray{\n\t\t\t\tmyKey.PublicKey,\n\t\t\t\tpulumi.String(invokeFile.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.StorageBox;\nimport com.pulumi.hcloud.StorageBoxArgs;\nimport com.pulumi.hcloud.inputs.StorageBoxAccessSettingsArgs;\nimport com.pulumi.hcloud.inputs.StorageBoxSnapshotPlanArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var backups = new StorageBox(\"backups\", StorageBoxArgs.builder()\n            .name(\"backups\")\n            .storageBoxType(\"bx21\")\n            .location(\"hel1\")\n            .password(storageBoxPassword)\n            .labels(Map.of(\"foo\", \"bar\"))\n            .accessSettings(StorageBoxAccessSettingsArgs.builder()\n                .reachableExternally(true)\n                .sambaEnabled(true)\n                .sshEnabled(true)\n                .webdavEnabled(true)\n                .zfsEnabled(true)\n                .build())\n            .snapshotPlan(StorageBoxSnapshotPlanArgs.builder()\n                .maxSnapshots(10)\n                .minute(16)\n                .hour(18)\n                .dayOfWeek(3)\n                .build())\n            .deleteProtection(true)\n            .build());\n\n        var sshKey = new StorageBox(\"sshKey\", StorageBoxArgs.builder()\n            .name(\"backups\")\n            .storageBoxType(\"bx21\")\n            .location(\"hel1\")\n            .password(storageBoxPassword)\n            .sshKeys(            \n                myKey.publicKey(),\n                StdFunctions.file(FileArgs.builder()\n                    .input(\"~/.ssh/id_ed25519.pub\")\n                    .build()).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  backups:\n    type: hcloud:StorageBox\n    properties:\n      name: backups\n      storageBoxType: bx21\n      location: hel1\n      password: ${storageBoxPassword}\n      labels:\n        foo: bar\n      accessSettings:\n        reachableExternally: true\n        sambaEnabled: true\n        sshEnabled: true\n        webdavEnabled: true\n        zfsEnabled: true\n      snapshotPlan:\n        maxSnapshots: 10\n        minute: 16\n        hour: 18\n        dayOfWeek: 3\n      deleteProtection: true\n  sshKey:\n    type: hcloud:StorageBox\n    name: ssh_key\n    properties:\n      name: backups\n      storageBoxType: bx21\n      location: hel1\n      password: ${storageBoxPassword}\n      sshKeys:\n        - ${myKey.publicKey}\n        - fn::invoke:\n            function: std:file\n            arguments:\n              input: ~/.ssh/id_ed25519.pub\n            return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import hcloud:index/storageBox:StorageBox example \"$STORAGE_BOX_ID\"\n```\n\n","properties":{"accessSettings":{"$ref":"#/types/hcloud:index/StorageBoxAccessSettings:StorageBoxAccessSettings","description":"Access settings of the Storage Box.\n"},"deleteProtection":{"type":"boolean","description":"Prevent the Storage Box from being accidentally deleted outside of Terraform.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"location":{"type":"string","description":"Name of the Location.\n"},"name":{"type":"string","description":"Name of the Storage Box.\n"},"password":{"type":"string","description":"Password of the Storage Box. For more details, see the [Storage Boxes password policy](https://docs.hetzner.cloud/reference/hetzner#storage-boxes-password-policy).\n","secret":true},"server":{"type":"string","description":"FQDN of the Storage Box.\n"},"snapshotPlan":{"$ref":"#/types/hcloud:index/StorageBoxSnapshotPlan:StorageBoxSnapshotPlan","description":"Details of the active snapshot plan.\n"},"sshKeys":{"type":"array","items":{"type":"string"},"description":"SSH public keys in OpenSSH format to inject into the Storage Box. It is not possible to update the SSH Keys through the API, so changing this attribute forces a replace of the Storage Box.\n"},"storageBoxType":{"type":"string","description":"Name of the Storage Box Type.\n"},"system":{"type":"string","description":"Host system of the Storage Box.\n"},"username":{"type":"string","description":"Primary username of the Storage Box.\n"}},"required":["accessSettings","deleteProtection","labels","location","name","password","server","sshKeys","storageBoxType","system","username"],"inputProperties":{"accessSettings":{"$ref":"#/types/hcloud:index/StorageBoxAccessSettings:StorageBoxAccessSettings","description":"Access settings of the Storage Box.\n"},"deleteProtection":{"type":"boolean","description":"Prevent the Storage Box from being accidentally deleted outside of Terraform.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"location":{"type":"string","description":"Name of the Location.\n"},"name":{"type":"string","description":"Name of the Storage Box.\n"},"password":{"type":"string","description":"Password of the Storage Box. For more details, see the [Storage Boxes password policy](https://docs.hetzner.cloud/reference/hetzner#storage-boxes-password-policy).\n","secret":true},"snapshotPlan":{"$ref":"#/types/hcloud:index/StorageBoxSnapshotPlan:StorageBoxSnapshotPlan","description":"Details of the active snapshot plan.\n"},"sshKeys":{"type":"array","items":{"type":"string"},"description":"SSH public keys in OpenSSH format to inject into the Storage Box. It is not possible to update the SSH Keys through the API, so changing this attribute forces a replace of the Storage Box.\n"},"storageBoxType":{"type":"string","description":"Name of the Storage Box Type.\n"}},"requiredInputs":["location","password","storageBoxType"],"stateInputs":{"description":"Input properties used for looking up and filtering StorageBox resources.\n","properties":{"accessSettings":{"$ref":"#/types/hcloud:index/StorageBoxAccessSettings:StorageBoxAccessSettings","description":"Access settings of the Storage Box.\n"},"deleteProtection":{"type":"boolean","description":"Prevent the Storage Box from being accidentally deleted outside of Terraform.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"location":{"type":"string","description":"Name of the Location.\n"},"name":{"type":"string","description":"Name of the Storage Box.\n"},"password":{"type":"string","description":"Password of the Storage Box. For more details, see the [Storage Boxes password policy](https://docs.hetzner.cloud/reference/hetzner#storage-boxes-password-policy).\n","secret":true},"server":{"type":"string","description":"FQDN of the Storage Box.\n"},"snapshotPlan":{"$ref":"#/types/hcloud:index/StorageBoxSnapshotPlan:StorageBoxSnapshotPlan","description":"Details of the active snapshot plan.\n"},"sshKeys":{"type":"array","items":{"type":"string"},"description":"SSH public keys in OpenSSH format to inject into the Storage Box. It is not possible to update the SSH Keys through the API, so changing this attribute forces a replace of the Storage Box.\n"},"storageBoxType":{"type":"string","description":"Name of the Storage Box Type.\n"},"system":{"type":"string","description":"Host system of the Storage Box.\n"},"username":{"type":"string","description":"Primary username of the Storage Box.\n"}},"type":"object"}},"hcloud:index/storageBoxSnapshot:StorageBoxSnapshot":{"description":"Provides a Hetzner Storage Box Snapshot resource.\n\nSee the [Storage Box Snapshots API documentation](https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst main = new hcloud.StorageBox(\"main\", {});\nconst backup = new hcloud.StorageBoxSnapshot(\"backup\", {\n    storageBoxId: main.id,\n    description: \"Before Tool XYZ Migration\",\n    labels: {\n        env: \"production\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nmain = hcloud.StorageBox(\"main\")\nbackup = hcloud.StorageBoxSnapshot(\"backup\",\n    storage_box_id=main.id,\n    description=\"Before Tool XYZ Migration\",\n    labels={\n        \"env\": \"production\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new HCloud.StorageBox(\"main\");\n\n    var backup = new HCloud.StorageBoxSnapshot(\"backup\", new()\n    {\n        StorageBoxId = main.Id,\n        Description = \"Before Tool XYZ Migration\",\n        Labels = \n        {\n            { \"env\", \"production\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := hcloud.NewStorageBox(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewStorageBoxSnapshot(ctx, \"backup\", \u0026hcloud.StorageBoxSnapshotArgs{\n\t\t\tStorageBoxId: main.ID(),\n\t\t\tDescription:  pulumi.String(\"Before Tool XYZ Migration\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"production\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.StorageBox;\nimport com.pulumi.hcloud.StorageBoxSnapshot;\nimport com.pulumi.hcloud.StorageBoxSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var main = new StorageBox(\"main\");\n\n        var backup = new StorageBoxSnapshot(\"backup\", StorageBoxSnapshotArgs.builder()\n            .storageBoxId(main.id())\n            .description(\"Before Tool XYZ Migration\")\n            .labels(Map.of(\"env\", \"production\"))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: hcloud:StorageBox\n  backup:\n    type: hcloud:StorageBoxSnapshot\n    properties:\n      storageBoxId: ${main.id}\n      description: Before Tool XYZ Migration\n      labels:\n        env: production\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import hcloud:index/storageBoxSnapshot:StorageBoxSnapshot example \"$STORAGE_BOX_ID/$STORAGE_BOX_SNAPSHOT_ID\"\n```\n\n","properties":{"description":{"type":"string","description":"Description of the Storage Box Snapshot.\n"},"isAutomatic":{"type":"boolean","description":"Whether the Storage Box Snapshot was created automatically.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"name":{"type":"string","description":"Name of the Storage Box Snapshot.\n"},"storageBoxId":{"type":"integer","description":"ID of the Storage Box.\n"}},"required":["description","isAutomatic","labels","name","storageBoxId"],"inputProperties":{"description":{"type":"string","description":"Description of the Storage Box Snapshot.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"storageBoxId":{"type":"integer","description":"ID of the Storage Box.\n"}},"requiredInputs":["storageBoxId"],"stateInputs":{"description":"Input properties used for looking up and filtering StorageBoxSnapshot resources.\n","properties":{"description":{"type":"string","description":"Description of the Storage Box Snapshot.\n"},"isAutomatic":{"type":"boolean","description":"Whether the Storage Box Snapshot was created automatically.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"name":{"type":"string","description":"Name of the Storage Box Snapshot.\n"},"storageBoxId":{"type":"integer","description":"ID of the Storage Box.\n"}},"type":"object"}},"hcloud:index/storageBoxSubaccount:StorageBoxSubaccount":{"description":"Provides a Hetzner Storage Box Subaccount resource.\n\nSee the [Storage Box Subaccounts API documentation](https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst config = new pulumi.Config();\nconst teamBadgerPassword = config.require(\"teamBadgerPassword\");\nconst main = new hcloud.StorageBox(\"main\", {});\nconst teamBadger = new hcloud.StorageBoxSubaccount(\"team_badger\", {\n    storageBoxId: main.id,\n    name: \"badger\",\n    homeDirectory: \"teams/badger/\",\n    password: teamBadgerPassword,\n    accessSettings: {\n        reachableExternally: true,\n        sambaEnabled: true,\n    },\n    description: \"Primary account for the Badger team to upload files.\",\n    labels: {\n        env: \"production\",\n        team: \"badger\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nconfig = pulumi.Config()\nteam_badger_password = config.require(\"teamBadgerPassword\")\nmain = hcloud.StorageBox(\"main\")\nteam_badger = hcloud.StorageBoxSubaccount(\"team_badger\",\n    storage_box_id=main.id,\n    name=\"badger\",\n    home_directory=\"teams/badger/\",\n    password=team_badger_password,\n    access_settings={\n        \"reachable_externally\": True,\n        \"samba_enabled\": True,\n    },\n    description=\"Primary account for the Badger team to upload files.\",\n    labels={\n        \"env\": \"production\",\n        \"team\": \"badger\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var teamBadgerPassword = config.Require(\"teamBadgerPassword\");\n    var main = new HCloud.StorageBox(\"main\");\n\n    var teamBadger = new HCloud.StorageBoxSubaccount(\"team_badger\", new()\n    {\n        StorageBoxId = main.Id,\n        Name = \"badger\",\n        HomeDirectory = \"teams/badger/\",\n        Password = teamBadgerPassword,\n        AccessSettings = new HCloud.Inputs.StorageBoxSubaccountAccessSettingsArgs\n        {\n            ReachableExternally = true,\n            SambaEnabled = true,\n        },\n        Description = \"Primary account for the Badger team to upload files.\",\n        Labels = \n        {\n            { \"env\", \"production\" },\n            { \"team\", \"badger\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tteamBadgerPassword := cfg.Require(\"teamBadgerPassword\")\n\t\tmain, err := hcloud.NewStorageBox(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewStorageBoxSubaccount(ctx, \"team_badger\", \u0026hcloud.StorageBoxSubaccountArgs{\n\t\t\tStorageBoxId:  main.ID(),\n\t\t\tName:          pulumi.String(\"badger\"),\n\t\t\tHomeDirectory: pulumi.String(\"teams/badger/\"),\n\t\t\tPassword:      pulumi.String(teamBadgerPassword),\n\t\t\tAccessSettings: \u0026hcloud.StorageBoxSubaccountAccessSettingsArgs{\n\t\t\t\tReachableExternally: pulumi.Bool(true),\n\t\t\t\tSambaEnabled:        pulumi.Bool(true),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"Primary account for the Badger team to upload files.\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\":  pulumi.String(\"production\"),\n\t\t\t\t\"team\": pulumi.String(\"badger\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.StorageBox;\nimport com.pulumi.hcloud.StorageBoxSubaccount;\nimport com.pulumi.hcloud.StorageBoxSubaccountArgs;\nimport com.pulumi.hcloud.inputs.StorageBoxSubaccountAccessSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var config = ctx.config();\n        final var teamBadgerPassword = config.get(\"teamBadgerPassword\");\n        var main = new StorageBox(\"main\");\n\n        var teamBadger = new StorageBoxSubaccount(\"teamBadger\", StorageBoxSubaccountArgs.builder()\n            .storageBoxId(main.id())\n            .name(\"badger\")\n            .homeDirectory(\"teams/badger/\")\n            .password(teamBadgerPassword)\n            .accessSettings(StorageBoxSubaccountAccessSettingsArgs.builder()\n                .reachableExternally(true)\n                .sambaEnabled(true)\n                .build())\n            .description(\"Primary account for the Badger team to upload files.\")\n            .labels(Map.ofEntries(\n                Map.entry(\"env\", \"production\"),\n                Map.entry(\"team\", \"badger\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  teamBadgerPassword:\n    type: string\nresources:\n  main:\n    type: hcloud:StorageBox\n  teamBadger:\n    type: hcloud:StorageBoxSubaccount\n    name: team_badger\n    properties:\n      storageBoxId: ${main.id}\n      name: badger\n      homeDirectory: teams/badger/\n      password: ${teamBadgerPassword}\n      accessSettings:\n        reachableExternally: true\n        sambaEnabled: true\n      description: Primary account for the Badger team to upload files.\n      labels:\n        env: production\n        team: badger\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import hcloud:index/storageBoxSubaccount:StorageBoxSubaccount example \"$STORAGE_BOX_ID/$STORAGE_BOX_SUBACCOUNT_ID\"\n```\n\n","properties":{"accessSettings":{"$ref":"#/types/hcloud:index/StorageBoxSubaccountAccessSettings:StorageBoxSubaccountAccessSettings","description":"Access settings for the Subaccount.\n"},"description":{"type":"string","description":"A description of the Storage Box Subaccount.\n"},"homeDirectory":{"type":"string","description":"Home directory of the Storage Box Subaccount. The directory will be created if it doesn't exist yet. Must not include a leading slash (`/`).\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"name":{"type":"string","description":"Name of the Storage Box Subaccount.\n"},"password":{"type":"string","description":"Password of the Storage Box. For more details, see the [Storage Boxes password policy](https://docs.hetzner.cloud/reference/hetzner#storage-boxes-password-policy).\n","secret":true},"server":{"type":"string","description":"FQDN of the Storage Box Subaccount.\n"},"storageBoxId":{"type":"integer","description":"ID of the Storage Box.\n"},"username":{"type":"string","description":"Username of the Storage Box Subaccount.\n"}},"required":["accessSettings","description","homeDirectory","labels","name","password","server","storageBoxId","username"],"inputProperties":{"accessSettings":{"$ref":"#/types/hcloud:index/StorageBoxSubaccountAccessSettings:StorageBoxSubaccountAccessSettings","description":"Access settings for the Subaccount.\n"},"description":{"type":"string","description":"A description of the Storage Box Subaccount.\n"},"homeDirectory":{"type":"string","description":"Home directory of the Storage Box Subaccount. The directory will be created if it doesn't exist yet. Must not include a leading slash (`/`).\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"name":{"type":"string","description":"Name of the Storage Box Subaccount.\n"},"password":{"type":"string","description":"Password of the Storage Box. For more details, see the [Storage Boxes password policy](https://docs.hetzner.cloud/reference/hetzner#storage-boxes-password-policy).\n","secret":true},"storageBoxId":{"type":"integer","description":"ID of the Storage Box.\n"}},"requiredInputs":["homeDirectory","password","storageBoxId"],"stateInputs":{"description":"Input properties used for looking up and filtering StorageBoxSubaccount resources.\n","properties":{"accessSettings":{"$ref":"#/types/hcloud:index/StorageBoxSubaccountAccessSettings:StorageBoxSubaccountAccessSettings","description":"Access settings for the Subaccount.\n"},"description":{"type":"string","description":"A description of the Storage Box Subaccount.\n"},"homeDirectory":{"type":"string","description":"Home directory of the Storage Box Subaccount. The directory will be created if it doesn't exist yet. Must not include a leading slash (`/`).\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"name":{"type":"string","description":"Name of the Storage Box Subaccount.\n"},"password":{"type":"string","description":"Password of the Storage Box. For more details, see the [Storage Boxes password policy](https://docs.hetzner.cloud/reference/hetzner#storage-boxes-password-policy).\n","secret":true},"server":{"type":"string","description":"FQDN of the Storage Box Subaccount.\n"},"storageBoxId":{"type":"integer","description":"ID of the Storage Box.\n"},"username":{"type":"string","description":"Username of the Storage Box Subaccount.\n"}},"type":"object"}},"hcloud:index/uploadedCertificate:UploadedCertificate":{"description":"Upload a TLS certificate to Hetzner Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst sampleCertificate = new hcloud.UploadedCertificate(\"sample_certificate\", {\n    name: \"test-certificate-%d\",\n    privateKey: `-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEAorPccsHibgGLJIub5Sb1yvDvARifoKzg7MIhyAYLnJkGn9B1\n...\nAHcjLFCNvobInLHTTmCoAxYBmEv2eakas0+n4g/LM2Ukaw1Bz+3VrVo=\n-----END RSA PRIVATE KEY-----\n`,\n    certificate: `-----BEGIN CERTIFICATE-----\nMIIDMDCCAhigAwIBAgIIJgROscP8RRUwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE\n...\nTKS8gQ==\n-----END CERTIFICATE-----\n`,\n    labels: {\n        label_1: \"value_1\",\n        label_2: \"value_2\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nsample_certificate = hcloud.UploadedCertificate(\"sample_certificate\",\n    name=\"test-certificate-%d\",\n    private_key=\"\"\"-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEAorPccsHibgGLJIub5Sb1yvDvARifoKzg7MIhyAYLnJkGn9B1\n...\nAHcjLFCNvobInLHTTmCoAxYBmEv2eakas0+n4g/LM2Ukaw1Bz+3VrVo=\n-----END RSA PRIVATE KEY-----\n\"\"\",\n    certificate=\"\"\"-----BEGIN CERTIFICATE-----\nMIIDMDCCAhigAwIBAgIIJgROscP8RRUwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE\n...\nTKS8gQ==\n-----END CERTIFICATE-----\n\"\"\",\n    labels={\n        \"label_1\": \"value_1\",\n        \"label_2\": \"value_2\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sampleCertificate = new HCloud.UploadedCertificate(\"sample_certificate\", new()\n    {\n        Name = \"test-certificate-%d\",\n        PrivateKey = @\"-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEAorPccsHibgGLJIub5Sb1yvDvARifoKzg7MIhyAYLnJkGn9B1\n...\nAHcjLFCNvobInLHTTmCoAxYBmEv2eakas0+n4g/LM2Ukaw1Bz+3VrVo=\n-----END RSA PRIVATE KEY-----\n\",\n        Certificate = @\"-----BEGIN CERTIFICATE-----\nMIIDMDCCAhigAwIBAgIIJgROscP8RRUwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE\n...\nTKS8gQ==\n-----END CERTIFICATE-----\n\",\n        Labels = \n        {\n            { \"label_1\", \"value_1\" },\n            { \"label_2\", \"value_2\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.NewUploadedCertificate(ctx, \"sample_certificate\", \u0026hcloud.UploadedCertificateArgs{\n\t\t\tName: pulumi.String(\"test-certificate-%d\"),\n\t\t\tPrivateKey: pulumi.String(`-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEAorPccsHibgGLJIub5Sb1yvDvARifoKzg7MIhyAYLnJkGn9B1\n...\nAHcjLFCNvobInLHTTmCoAxYBmEv2eakas0+n4g/LM2Ukaw1Bz+3VrVo=\n-----END RSA PRIVATE KEY-----\n`),\n\t\t\tCertificate: pulumi.String(`-----BEGIN CERTIFICATE-----\nMIIDMDCCAhigAwIBAgIIJgROscP8RRUwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE\n...\nTKS8gQ==\n-----END CERTIFICATE-----\n`),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label_1\": pulumi.String(\"value_1\"),\n\t\t\t\t\"label_2\": pulumi.String(\"value_2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.UploadedCertificate;\nimport com.pulumi.hcloud.UploadedCertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var sampleCertificate = new UploadedCertificate(\"sampleCertificate\", UploadedCertificateArgs.builder()\n            .name(\"test-certificate-%d\")\n            .privateKey(\"\"\"\n-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEAorPccsHibgGLJIub5Sb1yvDvARifoKzg7MIhyAYLnJkGn9B1\n...\nAHcjLFCNvobInLHTTmCoAxYBmEv2eakas0+n4g/LM2Ukaw1Bz+3VrVo=\n-----END RSA PRIVATE KEY-----\n            \"\"\")\n            .certificate(\"\"\"\n-----BEGIN CERTIFICATE-----\nMIIDMDCCAhigAwIBAgIIJgROscP8RRUwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE\n...\nTKS8gQ==\n-----END CERTIFICATE-----\n            \"\"\")\n            .labels(Map.ofEntries(\n                Map.entry(\"label_1\", \"value_1\"),\n                Map.entry(\"label_2\", \"value_2\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  sampleCertificate:\n    type: hcloud:UploadedCertificate\n    name: sample_certificate\n    properties:\n      name: test-certificate-%d\n      privateKey: |\n        -----BEGIN RSA PRIVATE KEY-----\n        MIIEpQIBAAKCAQEAorPccsHibgGLJIub5Sb1yvDvARifoKzg7MIhyAYLnJkGn9B1\n        ...\n        AHcjLFCNvobInLHTTmCoAxYBmEv2eakas0+n4g/LM2Ukaw1Bz+3VrVo=\n        -----END RSA PRIVATE KEY-----\n      certificate: |\n        -----BEGIN CERTIFICATE-----\n        MIIDMDCCAhigAwIBAgIIJgROscP8RRUwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE\n        ...\n        TKS8gQ==\n        -----END CERTIFICATE-----\n      labels:\n        label_1: value_1\n        label_2: value_2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUploaded certificates can be imported using their \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e:\n\n```sh\n$ pulumi import hcloud:index/uploadedCertificate:UploadedCertificate example \"$CERTIFICATE_ID\"\n```\n\n","properties":{"certificate":{"type":"string","description":"PEM encoded TLS certificate.\n"},"created":{"type":"string","description":"(string) Point in time when the Certificate was created at Hetzner Cloud (in ISO-8601 format).\n"},"domainNames":{"type":"array","items":{"type":"string"},"description":"(list) Domains and subdomains covered by the certificate.\n"},"fingerprint":{"type":"string","description":"(string) Fingerprint of the certificate.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) the\ncertificate should be created with.\n"},"name":{"type":"string","description":"Name of the Certificate.\n"},"notValidAfter":{"type":"string","description":"(string) Point in time when the Certificate stops being valid (in ISO-8601 format).\n"},"notValidBefore":{"type":"string","description":"(string) Point in time when the Certificate becomes valid (in ISO-8601 format).\n"},"privateKey":{"type":"string","description":"PEM encoded private key belonging to the certificate.\n","secret":true},"type":{"type":"string"}},"required":["certificate","created","domainNames","fingerprint","name","notValidAfter","notValidBefore","privateKey","type"],"inputProperties":{"certificate":{"type":"string","description":"PEM encoded TLS certificate.\n","willReplaceOnChanges":true},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) the\ncertificate should be created with.\n"},"name":{"type":"string","description":"Name of the Certificate.\n"},"privateKey":{"type":"string","description":"PEM encoded private key belonging to the certificate.\n","secret":true,"willReplaceOnChanges":true}},"requiredInputs":["certificate","privateKey"],"stateInputs":{"description":"Input properties used for looking up and filtering UploadedCertificate resources.\n","properties":{"certificate":{"type":"string","description":"PEM encoded TLS certificate.\n","willReplaceOnChanges":true},"created":{"type":"string","description":"(string) Point in time when the Certificate was created at Hetzner Cloud (in ISO-8601 format).\n"},"domainNames":{"type":"array","items":{"type":"string"},"description":"(list) Domains and subdomains covered by the certificate.\n"},"fingerprint":{"type":"string","description":"(string) Fingerprint of the certificate.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs) the\ncertificate should be created with.\n"},"name":{"type":"string","description":"Name of the Certificate.\n"},"notValidAfter":{"type":"string","description":"(string) Point in time when the Certificate stops being valid (in ISO-8601 format).\n"},"notValidBefore":{"type":"string","description":"(string) Point in time when the Certificate becomes valid (in ISO-8601 format).\n"},"privateKey":{"type":"string","description":"PEM encoded private key belonging to the certificate.\n","secret":true,"willReplaceOnChanges":true},"type":{"type":"string"}},"type":"object"}},"hcloud:index/volume:Volume":{"description":"Provides a Hetzner Cloud volume resource to manage volumes.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst node1 = new hcloud.Server(\"node1\", {\n    name: \"node1\",\n    image: \"debian-12\",\n    serverType: \"cx23\",\n});\nconst master = new hcloud.Volume(\"master\", {\n    name: \"volume1\",\n    size: 50,\n    serverId: node1.id,\n    automount: true,\n    format: \"ext4\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nnode1 = hcloud.Server(\"node1\",\n    name=\"node1\",\n    image=\"debian-12\",\n    server_type=\"cx23\")\nmaster = hcloud.Volume(\"master\",\n    name=\"volume1\",\n    size=50,\n    server_id=node1.id,\n    automount=True,\n    format=\"ext4\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var node1 = new HCloud.Server(\"node1\", new()\n    {\n        Name = \"node1\",\n        Image = \"debian-12\",\n        ServerType = \"cx23\",\n    });\n\n    var master = new HCloud.Volume(\"master\", new()\n    {\n        Name = \"volume1\",\n        Size = 50,\n        ServerId = node1.Id,\n        Automount = true,\n        Format = \"ext4\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnode1, err := hcloud.NewServer(ctx, \"node1\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"node1\"),\n\t\t\tImage:      pulumi.String(\"debian-12\"),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewVolume(ctx, \"master\", \u0026hcloud.VolumeArgs{\n\t\t\tName:      pulumi.String(\"volume1\"),\n\t\t\tSize:      pulumi.Int(50),\n\t\t\tServerId:  node1.ID(),\n\t\t\tAutomount: pulumi.Bool(true),\n\t\t\tFormat:    pulumi.String(\"ext4\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.Volume;\nimport com.pulumi.hcloud.VolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var node1 = new Server(\"node1\", ServerArgs.builder()\n            .name(\"node1\")\n            .image(\"debian-12\")\n            .serverType(\"cx23\")\n            .build());\n\n        var master = new Volume(\"master\", VolumeArgs.builder()\n            .name(\"volume1\")\n            .size(50)\n            .serverId(node1.id())\n            .automount(true)\n            .format(\"ext4\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  node1:\n    type: hcloud:Server\n    properties:\n      name: node1\n      image: debian-12\n      serverType: cx23\n  master:\n    type: hcloud:Volume\n    properties:\n      name: volume1\n      size: 50\n      serverId: ${node1.id}\n      automount: true\n      format: ext4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVolumes can be imported using their \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e:\n\n```sh\n$ pulumi import hcloud:index/volume:Volume example \"$VOLUME_ID\"\n```\n\n","properties":{"automount":{"type":"boolean","description":"Automount the volume upon attaching it (server_id must be provided).\n"},"deleteProtection":{"type":"boolean","description":"Enable or disable delete protection. See \"Delete Protection\" in the Provider Docs for details.\n\n**Note:** When you want to attach multiple volumes to a server, please use the \u003cspan pulumi-lang-nodejs=\"`hcloud.VolumeAttachment`\" pulumi-lang-dotnet=\"`hcloud.VolumeAttachment`\" pulumi-lang-go=\"`VolumeAttachment`\" pulumi-lang-python=\"`VolumeAttachment`\" pulumi-lang-yaml=\"`hcloud.VolumeAttachment`\" pulumi-lang-java=\"`hcloud.VolumeAttachment`\"\u003e`hcloud.VolumeAttachment`\u003c/span\u003e resource and the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e argument instead of the \u003cspan pulumi-lang-nodejs=\"`serverId`\" pulumi-lang-dotnet=\"`ServerId`\" pulumi-lang-go=\"`serverId`\" pulumi-lang-python=\"`server_id`\" pulumi-lang-yaml=\"`serverId`\" pulumi-lang-java=\"`serverId`\"\u003e`server_id`\u003c/span\u003e argument.\n"},"format":{"type":"string","description":"Format volume after creation. \u003cspan pulumi-lang-nodejs=\"`xfs`\" pulumi-lang-dotnet=\"`Xfs`\" pulumi-lang-go=\"`xfs`\" pulumi-lang-python=\"`xfs`\" pulumi-lang-yaml=\"`xfs`\" pulumi-lang-java=\"`xfs`\"\u003e`xfs`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ext4`\" pulumi-lang-dotnet=\"`Ext4`\" pulumi-lang-go=\"`ext4`\" pulumi-lang-python=\"`ext4`\" pulumi-lang-yaml=\"`ext4`\" pulumi-lang-java=\"`ext4`\"\u003e`ext4`\u003c/span\u003e\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs).\n"},"linuxDevice":{"type":"string","description":"(string) Device path on the file system for the Volume.\n"},"location":{"type":"string","description":"The location name of the volume to create, not allowed if\u003cspan pulumi-lang-nodejs=\" serverId \" pulumi-lang-dotnet=\" ServerId \" pulumi-lang-go=\" serverId \" pulumi-lang-python=\" server_id \" pulumi-lang-yaml=\" serverId \" pulumi-lang-java=\" serverId \"\u003e server_id \u003c/span\u003eargument is passed. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n"},"name":{"type":"string","description":"Name of the volume to create (must be unique per project).\n"},"serverId":{"type":"integer","description":"Server to attach the Volume to, not allowed if location argument is passed.\n"},"size":{"type":"integer","description":"Size of the volume (in GB).\n"}},"required":["linuxDevice","location","name","serverId","size"],"inputProperties":{"automount":{"type":"boolean","description":"Automount the volume upon attaching it (server_id must be provided).\n"},"deleteProtection":{"type":"boolean","description":"Enable or disable delete protection. See \"Delete Protection\" in the Provider Docs for details.\n\n**Note:** When you want to attach multiple volumes to a server, please use the \u003cspan pulumi-lang-nodejs=\"`hcloud.VolumeAttachment`\" pulumi-lang-dotnet=\"`hcloud.VolumeAttachment`\" pulumi-lang-go=\"`VolumeAttachment`\" pulumi-lang-python=\"`VolumeAttachment`\" pulumi-lang-yaml=\"`hcloud.VolumeAttachment`\" pulumi-lang-java=\"`hcloud.VolumeAttachment`\"\u003e`hcloud.VolumeAttachment`\u003c/span\u003e resource and the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e argument instead of the \u003cspan pulumi-lang-nodejs=\"`serverId`\" pulumi-lang-dotnet=\"`ServerId`\" pulumi-lang-go=\"`serverId`\" pulumi-lang-python=\"`server_id`\" pulumi-lang-yaml=\"`serverId`\" pulumi-lang-java=\"`serverId`\"\u003e`server_id`\u003c/span\u003e argument.\n"},"format":{"type":"string","description":"Format volume after creation. \u003cspan pulumi-lang-nodejs=\"`xfs`\" pulumi-lang-dotnet=\"`Xfs`\" pulumi-lang-go=\"`xfs`\" pulumi-lang-python=\"`xfs`\" pulumi-lang-yaml=\"`xfs`\" pulumi-lang-java=\"`xfs`\"\u003e`xfs`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ext4`\" pulumi-lang-dotnet=\"`Ext4`\" pulumi-lang-go=\"`ext4`\" pulumi-lang-python=\"`ext4`\" pulumi-lang-yaml=\"`ext4`\" pulumi-lang-java=\"`ext4`\"\u003e`ext4`\u003c/span\u003e\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs).\n"},"location":{"type":"string","description":"The location name of the volume to create, not allowed if\u003cspan pulumi-lang-nodejs=\" serverId \" pulumi-lang-dotnet=\" ServerId \" pulumi-lang-go=\" serverId \" pulumi-lang-python=\" server_id \" pulumi-lang-yaml=\" serverId \" pulumi-lang-java=\" serverId \"\u003e server_id \u003c/span\u003eargument is passed. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Name of the volume to create (must be unique per project).\n"},"serverId":{"type":"integer","description":"Server to attach the Volume to, not allowed if location argument is passed.\n"},"size":{"type":"integer","description":"Size of the volume (in GB).\n"}},"requiredInputs":["size"],"stateInputs":{"description":"Input properties used for looking up and filtering Volume resources.\n","properties":{"automount":{"type":"boolean","description":"Automount the volume upon attaching it (server_id must be provided).\n"},"deleteProtection":{"type":"boolean","description":"Enable or disable delete protection. See \"Delete Protection\" in the Provider Docs for details.\n\n**Note:** When you want to attach multiple volumes to a server, please use the \u003cspan pulumi-lang-nodejs=\"`hcloud.VolumeAttachment`\" pulumi-lang-dotnet=\"`hcloud.VolumeAttachment`\" pulumi-lang-go=\"`VolumeAttachment`\" pulumi-lang-python=\"`VolumeAttachment`\" pulumi-lang-yaml=\"`hcloud.VolumeAttachment`\" pulumi-lang-java=\"`hcloud.VolumeAttachment`\"\u003e`hcloud.VolumeAttachment`\u003c/span\u003e resource and the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e argument instead of the \u003cspan pulumi-lang-nodejs=\"`serverId`\" pulumi-lang-dotnet=\"`ServerId`\" pulumi-lang-go=\"`serverId`\" pulumi-lang-python=\"`server_id`\" pulumi-lang-yaml=\"`serverId`\" pulumi-lang-java=\"`serverId`\"\u003e`server_id`\u003c/span\u003e argument.\n"},"format":{"type":"string","description":"Format volume after creation. \u003cspan pulumi-lang-nodejs=\"`xfs`\" pulumi-lang-dotnet=\"`Xfs`\" pulumi-lang-go=\"`xfs`\" pulumi-lang-python=\"`xfs`\" pulumi-lang-yaml=\"`xfs`\" pulumi-lang-java=\"`xfs`\"\u003e`xfs`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ext4`\" pulumi-lang-dotnet=\"`Ext4`\" pulumi-lang-go=\"`ext4`\" pulumi-lang-python=\"`ext4`\" pulumi-lang-yaml=\"`ext4`\" pulumi-lang-java=\"`ext4`\"\u003e`ext4`\u003c/span\u003e\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs).\n"},"linuxDevice":{"type":"string","description":"(string) Device path on the file system for the Volume.\n"},"location":{"type":"string","description":"The location name of the volume to create, not allowed if\u003cspan pulumi-lang-nodejs=\" serverId \" pulumi-lang-dotnet=\" ServerId \" pulumi-lang-go=\" serverId \" pulumi-lang-python=\" server_id \" pulumi-lang-yaml=\" serverId \" pulumi-lang-java=\" serverId \"\u003e server_id \u003c/span\u003eargument is passed. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Name of the volume to create (must be unique per project).\n"},"serverId":{"type":"integer","description":"Server to attach the Volume to, not allowed if location argument is passed.\n"},"size":{"type":"integer","description":"Size of the volume (in GB).\n"}},"type":"object"}},"hcloud:index/volumeAttachment:VolumeAttachment":{"description":"Provides a Hetzner Cloud Volume attachment to attach a Volume to a Hetzner Cloud Server. Deleting a Volume Attachment will detach the Volume from the Server.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst node1 = new hcloud.Server(\"node1\", {\n    name: \"node1\",\n    image: \"debian-12\",\n    serverType: \"cx23\",\n    datacenter: \"nbg1-dc3\",\n});\nconst master = new hcloud.Volume(\"master\", {\n    location: \"nbg1\",\n    size: 10,\n});\nconst main = new hcloud.VolumeAttachment(\"main\", {\n    volumeId: master.id,\n    serverId: node1.id,\n    automount: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nnode1 = hcloud.Server(\"node1\",\n    name=\"node1\",\n    image=\"debian-12\",\n    server_type=\"cx23\",\n    datacenter=\"nbg1-dc3\")\nmaster = hcloud.Volume(\"master\",\n    location=\"nbg1\",\n    size=10)\nmain = hcloud.VolumeAttachment(\"main\",\n    volume_id=master.id,\n    server_id=node1.id,\n    automount=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var node1 = new HCloud.Server(\"node1\", new()\n    {\n        Name = \"node1\",\n        Image = \"debian-12\",\n        ServerType = \"cx23\",\n        Datacenter = \"nbg1-dc3\",\n    });\n\n    var master = new HCloud.Volume(\"master\", new()\n    {\n        Location = \"nbg1\",\n        Size = 10,\n    });\n\n    var main = new HCloud.VolumeAttachment(\"main\", new()\n    {\n        VolumeId = master.Id,\n        ServerId = node1.Id,\n        Automount = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnode1, err := hcloud.NewServer(ctx, \"node1\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"node1\"),\n\t\t\tImage:      pulumi.String(\"debian-12\"),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t\tDatacenter: pulumi.String(\"nbg1-dc3\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmaster, err := hcloud.NewVolume(ctx, \"master\", \u0026hcloud.VolumeArgs{\n\t\t\tLocation: pulumi.String(\"nbg1\"),\n\t\t\tSize:     pulumi.Int(10),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewVolumeAttachment(ctx, \"main\", \u0026hcloud.VolumeAttachmentArgs{\n\t\t\tVolumeId:  master.ID(),\n\t\t\tServerId:  node1.ID(),\n\t\t\tAutomount: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.Volume;\nimport com.pulumi.hcloud.VolumeArgs;\nimport com.pulumi.hcloud.VolumeAttachment;\nimport com.pulumi.hcloud.VolumeAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var node1 = new Server(\"node1\", ServerArgs.builder()\n            .name(\"node1\")\n            .image(\"debian-12\")\n            .serverType(\"cx23\")\n            .datacenter(\"nbg1-dc3\")\n            .build());\n\n        var master = new Volume(\"master\", VolumeArgs.builder()\n            .location(\"nbg1\")\n            .size(10)\n            .build());\n\n        var main = new VolumeAttachment(\"main\", VolumeAttachmentArgs.builder()\n            .volumeId(master.id())\n            .serverId(node1.id())\n            .automount(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: hcloud:VolumeAttachment\n    properties:\n      volumeId: ${master.id}\n      serverId: ${node1.id}\n      automount: true\n  node1:\n    type: hcloud:Server\n    properties:\n      name: node1\n      image: debian-12\n      serverType: cx23\n      datacenter: nbg1-dc3\n  master:\n    type: hcloud:Volume\n    properties:\n      location: nbg1\n      size: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVolume Attachments can be imported using the \u003cspan pulumi-lang-nodejs=\"`volumeId`\" pulumi-lang-dotnet=\"`VolumeId`\" pulumi-lang-go=\"`volumeId`\" pulumi-lang-python=\"`volume_id`\" pulumi-lang-yaml=\"`volumeId`\" pulumi-lang-java=\"`volumeId`\"\u003e`volume_id`\u003c/span\u003e:\n\n```sh\n$ pulumi import hcloud:index/volumeAttachment:VolumeAttachment example \"$VOLUME_ID\"\n```\n\n","properties":{"automount":{"type":"boolean","description":"Automount the volume upon attaching it.\n"},"serverId":{"type":"integer","description":"Server to attach the Volume to.\n"},"volumeId":{"type":"integer","description":"ID of the Volume.\n"}},"required":["automount","serverId","volumeId"],"inputProperties":{"automount":{"type":"boolean","description":"Automount the volume upon attaching it.\n"},"serverId":{"type":"integer","description":"Server to attach the Volume to.\n","willReplaceOnChanges":true},"volumeId":{"type":"integer","description":"ID of the Volume.\n","willReplaceOnChanges":true}},"requiredInputs":["serverId","volumeId"],"stateInputs":{"description":"Input properties used for looking up and filtering VolumeAttachment resources.\n","properties":{"automount":{"type":"boolean","description":"Automount the volume upon attaching it.\n"},"serverId":{"type":"integer","description":"Server to attach the Volume to.\n","willReplaceOnChanges":true},"volumeId":{"type":"integer","description":"ID of the Volume.\n","willReplaceOnChanges":true}},"type":"object"}},"hcloud:index/zone:Zone":{"description":"Provides a Hetzner Cloud Zone resource.\n\nThis can be used to create, modify, and delete Zones.\n\nFor Internationalized domain names (IDN), see the `provider::hcloud::idna` function.\n\nSee the [Zones API documentation](https://docs.hetzner.cloud/reference/cloud#zones) for more details.\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import hcloud:index/zone:Zone example \"$ZONE_ID_OR_NAME\"\n```\n\n","properties":{"authoritativeNameservers":{"$ref":"#/types/hcloud:index/ZoneAuthoritativeNameservers:ZoneAuthoritativeNameservers","description":"Authoritative nameservers of the Zone.\n"},"deleteProtection":{"type":"boolean","description":"Whether delete protection is enabled.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"mode":{"type":"string","description":"Mode of the Zone.\n"},"name":{"type":"string","description":"Name of the Zone.\n"},"primaryNameservers":{"type":"array","items":{"$ref":"#/types/hcloud:index/ZonePrimaryNameserver:ZonePrimaryNameserver"},"description":"Primary nameservers of the Zone. Forbidden when mode is primary and required when mode is secondary.\n"},"registrar":{"type":"string","description":"Registrar of the Zone.\n"},"ttl":{"type":"integer","description":"Default Time To Live (TTL) of the Zone.\n"}},"required":["authoritativeNameservers","deleteProtection","labels","mode","name","primaryNameservers","registrar","ttl"],"inputProperties":{"deleteProtection":{"type":"boolean","description":"Whether delete protection is enabled.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"mode":{"type":"string","description":"Mode of the Zone.\n"},"name":{"type":"string","description":"Name of the Zone.\n"},"primaryNameservers":{"type":"array","items":{"$ref":"#/types/hcloud:index/ZonePrimaryNameserver:ZonePrimaryNameserver"},"description":"Primary nameservers of the Zone. Forbidden when mode is primary and required when mode is secondary.\n"},"ttl":{"type":"integer","description":"Default Time To Live (TTL) of the Zone.\n"}},"requiredInputs":["mode"],"stateInputs":{"description":"Input properties used for looking up and filtering Zone resources.\n","properties":{"authoritativeNameservers":{"$ref":"#/types/hcloud:index/ZoneAuthoritativeNameservers:ZoneAuthoritativeNameservers","description":"Authoritative nameservers of the Zone.\n"},"deleteProtection":{"type":"boolean","description":"Whether delete protection is enabled.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"mode":{"type":"string","description":"Mode of the Zone.\n"},"name":{"type":"string","description":"Name of the Zone.\n"},"primaryNameservers":{"type":"array","items":{"$ref":"#/types/hcloud:index/ZonePrimaryNameserver:ZonePrimaryNameserver"},"description":"Primary nameservers of the Zone. Forbidden when mode is primary and required when mode is secondary.\n"},"registrar":{"type":"string","description":"Registrar of the Zone.\n"},"ttl":{"type":"integer","description":"Default Time To Live (TTL) of the Zone.\n"}},"type":"object"}},"hcloud:index/zoneRecord:ZoneRecord":{"description":"Provides a Hetzner Cloud Zone Record resource.\n\nThis can be used to create, modify, and delete Zone Records.\n\nManaging the TTL, labels and protection level for the Zone Record Set that the Record belongs to is not possible.\n\nImporting this resource is only supported using an identity.\n\nSee the [Zone RRSets API documentation](https://docs.hetzner.cloud/reference/cloud#zone-rrsets) for more details.\n\n!\u003e This resource must only be used, when records cannot be managed with a \u003cspan pulumi-lang-nodejs=\"`hcloud.ZoneRrset`\" pulumi-lang-dotnet=\"`hcloud.ZoneRrset`\" pulumi-lang-go=\"`ZoneRrset`\" pulumi-lang-python=\"`ZoneRrset`\" pulumi-lang-yaml=\"`hcloud.ZoneRrset`\" pulumi-lang-java=\"`hcloud.ZoneRrset`\"\u003e`hcloud.ZoneRrset`\u003c/span\u003e resource.\n\n","properties":{"comment":{"type":"string","description":"Comment of the Zone Record.\n"},"name":{"type":"string","description":"Name of the Zone Record.\n"},"type":{"type":"string","description":"Type of the Zone Record.\n"},"value":{"type":"string","description":"Value of the Zone Record.\n"},"zone":{"type":"string","description":"ID or Name of the parent Zone.\n"}},"required":["comment","name","type","value","zone"],"inputProperties":{"comment":{"type":"string","description":"Comment of the Zone Record.\n"},"name":{"type":"string","description":"Name of the Zone Record.\n"},"type":{"type":"string","description":"Type of the Zone Record.\n"},"value":{"type":"string","description":"Value of the Zone Record.\n"},"zone":{"type":"string","description":"ID or Name of the parent Zone.\n"}},"requiredInputs":["type","value","zone"],"stateInputs":{"description":"Input properties used for looking up and filtering ZoneRecord resources.\n","properties":{"comment":{"type":"string","description":"Comment of the Zone Record.\n"},"name":{"type":"string","description":"Name of the Zone Record.\n"},"type":{"type":"string","description":"Type of the Zone Record.\n"},"value":{"type":"string","description":"Value of the Zone Record.\n"},"zone":{"type":"string","description":"ID or Name of the parent Zone.\n"}},"type":"object"}},"hcloud:index/zoneRrset:ZoneRrset":{"description":"Provides a Hetzner Cloud Zone Resource Record Set (RRSet) resource.\n\nThis can be used to create, modify, and delete Zone RRSets.\n\nSee the [Zone RRSets API documentation](https://docs.hetzner.cloud/reference/cloud#zone-rrsets) for more details.\n\n**RRSets of type TXT:**\n\nThe format of TXT records must consist of one or many quoted strings of 255 characters.\n\nA helper function to format TXT record is available at `provider::hcloud::txt_record`.\nSee the examples for more details.\n\n**RRSets of type SOA:**\n\nSOA records are created or deleted by the Hetzner Cloud API when creating or deleting\nthe parent Zone, therefor this Terraform resource will:\n\n- import the RRSet in the state, instead of creating it.\n- remove the RRSet from the state, instead of deleting it.\n- set the SOA record SERIAL value to 0 before saving it to the state, as this value is automatically\n  incremented by the API and would cause issues otherwise.\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import hcloud:index/zoneRrset:ZoneRrset example \"$ZONE_ID_OR_NAME/$RRSET_NAME/$RRSET_TYPE\"\n$ pulumi import hcloud:index/zoneRrset:ZoneRrset example \"$ZONE_ID_OR_NAME/$RRSET_ID\"\n```\n\n","properties":{"changeProtection":{"type":"boolean","description":"Whether change protection is enabled.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"name":{"type":"string","description":"Name of the Zone RRSet.\n"},"records":{"type":"array","items":{"$ref":"#/types/hcloud:index/ZoneRrsetRecord:ZoneRrsetRecord"},"description":"Records of the Zone RRSet.\n"},"ttl":{"type":"integer","description":"Time To Live (TTL) of the Zone RRSet.\n"},"type":{"type":"string","description":"Type of the Zone RRSet.\n"},"zone":{"type":"string","description":"ID or Name of the parent Zone.\n"}},"required":["changeProtection","labels","name","records","type","zone"],"inputProperties":{"changeProtection":{"type":"boolean","description":"Whether change protection is enabled.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"name":{"type":"string","description":"Name of the Zone RRSet.\n"},"records":{"type":"array","items":{"$ref":"#/types/hcloud:index/ZoneRrsetRecord:ZoneRrsetRecord"},"description":"Records of the Zone RRSet.\n"},"ttl":{"type":"integer","description":"Time To Live (TTL) of the Zone RRSet.\n"},"type":{"type":"string","description":"Type of the Zone RRSet.\n"},"zone":{"type":"string","description":"ID or Name of the parent Zone.\n"}},"requiredInputs":["records","type","zone"],"stateInputs":{"description":"Input properties used for looking up and filtering ZoneRrset resources.\n","properties":{"changeProtection":{"type":"boolean","description":"Whether change protection is enabled.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n"},"name":{"type":"string","description":"Name of the Zone RRSet.\n"},"records":{"type":"array","items":{"$ref":"#/types/hcloud:index/ZoneRrsetRecord:ZoneRrsetRecord"},"description":"Records of the Zone RRSet.\n"},"ttl":{"type":"integer","description":"Time To Live (TTL) of the Zone RRSet.\n"},"type":{"type":"string","description":"Type of the Zone RRSet.\n"},"zone":{"type":"string","description":"ID or Name of the parent Zone.\n"}},"type":"object"}}},"functions":{"hcloud:index/getCertificate:getCertificate":{"description":"Provides details about a specific Hetzner Cloud Certificate.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst sampleCertificate1 = hcloud.getCertificate({\n    name: \"sample-certificate-1\",\n});\nconst sampleCertificate2 = hcloud.getCertificate({\n    id: 4711,\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nsample_certificate1 = hcloud.get_certificate(name=\"sample-certificate-1\")\nsample_certificate2 = hcloud.get_certificate(id=4711)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sampleCertificate1 = HCloud.GetCertificate.Invoke(new()\n    {\n        Name = \"sample-certificate-1\",\n    });\n\n    var sampleCertificate2 = HCloud.GetCertificate.Invoke(new()\n    {\n        Id = 4711,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.LookupCertificate(ctx, \u0026hcloud.LookupCertificateArgs{\n\t\t\tName: pulumi.StringRef(\"sample-certificate-1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupCertificate(ctx, \u0026hcloud.LookupCertificateArgs{\n\t\t\tId: pulumi.IntRef(4711),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetCertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sampleCertificate1 = HcloudFunctions.getCertificate(GetCertificateArgs.builder()\n            .name(\"sample-certificate-1\")\n            .build());\n\n        final var sampleCertificate2 = HcloudFunctions.getCertificate(GetCertificateArgs.builder()\n            .id(4711)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  sampleCertificate1:\n    fn::invoke:\n      function: hcloud:getCertificate\n      arguments:\n        name: sample-certificate-1\n  sampleCertificate2:\n    fn::invoke:\n      function: hcloud:getCertificate\n      arguments:\n        id: '4711'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getCertificate.\n","properties":{"id":{"type":"integer","description":"ID of the certificate.\n"},"name":{"type":"string","description":"Name of the certificate.\n"},"withSelector":{"type":"string","description":"[Label selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getCertificate.\n","properties":{"certificate":{"description":"(string) PEM encoded TLS certificate.\n","type":"string"},"created":{"description":"(string) Point in time when the Certificate was created at Hetzner Cloud (in ISO-8601 format).\n","type":"string"},"domainNames":{"description":"(list) Domains and subdomains covered by the certificate.\n","items":{"type":"string"},"type":"array"},"fingerprint":{"description":"(string) Fingerprint of the certificate.\n","type":"string"},"id":{"description":"(int) Unique ID of the certificate.\n","type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"(map) User-defined labels (key-value pairs) assigned to the certificate.\n","type":"object"},"name":{"description":"(string) Name of the Certificate.\n","type":"string"},"notValidAfter":{"description":"(string) Point in time when the Certificate stops being valid (in ISO-8601 format).\n","type":"string"},"notValidBefore":{"description":"(string) Point in time when the Certificate becomes valid (in ISO-8601 format).\n","type":"string"},"type":{"type":"string"},"withSelector":{"type":"string"}},"required":["certificate","created","domainNames","fingerprint","id","labels","notValidAfter","notValidBefore","type"],"type":"object"}},"hcloud:index/getCertificates:getCertificates":{"description":"Provides details about multiple Hetzner Cloud Certificates.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst sampleCertificate1 = hcloud.getCertificates({\n    withSelector: \"key=value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nsample_certificate1 = hcloud.get_certificates(with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sampleCertificate1 = HCloud.GetCertificates.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetCertificates(ctx, \u0026hcloud.GetCertificatesArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetCertificatesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sampleCertificate1 = HcloudFunctions.getCertificates(GetCertificatesArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  sampleCertificate1:\n    fn::invoke:\n      function: hcloud:getCertificates\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getCertificates.\n","properties":{"withSelector":{"type":"string","description":"[Label selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getCertificates.\n","properties":{"certificates":{"description":"(list) List of all matching certificates. See `data.hcloud_certificate` for schema.\n","items":{"$ref":"#/types/hcloud:index/getCertificatesCertificate:getCertificatesCertificate"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"withSelector":{"type":"string"}},"required":["certificates","id"],"type":"object"}},"hcloud:index/getDatacenter:getDatacenter":{"description":"Provides details about a specific Hetzner Cloud Datacenter.\n\nUse this resource to get detailed information about a specific Datacenter.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst byId = hcloud.getDatacenter({\n    id: 4,\n});\nconst byName = hcloud.getDatacenter({\n    name: \"fsn1-dc14\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nby_id = hcloud.get_datacenter(id=4)\nby_name = hcloud.get_datacenter(name=\"fsn1-dc14\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var byId = HCloud.GetDatacenter.Invoke(new()\n    {\n        Id = 4,\n    });\n\n    var byName = HCloud.GetDatacenter.Invoke(new()\n    {\n        Name = \"fsn1-dc14\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetDatacenter(ctx, \u0026hcloud.GetDatacenterArgs{\n\t\t\tId: pulumi.IntRef(4),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetDatacenter(ctx, \u0026hcloud.GetDatacenterArgs{\n\t\t\tName: pulumi.StringRef(\"fsn1-dc14\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetDatacenterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var byId = HcloudFunctions.getDatacenter(GetDatacenterArgs.builder()\n            .id(4)\n            .build());\n\n        final var byName = HcloudFunctions.getDatacenter(GetDatacenterArgs.builder()\n            .name(\"fsn1-dc14\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  byId:\n    fn::invoke:\n      function: hcloud:getDatacenter\n      arguments:\n        id: 4\n  byName:\n    fn::invoke:\n      function: hcloud:getDatacenter\n      arguments:\n        name: fsn1-dc14\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDatacenter.\n","properties":{"id":{"type":"integer","description":"ID of the Datacenter.\n"},"name":{"type":"string","description":"Name of the Datacenter.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getDatacenter.\n","properties":{"availableServerTypeIds":{"description":"List of currently available Server Types in the Datacenter.\n","items":{"type":"integer"},"type":"array"},"description":{"description":"Description of the Datacenter.\n","type":"string"},"id":{"description":"ID of the Datacenter.\n","type":"integer"},"location":{"additionalProperties":{"type":"string"},"description":"Location of the Datacenter. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n","type":"object"},"name":{"description":"Name of the Datacenter.\n","type":"string"},"supportedServerTypeIds":{"description":"List of supported Server Types in the Datacenter.\n","items":{"type":"integer"},"type":"array"}},"required":["availableServerTypeIds","description","location","supportedServerTypeIds"],"type":"object"}},"hcloud:index/getDatacenters:getDatacenters":{"description":"Provides a list of available Hetzner Cloud Datacenters.\n\nThis resource may be useful to create highly available infrastructure, distributed across several Datacenters.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst all = hcloud.getDatacenters({});\nconst workers: hcloud.Server[] = [];\nfor (const range = {value: 0}; range.value \u003c 5; range.value++) {\n    workers.push(new hcloud.Server(`workers-${range.value}`, {\n        name: `node${range.value}`,\n        image: \"debian-12\",\n        serverType: \"cx23\",\n        datacenter: all.then(all =\u003e all.datacenters[range.value]).then(datacenters =\u003e datacenters.name),\n    }));\n}\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nall = hcloud.get_datacenters()\nworkers = []\nfor range in [{\"value\": i} for i in range(0, 5)]:\n    workers.append(hcloud.Server(f\"workers-{range['value']}\",\n        name=f\"node{range['value']}\",\n        image=\"debian-12\",\n        server_type=\"cx23\",\n        datacenter=all.datacenters[range[\"value\"]][\"name\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var all = HCloud.GetDatacenters.Invoke();\n\n    var workers = new List\u003cHCloud.Server\u003e();\n    for (var rangeIndex = 0; rangeIndex \u003c 5; rangeIndex++)\n    {\n        var range = new { Value = rangeIndex };\n        workers.Add(new HCloud.Server($\"workers-{range.Value}\", new()\n        {\n            Name = $\"node{range.Value}\",\n            Image = \"debian-12\",\n            ServerType = \"cx23\",\n            Datacenter = all.Apply(getDatacentersResult =\u003e getDatacentersResult.Datacenters)[range.Value].Apply(datacenters =\u003e datacenters.Name),\n        }));\n    }\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var all = HcloudFunctions.getDatacenters(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        for (var i = 0; i \u003c 5; i++) {\n            new Server(\"workers-\" + i, ServerArgs.builder()\n                .name(String.format(\"node%s\", range.value()))\n                .image(\"debian-12\")\n                .serverType(\"cx23\")\n                .datacenter(all.datacenters()[range.value()].name())\n                .build());\n\n        \n}\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getDatacenters.\n","properties":{"datacenterIds":{"deprecationMessage":"Use datacenters list instead","items":{"type":"string"},"type":"array"},"datacenters":{"items":{"$ref":"#/types/hcloud:index/getDatacentersDatacenter:getDatacentersDatacenter"},"type":"array"},"descriptions":{"deprecationMessage":"Use datacenters list instead","items":{"type":"string"},"type":"array"},"id":{"description":"The ID of this resource.\n","type":"string"},"names":{"deprecationMessage":"Use datacenters list instead","items":{"type":"string"},"type":"array"}},"required":["datacenterIds","datacenters","descriptions","id","names"],"type":"object"}},"hcloud:index/getFirewall:getFirewall":{"description":"Provides details about a specific Hetzner Cloud Firewall.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst sampleFirewall1 = hcloud.getFirewall({\n    name: \"sample-firewall-1\",\n});\nconst sampleFirewall2 = hcloud.getFirewall({\n    id: 4711,\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nsample_firewall1 = hcloud.get_firewall(name=\"sample-firewall-1\")\nsample_firewall2 = hcloud.get_firewall(id=4711)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sampleFirewall1 = HCloud.GetFirewall.Invoke(new()\n    {\n        Name = \"sample-firewall-1\",\n    });\n\n    var sampleFirewall2 = HCloud.GetFirewall.Invoke(new()\n    {\n        Id = 4711,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.LookupFirewall(ctx, \u0026hcloud.LookupFirewallArgs{\n\t\t\tName: pulumi.StringRef(\"sample-firewall-1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupFirewall(ctx, \u0026hcloud.LookupFirewallArgs{\n\t\t\tId: pulumi.IntRef(4711),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetFirewallArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sampleFirewall1 = HcloudFunctions.getFirewall(GetFirewallArgs.builder()\n            .name(\"sample-firewall-1\")\n            .build());\n\n        final var sampleFirewall2 = HcloudFunctions.getFirewall(GetFirewallArgs.builder()\n            .id(4711)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  sampleFirewall1:\n    fn::invoke:\n      function: hcloud:getFirewall\n      arguments:\n        name: sample-firewall-1\n  sampleFirewall2:\n    fn::invoke:\n      function: hcloud:getFirewall\n      arguments:\n        id: '4711'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFirewall.\n","properties":{"applyTos":{"type":"array","items":{"$ref":"#/types/hcloud:index/getFirewallApplyTo:getFirewallApplyTo"},"description":"Configuration of the Applied Resources\n"},"id":{"type":"integer","description":"ID of the firewall.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"(map) User-defined labels (key-value pairs)\n"},"mostRecent":{"type":"boolean","description":"Return most recent firewall if multiple are found.\n"},"name":{"type":"string","description":"Name of the firewall.\n"},"rules":{"type":"array","items":{"$ref":"#/types/hcloud:index/getFirewallRule:getFirewallRule"},"description":"(string) Configuration of a Rule from this Firewall.\n"},"withSelector":{"type":"string","description":"[Label selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getFirewall.\n","properties":{"applyTos":{"description":"Configuration of the Applied Resources\n","items":{"$ref":"#/types/hcloud:index/getFirewallApplyTo:getFirewallApplyTo"},"type":"array"},"id":{"description":"(int) Unique ID of the Firewall.\n","type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"(map) User-defined labels (key-value pairs)\n","type":"object"},"mostRecent":{"type":"boolean"},"name":{"description":"(string) Name of the Firewall.\n","type":"string"},"rules":{"description":"(string) Configuration of a Rule from this Firewall.\n","items":{"$ref":"#/types/hcloud:index/getFirewallRule:getFirewallRule"},"type":"array"},"withSelector":{"type":"string"}},"required":["name"],"type":"object"}},"hcloud:index/getFirewalls:getFirewalls":{"description":"Provides details about multiple Hetzner Cloud Firewall.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst sampleFirewall1 = hcloud.getFirewalls({\n    withSelector: \"key=value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nsample_firewall1 = hcloud.get_firewalls(with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sampleFirewall1 = HCloud.GetFirewalls.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetFirewalls(ctx, \u0026hcloud.GetFirewallsArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetFirewallsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sampleFirewall1 = HcloudFunctions.getFirewalls(GetFirewallsArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  sampleFirewall1:\n    fn::invoke:\n      function: hcloud:getFirewalls\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFirewalls.\n","properties":{"mostRecent":{"type":"boolean","description":"Sorts list by date.\n"},"withSelector":{"type":"string","description":"[Label selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getFirewalls.\n","properties":{"firewalls":{"description":"(list) List of all matching firewalls. See `data.hcloud_firewall` for schema.\n","items":{"$ref":"#/types/hcloud:index/getFirewallsFirewall:getFirewallsFirewall"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"mostRecent":{"type":"boolean"},"withSelector":{"type":"string"}},"required":["firewalls","id"],"type":"object"}},"hcloud:index/getFloatingIp:getFloatingIp":{"description":"Provides details about a Hetzner Cloud Floating IP.\n\nThis resource can be useful when you need to determine a Floating IP ID based on the IP address.\n\n## Example Usage\n\n# Data Source:\u003cspan pulumi-lang-nodejs=\" hcloud.FloatingIp\n\" pulumi-lang-dotnet=\" hcloud.FloatingIp\n\" pulumi-lang-go=\" FloatingIp\n\" pulumi-lang-python=\" FloatingIp\n\" pulumi-lang-yaml=\" hcloud.FloatingIp\n\" pulumi-lang-java=\" hcloud.FloatingIp\n\"\u003e hcloud.FloatingIp\n\u003c/span\u003e\nProvides details about a Hetzner Cloud Floating IP.\nThis resource can be useful when you need to determine a Floating IP ID based on the IP address.\n\n\n### Additional Examples\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst ip1 = hcloud.getFloatingIp({\n    ipAddress: \"1.2.3.4\",\n});\nconst ip2 = hcloud.getFloatingIp({\n    withSelector: \"key=value\",\n});\nconst main: hcloud.FloatingIpAssignment[] = [];\nfor (const range = {value: 0}; range.value \u003c counter; range.value++) {\n    main.push(new hcloud.FloatingIpAssignment(`main-${range.value}`, {\n        floatingIpId: ip1.then(ip1 =\u003e ip1.id),\n        serverId: mainHcloudServer.id,\n    }));\n}\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nip1 = hcloud.get_floating_ip(ip_address=\"1.2.3.4\")\nip2 = hcloud.get_floating_ip(with_selector=\"key=value\")\nmain = []\nfor range in [{\"value\": i} for i in range(0, counter)]:\n    main.append(hcloud.FloatingIpAssignment(f\"main-{range['value']}\",\n        floating_ip_id=ip1.id,\n        server_id=main_hcloud_server[\"id\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ip1 = HCloud.GetFloatingIp.Invoke(new()\n    {\n        IpAddress = \"1.2.3.4\",\n    });\n\n    var ip2 = HCloud.GetFloatingIp.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n    var main = new List\u003cHCloud.FloatingIpAssignment\u003e();\n    for (var rangeIndex = 0; rangeIndex \u003c counter; rangeIndex++)\n    {\n        var range = new { Value = rangeIndex };\n        main.Add(new HCloud.FloatingIpAssignment($\"main-{range.Value}\", new()\n        {\n            FloatingIpId = ip1.Apply(getFloatingIpResult =\u003e getFloatingIpResult.Id),\n            ServerId = mainHcloudServer.Id,\n        }));\n    }\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tip1, err := hcloud.LookupFloatingIp(ctx, \u0026hcloud.LookupFloatingIpArgs{\n\t\t\tIpAddress: pulumi.StringRef(\"1.2.3.4\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupFloatingIp(ctx, \u0026hcloud.LookupFloatingIpArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar main []*hcloud.FloatingIpAssignment\n\t\tfor index := 0; index \u003c counter; index++ {\n\t\t\tkey0 := index\n\t\t\t_ := index\n\t\t\t__res, err := hcloud.NewFloatingIpAssignment(ctx, fmt.Sprintf(\"main-%v\", key0), \u0026hcloud.FloatingIpAssignmentArgs{\n\t\t\t\tFloatingIpId: pulumi.Int(ip1.Id),\n\t\t\t\tServerId:     pulumi.Any(mainHcloudServer.Id),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tmain = append(main, __res)\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetFloatingIpArgs;\nimport com.pulumi.hcloud.FloatingIpAssignment;\nimport com.pulumi.hcloud.FloatingIpAssignmentArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var ip1 = HcloudFunctions.getFloatingIp(GetFloatingIpArgs.builder()\n            .ipAddress(\"1.2.3.4\")\n            .build());\n\n        final var ip2 = HcloudFunctions.getFloatingIp(GetFloatingIpArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n        for (var i = 0; i \u003c counter; i++) {\n            new FloatingIpAssignment(\"main-\" + i, FloatingIpAssignmentArgs.builder()\n                .floatingIpId(ip1.id())\n                .serverId(mainHcloudServer.id())\n                .build());\n\n        \n}\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: hcloud:FloatingIpAssignment\n    properties:\n      floatingIpId: ${ip1.id}\n      serverId: ${mainHcloudServer.id}\n    options: {}\nvariables:\n  ip1:\n    fn::invoke:\n      function: hcloud:getFloatingIp\n      arguments:\n        ipAddress: 1.2.3.4\n  ip2:\n    fn::invoke:\n      function: hcloud:getFloatingIp\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFloatingIp.\n","properties":{"id":{"type":"integer","description":"ID of the Floating IP.\n"},"ipAddress":{"type":"string","description":"IP address of the Floating IP.\n"},"name":{"type":"string","description":"Name of the Floating IP.\n"},"selector":{"type":"string","deprecationMessage":"Please use the\u003cspan pulumi-lang-nodejs=\" withSelector \" pulumi-lang-dotnet=\" WithSelector \" pulumi-lang-go=\" withSelector \" pulumi-lang-python=\" with_selector \" pulumi-lang-yaml=\" withSelector \" pulumi-lang-java=\" withSelector \"\u003e with_selector \u003c/span\u003eproperty instead."},"withSelector":{"type":"string","description":"[Label selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getFloatingIp.\n","properties":{"deleteProtection":{"description":"(bool) Whether delete protection is enabled.\n","type":"boolean"},"description":{"description":"(string) Description of the Floating IP.\n","type":"string"},"homeLocation":{"description":"(string) Home location.\n","type":"string"},"id":{"description":"(int) Unique ID of the Floating IP.\n","type":"integer"},"ipAddress":{"description":"(string) IP Address of the Floating IP.\n","type":"string"},"ipNetwork":{"description":"(string) IPv6 subnet. (Only set if \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e)\n","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"(map) User-defined labels (key-value pairs).\n","type":"object"},"name":{"description":"(string) Name of the Floating IP.\n","type":"string"},"selector":{"deprecationMessage":"Please use the\u003cspan pulumi-lang-nodejs=\" withSelector \" pulumi-lang-dotnet=\" WithSelector \" pulumi-lang-go=\" withSelector \" pulumi-lang-python=\" with_selector \" pulumi-lang-yaml=\" withSelector \" pulumi-lang-java=\" withSelector \"\u003e with_selector \u003c/span\u003eproperty instead.","type":"string"},"serverId":{"description":"(int) Server to assign the Floating IP is assigned to.\n","type":"integer"},"type":{"description":"(string) Type of the Floating IP.\n","type":"string"},"withSelector":{"type":"string"}},"required":["deleteProtection","description","homeLocation","id","ipAddress","ipNetwork","labels","serverId","type"],"type":"object"}},"hcloud:index/getFloatingIps:getFloatingIps":{"description":"Provides details about multiple Hetzner Cloud Floating IPs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst ip2 = hcloud.getFloatingIps({\n    withSelector: \"key=value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nip2 = hcloud.get_floating_ips(with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ip2 = HCloud.GetFloatingIps.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetFloatingIps(ctx, \u0026hcloud.GetFloatingIpsArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetFloatingIpsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var ip2 = HcloudFunctions.getFloatingIps(GetFloatingIpsArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  ip2:\n    fn::invoke:\n      function: hcloud:getFloatingIps\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFloatingIps.\n","properties":{"withSelector":{"type":"string","description":"[Label selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getFloatingIps.\n","properties":{"floatingIps":{"description":"(list) List of all matching floating ips. See `data.hcloud_floating_ip` for schema.\n","items":{"$ref":"#/types/hcloud:index/getFloatingIpsFloatingIp:getFloatingIpsFloatingIp"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"withSelector":{"type":"string"}},"required":["floatingIps","id"],"type":"object"}},"hcloud:index/getImage:getImage":{"description":"Provides details about a Hetzner Cloud Image.\nThis resource is useful if you want to use a non-terraform managed image.\n\nWhen relevant, it is recommended to always provide the image architecture\n(\u003cspan pulumi-lang-nodejs=\"`withArchitecture`\" pulumi-lang-dotnet=\"`WithArchitecture`\" pulumi-lang-go=\"`withArchitecture`\" pulumi-lang-python=\"`with_architecture`\" pulumi-lang-yaml=\"`withArchitecture`\" pulumi-lang-java=\"`withArchitecture`\"\u003e`with_architecture`\u003c/span\u003e) when fetching images.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst byId = hcloud.getImage({\n    id: 114690387,\n});\nconst byNameX86 = hcloud.getImage({\n    name: \"debian-12\",\n    withArchitecture: \"x86\",\n});\nconst byNameArm = hcloud.getImage({\n    name: \"debian-12\",\n    withArchitecture: \"arm\",\n});\nconst byLabel = hcloud.getImage({\n    withSelector: \"key=value\",\n});\nconst main = new hcloud.Server(\"main\", {image: byName.id});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nby_id = hcloud.get_image(id=114690387)\nby_name_x86 = hcloud.get_image(name=\"debian-12\",\n    with_architecture=\"x86\")\nby_name_arm = hcloud.get_image(name=\"debian-12\",\n    with_architecture=\"arm\")\nby_label = hcloud.get_image(with_selector=\"key=value\")\nmain = hcloud.Server(\"main\", image=by_name[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var byId = HCloud.GetImage.Invoke(new()\n    {\n        Id = 114690387,\n    });\n\n    var byNameX86 = HCloud.GetImage.Invoke(new()\n    {\n        Name = \"debian-12\",\n        WithArchitecture = \"x86\",\n    });\n\n    var byNameArm = HCloud.GetImage.Invoke(new()\n    {\n        Name = \"debian-12\",\n        WithArchitecture = \"arm\",\n    });\n\n    var byLabel = HCloud.GetImage.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n    var main = new HCloud.Server(\"main\", new()\n    {\n        Image = byName.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetImage(ctx, \u0026hcloud.GetImageArgs{\n\t\t\tId: pulumi.IntRef(114690387),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetImage(ctx, \u0026hcloud.GetImageArgs{\n\t\t\tName:             pulumi.StringRef(\"debian-12\"),\n\t\t\tWithArchitecture: pulumi.StringRef(\"x86\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetImage(ctx, \u0026hcloud.GetImageArgs{\n\t\t\tName:             pulumi.StringRef(\"debian-12\"),\n\t\t\tWithArchitecture: pulumi.StringRef(\"arm\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetImage(ctx, \u0026hcloud.GetImageArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewServer(ctx, \"main\", \u0026hcloud.ServerArgs{\n\t\t\tImage: pulumi.Any(byName.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetImageArgs;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var byId = HcloudFunctions.getImage(GetImageArgs.builder()\n            .id(114690387)\n            .build());\n\n        final var byNameX86 = HcloudFunctions.getImage(GetImageArgs.builder()\n            .name(\"debian-12\")\n            .withArchitecture(\"x86\")\n            .build());\n\n        final var byNameArm = HcloudFunctions.getImage(GetImageArgs.builder()\n            .name(\"debian-12\")\n            .withArchitecture(\"arm\")\n            .build());\n\n        final var byLabel = HcloudFunctions.getImage(GetImageArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n        var main = new Server(\"main\", ServerArgs.builder()\n            .image(byName.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: hcloud:Server\n    properties:\n      image: ${byName.id}\nvariables:\n  byId:\n    fn::invoke:\n      function: hcloud:getImage\n      arguments:\n        id: '114690387'\n  byNameX86:\n    fn::invoke:\n      function: hcloud:getImage\n      arguments:\n        name: debian-12\n        withArchitecture: x86\n  byNameArm:\n    fn::invoke:\n      function: hcloud:getImage\n      arguments:\n        name: debian-12\n        withArchitecture: arm\n  byLabel:\n    fn::invoke:\n      function: hcloud:getImage\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getImage.\n","properties":{"id":{"type":"integer","description":"ID of the Image.\n"},"includeDeprecated":{"type":"boolean","description":"Also return the image if it is marked as deprecated.\n"},"mostRecent":{"type":"boolean","description":"If more than one result is returned, use the most recent Image.\n"},"name":{"type":"string","description":"Name of the Image.\n"},"selector":{"type":"string","deprecationMessage":"Please use the\u003cspan pulumi-lang-nodejs=\" withSelector \" pulumi-lang-dotnet=\" WithSelector \" pulumi-lang-go=\" withSelector \" pulumi-lang-python=\" with_selector \" pulumi-lang-yaml=\" withSelector \" pulumi-lang-java=\" withSelector \"\u003e with_selector \u003c/span\u003eproperty instead."},"withArchitecture":{"type":"string","description":"Select only images with this architecture, could be \u003cspan pulumi-lang-nodejs=\"`x86`\" pulumi-lang-dotnet=\"`X86`\" pulumi-lang-go=\"`x86`\" pulumi-lang-python=\"`x86`\" pulumi-lang-yaml=\"`x86`\" pulumi-lang-java=\"`x86`\"\u003e`x86`\u003c/span\u003e (default) or \u003cspan pulumi-lang-nodejs=\"`arm`\" pulumi-lang-dotnet=\"`Arm`\" pulumi-lang-go=\"`arm`\" pulumi-lang-python=\"`arm`\" pulumi-lang-yaml=\"`arm`\" pulumi-lang-java=\"`arm`\"\u003e`arm`\u003c/span\u003e.\n"},"withSelector":{"type":"string","description":"[Label selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"},"withStatuses":{"type":"array","items":{"type":"string"},"description":"Select only images with the specified status, could contain \u003cspan pulumi-lang-nodejs=\"`creating`\" pulumi-lang-dotnet=\"`Creating`\" pulumi-lang-go=\"`creating`\" pulumi-lang-python=\"`creating`\" pulumi-lang-yaml=\"`creating`\" pulumi-lang-java=\"`creating`\"\u003e`creating`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`available`\" pulumi-lang-dotnet=\"`Available`\" pulumi-lang-go=\"`available`\" pulumi-lang-python=\"`available`\" pulumi-lang-yaml=\"`available`\" pulumi-lang-java=\"`available`\"\u003e`available`\u003c/span\u003e.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getImage.\n","properties":{"architecture":{"description":"(string) Architecture of the Image.\n","type":"string"},"created":{"description":"(string) Date when the Image was created (in ISO-8601 format).\n","type":"string"},"deprecated":{"description":"(string) Point in time when the image is considered to be deprecated (in ISO-8601 format).\n","type":"string"},"description":{"description":"(string) Description of the Image.\n","type":"string"},"id":{"description":"(int) Unique ID of the Image.\n","type":"integer"},"includeDeprecated":{"type":"boolean"},"labels":{"additionalProperties":{"type":"string"},"type":"object"},"mostRecent":{"type":"boolean"},"name":{"description":"(string) Name of the Image, only present when the Image is of type \u003cspan pulumi-lang-nodejs=\"`system`\" pulumi-lang-dotnet=\"`System`\" pulumi-lang-go=\"`system`\" pulumi-lang-python=\"`system`\" pulumi-lang-yaml=\"`system`\" pulumi-lang-java=\"`system`\"\u003e`system`\u003c/span\u003e.\n","type":"string"},"osFlavor":{"description":"(string) Flavor of operating system contained in the image, could be \u003cspan pulumi-lang-nodejs=\"`ubuntu`\" pulumi-lang-dotnet=\"`Ubuntu`\" pulumi-lang-go=\"`ubuntu`\" pulumi-lang-python=\"`ubuntu`\" pulumi-lang-yaml=\"`ubuntu`\" pulumi-lang-java=\"`ubuntu`\"\u003e`ubuntu`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`centos`\" pulumi-lang-dotnet=\"`Centos`\" pulumi-lang-go=\"`centos`\" pulumi-lang-python=\"`centos`\" pulumi-lang-yaml=\"`centos`\" pulumi-lang-java=\"`centos`\"\u003e`centos`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debian`\" pulumi-lang-dotnet=\"`Debian`\" pulumi-lang-go=\"`debian`\" pulumi-lang-python=\"`debian`\" pulumi-lang-yaml=\"`debian`\" pulumi-lang-java=\"`debian`\"\u003e`debian`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`fedora`\" pulumi-lang-dotnet=\"`Fedora`\" pulumi-lang-go=\"`fedora`\" pulumi-lang-python=\"`fedora`\" pulumi-lang-yaml=\"`fedora`\" pulumi-lang-java=\"`fedora`\"\u003e`fedora`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`unknown`\" pulumi-lang-dotnet=\"`Unknown`\" pulumi-lang-go=\"`unknown`\" pulumi-lang-python=\"`unknown`\" pulumi-lang-yaml=\"`unknown`\" pulumi-lang-java=\"`unknown`\"\u003e`unknown`\u003c/span\u003e.\n","type":"string"},"osVersion":{"description":"(string) Operating system version.\n","type":"string"},"rapidDeploy":{"description":"(bool) Indicates that rapid deploy of the image is available.\n","type":"boolean"},"selector":{"deprecationMessage":"Please use the\u003cspan pulumi-lang-nodejs=\" withSelector \" pulumi-lang-dotnet=\" WithSelector \" pulumi-lang-go=\" withSelector \" pulumi-lang-python=\" with_selector \" pulumi-lang-yaml=\" withSelector \" pulumi-lang-java=\" withSelector \"\u003e with_selector \u003c/span\u003eproperty instead.","type":"string"},"type":{"description":"(string) Type of the Image, could be \u003cspan pulumi-lang-nodejs=\"`system`\" pulumi-lang-dotnet=\"`System`\" pulumi-lang-go=\"`system`\" pulumi-lang-python=\"`system`\" pulumi-lang-yaml=\"`system`\" pulumi-lang-java=\"`system`\"\u003e`system`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`snapshot`\" pulumi-lang-dotnet=\"`Snapshot`\" pulumi-lang-go=\"`snapshot`\" pulumi-lang-python=\"`snapshot`\" pulumi-lang-yaml=\"`snapshot`\" pulumi-lang-java=\"`snapshot`\"\u003e`snapshot`\u003c/span\u003e.\n","type":"string"},"withArchitecture":{"type":"string"},"withSelector":{"type":"string"},"withStatuses":{"items":{"type":"string"},"type":"array"}},"required":["architecture","created","deprecated","description","id","labels","name","osFlavor","osVersion","rapidDeploy","type"],"type":"object"}},"hcloud:index/getImages:getImages":{"description":"Provides details about multiple Hetzner Cloud Images.\n\nWhen relevant, it is recommended to always provide the image architecture\n(\u003cspan pulumi-lang-nodejs=\"`withArchitecture`\" pulumi-lang-dotnet=\"`WithArchitecture`\" pulumi-lang-go=\"`withArchitecture`\" pulumi-lang-python=\"`with_architecture`\" pulumi-lang-yaml=\"`withArchitecture`\" pulumi-lang-java=\"`withArchitecture`\"\u003e`with_architecture`\u003c/span\u003e) when fetching images.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst byArchitecture = hcloud.getImages({\n    withArchitectures: [\"x86\"],\n});\nconst byLabel = hcloud.getImages({\n    withSelector: \"key=value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nby_architecture = hcloud.get_images(with_architectures=[\"x86\"])\nby_label = hcloud.get_images(with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var byArchitecture = HCloud.GetImages.Invoke(new()\n    {\n        WithArchitectures = new[]\n        {\n            \"x86\",\n        },\n    });\n\n    var byLabel = HCloud.GetImages.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetImages(ctx, \u0026hcloud.GetImagesArgs{\n\t\t\tWithArchitectures: []string{\n\t\t\t\t\"x86\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetImages(ctx, \u0026hcloud.GetImagesArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetImagesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var byArchitecture = HcloudFunctions.getImages(GetImagesArgs.builder()\n            .withArchitectures(\"x86\")\n            .build());\n\n        final var byLabel = HcloudFunctions.getImages(GetImagesArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  byArchitecture:\n    fn::invoke:\n      function: hcloud:getImages\n      arguments:\n        withArchitectures:\n          - x86\n  byLabel:\n    fn::invoke:\n      function: hcloud:getImages\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getImages.\n","properties":{"includeDeprecated":{"type":"boolean","description":"Also list images that are marked as deprecated.\n"},"mostRecent":{"type":"boolean","description":"Sorts list by date.\n"},"withArchitectures":{"type":"array","items":{"type":"string"},"description":"List only images with this architecture, could contain \u003cspan pulumi-lang-nodejs=\"`x86`\" pulumi-lang-dotnet=\"`X86`\" pulumi-lang-go=\"`x86`\" pulumi-lang-python=\"`x86`\" pulumi-lang-yaml=\"`x86`\" pulumi-lang-java=\"`x86`\"\u003e`x86`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`arm`\" pulumi-lang-dotnet=\"`Arm`\" pulumi-lang-go=\"`arm`\" pulumi-lang-python=\"`arm`\" pulumi-lang-yaml=\"`arm`\" pulumi-lang-java=\"`arm`\"\u003e`arm`\u003c/span\u003e.\n"},"withSelector":{"type":"string","description":"[Label selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"},"withStatuses":{"type":"array","items":{"type":"string"},"description":"List only images with the specified status, could contain \u003cspan pulumi-lang-nodejs=\"`creating`\" pulumi-lang-dotnet=\"`Creating`\" pulumi-lang-go=\"`creating`\" pulumi-lang-python=\"`creating`\" pulumi-lang-yaml=\"`creating`\" pulumi-lang-java=\"`creating`\"\u003e`creating`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`available`\" pulumi-lang-dotnet=\"`Available`\" pulumi-lang-go=\"`available`\" pulumi-lang-python=\"`available`\" pulumi-lang-yaml=\"`available`\" pulumi-lang-java=\"`available`\"\u003e`available`\u003c/span\u003e.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getImages.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"images":{"description":"(list) List of all matching images. See `data.hcloud_image` for schema.\n","items":{"$ref":"#/types/hcloud:index/getImagesImage:getImagesImage"},"type":"array"},"includeDeprecated":{"type":"boolean"},"mostRecent":{"type":"boolean"},"withArchitectures":{"items":{"type":"string"},"type":"array"},"withSelector":{"type":"string"},"withStatuses":{"items":{"type":"string"},"type":"array"}},"required":["images","id"],"type":"object"}},"hcloud:index/getLoadBalancer:getLoadBalancer":{"description":"Provides details about a specific Hetzner Cloud Load Balancer.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst lb1 = hcloud.getLoadBalancer({\n    name: \"my-load-balancer\",\n});\nconst lb2 = hcloud.getLoadBalancer({\n    id: 123,\n});\nconst lb3 = hcloud.getLoadBalancer({\n    withSelector: \"key=value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nlb1 = hcloud.get_load_balancer(name=\"my-load-balancer\")\nlb2 = hcloud.get_load_balancer(id=123)\nlb3 = hcloud.get_load_balancer(with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var lb1 = HCloud.GetLoadBalancer.Invoke(new()\n    {\n        Name = \"my-load-balancer\",\n    });\n\n    var lb2 = HCloud.GetLoadBalancer.Invoke(new()\n    {\n        Id = 123,\n    });\n\n    var lb3 = HCloud.GetLoadBalancer.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.LookupLoadBalancer(ctx, \u0026hcloud.LookupLoadBalancerArgs{\n\t\t\tName: pulumi.StringRef(\"my-load-balancer\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupLoadBalancer(ctx, \u0026hcloud.LookupLoadBalancerArgs{\n\t\t\tId: pulumi.IntRef(123),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupLoadBalancer(ctx, \u0026hcloud.LookupLoadBalancerArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetLoadBalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var lb1 = HcloudFunctions.getLoadBalancer(GetLoadBalancerArgs.builder()\n            .name(\"my-load-balancer\")\n            .build());\n\n        final var lb2 = HcloudFunctions.getLoadBalancer(GetLoadBalancerArgs.builder()\n            .id(123)\n            .build());\n\n        final var lb3 = HcloudFunctions.getLoadBalancer(GetLoadBalancerArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  lb1:\n    fn::invoke:\n      function: hcloud:getLoadBalancer\n      arguments:\n        name: my-load-balancer\n  lb2:\n    fn::invoke:\n      function: hcloud:getLoadBalancer\n      arguments:\n        id: '123'\n  lb3:\n    fn::invoke:\n      function: hcloud:getLoadBalancer\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getLoadBalancer.\n","properties":{"id":{"type":"integer","description":"ID of the Load Balancer.\n"},"name":{"type":"string","description":"Name of the Load Balancer.\n"},"withSelector":{"type":"string","description":"Label Selector. For more information about possible values, visit the [Hetzner Cloud Documentation](https://docs.hetzner.cloud/reference/cloud#label-selector).\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getLoadBalancer.\n","properties":{"algorithms":{"description":"(Optional) Configuration of the algorithm the Load Balancer use.\n","items":{"$ref":"#/types/hcloud:index/getLoadBalancerAlgorithm:getLoadBalancerAlgorithm"},"type":"array"},"deleteProtection":{"description":"(bool) Whether delete protection is enabled.\n","type":"boolean"},"id":{"description":"(int) Unique ID of the Load Balancer.\n","type":"integer"},"ipv4":{"description":"(string) IPv4 Address of the Load Balancer.\n","type":"string"},"ipv6":{"description":"(string) IPv4 Address of the Load Balancer.\n","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"(map) User-defined labels (key-value pairs) .\n","type":"object"},"loadBalancerType":{"description":"(string) Name of the Type of the Load Balancer.\n","type":"string"},"location":{"description":"(string) Name of the location the Load Balancer is in. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n","type":"string"},"name":{"description":"(string) Name of the Load Balancer.\n","type":"string"},"networkId":{"description":"(int) ID of the first private network that this Load Balancer is connected to.\n","type":"integer"},"networkIp":{"description":"(string) IP of the Load Balancer in the first private network that it is connected to.\n","type":"string"},"networkZone":{"type":"string"},"services":{"description":"(list) List of services a Load Balancer provides.\n","items":{"$ref":"#/types/hcloud:index/getLoadBalancerService:getLoadBalancerService"},"type":"array"},"targets":{"description":"(list) List of targets of the Load Balancer.\n","items":{"$ref":"#/types/hcloud:index/getLoadBalancerTarget:getLoadBalancerTarget"},"type":"array"},"withSelector":{"type":"string"}},"required":["algorithms","deleteProtection","id","ipv4","ipv6","labels","loadBalancerType","location","networkId","networkIp","networkZone","services","targets"],"type":"object"}},"hcloud:index/getLoadBalancerType:getLoadBalancerType":{"description":"Provides details about a specific Hetzner Cloud Load Balancer Type.\n\nUse this resource to get detailed information about a specific Load Balancer Type.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst byId = hcloud.getLoadBalancerType({\n    id: 1,\n});\nconst byName = hcloud.getLoadBalancerType({\n    name: \"lb11\",\n});\nconst main = new hcloud.LoadBalancer(\"main\", {\n    name: \"my-load-balancer\",\n    loadBalancerType: name,\n    location: \"fsn1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nby_id = hcloud.get_load_balancer_type(id=1)\nby_name = hcloud.get_load_balancer_type(name=\"lb11\")\nmain = hcloud.LoadBalancer(\"main\",\n    name=\"my-load-balancer\",\n    load_balancer_type=name,\n    location=\"fsn1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var byId = HCloud.GetLoadBalancerType.Invoke(new()\n    {\n        Id = 1,\n    });\n\n    var byName = HCloud.GetLoadBalancerType.Invoke(new()\n    {\n        Name = \"lb11\",\n    });\n\n    var main = new HCloud.LoadBalancer(\"main\", new()\n    {\n        Name = \"my-load-balancer\",\n        LoadBalancerType = name,\n        Location = \"fsn1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetLoadBalancerType(ctx, \u0026hcloud.GetLoadBalancerTypeArgs{\n\t\t\tId: pulumi.IntRef(1),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetLoadBalancerType(ctx, \u0026hcloud.GetLoadBalancerTypeArgs{\n\t\t\tName: pulumi.StringRef(\"lb11\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewLoadBalancer(ctx, \"main\", \u0026hcloud.LoadBalancerArgs{\n\t\t\tName:             pulumi.String(\"my-load-balancer\"),\n\t\t\tLoadBalancerType: pulumi.Any(name),\n\t\t\tLocation:         pulumi.String(\"fsn1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetLoadBalancerTypeArgs;\nimport com.pulumi.hcloud.LoadBalancer;\nimport com.pulumi.hcloud.LoadBalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var byId = HcloudFunctions.getLoadBalancerType(GetLoadBalancerTypeArgs.builder()\n            .id(1)\n            .build());\n\n        final var byName = HcloudFunctions.getLoadBalancerType(GetLoadBalancerTypeArgs.builder()\n            .name(\"lb11\")\n            .build());\n\n        var main = new LoadBalancer(\"main\", LoadBalancerArgs.builder()\n            .name(\"my-load-balancer\")\n            .loadBalancerType(name)\n            .location(\"fsn1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: hcloud:LoadBalancer\n    properties:\n      name: my-load-balancer\n      loadBalancerType: ${name}\n      location: fsn1\nvariables:\n  byId:\n    fn::invoke:\n      function: hcloud:getLoadBalancerType\n      arguments:\n        id: 1\n  byName:\n    fn::invoke:\n      function: hcloud:getLoadBalancerType\n      arguments:\n        name: lb11\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getLoadBalancerType.\n","properties":{"id":{"type":"integer","description":"ID of the Load Balancer Type.\n"},"name":{"type":"string","description":"Name of the Load Balancer Type.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getLoadBalancerType.\n","properties":{"description":{"description":"Description of the Load Balancer Type.\n","type":"string"},"id":{"description":"ID of the Load Balancer Type.\n","type":"integer"},"maxAssignedCertificates":{"description":"Maximum number of certificates that can be assigned for the Load Balancer of this type.\n","type":"integer"},"maxConnections":{"description":"Maximum number of simultaneous open connections for the Load Balancer of this type.\n","type":"integer"},"maxServices":{"description":"Maximum number of services for the Load Balancer of this type.\n","type":"integer"},"maxTargets":{"description":"Maximum number of targets for the Load Balancer of this type.\n","type":"integer"},"name":{"description":"Name of the Load Balancer Type.\n","type":"string"}},"required":["description","id","maxAssignedCertificates","maxConnections","maxServices","maxTargets","name"],"type":"object"}},"hcloud:index/getLoadBalancerTypes:getLoadBalancerTypes":{"description":"Provides a list of available Hetzner Cloud Load Balancer Types.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst all = hcloud.getLoadBalancerTypes({});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nall = hcloud.get_load_balancer_types()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var all = HCloud.GetLoadBalancerTypes.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetLoadBalancerTypes(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var all = HcloudFunctions.getLoadBalancerTypes(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n    }\n}\n```\n```yaml\nvariables:\n  all:\n    fn::invoke:\n      function: hcloud:getLoadBalancerTypes\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getLoadBalancerTypes.\n","properties":{"id":{"description":"The ID of this resource.\n","type":"string"},"loadBalancerTypes":{"items":{"$ref":"#/types/hcloud:index/getLoadBalancerTypesLoadBalancerType:getLoadBalancerTypesLoadBalancerType"},"type":"array"}},"required":["id","loadBalancerTypes"],"type":"object"}},"hcloud:index/getLoadBalancers:getLoadBalancers":{"description":"Provides details about multiple Hetzner Cloud Load Balancers.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst lb2 = hcloud.getLoadBalancers({});\nconst lb3 = hcloud.getLoadBalancers({\n    withSelector: \"key=value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nlb2 = hcloud.get_load_balancers()\nlb3 = hcloud.get_load_balancers(with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var lb2 = HCloud.GetLoadBalancers.Invoke();\n\n    var lb3 = HCloud.GetLoadBalancers.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetLoadBalancers(ctx, \u0026hcloud.GetLoadBalancersArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetLoadBalancers(ctx, \u0026hcloud.GetLoadBalancersArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetLoadBalancersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var lb2 = HcloudFunctions.getLoadBalancers(GetLoadBalancersArgs.builder()\n            .build());\n\n        final var lb3 = HcloudFunctions.getLoadBalancers(GetLoadBalancersArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  lb2:\n    fn::invoke:\n      function: hcloud:getLoadBalancers\n      arguments: {}\n  lb3:\n    fn::invoke:\n      function: hcloud:getLoadBalancers\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getLoadBalancers.\n","properties":{"withSelector":{"type":"string","description":"[Label selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getLoadBalancers.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"loadBalancers":{"description":"(list) List of all matching load balancers. See `data.hcloud_load_balancer` for schema.\n","items":{"$ref":"#/types/hcloud:index/getLoadBalancersLoadBalancer:getLoadBalancersLoadBalancer"},"type":"array"},"withSelector":{"type":"string"}},"required":["loadBalancers","id"],"type":"object"}},"hcloud:index/getLocation:getLocation":{"description":"Provides details about a specific Hetzner Cloud Location.\n\nUse this resource to get detailed information about a specific Location.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst byId = hcloud.getLocation({\n    id: 1,\n});\nconst byName = hcloud.getLocation({\n    name: \"fsn1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nby_id = hcloud.get_location(id=1)\nby_name = hcloud.get_location(name=\"fsn1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var byId = HCloud.GetLocation.Invoke(new()\n    {\n        Id = 1,\n    });\n\n    var byName = HCloud.GetLocation.Invoke(new()\n    {\n        Name = \"fsn1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetLocation(ctx, \u0026hcloud.GetLocationArgs{\n\t\t\tId: pulumi.IntRef(1),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetLocation(ctx, \u0026hcloud.GetLocationArgs{\n\t\t\tName: pulumi.StringRef(\"fsn1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetLocationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var byId = HcloudFunctions.getLocation(GetLocationArgs.builder()\n            .id(1)\n            .build());\n\n        final var byName = HcloudFunctions.getLocation(GetLocationArgs.builder()\n            .name(\"fsn1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  byId:\n    fn::invoke:\n      function: hcloud:getLocation\n      arguments:\n        id: 1\n  byName:\n    fn::invoke:\n      function: hcloud:getLocation\n      arguments:\n        name: fsn1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getLocation.\n","properties":{"id":{"type":"integer","description":"ID of the Location.\n"},"name":{"type":"string","description":"Name of the Location.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getLocation.\n","properties":{"city":{"description":"Name of the closest city to the Location. City name and optionally state in short form.\n","type":"string"},"country":{"description":"Country the Location resides in. ISO 3166-1 alpha-2 code of the country.\n","type":"string"},"description":{"description":"Description of the Location.\n","type":"string"},"id":{"description":"ID of the Location.\n","type":"integer"},"latitude":{"description":"Latitude of the city closest to the Location.\n","type":"number"},"longitude":{"description":"Longitude of the city closest to the Location.\n","type":"number"},"name":{"description":"Name of the Location.\n","type":"string"},"networkZone":{"description":"Name of the Network Zone this Location resides in.\n","type":"string"}},"required":["city","country","description","latitude","longitude","networkZone"],"type":"object"}},"hcloud:index/getLocations:getLocations":{"description":"Provides a list of available Hetzner Cloud Locations.\n\nThis resource may be useful to create highly available infrastructure, distributed across several locations.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst all = hcloud.getLocations({});\nconst workers: hcloud.Server[] = [];\nfor (const range = {value: 0}; range.value \u003c 5; range.value++) {\n    workers.push(new hcloud.Server(`workers-${range.value}`, {\n        name: `node${range.value}`,\n        image: \"debian-12\",\n        serverType: \"cx23\",\n        location: all.then(all =\u003e all.locations[range.value]).then(locations =\u003e locations.name),\n    }));\n}\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nall = hcloud.get_locations()\nworkers = []\nfor range in [{\"value\": i} for i in range(0, 5)]:\n    workers.append(hcloud.Server(f\"workers-{range['value']}\",\n        name=f\"node{range['value']}\",\n        image=\"debian-12\",\n        server_type=\"cx23\",\n        location=all.locations[range[\"value\"]][\"name\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var all = HCloud.GetLocations.Invoke();\n\n    var workers = new List\u003cHCloud.Server\u003e();\n    for (var rangeIndex = 0; rangeIndex \u003c 5; rangeIndex++)\n    {\n        var range = new { Value = rangeIndex };\n        workers.Add(new HCloud.Server($\"workers-{range.Value}\", new()\n        {\n            Name = $\"node{range.Value}\",\n            Image = \"debian-12\",\n            ServerType = \"cx23\",\n            Location = all.Apply(getLocationsResult =\u003e getLocationsResult.Locations)[range.Value].Apply(locations =\u003e locations.Name),\n        }));\n    }\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var all = HcloudFunctions.getLocations(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        for (var i = 0; i \u003c 5; i++) {\n            new Server(\"workers-\" + i, ServerArgs.builder()\n                .name(String.format(\"node%s\", range.value()))\n                .image(\"debian-12\")\n                .serverType(\"cx23\")\n                .location(all.locations()[range.value()].name())\n                .build());\n\n        \n}\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getLocations.\n","properties":{"descriptions":{"deprecationMessage":"Use locations list instead","items":{"type":"string"},"type":"array"},"id":{"description":"The ID of this resource.\n","type":"string"},"locationIds":{"deprecationMessage":"Use locations list instead","items":{"type":"string"},"type":"array"},"locations":{"items":{"$ref":"#/types/hcloud:index/getLocationsLocation:getLocationsLocation"},"type":"array"},"names":{"deprecationMessage":"Use locations list instead","items":{"type":"string"},"type":"array"}},"required":["descriptions","id","locationIds","locations","names"],"type":"object"}},"hcloud:index/getNetwork:getNetwork":{"description":"Provides details about a Hetzner Cloud network.\nThis resource is useful if you want to use a non-terraform managed network.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst network1 = hcloud.getNetwork({\n    id: 1234,\n});\nconst network2 = hcloud.getNetwork({\n    name: \"my-network\",\n});\nconst network3 = hcloud.getNetwork({\n    withSelector: \"key=value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nnetwork1 = hcloud.get_network(id=1234)\nnetwork2 = hcloud.get_network(name=\"my-network\")\nnetwork3 = hcloud.get_network(with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = HCloud.GetNetwork.Invoke(new()\n    {\n        Id = 1234,\n    });\n\n    var network2 = HCloud.GetNetwork.Invoke(new()\n    {\n        Name = \"my-network\",\n    });\n\n    var network3 = HCloud.GetNetwork.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.LookupNetwork(ctx, \u0026hcloud.LookupNetworkArgs{\n\t\t\tId: pulumi.IntRef(1234),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupNetwork(ctx, \u0026hcloud.LookupNetworkArgs{\n\t\t\tName: pulumi.StringRef(\"my-network\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupNetwork(ctx, \u0026hcloud.LookupNetworkArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var network1 = HcloudFunctions.getNetwork(GetNetworkArgs.builder()\n            .id(1234)\n            .build());\n\n        final var network2 = HcloudFunctions.getNetwork(GetNetworkArgs.builder()\n            .name(\"my-network\")\n            .build());\n\n        final var network3 = HcloudFunctions.getNetwork(GetNetworkArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  network1:\n    fn::invoke:\n      function: hcloud:getNetwork\n      arguments:\n        id: '1234'\n  network2:\n    fn::invoke:\n      function: hcloud:getNetwork\n      arguments:\n        name: my-network\n  network3:\n    fn::invoke:\n      function: hcloud:getNetwork\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getNetwork.\n","properties":{"id":{"type":"integer","description":"ID of the Network.\n"},"ipRange":{"type":"string","description":"IPv4 prefix of the Network.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"}},"mostRecent":{"type":"boolean","deprecationMessage":"This attribute has no purpose."},"name":{"type":"string","description":"Name of the Network.\n"},"withSelector":{"type":"string","description":"Label Selector. For more information about possible values, visit the [Hetzner Cloud Documentation](https://docs.hetzner.cloud/reference/cloud#label-selector).\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getNetwork.\n","properties":{"deleteProtection":{"description":"(bool) Whether delete protection is enabled.\n","type":"boolean"},"exposeRoutesToVswitch":{"description":"(bool) Indicates if the routes from this network should be exposed to the vSwitch connection. The exposing only takes effect if a vSwitch connection is active.\n","type":"boolean"},"id":{"description":"Unique ID of the Network.\n","type":"integer"},"ipRange":{"description":"IPv4 prefix of the Network.\n","type":"string"},"labels":{"additionalProperties":{"type":"string"},"type":"object"},"mostRecent":{"deprecationMessage":"This attribute has no purpose.","type":"boolean"},"name":{"description":"Name of the Network.\n","type":"string"},"withSelector":{"type":"string"}},"required":["deleteProtection","exposeRoutesToVswitch","id","ipRange","labels","name"],"type":"object"}},"hcloud:index/getNetworks:getNetworks":{"description":"Provides details about multiple Hetzner Cloud Networks.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst network2 = hcloud.getNetwork({});\nconst network3 = hcloud.getNetwork({\n    withSelector: \"key=value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nnetwork2 = hcloud.get_network()\nnetwork3 = hcloud.get_network(with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network2 = HCloud.GetNetwork.Invoke();\n\n    var network3 = HCloud.GetNetwork.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.LookupNetwork(ctx, \u0026hcloud.LookupNetworkArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupNetwork(ctx, \u0026hcloud.LookupNetworkArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var network2 = HcloudFunctions.getNetwork(GetNetworkArgs.builder()\n            .build());\n\n        final var network3 = HcloudFunctions.getNetwork(GetNetworkArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  network2:\n    fn::invoke:\n      function: hcloud:getNetwork\n      arguments: {}\n  network3:\n    fn::invoke:\n      function: hcloud:getNetwork\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getNetworks.\n","properties":{"withSelector":{"type":"string","description":"[Label selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getNetworks.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"networks":{"description":"(list) List of all matching networks. See `data.hcloud_network` for schema.\n","items":{"$ref":"#/types/hcloud:index/getNetworksNetwork:getNetworksNetwork"},"type":"array"},"withSelector":{"type":"string"}},"required":["networks","id"],"type":"object"}},"hcloud:index/getPlacementGroup:getPlacementGroup":{"description":"Provides details about a specific Hetzner Cloud Placement Group.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst samplePlacementGroup1 = hcloud.getPlacementGroup({\n    name: \"sample-placement-group-1\",\n});\nconst samplePlacementGroup2 = hcloud.getPlacementGroup({\n    id: 4711,\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nsample_placement_group1 = hcloud.get_placement_group(name=\"sample-placement-group-1\")\nsample_placement_group2 = hcloud.get_placement_group(id=4711)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var samplePlacementGroup1 = HCloud.GetPlacementGroup.Invoke(new()\n    {\n        Name = \"sample-placement-group-1\",\n    });\n\n    var samplePlacementGroup2 = HCloud.GetPlacementGroup.Invoke(new()\n    {\n        Id = 4711,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.LookupPlacementGroup(ctx, \u0026hcloud.LookupPlacementGroupArgs{\n\t\t\tName: pulumi.StringRef(\"sample-placement-group-1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupPlacementGroup(ctx, \u0026hcloud.LookupPlacementGroupArgs{\n\t\t\tId: pulumi.IntRef(4711),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetPlacementGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var samplePlacementGroup1 = HcloudFunctions.getPlacementGroup(GetPlacementGroupArgs.builder()\n            .name(\"sample-placement-group-1\")\n            .build());\n\n        final var samplePlacementGroup2 = HcloudFunctions.getPlacementGroup(GetPlacementGroupArgs.builder()\n            .id(4711)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  samplePlacementGroup1:\n    fn::invoke:\n      function: hcloud:getPlacementGroup\n      arguments:\n        name: sample-placement-group-1\n  samplePlacementGroup2:\n    fn::invoke:\n      function: hcloud:getPlacementGroup\n      arguments:\n        id: '4711'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPlacementGroup.\n","properties":{"id":{"type":"integer","description":"ID of the placement group.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"(map) User-defined labels (key-value pairs)\n"},"mostRecent":{"type":"boolean","description":"Return most recent placement group if multiple are found.\n"},"name":{"type":"string","description":"Name of the placement group.\n"},"type":{"type":"string","description":"(string) Type of the Placement Group.\n"},"withSelector":{"type":"string","description":"[Label selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getPlacementGroup.\n","properties":{"id":{"description":"(int) Unique ID of the Placement Group.\n","type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"(map) User-defined labels (key-value pairs)\n","type":"object"},"mostRecent":{"type":"boolean"},"name":{"description":"(string) Name of the Placement Group.\n","type":"string"},"servers":{"items":{"type":"integer"},"type":"array"},"type":{"description":"(string) Type of the Placement Group.\n","type":"string"},"withSelector":{"type":"string"}},"required":["id","labels","name","servers","type"],"type":"object"}},"hcloud:index/getPlacementGroups:getPlacementGroups":{"description":"Provides details about multiple Hetzner Cloud Placement Groups.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst samplePlacementGroup1 = hcloud.getPlacementGroups({});\nconst samplePlacementGroup2 = hcloud.getPlacementGroups({\n    withSelector: \"key=value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nsample_placement_group1 = hcloud.get_placement_groups()\nsample_placement_group2 = hcloud.get_placement_groups(with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var samplePlacementGroup1 = HCloud.GetPlacementGroups.Invoke();\n\n    var samplePlacementGroup2 = HCloud.GetPlacementGroups.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetPlacementGroups(ctx, \u0026hcloud.GetPlacementGroupsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetPlacementGroups(ctx, \u0026hcloud.GetPlacementGroupsArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetPlacementGroupsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var samplePlacementGroup1 = HcloudFunctions.getPlacementGroups(GetPlacementGroupsArgs.builder()\n            .build());\n\n        final var samplePlacementGroup2 = HcloudFunctions.getPlacementGroups(GetPlacementGroupsArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  samplePlacementGroup1:\n    fn::invoke:\n      function: hcloud:getPlacementGroups\n      arguments: {}\n  samplePlacementGroup2:\n    fn::invoke:\n      function: hcloud:getPlacementGroups\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPlacementGroups.\n","properties":{"mostRecent":{"type":"boolean","description":"Sorts list by date.\n"},"withSelector":{"type":"string","description":"[Label selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getPlacementGroups.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"mostRecent":{"type":"boolean"},"placementGroups":{"description":"(list) List of all matching placement groups. See `data.hcloud_placement_group` for schema.\n","items":{"$ref":"#/types/hcloud:index/getPlacementGroupsPlacementGroup:getPlacementGroupsPlacementGroup"},"type":"array"},"withSelector":{"type":"string"}},"required":["placementGroups","id"],"type":"object"}},"hcloud:index/getPrimaryIp:getPrimaryIp":{"description":"Provides details about a Hetzner Cloud Primary IP.\n\nThis resource can be useful when you need to determine a Primary IP ID based on the IP address.\n\nSide note:\n\nIf a server is getting created, it has to have a primary ip. If a server is getting created without defining primary ips, two of them (one ipv4 and one ipv6) getting created \u0026 attached.\nCurrently, Primary IPs can be only attached to servers.\n\n## Deprecations\n\n### \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e attribute\n\nThe \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e attribute is deprecated, use the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e attribute instead.\n\nSee our the [API changelog](https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters) for more details.\n\n\u003e Please upgrade to `v1.58.0+` of the provider to avoid issues once the Hetzner Cloud API no longer returns the \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e attribute.\n\n## Example Usage\n\n# Data Source:\u003cspan pulumi-lang-nodejs=\" hcloud.PrimaryIp\n\" pulumi-lang-dotnet=\" hcloud.PrimaryIp\n\" pulumi-lang-go=\" PrimaryIp\n\" pulumi-lang-python=\" PrimaryIp\n\" pulumi-lang-yaml=\" hcloud.PrimaryIp\n\" pulumi-lang-java=\" hcloud.PrimaryIp\n\"\u003e hcloud.PrimaryIp\n\u003c/span\u003e\nProvides details about a Hetzner Cloud Primary IP.\nThis resource can be useful when you need to determine a Primary IP ID based on the IP address.\n\n\n### Additional Examples\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst ip1 = hcloud.getPrimaryIp({\n    ipAddress: \"1.2.3.4\",\n});\nconst ip2 = hcloud.getPrimaryIp({\n    name: \"primary_ip_1\",\n});\nconst ip3 = hcloud.getPrimaryIp({\n    withSelector: \"key=value\",\n});\n// Link a server to an existing primary IP\nconst serverTest = new hcloud.Server(\"server_test\", {\n    name: \"test-server\",\n    image: \"ubuntu-24.04\",\n    serverType: \"cx23\",\n    datacenter: \"fsn1-dc14\",\n    labels: {\n        test: \"tessst1\",\n    },\n    publicNets: [{\n        ipv4: ip1HcloudPrimaryIp.id,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nip1 = hcloud.get_primary_ip(ip_address=\"1.2.3.4\")\nip2 = hcloud.get_primary_ip(name=\"primary_ip_1\")\nip3 = hcloud.get_primary_ip(with_selector=\"key=value\")\n# Link a server to an existing primary IP\nserver_test = hcloud.Server(\"server_test\",\n    name=\"test-server\",\n    image=\"ubuntu-24.04\",\n    server_type=\"cx23\",\n    datacenter=\"fsn1-dc14\",\n    labels={\n        \"test\": \"tessst1\",\n    },\n    public_nets=[{\n        \"ipv4\": ip1_hcloud_primary_ip[\"id\"],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ip1 = HCloud.GetPrimaryIp.Invoke(new()\n    {\n        IpAddress = \"1.2.3.4\",\n    });\n\n    var ip2 = HCloud.GetPrimaryIp.Invoke(new()\n    {\n        Name = \"primary_ip_1\",\n    });\n\n    var ip3 = HCloud.GetPrimaryIp.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n    // Link a server to an existing primary IP\n    var serverTest = new HCloud.Server(\"server_test\", new()\n    {\n        Name = \"test-server\",\n        Image = \"ubuntu-24.04\",\n        ServerType = \"cx23\",\n        Datacenter = \"fsn1-dc14\",\n        Labels = \n        {\n            { \"test\", \"tessst1\" },\n        },\n        PublicNets = new[]\n        {\n            new HCloud.Inputs.ServerPublicNetArgs\n            {\n                Ipv4 = ip1HcloudPrimaryIp.Id,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.LookupPrimaryIp(ctx, \u0026hcloud.LookupPrimaryIpArgs{\n\t\t\tIpAddress: pulumi.StringRef(\"1.2.3.4\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupPrimaryIp(ctx, \u0026hcloud.LookupPrimaryIpArgs{\n\t\t\tName: pulumi.StringRef(\"primary_ip_1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupPrimaryIp(ctx, \u0026hcloud.LookupPrimaryIpArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Link a server to an existing primary IP\n\t\t_, err = hcloud.NewServer(ctx, \"server_test\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"test-server\"),\n\t\t\tImage:      pulumi.String(\"ubuntu-24.04\"),\n\t\t\tServerType: pulumi.String(\"cx23\"),\n\t\t\tDatacenter: pulumi.String(\"fsn1-dc14\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"test\": pulumi.String(\"tessst1\"),\n\t\t\t},\n\t\t\tPublicNets: hcloud.ServerPublicNetArray{\n\t\t\t\t\u0026hcloud.ServerPublicNetArgs{\n\t\t\t\t\tIpv4: pulumi.Any(ip1HcloudPrimaryIp.Id),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetPrimaryIpArgs;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport com.pulumi.hcloud.inputs.ServerPublicNetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var ip1 = HcloudFunctions.getPrimaryIp(GetPrimaryIpArgs.builder()\n            .ipAddress(\"1.2.3.4\")\n            .build());\n\n        final var ip2 = HcloudFunctions.getPrimaryIp(GetPrimaryIpArgs.builder()\n            .name(\"primary_ip_1\")\n            .build());\n\n        final var ip3 = HcloudFunctions.getPrimaryIp(GetPrimaryIpArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n        // Link a server to an existing primary IP\n        var serverTest = new Server(\"serverTest\", ServerArgs.builder()\n            .name(\"test-server\")\n            .image(\"ubuntu-24.04\")\n            .serverType(\"cx23\")\n            .datacenter(\"fsn1-dc14\")\n            .labels(Map.of(\"test\", \"tessst1\"))\n            .publicNets(ServerPublicNetArgs.builder()\n                .ipv4(ip1HcloudPrimaryIp.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Link a server to an existing primary IP\n  serverTest:\n    type: hcloud:Server\n    name: server_test\n    properties:\n      name: test-server\n      image: ubuntu-24.04\n      serverType: cx23\n      datacenter: fsn1-dc14\n      labels:\n        test: tessst1\n      publicNets:\n        - ipv4: ${ip1HcloudPrimaryIp.id}\nvariables:\n  ip1:\n    fn::invoke:\n      function: hcloud:getPrimaryIp\n      arguments:\n        ipAddress: 1.2.3.4\n  ip2:\n    fn::invoke:\n      function: hcloud:getPrimaryIp\n      arguments:\n        name: primary_ip_1\n  ip3:\n    fn::invoke:\n      function: hcloud:getPrimaryIp\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPrimaryIp.\n","properties":{"assigneeId":{"type":"integer","description":"(int) ID of the assigned resource.\n"},"id":{"type":"integer","description":"ID of the Primary IP.\n"},"ipAddress":{"type":"string","description":"IP address of the Primary IP.\n"},"name":{"type":"string","description":"Name of the Primary IP.\n"},"withSelector":{"type":"string","description":"[Label selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getPrimaryIp.\n","properties":{"assigneeId":{"description":"(int) ID of the assigned resource.\n","type":"integer"},"assigneeType":{"description":"(string) The type of the assigned resource.\n","type":"string"},"autoDelete":{"description":"(bool) Whether auto delete is enabled.\n","type":"boolean"},"datacenter":{"deprecationMessage":"The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.","description":"(string, deprecated) The datacenter name of the Primary IP. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.\n","type":"string"},"deleteProtection":{"description":"(bool) Whether delete protection is enabled.\n","type":"boolean"},"id":{"description":"(int) Unique ID of the Primary IP.\n","type":"integer"},"ipAddress":{"description":"(string) IP Address of the Primary IP.\n","type":"string"},"ipNetwork":{"description":"(string) IPv6 subnet of the Primary IP for IPv6 addresses. (Only set if \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e)\n","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"(map) User-defined labels (key-value pairs).\n","type":"object"},"location":{"description":"(string) The location of the Primary IP. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n","type":"string"},"name":{"description":"(string) Name of the Primary IP.\n","type":"string"},"type":{"description":"(string) Type of the Primary IP.\n","type":"string"},"withSelector":{"type":"string"}},"required":["assigneeId","assigneeType","autoDelete","datacenter","deleteProtection","id","ipAddress","ipNetwork","labels","location","type"],"type":"object"}},"hcloud:index/getPrimaryIps:getPrimaryIps":{"description":"Provides details about multiple Hetzner Cloud Primary IPs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst ip2 = hcloud.getPrimaryIps({\n    withSelector: \"key=value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nip2 = hcloud.get_primary_ips(with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ip2 = HCloud.GetPrimaryIps.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetPrimaryIps(ctx, \u0026hcloud.GetPrimaryIpsArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetPrimaryIpsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var ip2 = HcloudFunctions.getPrimaryIps(GetPrimaryIpsArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  ip2:\n    fn::invoke:\n      function: hcloud:getPrimaryIps\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPrimaryIps.\n","properties":{"withSelector":{"type":"string","description":"[Label selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getPrimaryIps.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"primaryIps":{"description":"(list) List of all matching primary ips. See `data.hcloud_primary_ip` for schema.\n","items":{"$ref":"#/types/hcloud:index/getPrimaryIpsPrimaryIp:getPrimaryIpsPrimaryIp"},"type":"array"},"withSelector":{"type":"string"}},"required":["primaryIps","id"],"type":"object"}},"hcloud:index/getServer:getServer":{"description":"Provides details about a Hetzner Cloud Server.\nThis resource is useful if you want to use a non-terraform managed server.\n\n## Deprecations\n\n### \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e attribute\n\nThe \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e attribute is deprecated, use the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e attribute instead.\n\nSee our the [API changelog](https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters) for more details.\n\n\u003e Please upgrade to `v1.58.0+` of the provider to avoid issues once the Hetzner Cloud API no longer returns the \u003cspan pulumi-lang-nodejs=\"`datacenter`\" pulumi-lang-dotnet=\"`Datacenter`\" pulumi-lang-go=\"`datacenter`\" pulumi-lang-python=\"`datacenter`\" pulumi-lang-yaml=\"`datacenter`\" pulumi-lang-java=\"`datacenter`\"\u003e`datacenter`\u003c/span\u003e attribute.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst s1 = hcloud.getServer({\n    name: \"my-server\",\n});\nconst s2 = hcloud.getServer({\n    id: 123,\n});\nconst s3 = hcloud.getServer({\n    withSelector: \"key=value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\ns1 = hcloud.get_server(name=\"my-server\")\ns2 = hcloud.get_server(id=123)\ns3 = hcloud.get_server(with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var s1 = HCloud.GetServer.Invoke(new()\n    {\n        Name = \"my-server\",\n    });\n\n    var s2 = HCloud.GetServer.Invoke(new()\n    {\n        Id = 123,\n    });\n\n    var s3 = HCloud.GetServer.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.LookupServer(ctx, \u0026hcloud.LookupServerArgs{\n\t\t\tName: pulumi.StringRef(\"my-server\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupServer(ctx, \u0026hcloud.LookupServerArgs{\n\t\t\tId: pulumi.IntRef(123),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupServer(ctx, \u0026hcloud.LookupServerArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var s1 = HcloudFunctions.getServer(GetServerArgs.builder()\n            .name(\"my-server\")\n            .build());\n\n        final var s2 = HcloudFunctions.getServer(GetServerArgs.builder()\n            .id(123)\n            .build());\n\n        final var s3 = HcloudFunctions.getServer(GetServerArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  s1:\n    fn::invoke:\n      function: hcloud:getServer\n      arguments:\n        name: my-server\n  s2:\n    fn::invoke:\n      function: hcloud:getServer\n      arguments:\n        id: '123'\n  s3:\n    fn::invoke:\n      function: hcloud:getServer\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getServer.\n","properties":{"id":{"type":"integer","description":"ID of the server.\n"},"name":{"type":"string","description":"Name of the server.\n"},"networks":{"type":"array","items":{"$ref":"#/types/hcloud:index/getServerNetwork:getServerNetwork"},"description":"(map) Private Network the server is attached to.\n"},"placementGroupId":{"type":"integer","description":"(Optional, string) Placement Group ID the server is assigned to.\n"},"selector":{"type":"string","deprecationMessage":"Please use the\u003cspan pulumi-lang-nodejs=\" withSelector \" pulumi-lang-dotnet=\" WithSelector \" pulumi-lang-go=\" withSelector \" pulumi-lang-python=\" with_selector \" pulumi-lang-yaml=\" withSelector \" pulumi-lang-java=\" withSelector \"\u003e with_selector \u003c/span\u003eproperty instead."},"withSelector":{"type":"string","description":"Label Selector. For more information about possible values, visit the [Hetzner Cloud Documentation](https://docs.hetzner.cloud/reference/cloud#label-selector).\n"},"withStatuses":{"type":"array","items":{"type":"string"},"description":"List only servers with the specified status, could contain \u003cspan pulumi-lang-nodejs=\"`initializing`\" pulumi-lang-dotnet=\"`Initializing`\" pulumi-lang-go=\"`initializing`\" pulumi-lang-python=\"`initializing`\" pulumi-lang-yaml=\"`initializing`\" pulumi-lang-java=\"`initializing`\"\u003e`initializing`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`starting`\" pulumi-lang-dotnet=\"`Starting`\" pulumi-lang-go=\"`starting`\" pulumi-lang-python=\"`starting`\" pulumi-lang-yaml=\"`starting`\" pulumi-lang-java=\"`starting`\"\u003e`starting`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`stopping`\" pulumi-lang-dotnet=\"`Stopping`\" pulumi-lang-go=\"`stopping`\" pulumi-lang-python=\"`stopping`\" pulumi-lang-yaml=\"`stopping`\" pulumi-lang-java=\"`stopping`\"\u003e`stopping`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`deleting`\" pulumi-lang-dotnet=\"`Deleting`\" pulumi-lang-go=\"`deleting`\" pulumi-lang-python=\"`deleting`\" pulumi-lang-yaml=\"`deleting`\" pulumi-lang-java=\"`deleting`\"\u003e`deleting`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rebuilding`\" pulumi-lang-dotnet=\"`Rebuilding`\" pulumi-lang-go=\"`rebuilding`\" pulumi-lang-python=\"`rebuilding`\" pulumi-lang-yaml=\"`rebuilding`\" pulumi-lang-java=\"`rebuilding`\"\u003e`rebuilding`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`migrating`\" pulumi-lang-dotnet=\"`Migrating`\" pulumi-lang-go=\"`migrating`\" pulumi-lang-python=\"`migrating`\" pulumi-lang-yaml=\"`migrating`\" pulumi-lang-java=\"`migrating`\"\u003e`migrating`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`unknown`\" pulumi-lang-dotnet=\"`Unknown`\" pulumi-lang-go=\"`unknown`\" pulumi-lang-python=\"`unknown`\" pulumi-lang-yaml=\"`unknown`\" pulumi-lang-java=\"`unknown`\"\u003e`unknown`\u003c/span\u003e.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getServer.\n","properties":{"backupWindow":{"description":"(string) The backup window of the server, if enabled.\n","type":"string"},"backups":{"description":"(bool) Whether backups are enabled.\n","type":"boolean"},"datacenter":{"deprecationMessage":"The datacenter attribute is deprecated and will be removed after 1 July 2026. Please use the location attribute instead. See https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters.","description":"(string, deprecated) The datacenter name. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-datacenters-are-there) for more details about datacenters.\n","type":"string"},"deleteProtection":{"description":"(bool) Whether delete protection is enabled.\n","type":"boolean"},"firewallIds":{"description":"(Optional, list) Firewall IDs the server is attached to.\n","items":{"type":"integer"},"type":"array"},"id":{"description":"(int) Unique ID of the server.\n","type":"integer"},"image":{"description":"(string) Name or ID of the image the server was created from.\n","type":"string"},"ipv4Address":{"description":"(string) The IPv4 address.\n","type":"string"},"ipv6Address":{"description":"(string) The first IPv6 address of the assigned network.\n","type":"string"},"ipv6Network":{"description":"(string) The IPv6 network.\n","type":"string"},"iso":{"description":"(string) ID or Name of the mounted ISO image. Architecture of ISO must equal the server (type) architecture.\n","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"(map) User-defined labels (key-value pairs)\n","type":"object"},"location":{"description":"(string) The location name. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n","type":"string"},"name":{"description":"(string) Name of the server.\n","type":"string"},"networks":{"description":"(map) Private Network the server is attached to.\n","items":{"$ref":"#/types/hcloud:index/getServerNetwork:getServerNetwork"},"type":"array"},"placementGroupId":{"description":"(Optional, string) Placement Group ID the server is assigned to.\n","type":"integer"},"primaryDiskSize":{"description":"(int) The size of the primary disk in GB.\n","type":"integer"},"rebuildProtection":{"description":"(bool) Whether rebuild protection is enabled.\n","type":"boolean"},"rescue":{"type":"string"},"selector":{"deprecationMessage":"Please use the\u003cspan pulumi-lang-nodejs=\" withSelector \" pulumi-lang-dotnet=\" WithSelector \" pulumi-lang-go=\" withSelector \" pulumi-lang-python=\" with_selector \" pulumi-lang-yaml=\" withSelector \" pulumi-lang-java=\" withSelector \"\u003e with_selector \u003c/span\u003eproperty instead.","type":"string"},"serverType":{"description":"(string) Name of the server type.\n","type":"string"},"status":{"description":"(string) The status of the server.\n","type":"string"},"withSelector":{"type":"string"},"withStatuses":{"items":{"type":"string"},"type":"array"}},"required":["backupWindow","backups","datacenter","deleteProtection","firewallIds","id","image","ipv4Address","ipv6Address","ipv6Network","iso","labels","location","name","primaryDiskSize","rebuildProtection","rescue","serverType","status"],"type":"object"}},"hcloud:index/getServerType:getServerType":{"description":"Provides details about a specific Hetzner Cloud Server Type.\n\nUse this resource to get detailed information about specific Server Type.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst byId = hcloud.getServerType({\n    id: 22,\n});\nconst byName = hcloud.getServerType({\n    name: \"cx23\",\n});\nconst main = new hcloud.Server(\"main\", {\n    name: \"my-server\",\n    location: \"fsn1\",\n    image: \"debian-12\",\n    serverType: byName.then(byName =\u003e byName.name),\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nby_id = hcloud.get_server_type(id=22)\nby_name = hcloud.get_server_type(name=\"cx23\")\nmain = hcloud.Server(\"main\",\n    name=\"my-server\",\n    location=\"fsn1\",\n    image=\"debian-12\",\n    server_type=by_name.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var byId = HCloud.GetServerType.Invoke(new()\n    {\n        Id = 22,\n    });\n\n    var byName = HCloud.GetServerType.Invoke(new()\n    {\n        Name = \"cx23\",\n    });\n\n    var main = new HCloud.Server(\"main\", new()\n    {\n        Name = \"my-server\",\n        Location = \"fsn1\",\n        Image = \"debian-12\",\n        ServerType = byName.Apply(getServerTypeResult =\u003e getServerTypeResult.Name),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetServerType(ctx, \u0026hcloud.GetServerTypeArgs{\n\t\t\tId: pulumi.IntRef(22),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbyName, err := hcloud.GetServerType(ctx, \u0026hcloud.GetServerTypeArgs{\n\t\t\tName: pulumi.StringRef(\"cx23\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewServer(ctx, \"main\", \u0026hcloud.ServerArgs{\n\t\t\tName:       pulumi.String(\"my-server\"),\n\t\t\tLocation:   pulumi.String(\"fsn1\"),\n\t\t\tImage:      pulumi.String(\"debian-12\"),\n\t\t\tServerType: pulumi.String(byName.Name),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetServerTypeArgs;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var byId = HcloudFunctions.getServerType(GetServerTypeArgs.builder()\n            .id(22)\n            .build());\n\n        final var byName = HcloudFunctions.getServerType(GetServerTypeArgs.builder()\n            .name(\"cx23\")\n            .build());\n\n        var main = new Server(\"main\", ServerArgs.builder()\n            .name(\"my-server\")\n            .location(\"fsn1\")\n            .image(\"debian-12\")\n            .serverType(byName.name())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: hcloud:Server\n    properties:\n      name: my-server\n      location: fsn1\n      image: debian-12\n      serverType: ${byName.name}\nvariables:\n  byId:\n    fn::invoke:\n      function: hcloud:getServerType\n      arguments:\n        id: 22\n  byName:\n    fn::invoke:\n      function: hcloud:getServerType\n      arguments:\n        name: cx23\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getServerType.\n","properties":{"id":{"type":"integer","description":"ID of the Server Type.\n"},"name":{"type":"string","description":"Name of the Server Type.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getServerType.\n","properties":{"architecture":{"description":"Architecture of the cpu for a Server of this type.\n","type":"string"},"category":{"description":"Category of the Server Type.\n","type":"string"},"cores":{"description":"Number of cpu cores for a Server of this type.\n","type":"integer"},"cpuType":{"description":"Type of cpu for a Server of this type.\n","type":"string"},"deprecationAnnounced":{"deprecationMessage":"The field is deprecated and will gradually be phased out starting 2025-09-24. Use the deprecation in the locations list instead.","description":"Date of the Server Type deprecation announcement.\n","type":"string"},"description":{"description":"Description of the Server Type.\n","type":"string"},"disk":{"description":"Disk size in GB for a Server of this type.\n","type":"integer"},"id":{"description":"ID of the Server Type.\n","type":"integer"},"includedTraffic":{"deprecationMessage":"The field is deprecated and will always report 0 after 2024-08-05.","type":"integer"},"isDeprecated":{"deprecationMessage":"The field is deprecated and will gradually be phased out starting 2025-09-24. Use the deprecation in the locations list instead.","description":"Whether the Server Type is deprecated.\n","type":"boolean"},"locations":{"description":"List of supported Locations for this Server Type.\n","items":{"$ref":"#/types/hcloud:index/getServerTypeLocation:getServerTypeLocation"},"type":"array"},"memory":{"description":"Memory in GB for a Server of this type.\n","type":"integer"},"name":{"description":"Name of the Server Type.\n","type":"string"},"storageType":{"description":"Type of boot drive for a Server of this type.\n","type":"string"},"unavailableAfter":{"deprecationMessage":"The field is deprecated and will gradually be phased out starting 2025-09-24. Use the deprecation in the locations list instead.","description":"Date of the Server Type removal. After this date, the Server Type cannot be used anymore.\n","type":"string"}},"required":["architecture","category","cores","cpuType","deprecationAnnounced","description","disk","includedTraffic","isDeprecated","locations","memory","storageType","unavailableAfter"],"type":"object"}},"hcloud:index/getServerTypes:getServerTypes":{"description":"Provides a list of available Hetzner Cloud Server Types.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst all = hcloud.getServerTypes({});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nall = hcloud.get_server_types()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var all = HCloud.GetServerTypes.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetServerTypes(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var all = HcloudFunctions.getServerTypes(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n    }\n}\n```\n```yaml\nvariables:\n  all:\n    fn::invoke:\n      function: hcloud:getServerTypes\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getServerTypes.\n","properties":{"descriptions":{"deprecationMessage":"Use\u003cspan pulumi-lang-nodejs=\" serverTypes \" pulumi-lang-dotnet=\" ServerTypes \" pulumi-lang-go=\" serverTypes \" pulumi-lang-python=\" server_types \" pulumi-lang-yaml=\" serverTypes \" pulumi-lang-java=\" serverTypes \"\u003e server_types \u003c/span\u003elist instead","items":{"type":"string"},"type":"array"},"id":{"description":"The ID of this resource.\n","type":"string"},"names":{"deprecationMessage":"Use\u003cspan pulumi-lang-nodejs=\" serverTypes \" pulumi-lang-dotnet=\" ServerTypes \" pulumi-lang-go=\" serverTypes \" pulumi-lang-python=\" server_types \" pulumi-lang-yaml=\" serverTypes \" pulumi-lang-java=\" serverTypes \"\u003e server_types \u003c/span\u003elist instead","items":{"type":"string"},"type":"array"},"serverTypeIds":{"deprecationMessage":"Use\u003cspan pulumi-lang-nodejs=\" serverTypes \" pulumi-lang-dotnet=\" ServerTypes \" pulumi-lang-go=\" serverTypes \" pulumi-lang-python=\" server_types \" pulumi-lang-yaml=\" serverTypes \" pulumi-lang-java=\" serverTypes \"\u003e server_types \u003c/span\u003elist instead","items":{"type":"string"},"type":"array"},"serverTypes":{"items":{"$ref":"#/types/hcloud:index/getServerTypesServerType:getServerTypesServerType"},"type":"array"}},"required":["descriptions","id","names","serverTypeIds","serverTypes"],"type":"object"}},"hcloud:index/getServers:getServers":{"description":"Provides details about multiple Hetzner Cloud Servers.\nThis resource is useful if you want to use non-terraform managed servers.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst s3 = hcloud.getServers({\n    withSelector: \"key=value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\ns3 = hcloud.get_servers(with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var s3 = HCloud.GetServers.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetServers(ctx, \u0026hcloud.GetServersArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetServersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var s3 = HcloudFunctions.getServers(GetServersArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  s3:\n    fn::invoke:\n      function: hcloud:getServers\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getServers.\n","properties":{"withSelector":{"type":"string","description":"Label Selector. For more information about possible values, visit the [Hetzner Cloud Documentation](https://docs.hetzner.cloud/reference/cloud#label-selector).\n"},"withStatuses":{"type":"array","items":{"type":"string"},"description":"List only servers with the specified status, could contain \u003cspan pulumi-lang-nodejs=\"`initializing`\" pulumi-lang-dotnet=\"`Initializing`\" pulumi-lang-go=\"`initializing`\" pulumi-lang-python=\"`initializing`\" pulumi-lang-yaml=\"`initializing`\" pulumi-lang-java=\"`initializing`\"\u003e`initializing`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`starting`\" pulumi-lang-dotnet=\"`Starting`\" pulumi-lang-go=\"`starting`\" pulumi-lang-python=\"`starting`\" pulumi-lang-yaml=\"`starting`\" pulumi-lang-java=\"`starting`\"\u003e`starting`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`stopping`\" pulumi-lang-dotnet=\"`Stopping`\" pulumi-lang-go=\"`stopping`\" pulumi-lang-python=\"`stopping`\" pulumi-lang-yaml=\"`stopping`\" pulumi-lang-java=\"`stopping`\"\u003e`stopping`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`deleting`\" pulumi-lang-dotnet=\"`Deleting`\" pulumi-lang-go=\"`deleting`\" pulumi-lang-python=\"`deleting`\" pulumi-lang-yaml=\"`deleting`\" pulumi-lang-java=\"`deleting`\"\u003e`deleting`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rebuilding`\" pulumi-lang-dotnet=\"`Rebuilding`\" pulumi-lang-go=\"`rebuilding`\" pulumi-lang-python=\"`rebuilding`\" pulumi-lang-yaml=\"`rebuilding`\" pulumi-lang-java=\"`rebuilding`\"\u003e`rebuilding`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`migrating`\" pulumi-lang-dotnet=\"`Migrating`\" pulumi-lang-go=\"`migrating`\" pulumi-lang-python=\"`migrating`\" pulumi-lang-yaml=\"`migrating`\" pulumi-lang-java=\"`migrating`\"\u003e`migrating`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`unknown`\" pulumi-lang-dotnet=\"`Unknown`\" pulumi-lang-go=\"`unknown`\" pulumi-lang-python=\"`unknown`\" pulumi-lang-yaml=\"`unknown`\" pulumi-lang-java=\"`unknown`\"\u003e`unknown`\u003c/span\u003e.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getServers.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"servers":{"description":"(list) List of all matching servers. See `data.hcloud_server` for schema.\n","items":{"$ref":"#/types/hcloud:index/getServersServer:getServersServer"},"type":"array"},"withSelector":{"type":"string"},"withStatuses":{"items":{"type":"string"},"type":"array"}},"required":["servers","id"],"type":"object"}},"hcloud:index/getSshKey:getSshKey":{"description":"Provides details about a specific Hetzner Cloud SSH Key.\n\nThis resource is useful if you want to use a non-terraform managed SSH Key.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst byId = hcloud.getSshKey({\n    id: 24332897,\n});\nconst byName = hcloud.getSshKey({\n    name: \"my-ssh-key\",\n});\nconst byFingerprint = hcloud.getSshKey({\n    fingerprint: \"55:58:dc:bd:61:6e:7d:24:07:a7:7d:9b:be:99:83:a8\",\n});\nconst byLabel = hcloud.getSshKey({\n    withSelector: \"key=value\",\n});\nconst main = new hcloud.Server(\"main\", {sshKeys: [\n    byId.then(byId =\u003e byId.id),\n    byName.then(byName =\u003e byName.id),\n    byFingerprint.then(byFingerprint =\u003e byFingerprint.id),\n]});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nby_id = hcloud.get_ssh_key(id=24332897)\nby_name = hcloud.get_ssh_key(name=\"my-ssh-key\")\nby_fingerprint = hcloud.get_ssh_key(fingerprint=\"55:58:dc:bd:61:6e:7d:24:07:a7:7d:9b:be:99:83:a8\")\nby_label = hcloud.get_ssh_key(with_selector=\"key=value\")\nmain = hcloud.Server(\"main\", ssh_keys=[\n    by_id.id,\n    by_name.id,\n    by_fingerprint.id,\n])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var byId = HCloud.GetSshKey.Invoke(new()\n    {\n        Id = 24332897,\n    });\n\n    var byName = HCloud.GetSshKey.Invoke(new()\n    {\n        Name = \"my-ssh-key\",\n    });\n\n    var byFingerprint = HCloud.GetSshKey.Invoke(new()\n    {\n        Fingerprint = \"55:58:dc:bd:61:6e:7d:24:07:a7:7d:9b:be:99:83:a8\",\n    });\n\n    var byLabel = HCloud.GetSshKey.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n    var main = new HCloud.Server(\"main\", new()\n    {\n        SshKeys = new[]\n        {\n            byId.Apply(getSshKeyResult =\u003e getSshKeyResult.Id),\n            byName.Apply(getSshKeyResult =\u003e getSshKeyResult.Id),\n            byFingerprint.Apply(getSshKeyResult =\u003e getSshKeyResult.Id),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbyId, err := hcloud.LookupSshKey(ctx, \u0026hcloud.LookupSshKeyArgs{\n\t\t\tId: pulumi.IntRef(24332897),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbyName, err := hcloud.LookupSshKey(ctx, \u0026hcloud.LookupSshKeyArgs{\n\t\t\tName: pulumi.StringRef(\"my-ssh-key\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbyFingerprint, err := hcloud.LookupSshKey(ctx, \u0026hcloud.LookupSshKeyArgs{\n\t\t\tFingerprint: pulumi.StringRef(\"55:58:dc:bd:61:6e:7d:24:07:a7:7d:9b:be:99:83:a8\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupSshKey(ctx, \u0026hcloud.LookupSshKeyArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.NewServer(ctx, \"main\", \u0026hcloud.ServerArgs{\n\t\t\tSshKeys: pulumi.StringArray{\n\t\t\t\tpulumi.Int(byId.Id),\n\t\t\t\tpulumi.Int(byName.Id),\n\t\t\t\tpulumi.Int(byFingerprint.Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetSshKeyArgs;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var byId = HcloudFunctions.getSshKey(GetSshKeyArgs.builder()\n            .id(24332897)\n            .build());\n\n        final var byName = HcloudFunctions.getSshKey(GetSshKeyArgs.builder()\n            .name(\"my-ssh-key\")\n            .build());\n\n        final var byFingerprint = HcloudFunctions.getSshKey(GetSshKeyArgs.builder()\n            .fingerprint(\"55:58:dc:bd:61:6e:7d:24:07:a7:7d:9b:be:99:83:a8\")\n            .build());\n\n        final var byLabel = HcloudFunctions.getSshKey(GetSshKeyArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n        var main = new Server(\"main\", ServerArgs.builder()\n            .sshKeys(            \n                byId.id(),\n                byName.id(),\n                byFingerprint.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: hcloud:Server\n    properties:\n      sshKeys:\n        - ${byId.id}\n        - ${byName.id}\n        - ${byFingerprint.id}\nvariables:\n  byId:\n    fn::invoke:\n      function: hcloud:getSshKey\n      arguments:\n        id: 2.4332897e+07\n  byName:\n    fn::invoke:\n      function: hcloud:getSshKey\n      arguments:\n        name: my-ssh-key\n  byFingerprint:\n    fn::invoke:\n      function: hcloud:getSshKey\n      arguments:\n        fingerprint: 55:58:dc:bd:61:6e:7d:24:07:a7:7d:9b:be:99:83:a8\n  byLabel:\n    fn::invoke:\n      function: hcloud:getSshKey\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSshKey.\n","properties":{"fingerprint":{"type":"string","description":"Fingerprint of the SSH Key.\n"},"id":{"type":"integer","description":"ID of the SSH Key.\n"},"name":{"type":"string","description":"Name of the SSH Key.\n"},"selector":{"type":"string","description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector).\n","deprecationMessage":"Please use the\u003cspan pulumi-lang-nodejs=\" withSelector \" pulumi-lang-dotnet=\" WithSelector \" pulumi-lang-go=\" withSelector \" pulumi-lang-python=\" with_selector \" pulumi-lang-yaml=\" withSelector \" pulumi-lang-java=\" withSelector \"\u003e with_selector \u003c/span\u003eproperty instead."},"withSelector":{"type":"string","description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector).\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getSshKey.\n","properties":{"fingerprint":{"description":"Fingerprint of the SSH Key.\n","type":"string"},"id":{"description":"ID of the SSH Key.\n","type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n","type":"object"},"name":{"description":"Name of the SSH Key.\n","type":"string"},"publicKey":{"description":"Public key of the SSH Key pair.\n","type":"string"},"selector":{"deprecationMessage":"Please use the\u003cspan pulumi-lang-nodejs=\" withSelector \" pulumi-lang-dotnet=\" WithSelector \" pulumi-lang-go=\" withSelector \" pulumi-lang-python=\" with_selector \" pulumi-lang-yaml=\" withSelector \" pulumi-lang-java=\" withSelector \"\u003e with_selector \u003c/span\u003eproperty instead.","description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector).\n","type":"string"},"withSelector":{"description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector).\n","type":"string"}},"required":["labels","publicKey"],"type":"object"}},"hcloud:index/getSshKeys:getSshKeys":{"description":"Provides a list of Hetzner Cloud SSH Keys.\n\nThis resource is useful if you want to use a non-terraform managed SSH Key.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst all = hcloud.getSshKeys({});\nconst byLabel = hcloud.getSshKeys({\n    withSelector: \"foo=bar\",\n});\nconst main = new hcloud.Server(\"main\", {sshKeys: all.then(all =\u003e all.sshKeys.map(__item =\u003e __item.name))});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nall = hcloud.get_ssh_keys()\nby_label = hcloud.get_ssh_keys(with_selector=\"foo=bar\")\nmain = hcloud.Server(\"main\", ssh_keys=[__item.name for __item in all.ssh_keys])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var all = HCloud.GetSshKeys.Invoke();\n\n    var byLabel = HCloud.GetSshKeys.Invoke(new()\n    {\n        WithSelector = \"foo=bar\",\n    });\n\n    var main = new HCloud.Server(\"main\", new()\n    {\n        SshKeys = all.Apply(getSshKeysResult =\u003e getSshKeysResult.SshKeys).Select(__item =\u003e __item.Name).ToList(),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tall, err := hcloud.GetSshKeys(ctx, \u0026hcloud.GetSshKeysArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetSshKeys(ctx, \u0026hcloud.GetSshKeysArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"foo=bar\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar splat0 []*string\n\t\tfor _, val0 := range all.SshKeys {\n\t\t\tsplat0 = append(splat0, val0.Name)\n\t\t}\n\t\t_, err = hcloud.NewServer(ctx, \"main\", \u0026hcloud.ServerArgs{\n\t\t\tSshKeys: splat0,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetSshKeysArgs;\nimport com.pulumi.hcloud.Server;\nimport com.pulumi.hcloud.ServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var all = HcloudFunctions.getSshKeys(GetSshKeysArgs.builder()\n            .build());\n\n        final var byLabel = HcloudFunctions.getSshKeys(GetSshKeysArgs.builder()\n            .withSelector(\"foo=bar\")\n            .build());\n\n        var main = new Server(\"main\", ServerArgs.builder()\n            .sshKeys(all.sshKeys().stream().map(element -\u003e element.name()).collect(toList()))\n            .build());\n\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSshKeys.\n","properties":{"id":{"type":"string","description":"The ID of this resource.\n"},"withSelector":{"type":"string","description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getSshKeys.\n","properties":{"id":{"description":"The ID of this resource.\n","type":"string"},"sshKeys":{"items":{"$ref":"#/types/hcloud:index/getSshKeysSshKey:getSshKeysSshKey"},"type":"array"},"withSelector":{"description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n","type":"string"}},"required":["sshKeys"],"type":"object"}},"hcloud:index/getStorageBox:getStorageBox":{"description":"Provides details about a Hetzner Storage Box.\n\nSee the [Storage Boxes API documentation](https://docs.hetzner.cloud/reference/hetzner#storage-boxes) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst byId = hcloud.getStorageBox({\n    id: 1333,\n});\nconst byName = hcloud.getStorageBox({\n    name: \"backups\",\n});\nconst byLabelSelector = hcloud.getStorageBox({\n    withSelector: \"env=production\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nby_id = hcloud.get_storage_box(id=1333)\nby_name = hcloud.get_storage_box(name=\"backups\")\nby_label_selector = hcloud.get_storage_box(with_selector=\"env=production\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var byId = HCloud.GetStorageBox.Invoke(new()\n    {\n        Id = 1333,\n    });\n\n    var byName = HCloud.GetStorageBox.Invoke(new()\n    {\n        Name = \"backups\",\n    });\n\n    var byLabelSelector = HCloud.GetStorageBox.Invoke(new()\n    {\n        WithSelector = \"env=production\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.LookupStorageBox(ctx, \u0026hcloud.LookupStorageBoxArgs{\n\t\t\tId: pulumi.IntRef(1333),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupStorageBox(ctx, \u0026hcloud.LookupStorageBoxArgs{\n\t\t\tName: pulumi.StringRef(\"backups\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupStorageBox(ctx, \u0026hcloud.LookupStorageBoxArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"env=production\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetStorageBoxArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var byId = HcloudFunctions.getStorageBox(GetStorageBoxArgs.builder()\n            .id(1333)\n            .build());\n\n        final var byName = HcloudFunctions.getStorageBox(GetStorageBoxArgs.builder()\n            .name(\"backups\")\n            .build());\n\n        final var byLabelSelector = HcloudFunctions.getStorageBox(GetStorageBoxArgs.builder()\n            .withSelector(\"env=production\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  byId:\n    fn::invoke:\n      function: hcloud:getStorageBox\n      arguments:\n        id: 1333\n  byName:\n    fn::invoke:\n      function: hcloud:getStorageBox\n      arguments:\n        name: backups\n  byLabelSelector:\n    fn::invoke:\n      function: hcloud:getStorageBox\n      arguments:\n        withSelector: env=production\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getStorageBox.\n","properties":{"id":{"type":"integer","description":"ID of the Storage Box.\n"},"name":{"type":"string","description":"Name of the Storage Box.\n"},"withSelector":{"type":"string","description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/hetzner#label-selector).\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getStorageBox.\n","properties":{"accessSettings":{"$ref":"#/types/hcloud:index/getStorageBoxAccessSettings:getStorageBoxAccessSettings","description":"Access settings of the Storage Box.\n"},"deleteProtection":{"description":"Whether delete protection is enabled.\n","type":"boolean"},"id":{"description":"ID of the Storage Box.\n","type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n","type":"object"},"location":{"description":"Name of the Location.\n","type":"string"},"name":{"description":"Name of the Storage Box.\n","type":"string"},"server":{"description":"FQDN of the Storage Box.\n","type":"string"},"snapshotPlan":{"$ref":"#/types/hcloud:index/getStorageBoxSnapshotPlan:getStorageBoxSnapshotPlan","description":"Details of the active snapshot plan.\n"},"storageBoxType":{"description":"Name of the Storage Box Type.\n","type":"string"},"system":{"description":"Host system of the Storage Box.\n","type":"string"},"username":{"description":"Primary username of the Storage Box.\n","type":"string"},"withSelector":{"description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/hetzner#label-selector).\n","type":"string"}},"required":["accessSettings","deleteProtection","labels","location","server","snapshotPlan","storageBoxType","system","username"],"type":"object"}},"hcloud:index/getStorageBoxSnapshot:getStorageBoxSnapshot":{"description":"Provides details about a Hetzner Storage Box Snapshot.\n\nSee the [Storage Box Snapshots API documentation](https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nconfiguration:\n  storageBoxId:\n    type: dynamic\nvariables:\n  byId:\n    fn::invoke:\n      function: hcloud:getStorageBoxSnapshot\n      arguments:\n        storageBoxId: ${storageBoxId}\n        id: 2\n  byName:\n    fn::invoke:\n      function: hcloud:getStorageBoxSnapshot\n      arguments:\n        storageBoxId: ${storageBoxId}\n        name: 2025-02-12T11-35-19\n  byLabelSelector:\n    fn::invoke:\n      function: hcloud:getStorageBox\n      arguments:\n        storageBoxId: ${storageBoxId}\n        withSelector: env=production\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getStorageBoxSnapshot.\n","properties":{"id":{"type":"integer","description":"ID of the Storage Box Snapshot.\n"},"name":{"type":"string","description":"Name of the Storage Box Snapshot.\n"},"storageBoxId":{"type":"integer","description":"ID of the Storage Box.\n"},"withSelector":{"type":"string","description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/hetzner#label-selector).\n"}},"type":"object","required":["storageBoxId"]},"outputs":{"description":"A collection of values returned by getStorageBoxSnapshot.\n","properties":{"description":{"description":"Description of the Storage Box Snapshot.\n","type":"string"},"id":{"description":"ID of the Storage Box Snapshot.\n","type":"integer"},"isAutomatic":{"description":"Whether the Storage Box Snapshot was created automatically.\n","type":"boolean"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n","type":"object"},"name":{"description":"Name of the Storage Box Snapshot.\n","type":"string"},"stats":{"$ref":"#/types/hcloud:index/getStorageBoxSnapshotStats:getStorageBoxSnapshotStats","description":"Statistics of the Storage Box Snapshot.\n"},"storageBoxId":{"description":"ID of the Storage Box.\n","type":"integer"},"withSelector":{"description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/hetzner#label-selector).\n","type":"string"}},"required":["description","id","isAutomatic","labels","name","stats","storageBoxId"],"type":"object"}},"hcloud:index/getStorageBoxSnapshots:getStorageBoxSnapshots":{"description":"Provides a list of Hetzner Storage Box Snapshots.\n\nSee the [Storage Box Snapshots API documentation](https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst config = new pulumi.Config();\nconst storageBoxId = config.requireObject\u003cany\u003e(\"storageBoxId\");\nconst all = hcloud.getStorageBoxSnapshots({\n    storageBoxId: storageBoxId,\n});\nconst byLabelSelector = hcloud.getStorageBoxSnapshots({\n    storageBoxId: storageBoxId,\n    withSelector: \"env=production\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nconfig = pulumi.Config()\nstorage_box_id = config.require_object(\"storageBoxId\")\nall = hcloud.get_storage_box_snapshots(storage_box_id=storage_box_id)\nby_label_selector = hcloud.get_storage_box_snapshots(storage_box_id=storage_box_id,\n    with_selector=\"env=production\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var storageBoxId = config.RequireObject\u003cdynamic\u003e(\"storageBoxId\");\n    var all = HCloud.GetStorageBoxSnapshots.Invoke(new()\n    {\n        StorageBoxId = storageBoxId,\n    });\n\n    var byLabelSelector = HCloud.GetStorageBoxSnapshots.Invoke(new()\n    {\n        StorageBoxId = storageBoxId,\n        WithSelector = \"env=production\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tstorageBoxId := cfg.RequireObject(\"storageBoxId\")\n\t\t_, err := hcloud.GetStorageBoxSnapshots(ctx, \u0026hcloud.GetStorageBoxSnapshotsArgs{\n\t\t\tStorageBoxId: storageBoxId,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetStorageBoxSnapshots(ctx, \u0026hcloud.GetStorageBoxSnapshotsArgs{\n\t\t\tStorageBoxId: storageBoxId,\n\t\t\tWithSelector: pulumi.StringRef(\"env=production\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetStorageBoxSnapshotsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var config = ctx.config();\n        final var storageBoxId = config.get(\"storageBoxId\");\n        final var all = HcloudFunctions.getStorageBoxSnapshots(GetStorageBoxSnapshotsArgs.builder()\n            .storageBoxId(storageBoxId)\n            .build());\n\n        final var byLabelSelector = HcloudFunctions.getStorageBoxSnapshots(GetStorageBoxSnapshotsArgs.builder()\n            .storageBoxId(storageBoxId)\n            .withSelector(\"env=production\")\n            .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  storageBoxId:\n    type: dynamic\nvariables:\n  all:\n    fn::invoke:\n      function: hcloud:getStorageBoxSnapshots\n      arguments:\n        storageBoxId: ${storageBoxId}\n  byLabelSelector:\n    fn::invoke:\n      function: hcloud:getStorageBoxSnapshots\n      arguments:\n        storageBoxId: ${storageBoxId}\n        withSelector: env=production\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getStorageBoxSnapshots.\n","properties":{"storageBoxId":{"type":"integer","description":"ID of the Storage Box.\n"},"withSelector":{"type":"string","description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"}},"type":"object","required":["storageBoxId"]},"outputs":{"description":"A collection of values returned by getStorageBoxSnapshots.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"snapshots":{"items":{"$ref":"#/types/hcloud:index/getStorageBoxSnapshotsSnapshot:getStorageBoxSnapshotsSnapshot"},"type":"array"},"storageBoxId":{"description":"ID of the Storage Box.\n","type":"integer"},"withSelector":{"description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n","type":"string"}},"required":["snapshots","storageBoxId","id"],"type":"object"}},"hcloud:index/getStorageBoxSubaccount:getStorageBoxSubaccount":{"description":"Provides details about a Hetzner Storage Box Subaccount.\n\nSee the [Storage Box Subaccounts API documentation](https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst config = new pulumi.Config();\nconst storageBoxId = config.requireObject\u003cany\u003e(\"storageBoxId\");\nconst byId = hcloud.getStorageBoxSubaccount({\n    storageBoxId: storageBoxId,\n    id: 2,\n});\nconst byName = hcloud.getStorageBoxSubaccount({\n    storageBoxId: storageBoxId,\n    name: \"badger\",\n});\nconst byUsername = hcloud.getStorageBoxSubaccount({\n    storageBoxId: storageBoxId,\n    username: \"u507137-sub1\",\n});\nconst byLabelSelector = hcloud.getStorageBoxSubaccount({\n    storageBoxId: storageBoxId,\n    withSelector: \"team=billing\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nconfig = pulumi.Config()\nstorage_box_id = config.require_object(\"storageBoxId\")\nby_id = hcloud.get_storage_box_subaccount(storage_box_id=storage_box_id,\n    id=2)\nby_name = hcloud.get_storage_box_subaccount(storage_box_id=storage_box_id,\n    name=\"badger\")\nby_username = hcloud.get_storage_box_subaccount(storage_box_id=storage_box_id,\n    username=\"u507137-sub1\")\nby_label_selector = hcloud.get_storage_box_subaccount(storage_box_id=storage_box_id,\n    with_selector=\"team=billing\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var storageBoxId = config.RequireObject\u003cdynamic\u003e(\"storageBoxId\");\n    var byId = HCloud.GetStorageBoxSubaccount.Invoke(new()\n    {\n        StorageBoxId = storageBoxId,\n        Id = 2,\n    });\n\n    var byName = HCloud.GetStorageBoxSubaccount.Invoke(new()\n    {\n        StorageBoxId = storageBoxId,\n        Name = \"badger\",\n    });\n\n    var byUsername = HCloud.GetStorageBoxSubaccount.Invoke(new()\n    {\n        StorageBoxId = storageBoxId,\n        Username = \"u507137-sub1\",\n    });\n\n    var byLabelSelector = HCloud.GetStorageBoxSubaccount.Invoke(new()\n    {\n        StorageBoxId = storageBoxId,\n        WithSelector = \"team=billing\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tstorageBoxId := cfg.RequireObject(\"storageBoxId\")\n\t\t_, err := hcloud.LookupStorageBoxSubaccount(ctx, \u0026hcloud.LookupStorageBoxSubaccountArgs{\n\t\t\tStorageBoxId: storageBoxId,\n\t\t\tId:           pulumi.IntRef(2),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupStorageBoxSubaccount(ctx, \u0026hcloud.LookupStorageBoxSubaccountArgs{\n\t\t\tStorageBoxId: storageBoxId,\n\t\t\tName:         pulumi.StringRef(\"badger\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupStorageBoxSubaccount(ctx, \u0026hcloud.LookupStorageBoxSubaccountArgs{\n\t\t\tStorageBoxId: storageBoxId,\n\t\t\tUsername:     pulumi.StringRef(\"u507137-sub1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupStorageBoxSubaccount(ctx, \u0026hcloud.LookupStorageBoxSubaccountArgs{\n\t\t\tStorageBoxId: storageBoxId,\n\t\t\tWithSelector: pulumi.StringRef(\"team=billing\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetStorageBoxSubaccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var config = ctx.config();\n        final var storageBoxId = config.get(\"storageBoxId\");\n        final var byId = HcloudFunctions.getStorageBoxSubaccount(GetStorageBoxSubaccountArgs.builder()\n            .storageBoxId(storageBoxId)\n            .id(2)\n            .build());\n\n        final var byName = HcloudFunctions.getStorageBoxSubaccount(GetStorageBoxSubaccountArgs.builder()\n            .storageBoxId(storageBoxId)\n            .name(\"badger\")\n            .build());\n\n        final var byUsername = HcloudFunctions.getStorageBoxSubaccount(GetStorageBoxSubaccountArgs.builder()\n            .storageBoxId(storageBoxId)\n            .username(\"u507137-sub1\")\n            .build());\n\n        final var byLabelSelector = HcloudFunctions.getStorageBoxSubaccount(GetStorageBoxSubaccountArgs.builder()\n            .storageBoxId(storageBoxId)\n            .withSelector(\"team=billing\")\n            .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  storageBoxId:\n    type: dynamic\nvariables:\n  byId:\n    fn::invoke:\n      function: hcloud:getStorageBoxSubaccount\n      arguments:\n        storageBoxId: ${storageBoxId}\n        id: 2\n  byName:\n    fn::invoke:\n      function: hcloud:getStorageBoxSubaccount\n      arguments:\n        storageBoxId: ${storageBoxId}\n        name: badger\n  byUsername:\n    fn::invoke:\n      function: hcloud:getStorageBoxSubaccount\n      arguments:\n        storageBoxId: ${storageBoxId}\n        username: u507137-sub1\n  byLabelSelector:\n    fn::invoke:\n      function: hcloud:getStorageBoxSubaccount\n      arguments:\n        storageBoxId: ${storageBoxId}\n        withSelector: team=billing\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getStorageBoxSubaccount.\n","properties":{"id":{"type":"integer","description":"ID of the Storage Box Subaccount.\n"},"name":{"type":"string","description":"Name of the Storage Box Subaccount.\n"},"storageBoxId":{"type":"integer","description":"ID of the Storage Box.\n"},"username":{"type":"string","description":"Username of the Storage Box Subaccount.\n"},"withSelector":{"type":"string","description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/hetzner#label-selector).\n"}},"type":"object","required":["storageBoxId"]},"outputs":{"description":"A collection of values returned by getStorageBoxSubaccount.\n","properties":{"accessSettings":{"$ref":"#/types/hcloud:index/getStorageBoxSubaccountAccessSettings:getStorageBoxSubaccountAccessSettings","description":"Access settings for the Subaccount.\n"},"description":{"description":"Description of the Storage Box Subaccount.\n","type":"string"},"homeDirectory":{"description":"Home directory of the Storage Box Subaccount.\n","type":"string"},"id":{"description":"ID of the Storage Box Subaccount.\n","type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n","type":"object"},"name":{"description":"Name of the Storage Box Subaccount.\n","type":"string"},"server":{"description":"FQDN of the Storage Box Subaccount.\n","type":"string"},"storageBoxId":{"description":"ID of the Storage Box.\n","type":"integer"},"username":{"description":"Username of the Storage Box Subaccount.\n","type":"string"},"withSelector":{"description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/hetzner#label-selector).\n","type":"string"}},"required":["accessSettings","description","homeDirectory","id","labels","name","server","storageBoxId","username"],"type":"object"}},"hcloud:index/getStorageBoxSubaccounts:getStorageBoxSubaccounts":{"description":"Provides a list of Hetzner Storage Box Subaccounts.\n\nSee the [Storage Box Subaccounts API documentation](https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst config = new pulumi.Config();\nconst storageBoxId = config.requireObject\u003cany\u003e(\"storageBoxId\");\nconst all = hcloud.getStorageBoxSubaccounts({\n    storageBoxId: storageBoxId,\n});\nconst byLabelSelector = hcloud.getStorageBoxSubaccounts({\n    storageBoxId: storageBoxId,\n    withSelector: \"team=billing\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nconfig = pulumi.Config()\nstorage_box_id = config.require_object(\"storageBoxId\")\nall = hcloud.get_storage_box_subaccounts(storage_box_id=storage_box_id)\nby_label_selector = hcloud.get_storage_box_subaccounts(storage_box_id=storage_box_id,\n    with_selector=\"team=billing\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var storageBoxId = config.RequireObject\u003cdynamic\u003e(\"storageBoxId\");\n    var all = HCloud.GetStorageBoxSubaccounts.Invoke(new()\n    {\n        StorageBoxId = storageBoxId,\n    });\n\n    var byLabelSelector = HCloud.GetStorageBoxSubaccounts.Invoke(new()\n    {\n        StorageBoxId = storageBoxId,\n        WithSelector = \"team=billing\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tstorageBoxId := cfg.RequireObject(\"storageBoxId\")\n\t\t_, err := hcloud.GetStorageBoxSubaccounts(ctx, \u0026hcloud.GetStorageBoxSubaccountsArgs{\n\t\t\tStorageBoxId: storageBoxId,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetStorageBoxSubaccounts(ctx, \u0026hcloud.GetStorageBoxSubaccountsArgs{\n\t\t\tStorageBoxId: storageBoxId,\n\t\t\tWithSelector: pulumi.StringRef(\"team=billing\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetStorageBoxSubaccountsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var config = ctx.config();\n        final var storageBoxId = config.get(\"storageBoxId\");\n        final var all = HcloudFunctions.getStorageBoxSubaccounts(GetStorageBoxSubaccountsArgs.builder()\n            .storageBoxId(storageBoxId)\n            .build());\n\n        final var byLabelSelector = HcloudFunctions.getStorageBoxSubaccounts(GetStorageBoxSubaccountsArgs.builder()\n            .storageBoxId(storageBoxId)\n            .withSelector(\"team=billing\")\n            .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  storageBoxId:\n    type: dynamic\nvariables:\n  all:\n    fn::invoke:\n      function: hcloud:getStorageBoxSubaccounts\n      arguments:\n        storageBoxId: ${storageBoxId}\n  byLabelSelector:\n    fn::invoke:\n      function: hcloud:getStorageBoxSubaccounts\n      arguments:\n        storageBoxId: ${storageBoxId}\n        withSelector: team=billing\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getStorageBoxSubaccounts.\n","properties":{"storageBoxId":{"type":"integer","description":"ID of the Storage Box.\n"},"withSelector":{"type":"string","description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"}},"type":"object","required":["storageBoxId"]},"outputs":{"description":"A collection of values returned by getStorageBoxSubaccounts.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"storageBoxId":{"description":"ID of the Storage Box.\n","type":"integer"},"subaccounts":{"items":{"$ref":"#/types/hcloud:index/getStorageBoxSubaccountsSubaccount:getStorageBoxSubaccountsSubaccount"},"type":"array"},"withSelector":{"description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n","type":"string"}},"required":["storageBoxId","subaccounts","id"],"type":"object"}},"hcloud:index/getStorageBoxType:getStorageBoxType":{"description":"Provides details about a Hetzner Storage Box Type.\n\nSee the [Storage Box Type API documentation](https://docs.hetzner.cloud/reference/hetzner#storage-box-types) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst byId = hcloud.getStorageBoxType({\n    id: 1333,\n});\nconst byName = hcloud.getStorageBoxType({\n    name: \"bx11\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nby_id = hcloud.get_storage_box_type(id=1333)\nby_name = hcloud.get_storage_box_type(name=\"bx11\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var byId = HCloud.GetStorageBoxType.Invoke(new()\n    {\n        Id = 1333,\n    });\n\n    var byName = HCloud.GetStorageBoxType.Invoke(new()\n    {\n        Name = \"bx11\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetStorageBoxType(ctx, \u0026hcloud.GetStorageBoxTypeArgs{\n\t\t\tId: pulumi.IntRef(1333),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetStorageBoxType(ctx, \u0026hcloud.GetStorageBoxTypeArgs{\n\t\t\tName: pulumi.StringRef(\"bx11\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetStorageBoxTypeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var byId = HcloudFunctions.getStorageBoxType(GetStorageBoxTypeArgs.builder()\n            .id(1333)\n            .build());\n\n        final var byName = HcloudFunctions.getStorageBoxType(GetStorageBoxTypeArgs.builder()\n            .name(\"bx11\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  byId:\n    fn::invoke:\n      function: hcloud:getStorageBoxType\n      arguments:\n        id: 1333\n  byName:\n    fn::invoke:\n      function: hcloud:getStorageBoxType\n      arguments:\n        name: bx11\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getStorageBoxType.\n","properties":{"id":{"type":"integer","description":"ID of the Storage Box Type.\n"},"name":{"type":"string","description":"Name of the Storage Box Type.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getStorageBoxType.\n","properties":{"automaticSnapshotLimit":{"description":"Maximum number of snapshots created automatically by a snapshot plan.\n","type":"integer"},"deprecationAnnounced":{"description":"Date of the Storage Box Type deprecation announcement.\n","type":"string"},"description":{"description":"Description of the Storage Box Type.\n","type":"string"},"id":{"description":"ID of the Storage Box Type.\n","type":"integer"},"isDeprecated":{"description":"Whether the Storage Box Type is deprecated.\n","type":"boolean"},"name":{"description":"Name of the Storage Box Type.\n","type":"string"},"size":{"description":"Available storage in bytes.\n","type":"integer"},"snapshotLimit":{"description":"Maximum number of allowed manual snapshots.\n","type":"integer"},"subaccountsLimit":{"description":"Maximum number of subaccounts.\n","type":"integer"},"unavailableAfter":{"description":"Date of the Storage Box Type removal. After this date, the Storage Box Type cannot be used anymore.\n","type":"string"}},"required":["automaticSnapshotLimit","deprecationAnnounced","description","isDeprecated","size","snapshotLimit","subaccountsLimit","unavailableAfter"],"type":"object"}},"hcloud:index/getStorageBoxTypes:getStorageBoxTypes":{"description":"Provides a list of Hetzner Storage Box Types.\n\nSee the [Storage Box Type API documentation](https://docs.hetzner.cloud/reference/hetzner#storage-box-types) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst all = hcloud.getStorageBoxTypes({});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nall = hcloud.get_storage_box_types()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var all = HCloud.GetStorageBoxTypes.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetStorageBoxTypes(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var all = HcloudFunctions.getStorageBoxTypes(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n    }\n}\n```\n```yaml\nvariables:\n  all:\n    fn::invoke:\n      function: hcloud:getStorageBoxTypes\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getStorageBoxTypes.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"storageBoxTypes":{"items":{"$ref":"#/types/hcloud:index/getStorageBoxTypesStorageBoxType:getStorageBoxTypesStorageBoxType"},"type":"array"}},"required":["storageBoxTypes","id"],"type":"object"}},"hcloud:index/getStorageBoxes:getStorageBoxes":{"description":"Provides a list of Hetzner Storage Boxes.\n\nSee the [Storage Boxes API documentation](https://docs.hetzner.cloud/reference/hetzner#storage-boxes) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst all = hcloud.getStorageBoxes({});\nconst byLabelSelector = hcloud.getStorageBoxes({\n    withSelector: \"env=production\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nall = hcloud.get_storage_boxes()\nby_label_selector = hcloud.get_storage_boxes(with_selector=\"env=production\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var all = HCloud.GetStorageBoxes.Invoke();\n\n    var byLabelSelector = HCloud.GetStorageBoxes.Invoke(new()\n    {\n        WithSelector = \"env=production\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetStorageBoxes(ctx, \u0026hcloud.GetStorageBoxesArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetStorageBoxes(ctx, \u0026hcloud.GetStorageBoxesArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"env=production\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetStorageBoxesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var all = HcloudFunctions.getStorageBoxes(GetStorageBoxesArgs.builder()\n            .build());\n\n        final var byLabelSelector = HcloudFunctions.getStorageBoxes(GetStorageBoxesArgs.builder()\n            .withSelector(\"env=production\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  all:\n    fn::invoke:\n      function: hcloud:getStorageBoxes\n      arguments: {}\n  byLabelSelector:\n    fn::invoke:\n      function: hcloud:getStorageBoxes\n      arguments:\n        withSelector: env=production\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getStorageBoxes.\n","properties":{"withSelector":{"type":"string","description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getStorageBoxes.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"storageBoxes":{"items":{"$ref":"#/types/hcloud:index/getStorageBoxesStorageBox:getStorageBoxesStorageBox"},"type":"array"},"withSelector":{"description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n","type":"string"}},"required":["storageBoxes","id"],"type":"object"}},"hcloud:index/getVolume:getVolume":{"description":"Provides details about a Hetzner Cloud volume.\nThis resource is useful if you want to use a non-terraform managed volume.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst volume1 = hcloud.getVolume({\n    id: 1234,\n});\nconst volume2 = hcloud.getVolume({\n    name: \"my-volume\",\n});\nconst volume3 = hcloud.getVolume({\n    withSelector: \"key=value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nvolume1 = hcloud.get_volume(id=1234)\nvolume2 = hcloud.get_volume(name=\"my-volume\")\nvolume3 = hcloud.get_volume(with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var volume1 = HCloud.GetVolume.Invoke(new()\n    {\n        Id = 1234,\n    });\n\n    var volume2 = HCloud.GetVolume.Invoke(new()\n    {\n        Name = \"my-volume\",\n    });\n\n    var volume3 = HCloud.GetVolume.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.LookupVolume(ctx, \u0026hcloud.LookupVolumeArgs{\n\t\t\tId: pulumi.IntRef(1234),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupVolume(ctx, \u0026hcloud.LookupVolumeArgs{\n\t\t\tName: pulumi.StringRef(\"my-volume\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupVolume(ctx, \u0026hcloud.LookupVolumeArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetVolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var volume1 = HcloudFunctions.getVolume(GetVolumeArgs.builder()\n            .id(1234)\n            .build());\n\n        final var volume2 = HcloudFunctions.getVolume(GetVolumeArgs.builder()\n            .name(\"my-volume\")\n            .build());\n\n        final var volume3 = HcloudFunctions.getVolume(GetVolumeArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  volume1:\n    fn::invoke:\n      function: hcloud:getVolume\n      arguments:\n        id: '1234'\n  volume2:\n    fn::invoke:\n      function: hcloud:getVolume\n      arguments:\n        name: my-volume\n  volume3:\n    fn::invoke:\n      function: hcloud:getVolume\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVolume.\n","properties":{"id":{"type":"integer","description":"ID of the volume.\n"},"location":{"type":"string","description":"(string) The location name. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Name of the volume.\n"},"selector":{"type":"string","deprecationMessage":"Please use the\u003cspan pulumi-lang-nodejs=\" withSelector \" pulumi-lang-dotnet=\" WithSelector \" pulumi-lang-go=\" withSelector \" pulumi-lang-python=\" with_selector \" pulumi-lang-yaml=\" withSelector \" pulumi-lang-java=\" withSelector \"\u003e with_selector \u003c/span\u003eproperty instead."},"serverId":{"type":"integer","description":"(Optional, int) Server ID the volume is attached to\n"},"withSelector":{"type":"string","description":"Label Selector. For more information about possible values, visit the [Hetzner Cloud Documentation](https://docs.hetzner.cloud/reference/cloud#label-selector).\n"},"withStatuses":{"type":"array","items":{"type":"string"},"description":"List only volumes with the specified status, could contain \u003cspan pulumi-lang-nodejs=\"`creating`\" pulumi-lang-dotnet=\"`Creating`\" pulumi-lang-go=\"`creating`\" pulumi-lang-python=\"`creating`\" pulumi-lang-yaml=\"`creating`\" pulumi-lang-java=\"`creating`\"\u003e`creating`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`available`\" pulumi-lang-dotnet=\"`Available`\" pulumi-lang-go=\"`available`\" pulumi-lang-python=\"`available`\" pulumi-lang-yaml=\"`available`\" pulumi-lang-java=\"`available`\"\u003e`available`\u003c/span\u003e.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getVolume.\n","properties":{"deleteProtection":{"description":"(bool) Whether delete protection is enabled.\n","type":"boolean"},"id":{"description":"(int) Unique ID of the volume.\n","type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"(map) User-defined labels (key-value pairs).\n","type":"object"},"linuxDevice":{"description":"(string) Device path on the file system for the Volume.\n","type":"string"},"location":{"description":"(string) The location name. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.\n","type":"string"},"name":{"description":"(string) Name of the volume.\n","type":"string"},"selector":{"deprecationMessage":"Please use the\u003cspan pulumi-lang-nodejs=\" withSelector \" pulumi-lang-dotnet=\" WithSelector \" pulumi-lang-go=\" withSelector \" pulumi-lang-python=\" with_selector \" pulumi-lang-yaml=\" withSelector \" pulumi-lang-java=\" withSelector \"\u003e with_selector \u003c/span\u003eproperty instead.","type":"string"},"serverId":{"description":"(Optional, int) Server ID the volume is attached to\n","type":"integer"},"size":{"description":"(int) Size of the volume.\n","type":"integer"},"withSelector":{"type":"string"},"withStatuses":{"items":{"type":"string"},"type":"array"}},"required":["deleteProtection","id","labels","linuxDevice","name","size"],"type":"object"}},"hcloud:index/getVolumes:getVolumes":{"description":"Provides details about multiple Hetzner Cloud Volumes.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst volume_ = hcloud.getVolumes({});\nconst volume3 = hcloud.getVolumes({\n    withSelector: \"key=value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nvolume_ = hcloud.get_volumes()\nvolume3 = hcloud.get_volumes(with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var volume_ = HCloud.GetVolumes.Invoke();\n\n    var volume3 = HCloud.GetVolumes.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetVolumes(ctx, \u0026hcloud.GetVolumesArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetVolumes(ctx, \u0026hcloud.GetVolumesArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetVolumesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var volume_ = HcloudFunctions.getVolumes(GetVolumesArgs.builder()\n            .build());\n\n        final var volume3 = HcloudFunctions.getVolumes(GetVolumesArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  volume_:\n    fn::invoke:\n      function: hcloud:getVolumes\n      arguments: {}\n  volume3:\n    fn::invoke:\n      function: hcloud:getVolumes\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVolumes.\n","properties":{"withSelector":{"type":"string","description":"[Label selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"},"withStatuses":{"type":"array","items":{"type":"string"},"description":"List only volumes with the specified status, could contain \u003cspan pulumi-lang-nodejs=\"`creating`\" pulumi-lang-dotnet=\"`Creating`\" pulumi-lang-go=\"`creating`\" pulumi-lang-python=\"`creating`\" pulumi-lang-yaml=\"`creating`\" pulumi-lang-java=\"`creating`\"\u003e`creating`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`available`\" pulumi-lang-dotnet=\"`Available`\" pulumi-lang-go=\"`available`\" pulumi-lang-python=\"`available`\" pulumi-lang-yaml=\"`available`\" pulumi-lang-java=\"`available`\"\u003e`available`\u003c/span\u003e.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getVolumes.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"volumes":{"description":"(list) List of all matching volumes. See `data.hcloud_volume` for schema.\n","items":{"$ref":"#/types/hcloud:index/getVolumesVolume:getVolumesVolume"},"type":"array"},"withSelector":{"type":"string"},"withStatuses":{"items":{"type":"string"},"type":"array"}},"required":["volumes","id"],"type":"object"}},"hcloud:index/getZone:getZone":{"description":"Provides details about a Hetzner Cloud Zone.\n\nFor Internationalized domain names (IDN), see the `provider::hcloud::idna` function.\n\nSee the [Zones API documentation](https://docs.hetzner.cloud/reference/cloud#zones) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst byId = hcloud.getZone({\n    id: 1234,\n});\nconst byName = hcloud.getZone({\n    name: \"example.com\",\n});\nconst byLabel = hcloud.getZone({\n    withSelector: \"key=value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nby_id = hcloud.get_zone(id=1234)\nby_name = hcloud.get_zone(name=\"example.com\")\nby_label = hcloud.get_zone(with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var byId = HCloud.GetZone.Invoke(new()\n    {\n        Id = 1234,\n    });\n\n    var byName = HCloud.GetZone.Invoke(new()\n    {\n        Name = \"example.com\",\n    });\n\n    var byLabel = HCloud.GetZone.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.LookupZone(ctx, \u0026hcloud.LookupZoneArgs{\n\t\t\tId: pulumi.IntRef(1234),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupZone(ctx, \u0026hcloud.LookupZoneArgs{\n\t\t\tName: pulumi.StringRef(\"example.com\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupZone(ctx, \u0026hcloud.LookupZoneArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetZoneArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var byId = HcloudFunctions.getZone(GetZoneArgs.builder()\n            .id(1234)\n            .build());\n\n        final var byName = HcloudFunctions.getZone(GetZoneArgs.builder()\n            .name(\"example.com\")\n            .build());\n\n        final var byLabel = HcloudFunctions.getZone(GetZoneArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  byId:\n    fn::invoke:\n      function: hcloud:getZone\n      arguments:\n        id: 1234\n  byName:\n    fn::invoke:\n      function: hcloud:getZone\n      arguments:\n        name: example.com\n  byLabel:\n    fn::invoke:\n      function: hcloud:getZone\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getZone.\n","properties":{"id":{"type":"integer","description":"ID of the Zone.\n"},"name":{"type":"string","description":"Name of the Zone.\n"},"withSelector":{"type":"string","description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector).\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getZone.\n","properties":{"authoritativeNameservers":{"$ref":"#/types/hcloud:index/getZoneAuthoritativeNameservers:getZoneAuthoritativeNameservers","description":"Authoritative nameservers of the Zone.\n"},"deleteProtection":{"description":"Whether delete protection is enabled.\n","type":"boolean"},"id":{"description":"ID of the Zone.\n","type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n","type":"object"},"mode":{"description":"Mode of the Zone.\n","type":"string"},"name":{"description":"Name of the Zone.\n","type":"string"},"primaryNameservers":{"description":"Primary nameservers of the Zone.\n","items":{"$ref":"#/types/hcloud:index/getZonePrimaryNameserver:getZonePrimaryNameserver"},"type":"array"},"registrar":{"description":"Registrar of the Zone.\n","type":"string"},"ttl":{"description":"Default Time To Live (TTL) of the Zone.\n","type":"integer"},"withSelector":{"description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector).\n","type":"string"}},"required":["authoritativeNameservers","deleteProtection","labels","mode","primaryNameservers","registrar","ttl"],"type":"object"}},"hcloud:index/getZoneRrset:getZoneRrset":{"description":"Provides details about a Hetzner Cloud Zone Resource Record Set (RRSet).\n\nSee the [Zone RRSets API documentation](https://docs.hetzner.cloud/reference/cloud#zone-rrsets) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst example = hcloud.getZone({\n    name: \"example.com\",\n});\nconst byId = example.then(example =\u003e hcloud.getZoneRrset({\n    zone: example.name,\n    id: \"www/A\",\n}));\nconst byNameAndType = example.then(example =\u003e hcloud.getZoneRrset({\n    zone: example.name,\n    name: \"www\",\n    type: \"A\",\n}));\nconst byLabel = example.then(example =\u003e hcloud.getZoneRrset({\n    zone: example.name,\n    withSelector: \"key=value\",\n}));\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nexample = hcloud.get_zone(name=\"example.com\")\nby_id = hcloud.get_zone_rrset(zone=example.name,\n    id=\"www/A\")\nby_name_and_type = hcloud.get_zone_rrset(zone=example.name,\n    name=\"www\",\n    type=\"A\")\nby_label = hcloud.get_zone_rrset(zone=example.name,\n    with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = HCloud.GetZone.Invoke(new()\n    {\n        Name = \"example.com\",\n    });\n\n    var byId = HCloud.GetZoneRrset.Invoke(new()\n    {\n        Zone = example.Apply(getZoneResult =\u003e getZoneResult.Name),\n        Id = \"www/A\",\n    });\n\n    var byNameAndType = HCloud.GetZoneRrset.Invoke(new()\n    {\n        Zone = example.Apply(getZoneResult =\u003e getZoneResult.Name),\n        Name = \"www\",\n        Type = \"A\",\n    });\n\n    var byLabel = HCloud.GetZoneRrset.Invoke(new()\n    {\n        Zone = example.Apply(getZoneResult =\u003e getZoneResult.Name),\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := hcloud.LookupZone(ctx, \u0026hcloud.LookupZoneArgs{\n\t\t\tName: pulumi.StringRef(\"example.com\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupZoneRrset(ctx, \u0026hcloud.LookupZoneRrsetArgs{\n\t\t\tZone: example.Name,\n\t\t\tId:   pulumi.StringRef(\"www/A\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupZoneRrset(ctx, \u0026hcloud.LookupZoneRrsetArgs{\n\t\t\tZone: example.Name,\n\t\t\tName: pulumi.StringRef(\"www\"),\n\t\t\tType: pulumi.StringRef(\"A\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.LookupZoneRrset(ctx, \u0026hcloud.LookupZoneRrsetArgs{\n\t\t\tZone:         example.Name,\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetZoneArgs;\nimport com.pulumi.hcloud.inputs.GetZoneRrsetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = HcloudFunctions.getZone(GetZoneArgs.builder()\n            .name(\"example.com\")\n            .build());\n\n        final var byId = HcloudFunctions.getZoneRrset(GetZoneRrsetArgs.builder()\n            .zone(example.name())\n            .id(\"www/A\")\n            .build());\n\n        final var byNameAndType = HcloudFunctions.getZoneRrset(GetZoneRrsetArgs.builder()\n            .zone(example.name())\n            .name(\"www\")\n            .type(\"A\")\n            .build());\n\n        final var byLabel = HcloudFunctions.getZoneRrset(GetZoneRrsetArgs.builder()\n            .zone(example.name())\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: hcloud:getZone\n      arguments:\n        name: example.com\n  byId:\n    fn::invoke:\n      function: hcloud:getZoneRrset\n      arguments:\n        zone: ${example.name}\n        id: www/A\n  byNameAndType:\n    fn::invoke:\n      function: hcloud:getZoneRrset\n      arguments:\n        zone: ${example.name}\n        name: www\n        type: A\n  byLabel:\n    fn::invoke:\n      function: hcloud:getZoneRrset\n      arguments:\n        zone: ${example.name}\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getZoneRrset.\n","properties":{"id":{"type":"string","description":"ID of the Zone RRSet.\n"},"name":{"type":"string","description":"Name of the Zone RRSet.\n"},"type":{"type":"string","description":"Type of the Zone RRSet.\n"},"withSelector":{"type":"string","description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector).\n"},"zone":{"type":"string","description":"ID or Name of the parent Zone.\n"}},"type":"object","required":["zone"]},"outputs":{"description":"A collection of values returned by getZoneRrset.\n","properties":{"changeProtection":{"description":"Whether change protection is enabled.\n","type":"boolean"},"id":{"description":"ID of the Zone RRSet.\n","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined [labels](https://docs.hetzner.cloud/reference/cloud#labels) (key-value pairs) for the resource.\n","type":"object"},"name":{"description":"Name of the Zone RRSet.\n","type":"string"},"records":{"description":"Records of the Zone RRSet.\n","items":{"$ref":"#/types/hcloud:index/getZoneRrsetRecord:getZoneRrsetRecord"},"type":"array"},"ttl":{"description":"Time To Live (TTL) of the Zone RRSet.\n","type":"integer"},"type":{"description":"Type of the Zone RRSet.\n","type":"string"},"withSelector":{"description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector).\n","type":"string"},"zone":{"description":"ID or Name of the parent Zone.\n","type":"string"}},"required":["changeProtection","labels","records","ttl","zone"],"type":"object"}},"hcloud:index/getZoneRrsets:getZoneRrsets":{"description":"Provides a list of Hetzner Cloud Zone Resource Record Set (RRSet).\n\nSee the [Zone RRSets API documentation](https://docs.hetzner.cloud/reference/cloud#zone-rrsets) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst example = hcloud.getZone({\n    name: \"example.com\",\n});\nconst all = example.then(example =\u003e hcloud.getZoneRrsets({\n    zone: example.name,\n}));\nconst byLabel = example.then(example =\u003e hcloud.getZoneRrsets({\n    zone: example.name,\n    withSelector: \"key=value\",\n}));\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nexample = hcloud.get_zone(name=\"example.com\")\nall = hcloud.get_zone_rrsets(zone=example.name)\nby_label = hcloud.get_zone_rrsets(zone=example.name,\n    with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = HCloud.GetZone.Invoke(new()\n    {\n        Name = \"example.com\",\n    });\n\n    var all = HCloud.GetZoneRrsets.Invoke(new()\n    {\n        Zone = example.Apply(getZoneResult =\u003e getZoneResult.Name),\n    });\n\n    var byLabel = HCloud.GetZoneRrsets.Invoke(new()\n    {\n        Zone = example.Apply(getZoneResult =\u003e getZoneResult.Name),\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := hcloud.LookupZone(ctx, \u0026hcloud.LookupZoneArgs{\n\t\t\tName: pulumi.StringRef(\"example.com\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetZoneRrsets(ctx, \u0026hcloud.GetZoneRrsetsArgs{\n\t\t\tZone: example.Name,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetZoneRrsets(ctx, \u0026hcloud.GetZoneRrsetsArgs{\n\t\t\tZone:         example.Name,\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetZoneArgs;\nimport com.pulumi.hcloud.inputs.GetZoneRrsetsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = HcloudFunctions.getZone(GetZoneArgs.builder()\n            .name(\"example.com\")\n            .build());\n\n        final var all = HcloudFunctions.getZoneRrsets(GetZoneRrsetsArgs.builder()\n            .zone(example.name())\n            .build());\n\n        final var byLabel = HcloudFunctions.getZoneRrsets(GetZoneRrsetsArgs.builder()\n            .zone(example.name())\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: hcloud:getZone\n      arguments:\n        name: example.com\n  all:\n    fn::invoke:\n      function: hcloud:getZoneRrsets\n      arguments:\n        zone: ${example.name}\n  byLabel:\n    fn::invoke:\n      function: hcloud:getZoneRrsets\n      arguments:\n        zone: ${example.name}\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getZoneRrsets.\n","properties":{"withSelector":{"type":"string","description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"},"zone":{"type":"string","description":"ID or Name of the parent Zone.\n"}},"type":"object","required":["zone"]},"outputs":{"description":"A collection of values returned by getZoneRrsets.\n","properties":{"id":{"description":"The ID of this resource.\n","type":"string"},"rrsets":{"items":{"$ref":"#/types/hcloud:index/getZoneRrsetsRrset:getZoneRrsetsRrset"},"type":"array"},"withSelector":{"description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n","type":"string"},"zone":{"description":"ID or Name of the parent Zone.\n","type":"string"}},"required":["id","rrsets","zone"],"type":"object"}},"hcloud:index/getZones:getZones":{"description":"Provides a list of Hetzner Cloud Zone.\n\nSee the [Zones API documentation](https://docs.hetzner.cloud/reference/cloud#zones) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as hcloud from \"@pulumi/hcloud\";\n\nconst all = hcloud.getZones({});\nconst byLabel = hcloud.getZones({\n    withSelector: \"key=value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_hcloud as hcloud\n\nall = hcloud.get_zones()\nby_label = hcloud.get_zones(with_selector=\"key=value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing HCloud = Pulumi.HCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var all = HCloud.GetZones.Invoke();\n\n    var byLabel = HCloud.GetZones.Invoke(new()\n    {\n        WithSelector = \"key=value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-hcloud/sdk/go/hcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hcloud.GetZones(ctx, \u0026hcloud.GetZonesArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hcloud.GetZones(ctx, \u0026hcloud.GetZonesArgs{\n\t\t\tWithSelector: pulumi.StringRef(\"key=value\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.hcloud.HcloudFunctions;\nimport com.pulumi.hcloud.inputs.GetZonesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var all = HcloudFunctions.getZones(GetZonesArgs.builder()\n            .build());\n\n        final var byLabel = HcloudFunctions.getZones(GetZonesArgs.builder()\n            .withSelector(\"key=value\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  all:\n    fn::invoke:\n      function: hcloud:getZones\n      arguments: {}\n  byLabel:\n    fn::invoke:\n      function: hcloud:getZones\n      arguments:\n        withSelector: key=value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getZones.\n","properties":{"withSelector":{"type":"string","description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getZones.\n","properties":{"id":{"description":"The ID of this resource.\n","type":"string"},"withSelector":{"description":"Filter results using a [Label Selector](https://docs.hetzner.cloud/reference/cloud#label-selector)\n","type":"string"},"zones":{"items":{"$ref":"#/types/hcloud:index/getZonesZone:getZonesZone"},"type":"array"}},"required":["id","zones"],"type":"object"}},"pulumi:providers:hcloud/terraformConfig":{"description":"This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.","inputs":{"properties":{"__self__":{"type":"ref","$ref":"#/provider"}},"type":"pulumi:providers:hcloud/terraformConfig","required":["__self__"]},"outputs":{"properties":{"result":{"additionalProperties":{"$ref":"pulumi.json#/Any"},"type":"object"}},"required":["result"],"type":"object"}}}}