mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			208 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
			
		
		
	
	
			208 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
| syntax = "proto3";
 | |
| package headscale.v1;
 | |
| option  go_package = "github.com/juanfont/headscale/gen/go/v1";
 | |
| 
 | |
| import "google/api/annotations.proto";
 | |
| 
 | |
| import "headscale/v1/user.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 {
 | |
|     // --- User start ---
 | |
|     rpc GetUser(GetUserRequest) returns(GetUserResponse) {
 | |
|         option(google.api.http) = {
 | |
|             get : "/api/v1/user/{name}"
 | |
|         };
 | |
|     }
 | |
| 
 | |
|     rpc CreateUser(CreateUserRequest) returns(CreateUserResponse) {
 | |
|         option(google.api.http) = {
 | |
|             post : "/api/v1/user"
 | |
|             body : "*"
 | |
|         };
 | |
|     }
 | |
| 
 | |
|     rpc RenameUser(RenameUserRequest) returns(RenameUserResponse) {
 | |
|         option(google.api.http) = {
 | |
|             post : "/api/v1/user/{old_name}/rename/{new_name}"
 | |
|         };
 | |
|     }
 | |
| 
 | |
|     rpc DeleteUser(DeleteUserRequest) returns(DeleteUserResponse) {
 | |
|         option(google.api.http) = {
 | |
|             delete : "/api/v1/user/{name}"
 | |
|         };
 | |
|     }
 | |
| 
 | |
|     rpc ListUsers(ListUsersRequest) returns(ListUsersResponse) {
 | |
|         option(google.api.http) = {
 | |
|             get : "/api/v1/user"
 | |
|         };
 | |
|     }
 | |
|     // --- User 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}/user"
 | |
|         };
 | |
|     }
 | |
|     // --- Machine end ---
 | |
| 
 | |
|     // --- Route start ---
 | |
|     rpc GetRoutes(GetRoutesRequest) returns(GetRoutesResponse) {
 | |
|         option(google.api.http) = {
 | |
|             get : "/api/v1/routes"
 | |
|         };
 | |
|     }
 | |
| 
 | |
|     rpc EnableRoute(EnableRouteRequest) returns(EnableRouteResponse) {
 | |
|         option(google.api.http) = {
 | |
|             post : "/api/v1/routes/{route_id}/enable"
 | |
|         };
 | |
|     }
 | |
| 
 | |
|     rpc DisableRoute(DisableRouteRequest) returns(DisableRouteResponse) {
 | |
|         option(google.api.http) = {
 | |
|             post : "/api/v1/routes/{route_id}/disable"
 | |
|         };
 | |
|     }
 | |
| 
 | |
|     rpc GetMachineRoutes(GetMachineRoutesRequest) returns(GetMachineRoutesResponse) {
 | |
|         option(google.api.http) = {
 | |
|             get : "/api/v1/machine/{machine_id}/routes"
 | |
|         };
 | |
|     }
 | |
| 
 | |
|     rpc DeleteRoute(DeleteRouteRequest) returns(DeleteRouteResponse) {
 | |
|         option(google.api.http) = {
 | |
|             delete : "/api/v1/routes/{route_id}"
 | |
|         };
 | |
|     }
 | |
| 
 | |
|     // --- 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"
 | |
|     //     };
 | |
|     // }
 | |
| }
 |