Skip to main content

@swamp/hetzner-cloud

v2026.04.23.4

Hetzner Cloud infrastructure models

Repository

https://github.com/systeminit/swamp-extensions

Labels

hetznercloudinfrastructure

Contents

Quality score

Verified by Swamp

How well-documented and verifiable this extension is.

100%

Grade A

  • Has README or module doc2/2earned
  • README has a code example1/1earned
  • README is substantive1/1earned
  • Most symbols documented1/1earned
  • No slow types1/1earned
  • Has description1/1earned
  • At least one platform tag (or universal)1/1earned
  • Two or more platform tags (or universal)1/1earned
  • License declared1/1earned
  • Verified public repository2/2earned

Install

$ swamp extension pull @swamp/hetzner-cloud

@swamp/hetzner-cloud/certificatesv2026.04.23.4certificates.ts

Global Arguments

ArgumentTypeDescription
namestringName of the Certificate.
labels?recordUser-defined labels (`key/value` pairs) for the Resource.\nFor more information, see "[Labels](#description/labels)".\n
type?enumChoose between uploading a Certificate in PEM format or requesting a managed *Let's Encrypt* Certificate.
certificate?stringCertificate and chain in PEM format, in order so that each record directly certifies the one preceding. Required for type `uploaded` Certificates.
private_key?stringCertificate key in PEM format. Required for type `uploaded` Certificates.
domain_names?arrayDomains and subdomains that should be contained in the Certificate issued by *Let's Encrypt*. Required for type `managed` Certificates.
createCreate a certificate
getGet a certificate
ArgumentTypeDescription
idnumberThe ID of the certificate
updateUpdate certificate attributes
deleteDelete the certificate
ArgumentTypeDescription
idnumberThe ID of the certificate
syncSync certificate state from Hetzner

Resources

state(infinite)— Certificate resource state
@swamp/hetzner-cloud/firewallsv2026.04.23.4firewalls.ts

Global Arguments

