Kristoffer Dalby
8ea774564d
api/v2: show a tagged device's creator as its user
...
A tagged device shows the login that made the key it joined with.
Its owner stays its tags.
2026-10-28 18:28:23 +00:00
Kristoffer Dalby
dd0ab5cb4a
api/v2: return a device name as its FQDN
2026-10-28 18:28:23 +00:00
Kristoffer Dalby
6394a04e06
api/v2: ignore unknown properties in request bodies
...
Tailscale's API ignores them.
2026-10-28 18:28:23 +00:00
Kristoffer Dalby
7f9ad511a4
api/v2: bound every request body
...
huma gives RawBody no limit, and validates a whole body before
the handler runs. The token form is parsed before the secret check.
2026-10-28 18:28:23 +00:00
Kristoffer Dalby
f7e2b3c49e
api, policy/v2: refuse route prefixes with host bits
...
Routes are matched as written, so such a prefix never equals the one a
client announces. The approval APIs answer 400 and autoApprovers refuses
it at load and write, with Tailscale's text.
2026-10-28 18:28:22 +00:00
Kristoffer Dalby
60d42808b8
state: keep node removal apart from policy refresh in DeleteNode
...
Peers get the deletion as an explicit PeersRemoved change, independent of
their sent-peers tracking.
Updates tailscale/tailscale#15660
2026-09-30 19:03:13 +02:00
Kristoffer Dalby
21f6e46fb8
state: refresh policy nodes inside the peer map build
...
One peer build per tag/user/IP/route write; callers detect policy moves
via NodesGeneration. Per-node caches only store results for the node
pm holds, so a mapper reading mid-build cannot pin a stale filter.
2026-09-30 17:21:02 +02:00
Kristoffer Dalby
fc6a16fdfc
state: preserve committed node deletion changes
...
Updates #3410
2026-09-09 18:18:17 +02:00
Kristoffer Dalby
84715e976c
api/v2: add OAuth client-credentials auth and scope enforcement
2026-06-26 09:18:06 +02:00
Kristoffer Dalby
b3472bb8dd
api/v2: add Tailscale-compatible devices API
...
Map the Tailscale device surface — get, list, delete, set name, tags,
key expiry, routes, and authorization — onto Headscale nodes.
2026-06-21 04:17:03 +02:00