2021-10-30 16:29:41 +02:00
|
|
|
syntax = "proto3";
|
|
|
|
package headscale.v1;
|
|
|
|
option go_package = "github.com/juanfont/headscale/gen/go/v1";
|
|
|
|
|
|
|
|
import "google/api/annotations.proto";
|
|
|
|
|
2021-11-04 23:02:10 +01:00
|
|
|
import "headscale/v1/namespace.proto";
|
|
|
|
import "headscale/v1/preauthkey.proto";
|
|
|
|
import "headscale/v1/machine.proto";
|
|
|
|
import "headscale/v1/routes.proto";
|
|
|
|
// import "headscale/v1/device.proto";
|
2021-10-30 16:29:41 +02:00
|
|
|
|
2021-11-04 23:02:10 +01:00
|
|
|
service HeadscaleService {
|
|
|
|
// --- Namespace start ---
|
|
|
|
rpc GetNamespace(GetNamespaceRequest) returns(GetNamespaceResponse) {
|
|
|
|
option(google.api.http) = {
|
|
|
|
get : "/api/v1/namespace/{name}"
|
|
|
|
};
|
|
|
|
}
|
2021-10-30 16:29:41 +02:00
|
|
|
|
2021-11-04 23:02:10 +01:00
|
|
|
rpc CreateNamespace(CreateNamespaceRequest) returns(CreateNamespaceResponse) {
|
|
|
|
option(google.api.http) = {
|
|
|
|
post : "/api/v1/namespace"
|
|
|
|
body : "*"
|
|
|
|
};
|
|
|
|
}
|
2021-10-30 16:29:41 +02:00
|
|
|
|
2021-11-04 23:02:10 +01:00
|
|
|
rpc RenameNamespace(RenameNamespaceRequest) returns(RenameNamespaceResponse) {
|
|
|
|
option(google.api.http) = {
|
|
|
|
post : "/api/v1/namespace/{old_name}/rename/{new_name}"
|
|
|
|
};
|
|
|
|
}
|
2021-10-30 16:29:41 +02:00
|
|
|
|
2021-11-04 23:02:10 +01:00
|
|
|
rpc DeleteNamespace(DeleteNamespaceRequest) returns(DeleteNamespaceResponse) {
|
|
|
|
option(google.api.http) = {
|
|
|
|
delete : "/api/v1/namespace/{name}"
|
|
|
|
};
|
|
|
|
}
|
2021-10-30 16:29:41 +02:00
|
|
|
|
2021-11-04 23:02:10 +01:00
|
|
|
rpc ListNamespaces(ListNamespacesRequest) returns(ListNamespacesResponse) {
|
|
|
|
option(google.api.http) = {
|
|
|
|
get : "/api/v1/namespace"
|
|
|
|
};
|
|
|
|
}
|
|
|
|
// --- Namespace end ---
|
2021-10-30 16:29:41 +02:00
|
|
|
|
2021-11-04 23:02:10 +01:00
|
|
|
// --- PreAuthKeys start ---
|
|
|
|
rpc CreatePreAuthKey(CreatePreAuthKeyRequest) returns(CreatePreAuthKeyResponse) {
|
|
|
|
option(google.api.http) = {
|
|
|
|
post : "/api/v1/preauthkey"
|
|
|
|
body : "*"
|
|
|
|
};
|
|
|
|
}
|
2021-10-30 16:29:41 +02:00
|
|
|
|
2021-11-04 23:02:10 +01:00
|
|
|
rpc ExpirePreAuthKey(ExpirePreAuthKeyRequest) returns(ExpirePreAuthKeyResponse) {
|
|
|
|
option(google.api.http) = {
|
|
|
|
post : "/api/v1/preauthkey/expire"
|
|
|
|
body : "*"
|
|
|
|
};
|
|
|
|
}
|
2021-10-30 16:29:41 +02:00
|
|
|
|
2021-11-04 23:02:10 +01:00
|
|
|
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 : "*"
|
|
|
|
};
|
|
|
|
}
|
2021-10-30 16:29:41 +02:00
|
|
|
|
|
|
|
rpc GetMachine(GetMachineRequest) returns(GetMachineResponse) {
|
|
|
|
option(google.api.http) = {
|
|
|
|
get : "/api/v1/machine/{machine_id}"
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2021-11-04 23:02:10 +01:00
|
|
|
rpc RegisterMachine(RegisterMachineRequest) returns(RegisterMachineResponse) {
|
2021-10-30 16:29:41 +02:00
|
|
|
option(google.api.http) = {
|
2021-11-04 23:02:10 +01:00
|
|
|
post : "/api/v1/machine/register"
|
2021-10-30 16:29:41 +02:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2021-11-04 23:02:10 +01:00
|
|
|
rpc DeleteMachine(DeleteMachineRequest) returns(DeleteMachineResponse) {
|
2021-10-30 16:29:41 +02:00
|
|
|
option(google.api.http) = {
|
2021-11-04 23:02:10 +01:00
|
|
|
delete : "/api/v1/machine/{machine_id}"
|
2021-10-30 16:29:41 +02:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2021-11-04 23:02:10 +01:00
|
|
|
rpc ListMachines(ListMachinesRequest) returns(ListMachinesResponse) {
|
2021-10-30 16:29:41 +02:00
|
|
|
option(google.api.http) = {
|
2021-11-04 23:02:10 +01:00
|
|
|
get : "/api/v1/machine"
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
rpc ShareMachine(ShareMachineRequest) returns(ShareMachineResponse) {
|
|
|
|
option(google.api.http) = {
|
|
|
|
post : "/api/v1/machine/{machine_id}/share/{namespace}"
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
rpc UnshareMachine(UnshareMachineRequest) returns(UnshareMachineResponse) {
|
|
|
|
option(google.api.http) = {
|
|
|
|
post : "/api/v1/machine/{machine_id}/unshare/{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"
|
2021-10-30 16:29:41 +02:00
|
|
|
};
|
|
|
|
}
|
2021-11-04 23:02:10 +01:00
|
|
|
// --- Route 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 16:29:41 +02:00
|
|
|
}
|