syntax = "proto3"; package headscale.v1; option go_package = "github.com/juanfont/headscale/gen/go/v1"; import "google/api/annotations.proto"; import "headscale/v1/namespace.proto"; import "headscale/v1/preauthkey.proto"; import "headscale/v1/machine.proto"; import "headscale/v1/routes.proto"; import "headscale/v1/apikey.proto"; // import "headscale/v1/device.proto"; service HeadscaleService { // --- Namespace start --- rpc GetNamespace(GetNamespaceRequest) returns (GetNamespaceResponse) { option (google.api.http) = { get: "/api/v1/namespace/{name}" }; } rpc CreateNamespace(CreateNamespaceRequest) returns (CreateNamespaceResponse) { option (google.api.http) = { post: "/api/v1/namespace" body: "*" }; } rpc RenameNamespace(RenameNamespaceRequest) returns (RenameNamespaceResponse) { option (google.api.http) = { post: "/api/v1/namespace/{old_name}/rename/{new_name}" }; } rpc DeleteNamespace(DeleteNamespaceRequest) returns (DeleteNamespaceResponse) { option (google.api.http) = { delete: "/api/v1/namespace/{name}" }; } rpc ListNamespaces(ListNamespacesRequest) returns (ListNamespacesResponse) { option (google.api.http) = { get: "/api/v1/namespace" }; } // --- Namespace end --- // --- PreAuthKeys start --- rpc CreatePreAuthKey(CreatePreAuthKeyRequest) returns (CreatePreAuthKeyResponse) { option (google.api.http) = { post: "/api/v1/preauthkey" body: "*" }; } rpc ExpirePreAuthKey(ExpirePreAuthKeyRequest) returns (ExpirePreAuthKeyResponse) { option (google.api.http) = { post: "/api/v1/preauthkey/expire" body: "*" }; } rpc ListPreAuthKeys(ListPreAuthKeysRequest) returns (ListPreAuthKeysResponse) { option (google.api.http) = { get: "/api/v1/preauthkey" }; } // --- PreAuthKeys end --- // --- Machine start --- rpc DebugCreateMachine(DebugCreateMachineRequest) returns (DebugCreateMachineResponse) { option (google.api.http) = { post: "/api/v1/debug/machine" body: "*" }; } rpc GetMachine(GetMachineRequest) returns (GetMachineResponse) { option (google.api.http) = { get: "/api/v1/machine/{machine_id}" }; } rpc SetTags(SetTagsRequest) returns (SetTagsResponse) { option (google.api.http) = { post: "/api/v1/machine/{machine_id}/tags" body: "*" }; } rpc RegisterMachine(RegisterMachineRequest) returns (RegisterMachineResponse) { option (google.api.http) = { post: "/api/v1/machine/register" }; } rpc DeleteMachine(DeleteMachineRequest) returns (DeleteMachineResponse) { option (google.api.http) = { delete: "/api/v1/machine/{machine_id}" }; } rpc ExpireMachine(ExpireMachineRequest) returns (ExpireMachineResponse) { option (google.api.http) = { post: "/api/v1/machine/{machine_id}/expire" }; } rpc RenameMachine(RenameMachineRequest) returns (RenameMachineResponse) { option (google.api.http) = { post: "/api/v1/machine/{machine_id}/rename/{new_name}" }; } rpc ListMachines(ListMachinesRequest) returns (ListMachinesResponse) { option (google.api.http) = { get: "/api/v1/machine" }; } rpc MoveMachine(MoveMachineRequest) returns (MoveMachineResponse) { option (google.api.http) = { post: "/api/v1/machine/{machine_id}/namespace" }; } // --- Machine end --- // --- Route start --- rpc GetMachineRoute(GetMachineRouteRequest) returns (GetMachineRouteResponse) { option (google.api.http) = { get: "/api/v1/machine/{machine_id}/routes" }; } rpc EnableMachineRoutes(EnableMachineRoutesRequest) returns (EnableMachineRoutesResponse) { option (google.api.http) = { post: "/api/v1/machine/{machine_id}/routes" }; } // --- Route end --- // --- ApiKeys start --- rpc CreateApiKey(CreateApiKeyRequest) returns (CreateApiKeyResponse) { option (google.api.http) = { post: "/api/v1/apikey" body: "*" }; } rpc ExpireApiKey(ExpireApiKeyRequest) returns (ExpireApiKeyResponse) { option (google.api.http) = { post: "/api/v1/apikey/expire" body: "*" }; } rpc ListApiKeys(ListApiKeysRequest) returns (ListApiKeysResponse) { option (google.api.http) = { get: "/api/v1/apikey" }; } // --- ApiKeys end --- // Implement Tailscale API // rpc GetDevice(GetDeviceRequest) returns(GetDeviceResponse) { // option(google.api.http) = { // get : "/api/v1/device/{id}" // }; // } // rpc DeleteDevice(DeleteDeviceRequest) returns(DeleteDeviceResponse) { // option(google.api.http) = { // delete : "/api/v1/device/{id}" // }; // } // rpc GetDeviceRoutes(GetDeviceRoutesRequest) returns(GetDeviceRoutesResponse) { // option(google.api.http) = { // get : "/api/v1/device/{id}/routes" // }; // } // rpc EnableDeviceRoutes(EnableDeviceRoutesRequest) returns(EnableDeviceRoutesResponse) { // option(google.api.http) = { // post : "/api/v1/device/{id}/routes" // }; // } }