NAME
WWW::Hetzner::Cloud::API::Zones - Hetzner Cloud DNS Zones API
VERSION
version 0.002
SYNOPSIS
use WWW::Hetzner::Cloud;
my $cloud = WWW::Hetzner::Cloud->new(token => $ENV{HETZNER_API_TOKEN});
# List all zones
my $zones = $cloud->zones->list;
# Create a zone
my $zone = $cloud->zones->create(
name => 'example.com',
ttl => 3600,
labels => { env => 'prod' },
);
# Zone is a WWW::Hetzner::Cloud::Zone object
print $zone->id, "\n";
print $zone->name, "\n";
# Access RRSets directly from zone object
my $records = $zone->rrsets->list;
$zone->rrsets->add_a('www', '1.2.3.4');
# Update zone
$zone->name('newdomain.com');
$zone->update;
# Delete zone
$zone->delete;
DESCRIPTION
This module provides the API for managing Hetzner Cloud DNS zones. All methods return WWW::Hetzner::Cloud::Zone objects.
list
my $zones = $cloud->zones->list;
my $zones = $cloud->zones->list(name => 'example.com');
my $zones = $cloud->zones->list(label_selector => 'env=prod');
Returns an arrayref of WWW::Hetzner::Cloud::Zone objects. Optional parameters: name, label_selector, sort, page, per_page.
list_by_label
my $zones = $cloud->zones->list_by_label('env=production');
Convenience method to list zones by label selector.
get
my $zone = $cloud->zones->get($id);
Returns a WWW::Hetzner::Cloud::Zone object.
create
my $zone = $cloud->zones->create(
name => 'example.com', # required
ttl => 3600, # optional (default TTL)
labels => { env => 'prod' }, # optional
);
Creates a new DNS zone. Returns a WWW::Hetzner::Cloud::Zone object.
update
$cloud->zones->update($id, name => 'newdomain.com', labels => { env => 'dev' });
Updates zone name or labels. Returns a WWW::Hetzner::Cloud::Zone object.
delete
$cloud->zones->delete($id);
Deletes a zone and all its RRSets.
export
my $zonefile = $cloud->zones->export($id);
Exports the zone as a standard zone file format.
rrsets
my $rrsets = $cloud->zones->rrsets($zone_id);
my $records = $rrsets->list;
Returns a WWW::Hetzner::Cloud::API::RRSets object for managing records in this zone.
SUPPORT
Issues
Please report bugs and feature requests on GitHub at https://github.com/Getty/p5-www-hetzner/issues.
IRC
Join #kubernetes on irc.perl.org or message Getty directly.
CONTRIBUTING
Contributions are welcome! Please fork the repository and submit a pull request.
AUTHOR
Torsten Raudssus <torsten@raudssus.de>
COPYRIGHT AND LICENSE
This software is copyright (c) 2026 by Torsten Raudssus.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.