Changes for version 0.101 - 2026-09-22
- New: WWW::Hetzner::Storage, a third API host (api.hetzner.com) for Storage Boxes
- $storage->storage_boxes, ->storage_box_types and ->actions; Storage Box objects expose per-box ->subaccounts, ->snapshots and ->actions
- CLI: hcloud.pl storage-box, 33 subcommands (create/update/delete, access settings, protection, snapshot plan, snapshots, subaccounts)
- New: list_all collects all remaining pages on paginated controllers (WWW::Hetzner::Role::Pagination); list keeps its single-page contract. CLI lists and local name lookups use complete results; pagination failures are reported explicitly
- New read-only Cloud resources: ISOs, Load Balancer Types and Pricing
- $cloud->isos (list/get/get_by_name), ->load_balancer_types, and ->pricing (a singleton, so get only)
- New entities WWW::Hetzner::Cloud::ISO, ::LoadBalancerType, ::Pricing
- CLI: hcloud.pl iso, load-balancer-type and pricing
- New Robot resources: boot, rdns and failover
- $robot->boot (rescue system, Linux install, VNC, Windows), with enable_*/disable_* methods; returns raw hashrefs, no entity
- $robot->rdns and $robot->failover, listable per-IP resources with entities WWW::Hetzner::Robot::RDNS and ::Failover
- CLI: hrobot.pl boot (rescue/linux/vnc/windows), rdns, failover
- BREAKING: mutating Cloud methods now return a WWW::Hetzner::Action object instead of a raw decoded-JSON action hashref (66 methods across the API controllers and their entity mirrors)
- Action has status predicates (is_running/is_success/is_error), error_message, refresh and a blocking wait(interval => 1, timeout => 120)
- $cloud->actions looks up any action by id, independent of the resource that created it
- Created entities carry the creating action as ->action plus any ->next_actions (WWW::Hetzner::Role::HasAction); Firewall create returns plural ->actions
- Server enable_rescue/rebuild/reset_password/request_console preserve their sidecar data (root_password, password, wss_url) on the Action via ->result and typed readers
- Action and its roles live directly under WWW::Hetzner, so the other Hetzner APIs can reuse them
- CLI: mutating hcloud.pl commands wait for a terminal action state by default; --no-wait opts out (new injectable Role::HTTP sleeper)
- BREAKING: server, zone and rrset delete now return an Action; the other ten DELETE endpoints answer 204 and are unchanged
- CLI: hcloud.pl server/zone/record delete wait for the deletion action by default; --no-wait opts out
- Fix: Robot request bodies use application/x-www-form-urlencoded, incl. repeated array fields; Cloud and Storage keep JSON encoding
- Fix: URI-encode query names and values (incl. Unicode); arrayrefs become repeated query parameters
- Fix: CLI table output reads entity accessors, restoring server type, datacenter and location values; firewall add-rule preserves existing rules
- Fix: --output json no longer dies on the server, image, datacenter, sshkey, location, servertype, zone and record list commands
- Tests: exercise every Cloud and Robot CLI command through execute with MockIO, including action waits and non-action deletes
Documentation
Hetzner Cloud CLI (Perl implementation)
Hetzner Robot CLI (Perl implementation)
Modules
Perl client for Hetzner APIs (Cloud, Storage, Robot)
Hetzner API action object
Hetzner Cloud CLI
Hetzner Cloud Certificate commands
Create a managed certificate
Delete a certificate
Describe a certificate
List certificates
Datacenter commands
Hetzner Cloud Firewall commands
Add a rule to a firewall
Apply a firewall to a server
Create a firewall
Delete a firewall
Describe a firewall
List firewalls
Remove a firewall from a server
Hetzner Cloud Floating IP commands
Assign a floating IP to a server
Create a floating IP
Delete a floating IP
Describe a floating IP
List floating IPs
Unassign a floating IP from its server
Image commands
ISO commands
Hetzner Cloud Load Balancer commands
Add a service to a load balancer
Add a target to a load balancer
Create a load balancer
Delete a load balancer
Describe a load balancer
List load balancers
Load balancer type commands
Location commands
Hetzner Cloud Network commands
Add a route to a network
Add a subnet to a network
Create a network
Delete a network
Describe a network
List networks
Hetzner Cloud Placement Group commands
Create a placement group
Delete a placement group
Describe a placement group
List placement groups
Pricing commands
Hetzner Cloud Primary IP commands
Assign a primary IP to a server
Create a primary IP
Delete a primary IP
Describe a primary IP
List primary IPs
Unassign a primary IP from its server
DNS Record commands
Create a DNS record
Delete a DNS record
Describe a DNS record
List DNS records
Server commands
Create a server
Delete a server
Show server details
List servers
Power off a server (hard)
Power on a server
Reboot a server (soft)
Rebuild a server with a new image
Enable or disable rescue mode
Reset a server (hard)
Shutdown a server (graceful)
Server type commands
SSH key commands
Create an SSH key
Delete an SSH key
Describe an SSH key
List SSH keys
Storage Box commands
Add a label to a Storage Box
Change a Storage Box type
Create a Storage Box
Delete a Storage Box
Describe a Storage Box
Disable Storage Box delete protection
Disable a Storage Box snapshot plan
Enable Storage Box delete protection
Enable a Storage Box snapshot plan
List Storage Box folders
List Storage Boxes
Remove a label from a Storage Box
Reset a Storage Box password
Roll a Storage Box back to a snapshot
Storage Box snapshot commands
Add a label to a Storage Box snapshot
Create a Storage Box snapshot
Delete a Storage Box snapshot
Describe a Storage Box snapshot
List snapshots of a Storage Box
Remove a label from a Storage Box snapshot
Update a Storage Box snapshot
Storage Box subaccount commands
Change a Storage Box subaccount home directory
Create a Storage Box subaccount
Delete a Storage Box subaccount
Describe a Storage Box subaccount
List subaccounts of a Storage Box
Reset a Storage Box subaccount password
Update a Storage Box subaccount
Update Storage Box subaccount access settings
Update a Storage Box
Update Storage Box access settings
Volume commands
Attach a volume to a server
Create a volume
Delete a volume
Describe a volume
Detach a volume from a server
List volumes
Resize a volume
DNS Zone commands
Create a DNS zone
Delete a DNS zone
Describe a DNS zone
List DNS zones
CLI role that waits for a returned Action by default
Perl client for Hetzner Cloud API
Hetzner Cloud Actions API
Hetzner Cloud Certificates API
Hetzner Cloud Datacenters API
Hetzner Cloud Firewalls API
Hetzner Cloud Floating IPs API
Hetzner Cloud ISOs API
Hetzner Cloud Images API
Hetzner Cloud Load Balancer Types API
Hetzner Cloud Load Balancers API
Hetzner Cloud Locations API
Hetzner Cloud Networks API
Hetzner Cloud Placement Groups API
Hetzner Cloud Pricing API
Hetzner Cloud Primary IPs API
Hetzner Cloud DNS RRSets (Records) API
Hetzner Cloud SSH Keys API
Hetzner Cloud Server Types API
Hetzner Cloud Servers API
Hetzner Cloud Volumes API
Hetzner Cloud DNS Zones API
Hetzner Cloud Certificate object
Hetzner Cloud Datacenter object
Hetzner Cloud Firewall object
Hetzner Cloud Floating IP object
Hetzner Cloud ISO object
Hetzner Cloud Image object
Hetzner Cloud Load Balancer object
Hetzner Cloud LoadBalancerType object
Hetzner Cloud Location object
Hetzner Cloud Network object
Hetzner Cloud Placement Group object
Hetzner Cloud Pricing object
Hetzner Cloud Primary IP object
Hetzner Cloud DNS RRSet object
Hetzner Cloud SSHKey object
Hetzner Cloud Server object
Hetzner Cloud ServerType object
Hetzner Cloud Volume object
Hetzner Cloud DNS Zone object
HTTP request object for Hetzner API
HTTP response object for Hetzner API
Synchronous HTTP backend using LWP::UserAgent
Perl client for Hetzner Robot API (Dedicated Servers)
Hetzner Robot Boot Configuration API
Hetzner Robot Failover IP API
Hetzner Robot IPs API
Hetzner Robot SSH Keys API
Hetzner Robot Reverse DNS API
Hetzner Robot Server Reset API
Hetzner Robot Servers API
Hetzner Robot Traffic API
Hetzner Robot CLI
Robot boot configuration commands
Linux installation boot configuration
Rescue system boot configuration
VNC installation boot configuration
Windows installation boot configuration
Robot failover IP commands
Robot SSH key commands
Robot reverse DNS commands
Reset a dedicated server
Robot server commands
Describe a dedicated server
List dedicated servers
Query traffic statistics
Send Wake-on-LAN to a server
Hetzner Robot failover IP entity
Hetzner Robot IP entity
Hetzner Robot SSH Key entity
Hetzner Robot reverse DNS entry entity
Hetzner Robot Server entity
HTTP client role for Hetzner API clients
Entity role exposing a creation action
Controller role wrapping raw hashes as Action objects
Interface role for pluggable HTTP backends
Controller helper for collecting paginated API lists
Perl client for Hetzner Storage Box API
Hetzner Storage Box Actions API
Hetzner Storage Box Snapshots API
Hetzner Storage Box Types API
Hetzner Storage Boxes API
Hetzner Storage Box Subaccounts API
Hetzner Storage Box Snapshot object
Hetzner Storage Box object
Hetzner Storage Box Type object
Hetzner Storage Box Subaccount object