Skip to content

Go Client

The Go client talks to the API over gRPC. Source: github.com/enumco/client-go.

Terminal window
go get github.com/enumco/client-go
package main
import (
"context"
"fmt"
"log"
"os"
client "github.com/enumco/client-go"
apiv1 "github.com/enumco/proto-gen-go/gen/enum/api/v1"
)
func main() {
c, err := client.New(client.WithToken(os.Getenv("ENUM_TOKEN")))
if err != nil {
log.Fatal(err)
}
defer c.Close()
resp, err := c.DNS.ListZones(context.Background(), &apiv1.ListZonesRequest{
ProjectId: "proj-01kmyy3t719crcnrrvk1mgyjd0",
})
if err != nil {
log.Fatal(err)
}
for _, zone := range resp.GetZones() {
fmt.Println(zone.GetName())
}
}

See Authentication for how to get a token.

OptionDescription
WithToken(token)API token sent with every request
WithAddr(addr)API endpoint. Default: api.enum.co:443
WithTLS(creds)Custom TLS configuration. Default: system root certificates
FieldService
c.OrganizationsOrganizationService
c.ProjectsProjectService
c.UsersUserService
c.RegionsRegionService
c.DNSDnsService
c.Kubernetes.ClustersKubernetesClusterService
c.Storage.UsersObjectStorageUserService
c.Storage.AccessKeysObjectStorageAccessKeyService
c.Storage.BucketsObjectStorageBucketService
c.Storage.PoliciesObjectStorageUserPolicyService
c.ServiceAccountsServiceAccountService

Each field is a generated gRPC client. The API reference lists the methods and fields.

Errors are gRPC status errors. Check the code with status.Code:

import (
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
_, err := c.DNS.GetZone(ctx, req)
if status.Code(err) == codes.NotFound {
// ...
}