The official client implementation for the Tailscale HTTP API. For more details, please see API documentation.
package main
import (
	"context"
	"os"
	"tailscale.com/client/tailscale/v2"
)
func main() {
	client := &tailscale.Client{
		Tailnet: os.Getenv("TAILSCALE_TAILNET"),
		APIKey:  os.Getenv("TAILSCALE_API_KEY"),
	}
	devices, err := client.Devices().List(context.Background())
}package main
import (
	"context"
	"os"
	"tailscale.com/client/tailscale/v2"
)
func main() {
	client := &tailscale.Client{
		Tailnet: os.Getenv("TAILSCALE_TAILNET"),
		Auth: &tailscale.OAuth{
			ClientID:     os.Getenv("TAILSCALE_OAUTH_CLIENT_ID"),
			ClientSecret: os.Getenv("TAILSCALE_OAUTH_CLIENT_SECRET"),
			Scopes:       []string{"all:write"},
		},
	}
	
	devices, err := client.Devices().List(context.Background())
}package main
import (
	"context"
	"os"
	"tailscale.com/client/tailscale/v2"
)
func main() {
	client := &tailscale.Client{
		Tailnet: os.Getenv("TAILSCALE_TAILNET"),
		Auth: &tailscale.IdentityFederation{
			ClientID: os.Getenv("TAILSCALE_OAUTH_CLIENT_ID"),
			IDTokenFunc: func() (string, error) {
				return os.Getenv("IDENTITY_TOKEN"), nil
            },
		},
	}
	devices, err := client.Devices().List(context.Background())
}package main
import (
	"context"
	"os"
	"tailscale.com/client/tailscale/v2"
)
type MyAuth struct {...}
func (a *MyAuth) HTTPClient(orig *http.Client, baseURL string) *http.Client {
	// build an HTTP client that adds authentication to outgoing requests
	// see tailscale.OAuth for an example.
}
func main() {
	client := &tailscale.Client{
		Tailnet: os.Getenv("TAILSCALE_TAILNET"),
		Auth: &MyAuth{...},
	}
	
	devices, err := client.Devices().List(context.Background())
}Pushing a tag of the format vX.Y.Z will trigger the release workflow which uses
goreleaser to build and sign artifacts and generate a
GitHub release.