headscale/proto/headscale/v1/headscale.proto

182 lines
5.3 KiB
Protocol Buffer
Raw Normal View History

2021-10-30 14:29:41 +00:00
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";
2022-01-25 22:11:15 +00:00
import "headscale/v1/apikey.proto";
// import "headscale/v1/device.proto";
2021-10-30 14:29:41 +00:00
service HeadscaleService {
// --- Namespace start ---
2021-11-13 08:36:56 +00:00
rpc GetNamespace(GetNamespaceRequest) returns (GetNamespaceResponse) {
option (google.api.http) = {
get: "/api/v1/namespace/{name}"
};
}
2021-10-30 14:29:41 +00:00
2021-11-13 08:36:56 +00:00
rpc CreateNamespace(CreateNamespaceRequest) returns (CreateNamespaceResponse) {
option (google.api.http) = {
post: "/api/v1/namespace"
body: "*"
};
}
2021-10-30 14:29:41 +00:00
2021-11-13 08:36:56 +00:00
rpc RenameNamespace(RenameNamespaceRequest) returns (RenameNamespaceResponse) {
option (google.api.http) = {
post: "/api/v1/namespace/{old_name}/rename/{new_name}"
};
}
2021-10-30 14:29:41 +00:00
2021-11-13 08:36:56 +00:00
rpc DeleteNamespace(DeleteNamespaceRequest) returns (DeleteNamespaceResponse) {
option (google.api.http) = {
delete: "/api/v1/namespace/{name}"
};
}
2021-10-30 14:29:41 +00:00
2021-11-13 08:36:56 +00:00
rpc ListNamespaces(ListNamespacesRequest) returns (ListNamespacesResponse) {
option (google.api.http) = {
get: "/api/v1/namespace"
};
}
// --- Namespace end ---
2021-10-30 14:29:41 +00:00
// --- PreAuthKeys start ---
2021-11-13 08:36:56 +00:00
rpc CreatePreAuthKey(CreatePreAuthKeyRequest) returns (CreatePreAuthKeyResponse) {
option (google.api.http) = {
post: "/api/v1/preauthkey"
body: "*"
};
}
2021-10-30 14:29:41 +00:00
2021-11-13 08:36:56 +00:00
rpc ExpirePreAuthKey(ExpirePreAuthKeyRequest) returns (ExpirePreAuthKeyResponse) {
option (google.api.http) = {
post: "/api/v1/preauthkey/expire"
body: "*"
};
}
2021-10-30 14:29:41 +00:00
2021-11-13 08:36:56 +00:00
rpc ListPreAuthKeys(ListPreAuthKeysRequest) returns (ListPreAuthKeysResponse) {
option (google.api.http) = {
get: "/api/v1/preauthkey"
};
}
// --- PreAuthKeys end ---
// --- Machine start ---
2021-11-13 08:36:56 +00:00
rpc DebugCreateMachine(DebugCreateMachineRequest) returns (DebugCreateMachineResponse) {
option (google.api.http) = {
post: "/api/v1/debug/machine"
body: "*"
};
}
2021-10-30 14:29:41 +00:00
2021-11-13 08:36:56 +00:00
rpc GetMachine(GetMachineRequest) returns (GetMachineResponse) {
option (google.api.http) = {
get: "/api/v1/machine/{machine_id}"
2021-10-30 14:29:41 +00:00
};
}
2021-11-13 08:36:56 +00:00
rpc RegisterMachine(RegisterMachineRequest) returns (RegisterMachineResponse) {
option (google.api.http) = {
post: "/api/v1/machine/register"
2021-10-30 14:29:41 +00:00
};
}
2021-11-13 08:36:56 +00:00
rpc DeleteMachine(DeleteMachineRequest) returns (DeleteMachineResponse) {
option (google.api.http) = {
delete: "/api/v1/machine/{machine_id}"
2021-10-30 14:29:41 +00:00
};
}
2021-11-21 13:40:04 +00:00
rpc ExpireMachine(ExpireMachineRequest) returns (ExpireMachineResponse) {
option (google.api.http) = {
post: "/api/v1/machine/{machine_id}/expire"
};
}
2021-11-13 08:36:56 +00:00
rpc ListMachines(ListMachinesRequest) returns (ListMachinesResponse) {
option (google.api.http) = {
get: "/api/v1/machine"
};
}
2021-11-13 08:36:56 +00:00
rpc ShareMachine(ShareMachineRequest) returns (ShareMachineResponse) {
option (google.api.http) = {
post: "/api/v1/machine/{machine_id}/share/{namespace}"
};
}
2021-11-13 08:36:56 +00:00
rpc UnshareMachine(UnshareMachineRequest) returns (UnshareMachineResponse) {
option (google.api.http) = {
post: "/api/v1/machine/{machine_id}/unshare/{namespace}"
};
}
// --- Machine end ---
// --- Route start ---
2021-11-13 08:36:56 +00:00
rpc GetMachineRoute(GetMachineRouteRequest) returns (GetMachineRouteResponse) {
option (google.api.http) = {
get: "/api/v1/machine/{machine_id}/routes"
};
}
2021-11-13 08:36:56 +00:00
rpc EnableMachineRoutes(EnableMachineRoutesRequest) returns (EnableMachineRoutesResponse) {
option (google.api.http) = {
post: "/api/v1/machine/{machine_id}/routes"
2021-10-30 14:29:41 +00:00
};
}
// --- Route end ---
2022-01-25 22:11:15 +00:00
// --- 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"
// };
// }
2021-10-30 14:29:41 +00:00
}