Go SDK for Authdog authentication and user management.
go get github.com/authdog/go-sdkpackage main
import (
"context"
"fmt"
"log"
"github.com/authdog/go-sdk"
)
func main() {
// Initialize the client
client := authdog.NewClient(authdog.ClientConfig{
BaseURL: "https://api.authdog.com",
APIKey: "your-api-key", // Optional
Timeout: 10 * time.Second, // Optional, defaults to 10 seconds
})
// Get user information
ctx := context.Background()
userInfo, err := client.GetUserInfo(ctx, "your-access-token")
if err != nil {
if authdog.IsAuthenticationError(err) {
log.Printf("Authentication failed: %v", err)
} else if authdog.IsAPIError(err) {
log.Printf("API error: %v", err)
} else if authdog.IsAuthdogError(err) {
log.Printf("Authdog error: %v", err)
} else {
log.Printf("Unexpected error: %v", err)
}
return
}
fmt.Printf("User: %s\n", userInfo.User.DisplayName)
if len(userInfo.User.Emails) > 0 {
fmt.Printf("Email: %s\n", userInfo.User.Emails[0].Value)
}
}package main
import (
"context"
"time"
"github.com/authdog/go-sdk"
)
func getUserData(ctx context.Context, accessToken string) (*authdog.UserInfoResponse, error) {
client := authdog.NewClient(authdog.ClientConfig{
BaseURL: "https://api.authdog.com",
})
// Create a context with timeout
ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
return client.GetUserInfo(ctx, accessToken)
}Creates a new Authdog client.
Config Options:
BaseURL(string): The base URL of the Authdog APIAPIKey(string): Optional management Bearer credential (userinfo still uses the access token)EnvironmentSecret,SCIMToken,HRISToken: optional specialized Bearers for AuthZEN/MCP runtime, SCIM, and HRISTimeout(time.Duration): Request timeout (default: 10 seconds)HTTPClient(*http.Client): Optional custom HTTP client
Health, Organizations, Tenants, Projects, Environments,
Users, Groups, Rbac, Audit, Events, Webhooks,
NotificationChannels, ServiceAccounts, PersonalAccessTokens,
ApiSecrets, Authzen, Scim, Hris, Mcp, Otel,
OidcClients, Actions, Addons, Billing, Settings,
Elevate, EmailProviders, FeatureFlags, Forms,
ProvisioningTokens, Impersonation, Portal, Security,
Threats, VanityDomains, Widgets, SmsProviders, and
ConnectedApps wrap Waves 1–5 of the public API. AuthZEN discovery
is unauthenticated. See
specs/004-api-parity/.
Get user information using an access token.
Parameters:
ctx(context.Context): Context for the requestaccessToken(string): The access token for authentication
Returns: (*UserInfoResponse, error) - User information or error
Response Structure:
type UserInfoResponse struct {
Meta Meta `json:"meta"`
Session Session `json:"session"`
User User `json:"user"`
}
type User struct {
ID string `json:"id"`
ExternalID string `json:"externalId"`
UserName string `json:"userName"`
DisplayName string `json:"displayName"`
NickName *string `json:"nickName"`
ProfileURL *string `json:"profileUrl"`
Title *string `json:"title"`
UserType *string `json:"userType"`
PreferredLanguage *string `json:"preferredLanguage"`
Locale string `json:"locale"`
Timezone *string `json:"timezone"`
Active bool `json:"active"`
Names Names `json:"names"`
Photos []Photo `json:"photos"`
PhoneNumbers []interface{} `json:"phoneNumbers"`
Addresses []interface{} `json:"addresses"`
Emails []Email `json:"emails"`
Verifications []Verification `json:"verifications"`
Provider string `json:"provider"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt string `json:"updatedAt"`
EnvironmentID string `json:"environmentId"`
}Close the HTTP client (for cleanup).
The SDK provides structured error handling:
AuthenticationError: Raised when authentication fails (401 responses)APIError: Raised when API requests failAuthdogError: Base error type for all SDK errors
Error Type Checking:
if authdog.IsAuthenticationError(err) {
// Handle authentication error
} else if authdog.IsAPIError(err) {
// Handle API error
} else if authdog.IsAuthdogError(err) {
// Handle general Authdog error
}# Initialize Go module
go mod init github.com/authdog/go-sdk
# Run tests
go test ./...
# Build
go build ./...
# Format code
go fmt ./...
# Lint code
golangci-lint runThis SDK has no external dependencies and uses only the Go standard library.
MIT License - see LICENSE for details.