NAME

WWW::Hetzner::Cloud::API::RRSets - Hetzner Cloud DNS RRSets (Records) API

VERSION

version 0.002

SYNOPSIS

use WWW::Hetzner::Cloud;

my $cloud = WWW::Hetzner::Cloud->new(token => $ENV{HETZNER_API_TOKEN});

# Get RRSets object for a zone
my $rrsets = $cloud->zones->rrsets($zone_id);

# Or from a Zone object
my $zone = $cloud->zones->get($zone_id);
my $rrsets = $zone->rrsets;

# List all records
my $records = $rrsets->list;
my $records = $rrsets->list(type => 'A');

# Get specific record
my $record = $rrsets->get('www', 'A');
printf "Record: %s -> %s\n", $record->name, $record->records->[0]{value};

# Create records
my $record = $rrsets->create(
    name    => 'www',
    type    => 'A',
    ttl     => 300,
    records => [{ value => '203.0.113.10' }],
);

# Convenience methods
$rrsets->add_a('www', '203.0.113.10', ttl => 300);
$rrsets->add_aaaa('www', '2001:db8::1');
$rrsets->add_cname('blog', 'www.example.com.');
$rrsets->add_mx('@', 'mail.example.com.', 10);
$rrsets->add_txt('@', 'v=spf1 include:_spf.example.com ~all');

# Update record
$rrsets->update('www', 'A', records => [{ value => '203.0.113.20' }]);

# Delete record
$rrsets->delete('www', 'A');

DESCRIPTION

This module provides access to DNS RRSets (Resource Record Sets) within a zone. RRSets are groups of DNS records with the same name and type. All methods return WWW::Hetzner::Cloud::RRSet objects.

list

my $records = $rrsets->list;
my $records = $rrsets->list(type => 'A', name => 'www');

Returns an arrayref of WWW::Hetzner::Cloud::RRSet objects. Optional parameters: name, type, sort, page, per_page.

get

my $record = $rrsets->get($name, $type);
my $record = $rrsets->get('www', 'A');

Returns a WWW::Hetzner::Cloud::RRSet object.

create

my $record = $rrsets->create(
    name    => 'www',           # required
    type    => 'A',             # required
    records => [{ value => '1.2.3.4' }],  # required
    ttl     => 300,             # optional
);

Creates a new RRSet. Returns a WWW::Hetzner::Cloud::RRSet object.

update

my $record = $rrsets->update('www', 'A',
    ttl     => 600,
    records => [{ value => '1.2.3.5' }],
);

Updates an existing RRSet. Returns a WWW::Hetzner::Cloud::RRSet object.

delete

$rrsets->delete('www', 'A');

Deletes an RRSet.

add_a

my $record = $rrsets->add_a('www', '203.0.113.10', ttl => 300);

Creates an A record. Returns a WWW::Hetzner::Cloud::RRSet object.

add_aaaa

my $record = $rrsets->add_aaaa('www', '2001:db8::1', ttl => 300);

Creates an AAAA record. Returns a WWW::Hetzner::Cloud::RRSet object.

add_cname

my $record = $rrsets->add_cname('blog', 'www.example.com.', ttl => 3600);

Creates a CNAME record. Target should end with a dot. Returns a WWW::Hetzner::Cloud::RRSet object.

add_mx

my $record = $rrsets->add_mx('@', 'mail.example.com.', 10, ttl => 3600);

Creates an MX record with priority. Returns a WWW::Hetzner::Cloud::RRSet object.

add_txt

my $record = $rrsets->add_txt('@', 'v=spf1 include:_spf.example.com ~all');

Creates a TXT record. Returns a WWW::Hetzner::Cloud::RRSet object.

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.