gohetznerdns is a Go client library for accessing the Hetzner DNS API.
You can view Hetzner DNS API docs here: https://dns.hetzner.com/api-docs
go get github.com/opsheaven/gohetznerdns@vX.Y.Zwhere X.Y.Z is the version you need.
or
go get github.com/opsheaven/gohetznerdnsfor non Go modules usage or latest version.
import "github.com/opsheaven/gohetznerdns"Create a new client, then use the exposed services to access different parts of the Hetzner DNS API.
API Access token is needed to access Public API. You can create the api token by following the manual.
You can then use your token in the client:
package main import ( "github.com/opsheaven/gohetznerdns" ) func main() { token:="aaaabbbccxcdasda" client,err := gohetznerdns.NewClient(token) if err != nil { fmt.Errorf("invalid token %s", token) } }package main import ( "fmt" "os" "github.com/opsheaven/gohetznerdns" ) func main() { var err error var client *gohetznerdns.HetznerDNS var zones []*gohetznerdns.Zone if client, err = gohetznerdns.NewClient(os.Getenv("HETZNER_DNS_TOKEN")); err != nil { fmt.Println(err) os.Exit(1) } if zones, err = client.ZoneService.GetAllZones(); err != nil { fmt.Println(err) os.Exit(1) } fmt.Printf("%-24s | %s\n", "ID", "NAME") for _, zone := range zones { fmt.Printf("%-24s | %s\n", zone.Id, zone.Name) } }package main import ( "fmt" "os" "github.com/opsheaven/gohetznerdns" ) func main() { var err error var client *gohetznerdns.HetznerDNS var zones []*gohetznerdns.Zone if client, err = gohetznerdns.NewClient(os.Getenv("HETZNER_DNS_TOKEN")); err != nil { fmt.Println(err) os.Exit(1) } if zones, err = client.ZoneService.GetAllZonesByName("opsheaven"); err != nil { fmt.Println(err) os.Exit(1) } fmt.Printf("%-24s | %s\n", "ID", "NAME") for _, zone := range zones { fmt.Printf("%-24s | %s\n", zone.Id, zone.Name) } }package main import ( "fmt" "os" "github.com/opsheaven/gohetznerdns" ) func main() { var err error var client *gohetznerdns.HetznerDNS var zones []*gohetznerdns.Zone var records []*gohetznerdns.Record if client, err = gohetznerdns.NewClient(os.Getenv("HETZNER_DNS_TOKEN")); err != nil { fmt.Println(err) os.Exit(1) } if zones, err = client.ZoneService.GetAllZonesByName("opsheaven.space"); err != nil { fmt.Println(err) os.Exit(1) } if records, err = client.RecordService.GetAllRecords(zones[0].Id); err != nil { fmt.Println(err) os.Exit(1) } fmt.Printf("%-32s | %-32s | %-5s | %s\n", "ID", "NAME", "TYPE", "VALUE") for _, record := range records { fmt.Printf("%-32s | %-32s | %-5s | %s\n", record.Id, record.Name, record.Type, record.Value) } }Each version of the client is tagged and the version is updated accordingly.
To see the list of past versions, run git tag or check releases