Go client library for the Admiral API.
go get go.admiral.io/sdkpackage main
import (
"context"
"log"
"go.admiral.io/sdk/client"
)
func main() {
ctx := context.Background()
// Create client
c, err := client.New(ctx, client.Config{
HostPort: "api.admiral.io:443",
AuthToken: "your-token-here",
})
if err != nil {
log.Fatal(err)
}
defer c.Close()
// Access services via accessors
// c.Application().MethodName(ctx, req)
// c.Authentication().MethodName(ctx, req)
// c.Cluster().MethodName(ctx, req)
// c.Component().MethodName(ctx, req)
// c.Connection().MethodName(ctx, req)
// c.Deployment().MethodName(ctx, req)
// c.Environment().MethodName(ctx, req)
// c.Healthcheck().MethodName(ctx, req)
// c.Runner().MethodName(ctx, req)
// c.Source().MethodName(ctx, req)
// c.State().MethodName(ctx, req)
// c.User().MethodName(ctx, req)
// c.Variable().MethodName(ctx, req)
}| Service | Accessor | Import |
|---|---|---|
| ApplicationAPI | Application() |
go.admiral.io/sdk/proto/admiral/application/v1 |
| AuthenticationAPI | Authentication() |
go.admiral.io/sdk/proto/admiral/authentication/v1 |
| ClusterAPI | Cluster() |
go.admiral.io/sdk/proto/admiral/cluster/v1 |
| ComponentAPI | Component() |
go.admiral.io/sdk/proto/admiral/component/v1 |
| ConnectionAPI | Connection() |
go.admiral.io/sdk/proto/admiral/connection/v1 |
| DeploymentAPI | Deployment() |
go.admiral.io/sdk/proto/admiral/deployment/v1 |
| EnvironmentAPI | Environment() |
go.admiral.io/sdk/proto/admiral/environment/v1 |
| HealthcheckAPI | Healthcheck() |
go.admiral.io/sdk/proto/admiral/healthcheck/v1 |
| RunnerAPI | Runner() |
go.admiral.io/sdk/proto/admiral/runner/v1 |
| SourceAPI | Source() |
go.admiral.io/sdk/proto/admiral/source/v1 |
| StateAPI | State() |
go.admiral.io/sdk/proto/admiral/state/v1 |
| UserAPI | User() |
go.admiral.io/sdk/proto/admiral/user/v1 |
| VariableAPI | Variable() |
go.admiral.io/sdk/proto/admiral/variable/v1 |
package main
import (
"context"
"fmt"
"log"
"go.admiral.io/sdk/client"
applicationv1 "go.admiral.io/sdk/proto/admiral/application/v1"
)
func main() {
ctx := context.Background()
c, err := client.New(ctx, client.Config{
HostPort: "api.admiral.io:443",
AuthToken: os.Getenv("ADMIRAL_TOKEN"),
})
if err != nil {
log.Fatal(err)
}
defer c.Close()
// Validate token before making requests
if err := c.ValidateToken(); err != nil {
log.Fatal("Invalid token:", err)
}
// Call a service method
resp, err := c.Application().ListMethod(ctx, &applicationv1.ListMethodRequest{})
if err != nil {
log.Fatal("Request failed:", err)
}
fmt.Printf("Response: %+v\n", resp)
}import (
"crypto/tls"
"time"
"go.admiral.io/sdk/client"
)
cfg := client.Config{
// Required: Server address
HostPort: "api.admiral.io:443",
// Required: Admiral access token (PAT or SAT)
AuthToken: os.Getenv("ADMIRAL_TOKEN"),
// Optional: Connection options
ConnectionOptions: client.ConnectionOptions{
// Use insecure connection (no TLS) - default: false
Insecure: false,
// Connection timeout - default: 10s
DialTimeout: 10 * time.Second,
// Custom TLS configuration
TLSConfig: &tls.Config{
MinVersion: tls.VersionTLS12,
},
// Additional gRPC dial options
DialOptions: []grpc.DialOption{},
},
// Optional: Custom logger (default: no-op logger)
Logger: client.NewDefaultLogger(),
}
c, err := client.New(ctx, cfg)The client validates token format on creation (prefix, length, CRC32 checksum). You can also validate explicitly:
if err := c.ValidateToken(); err != nil {
log.Fatal("Invalid token:", err)
}A custom TokenValidator can be provided to override the default validation:
cfg := client.Config{
AuthToken: os.Getenv("ADMIRAL_TOKEN"),
TokenValidator: &myCustomValidator{},
}// Get library version
fmt.Println("Version:", client.Version())
// Get user agent string (useful for debugging)
fmt.Println("User-Agent:", client.ClientUserAgent())- Go 1.26 or later
Apache-2.0 License - see LICENSE for details.