Documentation
¶
Overview ¶
Package apitype contains types for the Tailscale LocalAPI and control plane API.
Index ¶
Constants ¶
const LocalAPIHost = "local-tailscaled.sock"
LocalAPIHost is the Host header value used by the LocalAPI.
const RequestReasonHeader = "X-Tailscale-Reason"
RequestReasonHeader is the header used to pass justification for a LocalAPI request, such as when a user wants to perform an action they don't have permission for, and a policy allows it with justification. As of 2025-01-29, it is only used to allow a user to disconnect Tailscale when the "always-on" mode is enabled.
The header value is base64-encoded using the standard encoding defined in RFC 4648.
See tailscale/corp#26146.
Variables ¶
var RequestReasonKey = ctxkey.New(RequestReasonHeader, "")
RequestReasonKey is the context key used to pass the request reason when making a LocalAPI request via [local.Client]. It's value is a raw string. An empty string means no reason was provided.
See tailscale/corp#26146.
Functions ¶
This section is empty.
Types ¶
type DNSConfig ¶ added in v1.26.0
type DNSConfig struct {
// Resolvers are the global DNS resolvers to use
// overriding the local OS configuration.
Resolvers []DNSResolver `json:"resolvers"`
// FallbackResolvers are used as global resolvers when
// the client is unable to determine the OS's preferred DNS servers.
FallbackResolvers []DNSResolver `json:"fallbackResolvers"`
// Routes map DNS name suffixes to a set of DNS resolvers,
// used for Split DNS and other advanced routing overlays.
Routes map[string][]DNSResolver `json:"routes"`
// Domains are the search domains to use.
Domains []string `json:"domains"`
// Proxied means MagicDNS is enabled.
Proxied bool `json:"proxied"`
// TempCorpIssue13969 is from an internal hack day prototype,
// See tailscale/corp#13969.
TempCorpIssue13969 string `json:"TempCorpIssue13969,omitempty"`
// Nameservers are the IP addresses of global nameservers to use.
// This is a deprecated format but may still be found in tailnets
// that were configured a long time ago. When making updates,
// set Resolvers and leave Nameservers empty.
Nameservers []string `json:"nameservers"`
}
DNSConfig is the DNS configuration for a tailnet used in /tailnet/{tailnet}/dns/config.
type DNSOSConfig ¶ added in v1.74.0
DNSOSConfig mimics dns.OSConfig without forcing us to import the entire dns package into the CLI.
type DNSQueryResponse ¶ added in v1.76.0
type DNSQueryResponse struct {
// Bytes is the raw DNS response bytes.
Bytes []byte
// Resolvers is the list of resolvers that the forwarder deemed able to resolve the query.
Resolvers []*dnstype.Resolver
}
DNSQueryResponse is the response to a DNS query request sent via LocalAPI.
type DNSResolver ¶ added in v1.26.0
type DNSResolver struct {
// Addr is the address of the DNS resolver.
// It is usually an IP address or a DoH URL.
// See dnstype.Resolver.Addr for full details.
Addr string `json:"addr"`
// BootstrapResolution is an optional suggested resolution for
// the DoT/DoH resolver.
BootstrapResolution []string `json:"bootstrapResolution,omitempty"`
// UseWithExitNode signals this resolver should be used
// even when a tailscale exit node is configured on a device.
UseWithExitNode bool `json:"useWithExitNode,omitempty"`
}
DNSResolver is a DNS resolver in a DNS configuration.
type ExitNodeSuggestionResponse ¶ added in v1.66.0
type ExitNodeSuggestionResponse struct {
ID tailcfg.StableNodeID
Name string
Location tailcfg.LocationView `json:",omitempty"`
}
ExitNodeSuggestionResponse is the response to a LocalAPI suggest-exit-node GET request. It returns the StableNodeID, name, and location of a suggested exit node for the client making the request.
type FileTarget ¶
type FileTarget struct {
Node *tailcfg.Node
// PeerAPI is the http://ip:port URL base of the node's PeerAPI,
// without any path (not even a single slash).
PeerAPIURL string
}
FileTarget is a node to which files can be sent, and the PeerAPI URL base to do so via.
type OptionalFeatures ¶ added in v1.90.4
type OptionalFeatures struct {
// Features is the map of optional feature names to whether they are
// enabled.
//
// Disabled features may be absent from the map. (That is, false values
// are not guaranteed to be present.)
Features map[string]bool
}
OptionalFeatures describes which optional features are enabled in the build.
type ReloadConfigResponse ¶ added in v1.52.0
type ReloadConfigResponse struct {
Reloaded bool // whether the config was reloaded
Err string // any error message
}
ReloadConfigResponse is the response to a LocalAPI reload-config request.
There are three possible outcomes: (false, "") if no config mode in use, (true, "") on success, or (false, "error message") on failure.
type SetPushDeviceTokenRequest ¶ added in v1.38.0
type SetPushDeviceTokenRequest struct {
// PushDeviceToken is the iOS/macOS APNs device token (and any future Android equivalent).
PushDeviceToken string
}
SetPushDeviceTokenRequest is the body POSTed to the LocalAPI endpoint /set-device-token.
type WaitingFile ¶
type WhoIsResponse ¶
type WhoIsResponse struct {
Node *tailcfg.Node
UserProfile *tailcfg.UserProfile
// CapMap is a map of capabilities to their values.
// See tailcfg.PeerCapMap and tailcfg.PeerCapability for details.
CapMap tailcfg.PeerCapMap
}
WhoIsResponse is the JSON type returned by tailscaled debug server's /whois?ip=$IP handler. In successful whois responses, Node and UserProfile are never nil.