ArgumentTypeDescription
namestringName of the [Firewall](#tag/firewalls).\n\nLimited to a maximum of 128 characters.\n\nMust be unique per Project.\n
labels?recordUser-defined labels (`key/value` pairs) for the Resource.\nFor more information, see "[Labels](#description/labels)".\n
rules?arrayArray of rules.\n\nRules are limited to 50 entries per [Firewall](#tag/firewalls) and [500 effective rules](https://docs.hetzner.com/cloud/firewalls/overview#limits).\n
apply_to?arrayResources to apply the [Firewall](#tag/firewalls) to.\n\nResources added directly are taking precedence over those added via a [Label Selector](#description/label-selector).\n
createCreate a firewall
getGet a firewall
ArgumentTypeDescription
idnumberThe ID of the firewall
updateUpdate firewall attributes
deleteDelete the firewall
ArgumentTypeDescription
idnumberThe ID of the firewall
syncSync firewall state from Hetzner

Resources

state(infinite)— Firewall resource state
@swamp/hetzner-cloud/floating-ipsv2026.04.23.4floating_ips.ts

Global Arguments

ArgumentTypeDescription
description?stringDescription of the Resource.
name?stringName of the Resource. Must be unique per Project.
labels?recordUser-defined labels (`key/value` pairs) for the Resource.\nFor more information, see "[Labels](#description/labels)".\n
typeenumThe Floating IP type.
server?number[Server](#tag/servers) the [Floating IP](#tag/floating-ips) is assigned to.\n\n`null` if not assigned.\n
home_location?stringHome [Location](#tag/locations) for the [Floating IP](#tag/floating-ips).\n\nEither the ID or the name of the [Location](#tag/locations).\n\nOnly optional if no [Server](#tag/servers) is provided. Routing is optimized for this [Locations](#tag/locations).\n
createCreate a floating ip
getGet a floating ip
ArgumentTypeDescription
idnumberThe ID of the floating ip
updateUpdate floating ip attributes
deleteDelete the floating ip
ArgumentTypeDescription
idnumberThe ID of the floating ip
syncSync floating ip state from Hetzner

Resources

state(infinite)— Floating ip resource state
@swamp/hetzner-cloud/load-balancersv2026.04.23.4load_balancers.ts

Global Arguments

ArgumentTypeDescription
namestringName of the Load Balancer.
labels?recordUser-defined labels (`key/value` pairs) for the Resource.\nFor more information, see "[Labels](#description/labels)".\n
load_balancer_typestringID or name of the Load Balancer type this Load Balancer should be created with.
algorithm?objectAlgorithm of the Load Balancer.
services?arrayArray of services.
targets?arrayArray of targets.
public_interface?booleanEnable or disable the public interface of the Load Balancer.
network?numberID of the network the Load Balancer should be attached to on creation.
network_zone?stringName of network zone.
location?stringID or name of Location to create Load Balancer in.
createCreate a load balancer
getGet a load balancer
ArgumentTypeDescription
idnumberThe ID of the load balancer
updateUpdate load balancer attributes
deleteDelete the load balancer
ArgumentTypeDescription
idnumberThe ID of the load balancer
syncSync load balancer state from Hetzner

Resources

state(infinite)— Load balancer resource state
@swamp/hetzner-cloud/networksv2026.04.23.4networks.ts

Global Arguments

ArgumentTypeDescription
namestringName of the [Network](#tag/networks).
labels?recordUser-defined labels (`key/value` pairs) for the Resource.\nFor more information, see "[Labels](#description/labels)".\n
expose_routes_to_vswitch?booleanToggle to expose routes to the [Networks](#tag/networks) vSwitch.\n\nIndicates if the routes from this [Network](#tag/networks) should be exposed to the vSwitch in this [Network](#tag/networks). Only takes effect if a [vSwitch is setup](https://docs.hetzner.com/cloud/networks/connect-dedi-vswitch) in this [Network](#tag/networks).\n
ip_rangestringIP range of the [Network](#tag/networks).\n\nUses CIDR notation.\n\nMust span all included subnets. Must be one of the private IPv4 ranges of RFC1918.\n\nMinimum network size is /24. We highly recommend that you pick a larger [Network](#tag/networks) with a /16 netmask.\n
subnets?arrayArray of subnets to allocate.
routes?arrayArray of routes set in this [Network](#tag/networks).
createCreate a network
getGet a network
ArgumentTypeDescription
idnumberThe ID of the network
updateUpdate network attributes
deleteDelete the network
ArgumentTypeDescription
idnumberThe ID of the network
syncSync network state from Hetzner

Resources

state(infinite)— Network resource state
@swamp/hetzner-cloud/placement-groupsv2026.04.23.4placement_groups.ts

Global Arguments

ArgumentTypeDescription
namestringName of the Placement Group.
labels?recordUser-defined labels (`key/value` pairs) for the Resource.\nFor more information, see "[Labels](#description/labels)".\n
typeenumDefine the Placement Group Type.
createCreate a placement group
getGet a placement group
ArgumentTypeDescription
idnumberThe ID of the placement group
updateUpdate placement group attributes
deleteDelete the placement group
ArgumentTypeDescription
idnumberThe ID of the placement group
syncSync placement group state from Hetzner

Resources

state(infinite)— Placement group resource state
@swamp/hetzner-cloud/primary-ipsv2026.04.23.4primary_ips.ts

Global Arguments

ArgumentTypeDescription
namestringName of the Resource. Must be unique per Project.
labels?recordUser-defined labels (`key/value` pairs) for the Resource.\nFor more information, see "[Labels](#description/labels)".\n
auto_delete?booleanAuto deletion state.\n\nIf enabled the [Primary IP](#tag/primary-ips) will be deleted once the assigned resource gets deleted.\n
typeenum[Primary IP](#tag/primary-ips) type.
datacenter?string**Deprecated**: This property is deprecated and will be removed after 1 July 2026.\nUse the `location` key instead.\n\n[Data Center](#tag/data-centers) ID or name.\n\nThe [Primary IP](#tag/primary-ips) will be bound to this [Data Center](#tag/data-centers).\nOmit if `assignee_id`/`assignee_type` or `location` are provided.\n
location?string[Location](#tag/locations) ID or name the [Primary IP](#tag/primary-ips) will be bound to.\n\nOmit if `assignee_id`/`assignee_type` or `datacenter` are provided.\n
assignee_typeenumType of resource the [Primary IP](#tag/primary-ips) can get assigned to.\n\nCurrently [Primary IPs](#tag/primary-ips) can only be assigned to [Servers](#tag/servers),\ntherefore this field must be set to `server`.\n
assignee_id?numberID of resource to assign the [Primary IP](#tag/primary-ips) to.\n\nOmitted if the [Primary IP](#tag/primary-ips) should not get assigned.\n
createCreate a primary ip
getGet a primary ip
ArgumentTypeDescription
idnumberThe ID of the primary ip
updateUpdate primary ip attributes
deleteDelete the primary ip
ArgumentTypeDescription
idnumberThe ID of the primary ip
syncSync primary ip state from Hetzner

Resources

state(infinite)— Primary ip resource state
@swamp/hetzner-cloud/serversv2026.04.23.4servers.ts

Global Arguments

ArgumentTypeDescription
namestringName of the Server to create (must be unique per Project and a valid hostname as per RFC 1123).
labels?recordUser-defined labels (`key/value` pairs) for the Resource.\nFor more information, see "[Labels](#description/labels)".\n
location?stringID or name of the Location to create the Server in (must not be used together with `datacenter`).
datacenter?string**Deprecated**: This property is deprecated and will be removed after the 1 July 2026.\nUse the `location` property instead.\n\nID or name of the Data Center to create Server in (must not be used together with `location`).\n
server_typestringID or name of the Server type this Server should be created with.
start_after_create?booleanThis automatically triggers a [Power on a Server-Server Action](#tag/server-actions/poweron_server) after the creation is finished and is returned in the `next_actions` response object.
imagestringID or name of the Image the Server is created from.
placement_group?numberID of the Placement Group the Server should be in.
ssh_keys?arraySSH key IDs (`integer`) or names (`string`) which should be injected into the Server at creation time.
volumes?arrayVolume IDs which should be attached to the Server at the creation time. Volumes must be in the same Location.
networks?arrayNetwork IDs which should be attached to the Server private network interface at the creation time.
firewalls?arrayFirewalls which should be applied on the Server's public network interface at creation time.
user_data?stringCloud-Init user data to use during Server creation. This field is limited to 32KiB.
automount?booleanAuto-mount Volumes after attach.
public_net?objectPublic Network options.
createCreate a server
getGet a server
ArgumentTypeDescription
idnumberThe ID of the server
updateUpdate server attributes
deleteDelete the server
ArgumentTypeDescription
idnumberThe ID of the server
syncSync server state from Hetzner

Resources

state(infinite)— Server resource state
@swamp/hetzner-cloud/ssh-keysv2026.04.23.4ssh_keys.ts

Global Arguments

ArgumentTypeDescription
namestringName of the SSH key.
labels?recordUser-defined labels (`key/value` pairs) for the Resource.\nFor more information, see "[Labels](#description/labels)".\n
public_keystringPublic key.
createCreate a ssh key
getGet a ssh key
ArgumentTypeDescription
idnumberThe ID of the ssh key
updateUpdate ssh key attributes
deleteDelete the ssh key
ArgumentTypeDescription
idnumberThe ID of the ssh key
syncSync ssh key state from Hetzner

Resources

state(infinite)— Ssh key resource state
@swamp/hetzner-cloud/volumesv2026.04.23.4volumes.ts

Global Arguments

ArgumentTypeDescription
namestringName of the volume.
labels?recordUser-defined labels (`key/value` pairs) for the Resource.\nFor more information, see "[Labels](#description/labels)".\n
sizenumberSize of the Volume in GB.
automount?booleanAuto-mount Volume after attach. `server` must be provided.
format?stringFormat Volume after creation. One of: `xfs`, `ext4`.
location?stringLocation to create the Volume in (can be omitted if Server is specified).
server?numberServer to which to attach the Volume once it's created (Volume will be created in the same Location as the server).
createCreate a volume
getGet a volume
ArgumentTypeDescription
idnumberThe ID of the volume
updateUpdate volume attributes
deleteDelete the volume
ArgumentTypeDescription
idnumberThe ID of the volume
syncSync volume state from Hetzner

Resources

state(infinite)— Volume resource state
@swamp/hetzner-cloud/zonesv2026.04.23.4zones.ts

Global Arguments

ArgumentTypeDescription
labels?recordUser-defined labels (`key/value` pairs) for the Resource.\nFor more information, see "[Labels](#description/labels)".\n
namestringName of the [Zone](#tag/zones).\n\nAll names with [well-known public suffixes](https://publicsuffix.org/) (e.g. `.de`,\n`.com`, `.co.uk`) are supported. Subdomains are not supported.\n\nThe name must be in lower case and must not end with a dot.\n[Internationalized domain\nnames](https://en.wikipedia.org/wiki/Internationalized_domain_name) must be\ntranscribed to [Punycode](https://wikipedia.org/wiki/Punycode) representation with\nACE prefix, e.g. `xn--mnchen-3ya.de` (`münchen.de`).\n
modeenumMode of the [Zone](#tag/zones).\n\nFor more information, see [Zone Modes](#tag/zones/zone-modes).\n
ttl?numberDefault Time To Live (TTL) of the [Zone](#tag/zones).\n\nMust be in between 60s and 2147483647s.\n\nThis TTL is used for [RRSets](#tag/zone-rrsets) that do not explicitly define a TTL.\n
primary_nameservers?arrayPrimary nameservers of the [Zone](#tag/zones).\n\nOnly applicable for [Zones](#tag/zones) in secondary mode.\nIgnored for [Zones](#tag/zones) in primary mode.\n
rrsets?array[RRSets](#tag/zone-rrsets) to be added to the [Zone](#tag/zones).\n\nOnly applicable for [Zones](#tag/zones) in primary mode.\nIgnored for [Zones](#tag/zones) in secondary mode.\n
zonefile?stringZone file to import.\n\nOnly applicable for [Zones](#tag/zones) in primary mode.\nIgnored for [Zones](#tag/zones) in secondary mode.\n\nIf provided, `rrsets` must be empty.\n\nSee [Zone file import](#tag/zones/zone-file-import) for more details.\n
createCreate a zone
getGet a zone
ArgumentTypeDescription
idnumberThe ID of the zone
updateUpdate zone attributes
deleteDelete the zone
ArgumentTypeDescription
idnumberThe ID of the zone
syncSync zone state from Hetzner

Resources

state(infinite)— Zone resource state