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.