syntax = "proto3"; package headscale.v1; option go_package = "github.com/juanfont/headscale/gen/go/v1"; import "google/protobuf/timestamp.proto"; // This is a potential reimplementation of Tailscale's API // https://github.com/tailscale/tailscale/blob/main/api.md message Latency { float latency_ms = 1; bool preferred = 2; } message ClientSupports { bool hair_pinning = 1; bool ipv6 = 2; bool pcp = 3; bool pmp = 4; bool udp = 5; bool upnp = 6; } message ClientConnectivity { repeated string endpoints = 1; string derp = 2; bool mapping_varies_by_dest_ip = 3; map latency = 4; ClientSupports client_supports = 5; } message GetDeviceRequest { string id = 1; } message GetDeviceResponse { repeated string addresses = 1; string id = 2; string user = 3; string name = 4; string hostname = 5; string client_version = 6; bool update_available = 7; string os = 8; google.protobuf.Timestamp created = 9; google.protobuf.Timestamp last_seen = 10; bool key_expiry_disabled = 11; google.protobuf.Timestamp expires = 12; bool authorized = 13; bool is_external = 14; string machine_key = 15; string node_key = 16; bool blocks_incoming_connections = 17; repeated string enabled_routes = 18; repeated string advertised_routes = 19; ClientConnectivity client_connectivity = 20; } message DeleteDeviceRequest { string id = 1; } message DeleteDeviceResponse { } message GetDeviceRoutesRequest { string id = 1; } message GetDeviceRoutesResponse { repeated string enabled_routes = 1; repeated string advertised_routes = 2; } message EnableDeviceRoutesRequest { string id = 1; repeated string routes = 2; } message EnableDeviceRoutesResponse { repeated string enabled_routes = 1; repeated string advertised_routes = 2; }