mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	drop unused last_successful_update field from node table (#1754)
This commit is contained in:
		
							parent
							
								
									384ca03208
								
							
						
					
					
						commit
						3f162c212c
					
				@ -40,16 +40,16 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        protoc-gen-grpc-gateway = pkgs.buildGoModule rec {
 | 
					        protoc-gen-grpc-gateway = pkgs.buildGoModule rec {
 | 
				
			||||||
          pname = "grpc-gateway";
 | 
					          pname = "grpc-gateway";
 | 
				
			||||||
          version = "2.14.0";
 | 
					          version = "2.19.1";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          src = pkgs.fetchFromGitHub {
 | 
					          src = pkgs.fetchFromGitHub {
 | 
				
			||||||
            owner = "grpc-ecosystem";
 | 
					            owner = "grpc-ecosystem";
 | 
				
			||||||
            repo = "grpc-gateway";
 | 
					            repo = "grpc-gateway";
 | 
				
			||||||
            rev = "v${version}";
 | 
					            rev = "v${version}";
 | 
				
			||||||
            sha256 = "sha256-lnNdsDCpeSHtl2lC1IhUw11t3cnGF+37qSM7HDvKLls=";
 | 
					            sha256 = "sha256-CdGQpQfOSimeio8v1lZ7xzE/oAS2qFyu+uN+H9i7vpo=";
 | 
				
			||||||
          };
 | 
					          };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          vendorHash = "sha256-dGdnDuRbwg8fU7uB5GaHEWa/zI3w06onqjturvooJQA=";
 | 
					          vendorHash = "sha256-no7kZGpf/VOuceC3J+izGFQp5aMS3b+Rn+x4BFZ2zgs=";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          nativeBuildInputs = [pkgs.installShellFiles];
 | 
					          nativeBuildInputs = [pkgs.installShellFiles];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -87,11 +87,7 @@ func request_HeadscaleService_CreateUser_0(ctx context.Context, marshaler runtim
 | 
				
			|||||||
	var protoReq CreateUserRequest
 | 
						var protoReq CreateUserRequest
 | 
				
			||||||
	var metadata runtime.ServerMetadata
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	newReader, berr := utilities.IOReaderFactory(req.Body)
 | 
						if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
 | 
				
			||||||
	if berr != nil {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -104,11 +100,7 @@ func local_request_HeadscaleService_CreateUser_0(ctx context.Context, marshaler
 | 
				
			|||||||
	var protoReq CreateUserRequest
 | 
						var protoReq CreateUserRequest
 | 
				
			||||||
	var metadata runtime.ServerMetadata
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	newReader, berr := utilities.IOReaderFactory(req.Body)
 | 
						if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
 | 
				
			||||||
	if berr != nil {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -263,11 +255,7 @@ func request_HeadscaleService_CreatePreAuthKey_0(ctx context.Context, marshaler
 | 
				
			|||||||
	var protoReq CreatePreAuthKeyRequest
 | 
						var protoReq CreatePreAuthKeyRequest
 | 
				
			||||||
	var metadata runtime.ServerMetadata
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	newReader, berr := utilities.IOReaderFactory(req.Body)
 | 
						if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
 | 
				
			||||||
	if berr != nil {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -280,11 +268,7 @@ func local_request_HeadscaleService_CreatePreAuthKey_0(ctx context.Context, mars
 | 
				
			|||||||
	var protoReq CreatePreAuthKeyRequest
 | 
						var protoReq CreatePreAuthKeyRequest
 | 
				
			||||||
	var metadata runtime.ServerMetadata
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	newReader, berr := utilities.IOReaderFactory(req.Body)
 | 
						if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
 | 
				
			||||||
	if berr != nil {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -297,11 +281,7 @@ func request_HeadscaleService_ExpirePreAuthKey_0(ctx context.Context, marshaler
 | 
				
			|||||||
	var protoReq ExpirePreAuthKeyRequest
 | 
						var protoReq ExpirePreAuthKeyRequest
 | 
				
			||||||
	var metadata runtime.ServerMetadata
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	newReader, berr := utilities.IOReaderFactory(req.Body)
 | 
						if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
 | 
				
			||||||
	if berr != nil {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -314,11 +294,7 @@ func local_request_HeadscaleService_ExpirePreAuthKey_0(ctx context.Context, mars
 | 
				
			|||||||
	var protoReq ExpirePreAuthKeyRequest
 | 
						var protoReq ExpirePreAuthKeyRequest
 | 
				
			||||||
	var metadata runtime.ServerMetadata
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	newReader, berr := utilities.IOReaderFactory(req.Body)
 | 
						if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
 | 
				
			||||||
	if berr != nil {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -367,11 +343,7 @@ func request_HeadscaleService_DebugCreateNode_0(ctx context.Context, marshaler r
 | 
				
			|||||||
	var protoReq DebugCreateNodeRequest
 | 
						var protoReq DebugCreateNodeRequest
 | 
				
			||||||
	var metadata runtime.ServerMetadata
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	newReader, berr := utilities.IOReaderFactory(req.Body)
 | 
						if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
 | 
				
			||||||
	if berr != nil {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -384,11 +356,7 @@ func local_request_HeadscaleService_DebugCreateNode_0(ctx context.Context, marsh
 | 
				
			|||||||
	var protoReq DebugCreateNodeRequest
 | 
						var protoReq DebugCreateNodeRequest
 | 
				
			||||||
	var metadata runtime.ServerMetadata
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	newReader, berr := utilities.IOReaderFactory(req.Body)
 | 
						if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
 | 
				
			||||||
	if berr != nil {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -453,11 +421,7 @@ func request_HeadscaleService_SetTags_0(ctx context.Context, marshaler runtime.M
 | 
				
			|||||||
	var protoReq SetTagsRequest
 | 
						var protoReq SetTagsRequest
 | 
				
			||||||
	var metadata runtime.ServerMetadata
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	newReader, berr := utilities.IOReaderFactory(req.Body)
 | 
						if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
 | 
				
			||||||
	if berr != nil {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -487,11 +451,7 @@ func local_request_HeadscaleService_SetTags_0(ctx context.Context, marshaler run
 | 
				
			|||||||
	var protoReq SetTagsRequest
 | 
						var protoReq SetTagsRequest
 | 
				
			||||||
	var metadata runtime.ServerMetadata
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	newReader, berr := utilities.IOReaderFactory(req.Body)
 | 
						if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
 | 
				
			||||||
	if berr != nil {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1065,11 +1025,7 @@ func request_HeadscaleService_CreateApiKey_0(ctx context.Context, marshaler runt
 | 
				
			|||||||
	var protoReq CreateApiKeyRequest
 | 
						var protoReq CreateApiKeyRequest
 | 
				
			||||||
	var metadata runtime.ServerMetadata
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	newReader, berr := utilities.IOReaderFactory(req.Body)
 | 
						if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
 | 
				
			||||||
	if berr != nil {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1082,11 +1038,7 @@ func local_request_HeadscaleService_CreateApiKey_0(ctx context.Context, marshale
 | 
				
			|||||||
	var protoReq CreateApiKeyRequest
 | 
						var protoReq CreateApiKeyRequest
 | 
				
			||||||
	var metadata runtime.ServerMetadata
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	newReader, berr := utilities.IOReaderFactory(req.Body)
 | 
						if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
 | 
				
			||||||
	if berr != nil {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1099,11 +1051,7 @@ func request_HeadscaleService_ExpireApiKey_0(ctx context.Context, marshaler runt
 | 
				
			|||||||
	var protoReq ExpireApiKeyRequest
 | 
						var protoReq ExpireApiKeyRequest
 | 
				
			||||||
	var metadata runtime.ServerMetadata
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	newReader, berr := utilities.IOReaderFactory(req.Body)
 | 
						if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
 | 
				
			||||||
	if berr != nil {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1116,11 +1064,7 @@ func local_request_HeadscaleService_ExpireApiKey_0(ctx context.Context, marshale
 | 
				
			|||||||
	var protoReq ExpireApiKeyRequest
 | 
						var protoReq ExpireApiKeyRequest
 | 
				
			||||||
	var metadata runtime.ServerMetadata
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	newReader, berr := utilities.IOReaderFactory(req.Body)
 | 
						if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
 | 
				
			||||||
	if berr != nil {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
 | 
					 | 
				
			||||||
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1861,7 +1805,7 @@ func RegisterHeadscaleServiceHandlerServer(ctx context.Context, mux *runtime.Ser
 | 
				
			|||||||
// RegisterHeadscaleServiceHandlerFromEndpoint is same as RegisterHeadscaleServiceHandler but
 | 
					// RegisterHeadscaleServiceHandlerFromEndpoint is same as RegisterHeadscaleServiceHandler but
 | 
				
			||||||
// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
 | 
					// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
 | 
				
			||||||
func RegisterHeadscaleServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
 | 
					func RegisterHeadscaleServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
 | 
				
			||||||
	conn, err := grpc.Dial(endpoint, opts...)
 | 
						conn, err := grpc.DialContext(ctx, endpoint, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
 | 
					// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
 | 
				
			||||||
// versions:
 | 
					// versions:
 | 
				
			||||||
// - protoc-gen-go-grpc v1.2.0
 | 
					// - protoc-gen-go-grpc v1.3.0
 | 
				
			||||||
// - protoc             (unknown)
 | 
					// - protoc             (unknown)
 | 
				
			||||||
// source: headscale/v1/headscale.proto
 | 
					// source: headscale/v1/headscale.proto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -18,6 +18,35 @@ import (
 | 
				
			|||||||
// Requires gRPC-Go v1.32.0 or later.
 | 
					// Requires gRPC-Go v1.32.0 or later.
 | 
				
			||||||
const _ = grpc.SupportPackageIsVersion7
 | 
					const _ = grpc.SupportPackageIsVersion7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						HeadscaleService_GetUser_FullMethodName          = "/headscale.v1.HeadscaleService/GetUser"
 | 
				
			||||||
 | 
						HeadscaleService_CreateUser_FullMethodName       = "/headscale.v1.HeadscaleService/CreateUser"
 | 
				
			||||||
 | 
						HeadscaleService_RenameUser_FullMethodName       = "/headscale.v1.HeadscaleService/RenameUser"
 | 
				
			||||||
 | 
						HeadscaleService_DeleteUser_FullMethodName       = "/headscale.v1.HeadscaleService/DeleteUser"
 | 
				
			||||||
 | 
						HeadscaleService_ListUsers_FullMethodName        = "/headscale.v1.HeadscaleService/ListUsers"
 | 
				
			||||||
 | 
						HeadscaleService_CreatePreAuthKey_FullMethodName = "/headscale.v1.HeadscaleService/CreatePreAuthKey"
 | 
				
			||||||
 | 
						HeadscaleService_ExpirePreAuthKey_FullMethodName = "/headscale.v1.HeadscaleService/ExpirePreAuthKey"
 | 
				
			||||||
 | 
						HeadscaleService_ListPreAuthKeys_FullMethodName  = "/headscale.v1.HeadscaleService/ListPreAuthKeys"
 | 
				
			||||||
 | 
						HeadscaleService_DebugCreateNode_FullMethodName  = "/headscale.v1.HeadscaleService/DebugCreateNode"
 | 
				
			||||||
 | 
						HeadscaleService_GetNode_FullMethodName          = "/headscale.v1.HeadscaleService/GetNode"
 | 
				
			||||||
 | 
						HeadscaleService_SetTags_FullMethodName          = "/headscale.v1.HeadscaleService/SetTags"
 | 
				
			||||||
 | 
						HeadscaleService_RegisterNode_FullMethodName     = "/headscale.v1.HeadscaleService/RegisterNode"
 | 
				
			||||||
 | 
						HeadscaleService_DeleteNode_FullMethodName       = "/headscale.v1.HeadscaleService/DeleteNode"
 | 
				
			||||||
 | 
						HeadscaleService_ExpireNode_FullMethodName       = "/headscale.v1.HeadscaleService/ExpireNode"
 | 
				
			||||||
 | 
						HeadscaleService_RenameNode_FullMethodName       = "/headscale.v1.HeadscaleService/RenameNode"
 | 
				
			||||||
 | 
						HeadscaleService_ListNodes_FullMethodName        = "/headscale.v1.HeadscaleService/ListNodes"
 | 
				
			||||||
 | 
						HeadscaleService_MoveNode_FullMethodName         = "/headscale.v1.HeadscaleService/MoveNode"
 | 
				
			||||||
 | 
						HeadscaleService_GetRoutes_FullMethodName        = "/headscale.v1.HeadscaleService/GetRoutes"
 | 
				
			||||||
 | 
						HeadscaleService_EnableRoute_FullMethodName      = "/headscale.v1.HeadscaleService/EnableRoute"
 | 
				
			||||||
 | 
						HeadscaleService_DisableRoute_FullMethodName     = "/headscale.v1.HeadscaleService/DisableRoute"
 | 
				
			||||||
 | 
						HeadscaleService_GetNodeRoutes_FullMethodName    = "/headscale.v1.HeadscaleService/GetNodeRoutes"
 | 
				
			||||||
 | 
						HeadscaleService_DeleteRoute_FullMethodName      = "/headscale.v1.HeadscaleService/DeleteRoute"
 | 
				
			||||||
 | 
						HeadscaleService_CreateApiKey_FullMethodName     = "/headscale.v1.HeadscaleService/CreateApiKey"
 | 
				
			||||||
 | 
						HeadscaleService_ExpireApiKey_FullMethodName     = "/headscale.v1.HeadscaleService/ExpireApiKey"
 | 
				
			||||||
 | 
						HeadscaleService_ListApiKeys_FullMethodName      = "/headscale.v1.HeadscaleService/ListApiKeys"
 | 
				
			||||||
 | 
						HeadscaleService_DeleteApiKey_FullMethodName     = "/headscale.v1.HeadscaleService/DeleteApiKey"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// HeadscaleServiceClient is the client API for HeadscaleService service.
 | 
					// HeadscaleServiceClient is the client API for HeadscaleService service.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 | 
					// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 | 
				
			||||||
@ -65,7 +94,7 @@ func NewHeadscaleServiceClient(cc grpc.ClientConnInterface) HeadscaleServiceClie
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) GetUser(ctx context.Context, in *GetUserRequest, opts ...grpc.CallOption) (*GetUserResponse, error) {
 | 
					func (c *headscaleServiceClient) GetUser(ctx context.Context, in *GetUserRequest, opts ...grpc.CallOption) (*GetUserResponse, error) {
 | 
				
			||||||
	out := new(GetUserResponse)
 | 
						out := new(GetUserResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/GetUser", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_GetUser_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -74,7 +103,7 @@ func (c *headscaleServiceClient) GetUser(ctx context.Context, in *GetUserRequest
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) CreateUser(ctx context.Context, in *CreateUserRequest, opts ...grpc.CallOption) (*CreateUserResponse, error) {
 | 
					func (c *headscaleServiceClient) CreateUser(ctx context.Context, in *CreateUserRequest, opts ...grpc.CallOption) (*CreateUserResponse, error) {
 | 
				
			||||||
	out := new(CreateUserResponse)
 | 
						out := new(CreateUserResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/CreateUser", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_CreateUser_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -83,7 +112,7 @@ func (c *headscaleServiceClient) CreateUser(ctx context.Context, in *CreateUserR
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) RenameUser(ctx context.Context, in *RenameUserRequest, opts ...grpc.CallOption) (*RenameUserResponse, error) {
 | 
					func (c *headscaleServiceClient) RenameUser(ctx context.Context, in *RenameUserRequest, opts ...grpc.CallOption) (*RenameUserResponse, error) {
 | 
				
			||||||
	out := new(RenameUserResponse)
 | 
						out := new(RenameUserResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/RenameUser", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_RenameUser_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -92,7 +121,7 @@ func (c *headscaleServiceClient) RenameUser(ctx context.Context, in *RenameUserR
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) DeleteUser(ctx context.Context, in *DeleteUserRequest, opts ...grpc.CallOption) (*DeleteUserResponse, error) {
 | 
					func (c *headscaleServiceClient) DeleteUser(ctx context.Context, in *DeleteUserRequest, opts ...grpc.CallOption) (*DeleteUserResponse, error) {
 | 
				
			||||||
	out := new(DeleteUserResponse)
 | 
						out := new(DeleteUserResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/DeleteUser", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_DeleteUser_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -101,7 +130,7 @@ func (c *headscaleServiceClient) DeleteUser(ctx context.Context, in *DeleteUserR
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) ListUsers(ctx context.Context, in *ListUsersRequest, opts ...grpc.CallOption) (*ListUsersResponse, error) {
 | 
					func (c *headscaleServiceClient) ListUsers(ctx context.Context, in *ListUsersRequest, opts ...grpc.CallOption) (*ListUsersResponse, error) {
 | 
				
			||||||
	out := new(ListUsersResponse)
 | 
						out := new(ListUsersResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/ListUsers", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_ListUsers_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -110,7 +139,7 @@ func (c *headscaleServiceClient) ListUsers(ctx context.Context, in *ListUsersReq
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) CreatePreAuthKey(ctx context.Context, in *CreatePreAuthKeyRequest, opts ...grpc.CallOption) (*CreatePreAuthKeyResponse, error) {
 | 
					func (c *headscaleServiceClient) CreatePreAuthKey(ctx context.Context, in *CreatePreAuthKeyRequest, opts ...grpc.CallOption) (*CreatePreAuthKeyResponse, error) {
 | 
				
			||||||
	out := new(CreatePreAuthKeyResponse)
 | 
						out := new(CreatePreAuthKeyResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/CreatePreAuthKey", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_CreatePreAuthKey_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -119,7 +148,7 @@ func (c *headscaleServiceClient) CreatePreAuthKey(ctx context.Context, in *Creat
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) ExpirePreAuthKey(ctx context.Context, in *ExpirePreAuthKeyRequest, opts ...grpc.CallOption) (*ExpirePreAuthKeyResponse, error) {
 | 
					func (c *headscaleServiceClient) ExpirePreAuthKey(ctx context.Context, in *ExpirePreAuthKeyRequest, opts ...grpc.CallOption) (*ExpirePreAuthKeyResponse, error) {
 | 
				
			||||||
	out := new(ExpirePreAuthKeyResponse)
 | 
						out := new(ExpirePreAuthKeyResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/ExpirePreAuthKey", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_ExpirePreAuthKey_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -128,7 +157,7 @@ func (c *headscaleServiceClient) ExpirePreAuthKey(ctx context.Context, in *Expir
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) ListPreAuthKeys(ctx context.Context, in *ListPreAuthKeysRequest, opts ...grpc.CallOption) (*ListPreAuthKeysResponse, error) {
 | 
					func (c *headscaleServiceClient) ListPreAuthKeys(ctx context.Context, in *ListPreAuthKeysRequest, opts ...grpc.CallOption) (*ListPreAuthKeysResponse, error) {
 | 
				
			||||||
	out := new(ListPreAuthKeysResponse)
 | 
						out := new(ListPreAuthKeysResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/ListPreAuthKeys", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_ListPreAuthKeys_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -137,7 +166,7 @@ func (c *headscaleServiceClient) ListPreAuthKeys(ctx context.Context, in *ListPr
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) DebugCreateNode(ctx context.Context, in *DebugCreateNodeRequest, opts ...grpc.CallOption) (*DebugCreateNodeResponse, error) {
 | 
					func (c *headscaleServiceClient) DebugCreateNode(ctx context.Context, in *DebugCreateNodeRequest, opts ...grpc.CallOption) (*DebugCreateNodeResponse, error) {
 | 
				
			||||||
	out := new(DebugCreateNodeResponse)
 | 
						out := new(DebugCreateNodeResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/DebugCreateNode", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_DebugCreateNode_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -146,7 +175,7 @@ func (c *headscaleServiceClient) DebugCreateNode(ctx context.Context, in *DebugC
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) GetNode(ctx context.Context, in *GetNodeRequest, opts ...grpc.CallOption) (*GetNodeResponse, error) {
 | 
					func (c *headscaleServiceClient) GetNode(ctx context.Context, in *GetNodeRequest, opts ...grpc.CallOption) (*GetNodeResponse, error) {
 | 
				
			||||||
	out := new(GetNodeResponse)
 | 
						out := new(GetNodeResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/GetNode", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_GetNode_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -155,7 +184,7 @@ func (c *headscaleServiceClient) GetNode(ctx context.Context, in *GetNodeRequest
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) SetTags(ctx context.Context, in *SetTagsRequest, opts ...grpc.CallOption) (*SetTagsResponse, error) {
 | 
					func (c *headscaleServiceClient) SetTags(ctx context.Context, in *SetTagsRequest, opts ...grpc.CallOption) (*SetTagsResponse, error) {
 | 
				
			||||||
	out := new(SetTagsResponse)
 | 
						out := new(SetTagsResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/SetTags", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_SetTags_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -164,7 +193,7 @@ func (c *headscaleServiceClient) SetTags(ctx context.Context, in *SetTagsRequest
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) RegisterNode(ctx context.Context, in *RegisterNodeRequest, opts ...grpc.CallOption) (*RegisterNodeResponse, error) {
 | 
					func (c *headscaleServiceClient) RegisterNode(ctx context.Context, in *RegisterNodeRequest, opts ...grpc.CallOption) (*RegisterNodeResponse, error) {
 | 
				
			||||||
	out := new(RegisterNodeResponse)
 | 
						out := new(RegisterNodeResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/RegisterNode", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_RegisterNode_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -173,7 +202,7 @@ func (c *headscaleServiceClient) RegisterNode(ctx context.Context, in *RegisterN
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) DeleteNode(ctx context.Context, in *DeleteNodeRequest, opts ...grpc.CallOption) (*DeleteNodeResponse, error) {
 | 
					func (c *headscaleServiceClient) DeleteNode(ctx context.Context, in *DeleteNodeRequest, opts ...grpc.CallOption) (*DeleteNodeResponse, error) {
 | 
				
			||||||
	out := new(DeleteNodeResponse)
 | 
						out := new(DeleteNodeResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/DeleteNode", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_DeleteNode_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -182,7 +211,7 @@ func (c *headscaleServiceClient) DeleteNode(ctx context.Context, in *DeleteNodeR
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) ExpireNode(ctx context.Context, in *ExpireNodeRequest, opts ...grpc.CallOption) (*ExpireNodeResponse, error) {
 | 
					func (c *headscaleServiceClient) ExpireNode(ctx context.Context, in *ExpireNodeRequest, opts ...grpc.CallOption) (*ExpireNodeResponse, error) {
 | 
				
			||||||
	out := new(ExpireNodeResponse)
 | 
						out := new(ExpireNodeResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/ExpireNode", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_ExpireNode_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -191,7 +220,7 @@ func (c *headscaleServiceClient) ExpireNode(ctx context.Context, in *ExpireNodeR
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) RenameNode(ctx context.Context, in *RenameNodeRequest, opts ...grpc.CallOption) (*RenameNodeResponse, error) {
 | 
					func (c *headscaleServiceClient) RenameNode(ctx context.Context, in *RenameNodeRequest, opts ...grpc.CallOption) (*RenameNodeResponse, error) {
 | 
				
			||||||
	out := new(RenameNodeResponse)
 | 
						out := new(RenameNodeResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/RenameNode", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_RenameNode_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -200,7 +229,7 @@ func (c *headscaleServiceClient) RenameNode(ctx context.Context, in *RenameNodeR
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) ListNodes(ctx context.Context, in *ListNodesRequest, opts ...grpc.CallOption) (*ListNodesResponse, error) {
 | 
					func (c *headscaleServiceClient) ListNodes(ctx context.Context, in *ListNodesRequest, opts ...grpc.CallOption) (*ListNodesResponse, error) {
 | 
				
			||||||
	out := new(ListNodesResponse)
 | 
						out := new(ListNodesResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/ListNodes", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_ListNodes_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -209,7 +238,7 @@ func (c *headscaleServiceClient) ListNodes(ctx context.Context, in *ListNodesReq
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) MoveNode(ctx context.Context, in *MoveNodeRequest, opts ...grpc.CallOption) (*MoveNodeResponse, error) {
 | 
					func (c *headscaleServiceClient) MoveNode(ctx context.Context, in *MoveNodeRequest, opts ...grpc.CallOption) (*MoveNodeResponse, error) {
 | 
				
			||||||
	out := new(MoveNodeResponse)
 | 
						out := new(MoveNodeResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/MoveNode", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_MoveNode_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -218,7 +247,7 @@ func (c *headscaleServiceClient) MoveNode(ctx context.Context, in *MoveNodeReque
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) GetRoutes(ctx context.Context, in *GetRoutesRequest, opts ...grpc.CallOption) (*GetRoutesResponse, error) {
 | 
					func (c *headscaleServiceClient) GetRoutes(ctx context.Context, in *GetRoutesRequest, opts ...grpc.CallOption) (*GetRoutesResponse, error) {
 | 
				
			||||||
	out := new(GetRoutesResponse)
 | 
						out := new(GetRoutesResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/GetRoutes", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_GetRoutes_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -227,7 +256,7 @@ func (c *headscaleServiceClient) GetRoutes(ctx context.Context, in *GetRoutesReq
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) EnableRoute(ctx context.Context, in *EnableRouteRequest, opts ...grpc.CallOption) (*EnableRouteResponse, error) {
 | 
					func (c *headscaleServiceClient) EnableRoute(ctx context.Context, in *EnableRouteRequest, opts ...grpc.CallOption) (*EnableRouteResponse, error) {
 | 
				
			||||||
	out := new(EnableRouteResponse)
 | 
						out := new(EnableRouteResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/EnableRoute", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_EnableRoute_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -236,7 +265,7 @@ func (c *headscaleServiceClient) EnableRoute(ctx context.Context, in *EnableRout
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) DisableRoute(ctx context.Context, in *DisableRouteRequest, opts ...grpc.CallOption) (*DisableRouteResponse, error) {
 | 
					func (c *headscaleServiceClient) DisableRoute(ctx context.Context, in *DisableRouteRequest, opts ...grpc.CallOption) (*DisableRouteResponse, error) {
 | 
				
			||||||
	out := new(DisableRouteResponse)
 | 
						out := new(DisableRouteResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/DisableRoute", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_DisableRoute_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -245,7 +274,7 @@ func (c *headscaleServiceClient) DisableRoute(ctx context.Context, in *DisableRo
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) GetNodeRoutes(ctx context.Context, in *GetNodeRoutesRequest, opts ...grpc.CallOption) (*GetNodeRoutesResponse, error) {
 | 
					func (c *headscaleServiceClient) GetNodeRoutes(ctx context.Context, in *GetNodeRoutesRequest, opts ...grpc.CallOption) (*GetNodeRoutesResponse, error) {
 | 
				
			||||||
	out := new(GetNodeRoutesResponse)
 | 
						out := new(GetNodeRoutesResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/GetNodeRoutes", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_GetNodeRoutes_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -254,7 +283,7 @@ func (c *headscaleServiceClient) GetNodeRoutes(ctx context.Context, in *GetNodeR
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) DeleteRoute(ctx context.Context, in *DeleteRouteRequest, opts ...grpc.CallOption) (*DeleteRouteResponse, error) {
 | 
					func (c *headscaleServiceClient) DeleteRoute(ctx context.Context, in *DeleteRouteRequest, opts ...grpc.CallOption) (*DeleteRouteResponse, error) {
 | 
				
			||||||
	out := new(DeleteRouteResponse)
 | 
						out := new(DeleteRouteResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/DeleteRoute", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_DeleteRoute_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -263,7 +292,7 @@ func (c *headscaleServiceClient) DeleteRoute(ctx context.Context, in *DeleteRout
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) CreateApiKey(ctx context.Context, in *CreateApiKeyRequest, opts ...grpc.CallOption) (*CreateApiKeyResponse, error) {
 | 
					func (c *headscaleServiceClient) CreateApiKey(ctx context.Context, in *CreateApiKeyRequest, opts ...grpc.CallOption) (*CreateApiKeyResponse, error) {
 | 
				
			||||||
	out := new(CreateApiKeyResponse)
 | 
						out := new(CreateApiKeyResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/CreateApiKey", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_CreateApiKey_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -272,7 +301,7 @@ func (c *headscaleServiceClient) CreateApiKey(ctx context.Context, in *CreateApi
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) ExpireApiKey(ctx context.Context, in *ExpireApiKeyRequest, opts ...grpc.CallOption) (*ExpireApiKeyResponse, error) {
 | 
					func (c *headscaleServiceClient) ExpireApiKey(ctx context.Context, in *ExpireApiKeyRequest, opts ...grpc.CallOption) (*ExpireApiKeyResponse, error) {
 | 
				
			||||||
	out := new(ExpireApiKeyResponse)
 | 
						out := new(ExpireApiKeyResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/ExpireApiKey", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_ExpireApiKey_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -281,7 +310,7 @@ func (c *headscaleServiceClient) ExpireApiKey(ctx context.Context, in *ExpireApi
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) ListApiKeys(ctx context.Context, in *ListApiKeysRequest, opts ...grpc.CallOption) (*ListApiKeysResponse, error) {
 | 
					func (c *headscaleServiceClient) ListApiKeys(ctx context.Context, in *ListApiKeysRequest, opts ...grpc.CallOption) (*ListApiKeysResponse, error) {
 | 
				
			||||||
	out := new(ListApiKeysResponse)
 | 
						out := new(ListApiKeysResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/ListApiKeys", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_ListApiKeys_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -290,7 +319,7 @@ func (c *headscaleServiceClient) ListApiKeys(ctx context.Context, in *ListApiKey
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) DeleteApiKey(ctx context.Context, in *DeleteApiKeyRequest, opts ...grpc.CallOption) (*DeleteApiKeyResponse, error) {
 | 
					func (c *headscaleServiceClient) DeleteApiKey(ctx context.Context, in *DeleteApiKeyRequest, opts ...grpc.CallOption) (*DeleteApiKeyResponse, error) {
 | 
				
			||||||
	out := new(DeleteApiKeyResponse)
 | 
						out := new(DeleteApiKeyResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/DeleteApiKey", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_DeleteApiKey_FullMethodName, in, out, opts...)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -440,7 +469,7 @@ func _HeadscaleService_GetUser_Handler(srv interface{}, ctx context.Context, dec
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/GetUser",
 | 
							FullMethod: HeadscaleService_GetUser_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).GetUser(ctx, req.(*GetUserRequest))
 | 
							return srv.(HeadscaleServiceServer).GetUser(ctx, req.(*GetUserRequest))
 | 
				
			||||||
@ -458,7 +487,7 @@ func _HeadscaleService_CreateUser_Handler(srv interface{}, ctx context.Context,
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/CreateUser",
 | 
							FullMethod: HeadscaleService_CreateUser_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).CreateUser(ctx, req.(*CreateUserRequest))
 | 
							return srv.(HeadscaleServiceServer).CreateUser(ctx, req.(*CreateUserRequest))
 | 
				
			||||||
@ -476,7 +505,7 @@ func _HeadscaleService_RenameUser_Handler(srv interface{}, ctx context.Context,
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/RenameUser",
 | 
							FullMethod: HeadscaleService_RenameUser_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).RenameUser(ctx, req.(*RenameUserRequest))
 | 
							return srv.(HeadscaleServiceServer).RenameUser(ctx, req.(*RenameUserRequest))
 | 
				
			||||||
@ -494,7 +523,7 @@ func _HeadscaleService_DeleteUser_Handler(srv interface{}, ctx context.Context,
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/DeleteUser",
 | 
							FullMethod: HeadscaleService_DeleteUser_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).DeleteUser(ctx, req.(*DeleteUserRequest))
 | 
							return srv.(HeadscaleServiceServer).DeleteUser(ctx, req.(*DeleteUserRequest))
 | 
				
			||||||
@ -512,7 +541,7 @@ func _HeadscaleService_ListUsers_Handler(srv interface{}, ctx context.Context, d
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/ListUsers",
 | 
							FullMethod: HeadscaleService_ListUsers_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).ListUsers(ctx, req.(*ListUsersRequest))
 | 
							return srv.(HeadscaleServiceServer).ListUsers(ctx, req.(*ListUsersRequest))
 | 
				
			||||||
@ -530,7 +559,7 @@ func _HeadscaleService_CreatePreAuthKey_Handler(srv interface{}, ctx context.Con
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/CreatePreAuthKey",
 | 
							FullMethod: HeadscaleService_CreatePreAuthKey_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).CreatePreAuthKey(ctx, req.(*CreatePreAuthKeyRequest))
 | 
							return srv.(HeadscaleServiceServer).CreatePreAuthKey(ctx, req.(*CreatePreAuthKeyRequest))
 | 
				
			||||||
@ -548,7 +577,7 @@ func _HeadscaleService_ExpirePreAuthKey_Handler(srv interface{}, ctx context.Con
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/ExpirePreAuthKey",
 | 
							FullMethod: HeadscaleService_ExpirePreAuthKey_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).ExpirePreAuthKey(ctx, req.(*ExpirePreAuthKeyRequest))
 | 
							return srv.(HeadscaleServiceServer).ExpirePreAuthKey(ctx, req.(*ExpirePreAuthKeyRequest))
 | 
				
			||||||
@ -566,7 +595,7 @@ func _HeadscaleService_ListPreAuthKeys_Handler(srv interface{}, ctx context.Cont
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/ListPreAuthKeys",
 | 
							FullMethod: HeadscaleService_ListPreAuthKeys_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).ListPreAuthKeys(ctx, req.(*ListPreAuthKeysRequest))
 | 
							return srv.(HeadscaleServiceServer).ListPreAuthKeys(ctx, req.(*ListPreAuthKeysRequest))
 | 
				
			||||||
@ -584,7 +613,7 @@ func _HeadscaleService_DebugCreateNode_Handler(srv interface{}, ctx context.Cont
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/DebugCreateNode",
 | 
							FullMethod: HeadscaleService_DebugCreateNode_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).DebugCreateNode(ctx, req.(*DebugCreateNodeRequest))
 | 
							return srv.(HeadscaleServiceServer).DebugCreateNode(ctx, req.(*DebugCreateNodeRequest))
 | 
				
			||||||
@ -602,7 +631,7 @@ func _HeadscaleService_GetNode_Handler(srv interface{}, ctx context.Context, dec
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/GetNode",
 | 
							FullMethod: HeadscaleService_GetNode_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).GetNode(ctx, req.(*GetNodeRequest))
 | 
							return srv.(HeadscaleServiceServer).GetNode(ctx, req.(*GetNodeRequest))
 | 
				
			||||||
@ -620,7 +649,7 @@ func _HeadscaleService_SetTags_Handler(srv interface{}, ctx context.Context, dec
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/SetTags",
 | 
							FullMethod: HeadscaleService_SetTags_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).SetTags(ctx, req.(*SetTagsRequest))
 | 
							return srv.(HeadscaleServiceServer).SetTags(ctx, req.(*SetTagsRequest))
 | 
				
			||||||
@ -638,7 +667,7 @@ func _HeadscaleService_RegisterNode_Handler(srv interface{}, ctx context.Context
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/RegisterNode",
 | 
							FullMethod: HeadscaleService_RegisterNode_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).RegisterNode(ctx, req.(*RegisterNodeRequest))
 | 
							return srv.(HeadscaleServiceServer).RegisterNode(ctx, req.(*RegisterNodeRequest))
 | 
				
			||||||
@ -656,7 +685,7 @@ func _HeadscaleService_DeleteNode_Handler(srv interface{}, ctx context.Context,
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/DeleteNode",
 | 
							FullMethod: HeadscaleService_DeleteNode_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).DeleteNode(ctx, req.(*DeleteNodeRequest))
 | 
							return srv.(HeadscaleServiceServer).DeleteNode(ctx, req.(*DeleteNodeRequest))
 | 
				
			||||||
@ -674,7 +703,7 @@ func _HeadscaleService_ExpireNode_Handler(srv interface{}, ctx context.Context,
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/ExpireNode",
 | 
							FullMethod: HeadscaleService_ExpireNode_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).ExpireNode(ctx, req.(*ExpireNodeRequest))
 | 
							return srv.(HeadscaleServiceServer).ExpireNode(ctx, req.(*ExpireNodeRequest))
 | 
				
			||||||
@ -692,7 +721,7 @@ func _HeadscaleService_RenameNode_Handler(srv interface{}, ctx context.Context,
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/RenameNode",
 | 
							FullMethod: HeadscaleService_RenameNode_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).RenameNode(ctx, req.(*RenameNodeRequest))
 | 
							return srv.(HeadscaleServiceServer).RenameNode(ctx, req.(*RenameNodeRequest))
 | 
				
			||||||
@ -710,7 +739,7 @@ func _HeadscaleService_ListNodes_Handler(srv interface{}, ctx context.Context, d
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/ListNodes",
 | 
							FullMethod: HeadscaleService_ListNodes_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).ListNodes(ctx, req.(*ListNodesRequest))
 | 
							return srv.(HeadscaleServiceServer).ListNodes(ctx, req.(*ListNodesRequest))
 | 
				
			||||||
@ -728,7 +757,7 @@ func _HeadscaleService_MoveNode_Handler(srv interface{}, ctx context.Context, de
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/MoveNode",
 | 
							FullMethod: HeadscaleService_MoveNode_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).MoveNode(ctx, req.(*MoveNodeRequest))
 | 
							return srv.(HeadscaleServiceServer).MoveNode(ctx, req.(*MoveNodeRequest))
 | 
				
			||||||
@ -746,7 +775,7 @@ func _HeadscaleService_GetRoutes_Handler(srv interface{}, ctx context.Context, d
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/GetRoutes",
 | 
							FullMethod: HeadscaleService_GetRoutes_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).GetRoutes(ctx, req.(*GetRoutesRequest))
 | 
							return srv.(HeadscaleServiceServer).GetRoutes(ctx, req.(*GetRoutesRequest))
 | 
				
			||||||
@ -764,7 +793,7 @@ func _HeadscaleService_EnableRoute_Handler(srv interface{}, ctx context.Context,
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/EnableRoute",
 | 
							FullMethod: HeadscaleService_EnableRoute_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).EnableRoute(ctx, req.(*EnableRouteRequest))
 | 
							return srv.(HeadscaleServiceServer).EnableRoute(ctx, req.(*EnableRouteRequest))
 | 
				
			||||||
@ -782,7 +811,7 @@ func _HeadscaleService_DisableRoute_Handler(srv interface{}, ctx context.Context
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/DisableRoute",
 | 
							FullMethod: HeadscaleService_DisableRoute_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).DisableRoute(ctx, req.(*DisableRouteRequest))
 | 
							return srv.(HeadscaleServiceServer).DisableRoute(ctx, req.(*DisableRouteRequest))
 | 
				
			||||||
@ -800,7 +829,7 @@ func _HeadscaleService_GetNodeRoutes_Handler(srv interface{}, ctx context.Contex
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/GetNodeRoutes",
 | 
							FullMethod: HeadscaleService_GetNodeRoutes_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).GetNodeRoutes(ctx, req.(*GetNodeRoutesRequest))
 | 
							return srv.(HeadscaleServiceServer).GetNodeRoutes(ctx, req.(*GetNodeRoutesRequest))
 | 
				
			||||||
@ -818,7 +847,7 @@ func _HeadscaleService_DeleteRoute_Handler(srv interface{}, ctx context.Context,
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/DeleteRoute",
 | 
							FullMethod: HeadscaleService_DeleteRoute_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).DeleteRoute(ctx, req.(*DeleteRouteRequest))
 | 
							return srv.(HeadscaleServiceServer).DeleteRoute(ctx, req.(*DeleteRouteRequest))
 | 
				
			||||||
@ -836,7 +865,7 @@ func _HeadscaleService_CreateApiKey_Handler(srv interface{}, ctx context.Context
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/CreateApiKey",
 | 
							FullMethod: HeadscaleService_CreateApiKey_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).CreateApiKey(ctx, req.(*CreateApiKeyRequest))
 | 
							return srv.(HeadscaleServiceServer).CreateApiKey(ctx, req.(*CreateApiKeyRequest))
 | 
				
			||||||
@ -854,7 +883,7 @@ func _HeadscaleService_ExpireApiKey_Handler(srv interface{}, ctx context.Context
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/ExpireApiKey",
 | 
							FullMethod: HeadscaleService_ExpireApiKey_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).ExpireApiKey(ctx, req.(*ExpireApiKeyRequest))
 | 
							return srv.(HeadscaleServiceServer).ExpireApiKey(ctx, req.(*ExpireApiKeyRequest))
 | 
				
			||||||
@ -872,7 +901,7 @@ func _HeadscaleService_ListApiKeys_Handler(srv interface{}, ctx context.Context,
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/ListApiKeys",
 | 
							FullMethod: HeadscaleService_ListApiKeys_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).ListApiKeys(ctx, req.(*ListApiKeysRequest))
 | 
							return srv.(HeadscaleServiceServer).ListApiKeys(ctx, req.(*ListApiKeysRequest))
 | 
				
			||||||
@ -890,7 +919,7 @@ func _HeadscaleService_DeleteApiKey_Handler(srv interface{}, ctx context.Context
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
		Server:     srv,
 | 
							Server:     srv,
 | 
				
			||||||
		FullMethod: "/headscale.v1.HeadscaleService/DeleteApiKey",
 | 
							FullMethod: HeadscaleService_DeleteApiKey_FullMethodName,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
		return srv.(HeadscaleServiceServer).DeleteApiKey(ctx, req.(*DeleteApiKeyRequest))
 | 
							return srv.(HeadscaleServiceServer).DeleteApiKey(ctx, req.(*DeleteApiKeyRequest))
 | 
				
			||||||
 | 
				
			|||||||
@ -86,7 +86,6 @@ type Node struct {
 | 
				
			|||||||
	Name           string                 `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
 | 
						Name           string                 `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
 | 
				
			||||||
	User           *User                  `protobuf:"bytes,7,opt,name=user,proto3" json:"user,omitempty"`
 | 
						User           *User                  `protobuf:"bytes,7,opt,name=user,proto3" json:"user,omitempty"`
 | 
				
			||||||
	LastSeen       *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
 | 
						LastSeen       *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
 | 
				
			||||||
	LastSuccessfulUpdate *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=last_successful_update,json=lastSuccessfulUpdate,proto3" json:"last_successful_update,omitempty"`
 | 
					 | 
				
			||||||
	Expiry         *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=expiry,proto3" json:"expiry,omitempty"`
 | 
						Expiry         *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=expiry,proto3" json:"expiry,omitempty"`
 | 
				
			||||||
	PreAuthKey     *PreAuthKey            `protobuf:"bytes,11,opt,name=pre_auth_key,json=preAuthKey,proto3" json:"pre_auth_key,omitempty"`
 | 
						PreAuthKey     *PreAuthKey            `protobuf:"bytes,11,opt,name=pre_auth_key,json=preAuthKey,proto3" json:"pre_auth_key,omitempty"`
 | 
				
			||||||
	CreatedAt      *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
 | 
						CreatedAt      *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
 | 
				
			||||||
@ -186,13 +185,6 @@ func (x *Node) GetLastSeen() *timestamppb.Timestamp {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *Node) GetLastSuccessfulUpdate() *timestamppb.Timestamp {
 | 
					 | 
				
			||||||
	if x != nil {
 | 
					 | 
				
			||||||
		return x.LastSuccessfulUpdate
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (x *Node) GetExpiry() *timestamppb.Timestamp {
 | 
					func (x *Node) GetExpiry() *timestamppb.Timestamp {
 | 
				
			||||||
	if x != nil {
 | 
						if x != nil {
 | 
				
			||||||
		return x.Expiry
 | 
							return x.Expiry
 | 
				
			||||||
@ -1156,11 +1148,11 @@ var file_headscale_v1_node_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x73,
 | 
						0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x73,
 | 
				
			||||||
	0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
 | 
						0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
 | 
				
			||||||
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
 | 
						0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
 | 
				
			||||||
	0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63,
 | 
						0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63,
 | 
				
			||||||
	0x61, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74,
 | 
						0x61, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x65, 0x61, 0x75, 0x74, 0x68, 0x6b, 0x65,
 | 
				
			||||||
	0x6f, 0x1a, 0x1d, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f,
 | 
						0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61,
 | 
				
			||||||
	0x70, 0x72, 0x65, 0x61, 0x75, 0x74, 0x68, 0x6b, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 | 
						0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 | 
				
			||||||
	0x22, 0xeb, 0x05, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
 | 
						0x22, 0x9f, 0x05, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
 | 
				
			||||||
	0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x63,
 | 
						0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x63,
 | 
				
			||||||
	0x68, 0x69, 0x6e, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
 | 
						0x68, 0x69, 0x6e, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
 | 
				
			||||||
	0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x6f,
 | 
						0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x6f,
 | 
				
			||||||
@ -1176,115 +1168,110 @@ var file_headscale_v1_node_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x72, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x08,
 | 
						0x72, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x08,
 | 
				
			||||||
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
 | 
						0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
 | 
				
			||||||
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
 | 
						0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
 | 
				
			||||||
	0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x50, 0x0a, 0x16, 0x6c, 0x61,
 | 
						0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x65, 0x78,
 | 
				
			||||||
	0x73, 0x74, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x5f, 0x75, 0x70,
 | 
						0x70, 0x69, 0x72, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
 | 
				
			||||||
	0x64, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
 | 
					 | 
				
			||||||
	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
 | 
						0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
 | 
				
			||||||
	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63,
 | 
						0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x12, 0x3a,
 | 
				
			||||||
	0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x06,
 | 
						0x0a, 0x0c, 0x70, 0x72, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0b,
 | 
				
			||||||
	0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
 | 
						0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65,
 | 
				
			||||||
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
 | 
						0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x52, 0x0a,
 | 
				
			||||||
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79,
 | 
						0x70, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72,
 | 
				
			||||||
	0x12, 0x3a, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79,
 | 
						0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
 | 
				
			||||||
	0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61,
 | 
						0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
 | 
				
			||||||
	0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79,
 | 
						0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61,
 | 
				
			||||||
	0x52, 0x0a, 0x70, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x0a,
 | 
						0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x45, 0x0a, 0x0f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
 | 
				
			||||||
	0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b,
 | 
						0x72, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c,
 | 
				
			||||||
	0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
 | 
						0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
 | 
				
			||||||
	0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72,
 | 
						0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x0e, 0x72, 0x65,
 | 
				
			||||||
	0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x45, 0x0a, 0x0f, 0x72, 0x65, 0x67, 0x69, 0x73,
 | 
						0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1f, 0x0a, 0x0b,
 | 
				
			||||||
	0x74, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e,
 | 
						0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28,
 | 
				
			||||||
	0x32, 0x1c, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e,
 | 
						0x09, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x54, 0x61, 0x67, 0x73, 0x12, 0x21, 0x0a,
 | 
				
			||||||
	0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x0e,
 | 
						0x0c, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x13, 0x20,
 | 
				
			||||||
	0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1f,
 | 
						0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x54, 0x61, 0x67, 0x73,
 | 
				
			||||||
	0x0a, 0x0b, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x12, 0x20,
 | 
						0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x14,
 | 
				
			||||||
	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x54, 0x61, 0x67, 0x73, 0x12,
 | 
						0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x54, 0x61, 0x67, 0x73, 0x12,
 | 
				
			||||||
	0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18,
 | 
						0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x15, 0x20,
 | 
				
			||||||
	0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x54, 0x61,
 | 
						0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16,
 | 
				
			||||||
	0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73,
 | 
						0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06,
 | 
				
			||||||
	0x18, 0x14, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x54, 0x61, 0x67,
 | 
						0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0e,
 | 
				
			||||||
	0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
 | 
						0x10, 0x12, 0x22, 0x3b, 0x0a, 0x13, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f,
 | 
				
			||||||
	0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x4e, 0x61, 0x6d, 0x65,
 | 
						0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65,
 | 
				
			||||||
	0x12, 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08,
 | 
						0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x10, 0x0a,
 | 
				
			||||||
	0x52, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4a, 0x04, 0x08, 0x0e, 0x10, 0x12, 0x22, 0x3b,
 | 
						0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22,
 | 
				
			||||||
	0x0a, 0x13, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
 | 
						0x3e, 0x0a, 0x14, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52,
 | 
				
			||||||
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20,
 | 
						0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18,
 | 
				
			||||||
	0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
 | 
						0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c,
 | 
				
			||||||
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x3e, 0x0a, 0x14, 0x52,
 | 
						0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22,
 | 
				
			||||||
	0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
 | 
						0x29, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
 | 
				
			||||||
	0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
 | 
						0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
 | 
				
			||||||
	0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31,
 | 
						0x28, 0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x39, 0x0a, 0x0f, 0x47, 0x65,
 | 
				
			||||||
	0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x29, 0x0a, 0x0e, 0x47,
 | 
						0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a,
 | 
				
			||||||
	0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
 | 
					 | 
				
			||||||
	0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06,
 | 
					 | 
				
			||||||
	0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x39, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64,
 | 
					 | 
				
			||||||
	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64,
 | 
					 | 
				
			||||||
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63,
 | 
					 | 
				
			||||||
	0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64,
 | 
					 | 
				
			||||||
	0x65, 0x22, 0x3d, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75,
 | 
					 | 
				
			||||||
	0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01,
 | 
					 | 
				
			||||||
	0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
 | 
					 | 
				
			||||||
	0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73,
 | 
					 | 
				
			||||||
	0x22, 0x39, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
 | 
					 | 
				
			||||||
	0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
 | 
					 | 
				
			||||||
	0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31,
 | 
					 | 
				
			||||||
	0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x2c, 0x0a, 0x11, 0x44,
 | 
					 | 
				
			||||||
	0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
 | 
					 | 
				
			||||||
	0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
 | 
					 | 
				
			||||||
	0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c,
 | 
					 | 
				
			||||||
	0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
 | 
					 | 
				
			||||||
	0x2c, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71,
 | 
					 | 
				
			||||||
	0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18,
 | 
					 | 
				
			||||||
	0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x3c, 0x0a,
 | 
					 | 
				
			||||||
	0x12, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
 | 
					 | 
				
			||||||
	0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
 | 
					 | 
				
			||||||
	0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31,
 | 
					 | 
				
			||||||
	0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x47, 0x0a, 0x11, 0x52,
 | 
					 | 
				
			||||||
	0x65, 0x6e, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
 | 
					 | 
				
			||||||
	0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
 | 
					 | 
				
			||||||
	0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77,
 | 
					 | 
				
			||||||
	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x77,
 | 
					 | 
				
			||||||
	0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x12, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x4e, 0x6f,
 | 
					 | 
				
			||||||
	0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f,
 | 
					 | 
				
			||||||
	0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73,
 | 
					 | 
				
			||||||
	0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f,
 | 
					 | 
				
			||||||
	0x64, 0x65, 0x22, 0x26, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52,
 | 
					 | 
				
			||||||
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01,
 | 
					 | 
				
			||||||
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3d, 0x0a, 0x11, 0x4c, 0x69,
 | 
					 | 
				
			||||||
	0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
 | 
					 | 
				
			||||||
	0x28, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12,
 | 
					 | 
				
			||||||
	0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
 | 
					 | 
				
			||||||
	0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x3e, 0x0a, 0x0f, 0x4d, 0x6f, 0x76,
 | 
					 | 
				
			||||||
	0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
 | 
					 | 
				
			||||||
	0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e,
 | 
					 | 
				
			||||||
	0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20,
 | 
					 | 
				
			||||||
	0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, 0x0a, 0x10, 0x4d, 0x6f, 0x76,
 | 
					 | 
				
			||||||
	0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a,
 | 
					 | 
				
			||||||
	0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65,
 | 
						0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65,
 | 
				
			||||||
	0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52,
 | 
						0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52,
 | 
				
			||||||
	0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x6a, 0x0a, 0x16, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x72,
 | 
						0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x3d, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73,
 | 
				
			||||||
	0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
 | 
						0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
 | 
				
			||||||
	0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75,
 | 
						0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64,
 | 
				
			||||||
	0x73, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
 | 
						0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04,
 | 
				
			||||||
	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20,
 | 
						0x74, 0x61, 0x67, 0x73, 0x22, 0x39, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52,
 | 
				
			||||||
	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x6f, 0x75,
 | 
						0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18,
 | 
				
			||||||
	0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65,
 | 
						0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c,
 | 
				
			||||||
	0x73, 0x22, 0x41, 0x0a, 0x17, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
 | 
						0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22,
 | 
				
			||||||
	0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04,
 | 
						0x2c, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71,
 | 
				
			||||||
	0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65, 0x61,
 | 
						0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18,
 | 
				
			||||||
	0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04,
 | 
						0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x14, 0x0a,
 | 
				
			||||||
	0x6e, 0x6f, 0x64, 0x65, 0x2a, 0x82, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
 | 
						0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
 | 
				
			||||||
	0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x45, 0x47, 0x49, 0x53,
 | 
						0x6e, 0x73, 0x65, 0x22, 0x2c, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x4e, 0x6f, 0x64,
 | 
				
			||||||
	0x54, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
 | 
						0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65,
 | 
				
			||||||
	0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x47, 0x49,
 | 
						0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49,
 | 
				
			||||||
	0x53, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x48,
 | 
						0x64, 0x22, 0x3c, 0x0a, 0x12, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52,
 | 
				
			||||||
	0x5f, 0x4b, 0x45, 0x59, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54,
 | 
						0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18,
 | 
				
			||||||
	0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x43, 0x4c, 0x49, 0x10, 0x02, 0x12,
 | 
						0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c,
 | 
				
			||||||
	0x18, 0x0a, 0x14, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x48,
 | 
						0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22,
 | 
				
			||||||
	0x4f, 0x44, 0x5f, 0x4f, 0x49, 0x44, 0x43, 0x10, 0x03, 0x42, 0x29, 0x5a, 0x27, 0x67, 0x69, 0x74,
 | 
						0x47, 0x0a, 0x11, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71,
 | 
				
			||||||
	0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6a, 0x75, 0x61, 0x6e, 0x66, 0x6f, 0x6e, 0x74,
 | 
						0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18,
 | 
				
			||||||
	0x2f, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67,
 | 
						0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a,
 | 
				
			||||||
	0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
						0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
 | 
				
			||||||
 | 
						0x07, 0x6e, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x12, 0x52, 0x65, 0x6e, 0x61,
 | 
				
			||||||
 | 
						0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26,
 | 
				
			||||||
 | 
						0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68,
 | 
				
			||||||
 | 
						0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
 | 
				
			||||||
 | 
						0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x26, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f,
 | 
				
			||||||
 | 
						0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73,
 | 
				
			||||||
 | 
						0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3d,
 | 
				
			||||||
 | 
						0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
 | 
				
			||||||
 | 
						0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
 | 
				
			||||||
 | 
						0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76,
 | 
				
			||||||
 | 
						0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x3e, 0x0a,
 | 
				
			||||||
 | 
						0x0f, 0x4d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
 | 
				
			||||||
 | 
						0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
 | 
				
			||||||
 | 
						0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65,
 | 
				
			||||||
 | 
						0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, 0x0a,
 | 
				
			||||||
 | 
						0x10, 0x4d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
 | 
				
			||||||
 | 
						0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
 | 
				
			||||||
 | 
						0x12, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e,
 | 
				
			||||||
 | 
						0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x6a, 0x0a, 0x16, 0x44, 0x65, 0x62,
 | 
				
			||||||
 | 
						0x75, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75,
 | 
				
			||||||
 | 
						0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
 | 
				
			||||||
 | 
						0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02,
 | 
				
			||||||
 | 
						0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
 | 
				
			||||||
 | 
						0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a,
 | 
				
			||||||
 | 
						0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x72,
 | 
				
			||||||
 | 
						0x6f, 0x75, 0x74, 0x65, 0x73, 0x22, 0x41, 0x0a, 0x17, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x72,
 | 
				
			||||||
 | 
						0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
 | 
				
			||||||
 | 
						0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
 | 
				
			||||||
 | 
						0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
 | 
				
			||||||
 | 
						0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x2a, 0x82, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x67,
 | 
				
			||||||
 | 
						0x69, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1f, 0x0a, 0x1b, 0x52,
 | 
				
			||||||
 | 
						0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55,
 | 
				
			||||||
 | 
						0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18,
 | 
				
			||||||
 | 
						0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f,
 | 
				
			||||||
 | 
						0x41, 0x55, 0x54, 0x48, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45,
 | 
				
			||||||
 | 
						0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x43, 0x4c,
 | 
				
			||||||
 | 
						0x49, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x5f,
 | 
				
			||||||
 | 
						0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x4f, 0x49, 0x44, 0x43, 0x10, 0x03, 0x42, 0x29, 0x5a,
 | 
				
			||||||
 | 
						0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6a, 0x75, 0x61, 0x6e,
 | 
				
			||||||
 | 
						0x66, 0x6f, 0x6e, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2f, 0x67,
 | 
				
			||||||
 | 
						0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
@ -1329,24 +1316,23 @@ var file_headscale_v1_node_proto_goTypes = []interface{}{
 | 
				
			|||||||
var file_headscale_v1_node_proto_depIdxs = []int32{
 | 
					var file_headscale_v1_node_proto_depIdxs = []int32{
 | 
				
			||||||
	20, // 0: headscale.v1.Node.user:type_name -> headscale.v1.User
 | 
						20, // 0: headscale.v1.Node.user:type_name -> headscale.v1.User
 | 
				
			||||||
	21, // 1: headscale.v1.Node.last_seen:type_name -> google.protobuf.Timestamp
 | 
						21, // 1: headscale.v1.Node.last_seen:type_name -> google.protobuf.Timestamp
 | 
				
			||||||
	21, // 2: headscale.v1.Node.last_successful_update:type_name -> google.protobuf.Timestamp
 | 
						21, // 2: headscale.v1.Node.expiry:type_name -> google.protobuf.Timestamp
 | 
				
			||||||
	21, // 3: headscale.v1.Node.expiry:type_name -> google.protobuf.Timestamp
 | 
						22, // 3: headscale.v1.Node.pre_auth_key:type_name -> headscale.v1.PreAuthKey
 | 
				
			||||||
	22, // 4: headscale.v1.Node.pre_auth_key:type_name -> headscale.v1.PreAuthKey
 | 
						21, // 4: headscale.v1.Node.created_at:type_name -> google.protobuf.Timestamp
 | 
				
			||||||
	21, // 5: headscale.v1.Node.created_at:type_name -> google.protobuf.Timestamp
 | 
						0,  // 5: headscale.v1.Node.register_method:type_name -> headscale.v1.RegisterMethod
 | 
				
			||||||
	0,  // 6: headscale.v1.Node.register_method:type_name -> headscale.v1.RegisterMethod
 | 
						1,  // 6: headscale.v1.RegisterNodeResponse.node:type_name -> headscale.v1.Node
 | 
				
			||||||
	1,  // 7: headscale.v1.RegisterNodeResponse.node:type_name -> headscale.v1.Node
 | 
						1,  // 7: headscale.v1.GetNodeResponse.node:type_name -> headscale.v1.Node
 | 
				
			||||||
	1,  // 8: headscale.v1.GetNodeResponse.node:type_name -> headscale.v1.Node
 | 
						1,  // 8: headscale.v1.SetTagsResponse.node:type_name -> headscale.v1.Node
 | 
				
			||||||
	1,  // 9: headscale.v1.SetTagsResponse.node:type_name -> headscale.v1.Node
 | 
						1,  // 9: headscale.v1.ExpireNodeResponse.node:type_name -> headscale.v1.Node
 | 
				
			||||||
	1,  // 10: headscale.v1.ExpireNodeResponse.node:type_name -> headscale.v1.Node
 | 
						1,  // 10: headscale.v1.RenameNodeResponse.node:type_name -> headscale.v1.Node
 | 
				
			||||||
	1,  // 11: headscale.v1.RenameNodeResponse.node:type_name -> headscale.v1.Node
 | 
						1,  // 11: headscale.v1.ListNodesResponse.nodes:type_name -> headscale.v1.Node
 | 
				
			||||||
	1,  // 12: headscale.v1.ListNodesResponse.nodes:type_name -> headscale.v1.Node
 | 
						1,  // 12: headscale.v1.MoveNodeResponse.node:type_name -> headscale.v1.Node
 | 
				
			||||||
	1,  // 13: headscale.v1.MoveNodeResponse.node:type_name -> headscale.v1.Node
 | 
						1,  // 13: headscale.v1.DebugCreateNodeResponse.node:type_name -> headscale.v1.Node
 | 
				
			||||||
	1,  // 14: headscale.v1.DebugCreateNodeResponse.node:type_name -> headscale.v1.Node
 | 
						14, // [14:14] is the sub-list for method output_type
 | 
				
			||||||
	15, // [15:15] is the sub-list for method output_type
 | 
						14, // [14:14] is the sub-list for method input_type
 | 
				
			||||||
	15, // [15:15] is the sub-list for method input_type
 | 
						14, // [14:14] is the sub-list for extension type_name
 | 
				
			||||||
	15, // [15:15] is the sub-list for extension type_name
 | 
						14, // [14:14] is the sub-list for extension extendee
 | 
				
			||||||
	15, // [15:15] is the sub-list for extension extendee
 | 
						0,  // [0:14] is the sub-list for field type_name
 | 
				
			||||||
	0,  // [0:15] is the sub-list for field type_name
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() { file_headscale_v1_node_proto_init() }
 | 
					func init() { file_headscale_v1_node_proto_init() }
 | 
				
			||||||
@ -1354,8 +1340,8 @@ func file_headscale_v1_node_proto_init() {
 | 
				
			|||||||
	if File_headscale_v1_node_proto != nil {
 | 
						if File_headscale_v1_node_proto != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	file_headscale_v1_user_proto_init()
 | 
					 | 
				
			||||||
	file_headscale_v1_preauthkey_proto_init()
 | 
						file_headscale_v1_preauthkey_proto_init()
 | 
				
			||||||
 | 
						file_headscale_v1_user_proto_init()
 | 
				
			||||||
	if !protoimpl.UnsafeEnabled {
 | 
						if !protoimpl.UnsafeEnabled {
 | 
				
			||||||
		file_headscale_v1_node_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
 | 
							file_headscale_v1_node_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
			switch v := v.(*Node); i {
 | 
								switch v := v.(*Node); i {
 | 
				
			||||||
 | 
				
			|||||||
@ -34,6 +34,7 @@
 | 
				
			|||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
          "type": "array",
 | 
					          "type": "array",
 | 
				
			||||||
          "items": {
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
            "$ref": "#/definitions/protobufAny"
 | 
					            "$ref": "#/definitions/protobufAny"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -34,6 +34,7 @@
 | 
				
			|||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
          "type": "array",
 | 
					          "type": "array",
 | 
				
			||||||
          "items": {
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
            "$ref": "#/definitions/protobufAny"
 | 
					            "$ref": "#/definitions/protobufAny"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -419,15 +419,7 @@
 | 
				
			|||||||
            "in": "body",
 | 
					            "in": "body",
 | 
				
			||||||
            "required": true,
 | 
					            "required": true,
 | 
				
			||||||
            "schema": {
 | 
					            "schema": {
 | 
				
			||||||
              "type": "object",
 | 
					              "$ref": "#/definitions/HeadscaleServiceSetTagsBody"
 | 
				
			||||||
              "properties": {
 | 
					 | 
				
			||||||
                "tags": {
 | 
					 | 
				
			||||||
                  "type": "array",
 | 
					 | 
				
			||||||
                  "items": {
 | 
					 | 
				
			||||||
                    "type": "string"
 | 
					 | 
				
			||||||
                  }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
              }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
@ -831,6 +823,17 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "definitions": {
 | 
					  "definitions": {
 | 
				
			||||||
 | 
					    "HeadscaleServiceSetTagsBody": {
 | 
				
			||||||
 | 
					      "type": "object",
 | 
				
			||||||
 | 
					      "properties": {
 | 
				
			||||||
 | 
					        "tags": {
 | 
				
			||||||
 | 
					          "type": "array",
 | 
				
			||||||
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "string"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "protobufAny": {
 | 
					    "protobufAny": {
 | 
				
			||||||
      "type": "object",
 | 
					      "type": "object",
 | 
				
			||||||
      "properties": {
 | 
					      "properties": {
 | 
				
			||||||
@ -853,6 +856,7 @@
 | 
				
			|||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
          "type": "array",
 | 
					          "type": "array",
 | 
				
			||||||
          "items": {
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
            "$ref": "#/definitions/protobufAny"
 | 
					            "$ref": "#/definitions/protobufAny"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -1040,6 +1044,7 @@
 | 
				
			|||||||
        "routes": {
 | 
					        "routes": {
 | 
				
			||||||
          "type": "array",
 | 
					          "type": "array",
 | 
				
			||||||
          "items": {
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
            "$ref": "#/definitions/v1Route"
 | 
					            "$ref": "#/definitions/v1Route"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -1051,6 +1056,7 @@
 | 
				
			|||||||
        "routes": {
 | 
					        "routes": {
 | 
				
			||||||
          "type": "array",
 | 
					          "type": "array",
 | 
				
			||||||
          "items": {
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
            "$ref": "#/definitions/v1Route"
 | 
					            "$ref": "#/definitions/v1Route"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -1070,6 +1076,7 @@
 | 
				
			|||||||
        "apiKeys": {
 | 
					        "apiKeys": {
 | 
				
			||||||
          "type": "array",
 | 
					          "type": "array",
 | 
				
			||||||
          "items": {
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
            "$ref": "#/definitions/v1ApiKey"
 | 
					            "$ref": "#/definitions/v1ApiKey"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -1081,6 +1088,7 @@
 | 
				
			|||||||
        "nodes": {
 | 
					        "nodes": {
 | 
				
			||||||
          "type": "array",
 | 
					          "type": "array",
 | 
				
			||||||
          "items": {
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
            "$ref": "#/definitions/v1Node"
 | 
					            "$ref": "#/definitions/v1Node"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -1092,6 +1100,7 @@
 | 
				
			|||||||
        "preAuthKeys": {
 | 
					        "preAuthKeys": {
 | 
				
			||||||
          "type": "array",
 | 
					          "type": "array",
 | 
				
			||||||
          "items": {
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
            "$ref": "#/definitions/v1PreAuthKey"
 | 
					            "$ref": "#/definitions/v1PreAuthKey"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -1103,6 +1112,7 @@
 | 
				
			|||||||
        "users": {
 | 
					        "users": {
 | 
				
			||||||
          "type": "array",
 | 
					          "type": "array",
 | 
				
			||||||
          "items": {
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
            "$ref": "#/definitions/v1User"
 | 
					            "$ref": "#/definitions/v1User"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -1148,10 +1158,6 @@
 | 
				
			|||||||
          "type": "string",
 | 
					          "type": "string",
 | 
				
			||||||
          "format": "date-time"
 | 
					          "format": "date-time"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "lastSuccessfulUpdate": {
 | 
					 | 
				
			||||||
          "type": "string",
 | 
					 | 
				
			||||||
          "format": "date-time"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "expiry": {
 | 
					        "expiry": {
 | 
				
			||||||
          "type": "string",
 | 
					          "type": "string",
 | 
				
			||||||
          "format": "date-time"
 | 
					          "format": "date-time"
 | 
				
			||||||
 | 
				
			|||||||
@ -34,6 +34,7 @@
 | 
				
			|||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
          "type": "array",
 | 
					          "type": "array",
 | 
				
			||||||
          "items": {
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
            "$ref": "#/definitions/protobufAny"
 | 
					            "$ref": "#/definitions/protobufAny"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -34,6 +34,7 @@
 | 
				
			|||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
          "type": "array",
 | 
					          "type": "array",
 | 
				
			||||||
          "items": {
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
            "$ref": "#/definitions/protobufAny"
 | 
					            "$ref": "#/definitions/protobufAny"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -34,6 +34,7 @@
 | 
				
			|||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
          "type": "array",
 | 
					          "type": "array",
 | 
				
			||||||
          "items": {
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
            "$ref": "#/definitions/protobufAny"
 | 
					            "$ref": "#/definitions/protobufAny"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -34,6 +34,7 @@
 | 
				
			|||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
          "type": "array",
 | 
					          "type": "array",
 | 
				
			||||||
          "items": {
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
            "$ref": "#/definitions/protobufAny"
 | 
					            "$ref": "#/definitions/protobufAny"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -312,6 +312,17 @@ func NewHeadscaleDatabase(
 | 
				
			|||||||
					return nil
 | 
										return nil
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									// remove last_successful_update from node table,
 | 
				
			||||||
 | 
									// no longer used.
 | 
				
			||||||
 | 
									ID: "202402151347",
 | 
				
			||||||
 | 
									Migrate: func(tx *gorm.DB) error {
 | 
				
			||||||
 | 
										return tx.Migrator().DropColumn(&types.Node{}, "last_successful_update")
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									Rollback: func(tx *gorm.DB) error {
 | 
				
			||||||
 | 
										return nil
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -13,175 +13,175 @@ import "headscale/v1/apikey.proto";
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
service HeadscaleService {
 | 
					service HeadscaleService {
 | 
				
			||||||
    // --- User start ---
 | 
					    // --- User start ---
 | 
				
			||||||
    rpc GetUser(GetUserRequest) returns(GetUserResponse) {
 | 
					    rpc GetUser(GetUserRequest) returns (GetUserResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            get : "/api/v1/user/{name}"
 | 
					            get: "/api/v1/user/{name}"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc CreateUser(CreateUserRequest) returns(CreateUserResponse) {
 | 
					    rpc CreateUser(CreateUserRequest) returns (CreateUserResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            post : "/api/v1/user"
 | 
					            post: "/api/v1/user"
 | 
				
			||||||
            body : "*"
 | 
					            body: "*"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc RenameUser(RenameUserRequest) returns(RenameUserResponse) {
 | 
					    rpc RenameUser(RenameUserRequest) returns (RenameUserResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            post : "/api/v1/user/{old_name}/rename/{new_name}"
 | 
					            post: "/api/v1/user/{old_name}/rename/{new_name}"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc DeleteUser(DeleteUserRequest) returns(DeleteUserResponse) {
 | 
					    rpc DeleteUser(DeleteUserRequest) returns (DeleteUserResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            delete : "/api/v1/user/{name}"
 | 
					            delete: "/api/v1/user/{name}"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc ListUsers(ListUsersRequest) returns(ListUsersResponse) {
 | 
					    rpc ListUsers(ListUsersRequest) returns (ListUsersResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            get : "/api/v1/user"
 | 
					            get: "/api/v1/user"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    // --- User end ---
 | 
					    // --- User end ---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // --- PreAuthKeys start ---
 | 
					    // --- PreAuthKeys start ---
 | 
				
			||||||
    rpc CreatePreAuthKey(CreatePreAuthKeyRequest) returns(CreatePreAuthKeyResponse) {
 | 
					    rpc CreatePreAuthKey(CreatePreAuthKeyRequest) returns (CreatePreAuthKeyResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            post : "/api/v1/preauthkey"
 | 
					            post: "/api/v1/preauthkey"
 | 
				
			||||||
            body : "*"
 | 
					            body: "*"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc ExpirePreAuthKey(ExpirePreAuthKeyRequest) returns(ExpirePreAuthKeyResponse) {
 | 
					    rpc ExpirePreAuthKey(ExpirePreAuthKeyRequest) returns (ExpirePreAuthKeyResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            post : "/api/v1/preauthkey/expire"
 | 
					            post: "/api/v1/preauthkey/expire"
 | 
				
			||||||
            body : "*"
 | 
					            body: "*"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc ListPreAuthKeys(ListPreAuthKeysRequest) returns(ListPreAuthKeysResponse) {
 | 
					    rpc ListPreAuthKeys(ListPreAuthKeysRequest) returns (ListPreAuthKeysResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            get : "/api/v1/preauthkey"
 | 
					            get: "/api/v1/preauthkey"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    // --- PreAuthKeys end ---
 | 
					    // --- PreAuthKeys end ---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // --- Node start ---
 | 
					    // --- Node start ---
 | 
				
			||||||
    rpc DebugCreateNode(DebugCreateNodeRequest) returns(DebugCreateNodeResponse) {
 | 
					    rpc DebugCreateNode(DebugCreateNodeRequest) returns (DebugCreateNodeResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            post : "/api/v1/debug/node"
 | 
					            post: "/api/v1/debug/node"
 | 
				
			||||||
            body : "*"
 | 
					            body: "*"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc GetNode(GetNodeRequest) returns(GetNodeResponse) {
 | 
					    rpc GetNode(GetNodeRequest) returns (GetNodeResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            get : "/api/v1/node/{node_id}"
 | 
					            get: "/api/v1/node/{node_id}"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc SetTags(SetTagsRequest) returns(SetTagsResponse) {
 | 
					    rpc SetTags(SetTagsRequest) returns (SetTagsResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            post : "/api/v1/node/{node_id}/tags"
 | 
					            post: "/api/v1/node/{node_id}/tags"
 | 
				
			||||||
            body : "*"
 | 
					            body: "*"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc RegisterNode(RegisterNodeRequest) returns(RegisterNodeResponse) {
 | 
					    rpc RegisterNode(RegisterNodeRequest) returns (RegisterNodeResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            post : "/api/v1/node/register"
 | 
					            post: "/api/v1/node/register"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc DeleteNode(DeleteNodeRequest) returns(DeleteNodeResponse) {
 | 
					    rpc DeleteNode(DeleteNodeRequest) returns (DeleteNodeResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            delete : "/api/v1/node/{node_id}"
 | 
					            delete: "/api/v1/node/{node_id}"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc ExpireNode(ExpireNodeRequest) returns(ExpireNodeResponse) {
 | 
					    rpc ExpireNode(ExpireNodeRequest) returns (ExpireNodeResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            post : "/api/v1/node/{node_id}/expire"
 | 
					            post: "/api/v1/node/{node_id}/expire"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc RenameNode(RenameNodeRequest) returns(RenameNodeResponse) {
 | 
					    rpc RenameNode(RenameNodeRequest) returns (RenameNodeResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            post : "/api/v1/node/{node_id}/rename/{new_name}"
 | 
					            post: "/api/v1/node/{node_id}/rename/{new_name}"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc ListNodes(ListNodesRequest) returns(ListNodesResponse) {
 | 
					    rpc ListNodes(ListNodesRequest) returns (ListNodesResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            get : "/api/v1/node"
 | 
					            get: "/api/v1/node"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc MoveNode(MoveNodeRequest) returns(MoveNodeResponse) {
 | 
					    rpc MoveNode(MoveNodeRequest) returns (MoveNodeResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            post : "/api/v1/node/{node_id}/user"
 | 
					            post: "/api/v1/node/{node_id}/user"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    // --- Node end ---
 | 
					    // --- Node end ---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // --- Route start ---
 | 
					    // --- Route start ---
 | 
				
			||||||
    rpc GetRoutes(GetRoutesRequest) returns(GetRoutesResponse) {
 | 
					    rpc GetRoutes(GetRoutesRequest) returns (GetRoutesResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            get : "/api/v1/routes"
 | 
					            get: "/api/v1/routes"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc EnableRoute(EnableRouteRequest) returns(EnableRouteResponse) {
 | 
					    rpc EnableRoute(EnableRouteRequest) returns (EnableRouteResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            post : "/api/v1/routes/{route_id}/enable"
 | 
					            post: "/api/v1/routes/{route_id}/enable"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc DisableRoute(DisableRouteRequest) returns(DisableRouteResponse) {
 | 
					    rpc DisableRoute(DisableRouteRequest) returns (DisableRouteResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            post : "/api/v1/routes/{route_id}/disable"
 | 
					            post: "/api/v1/routes/{route_id}/disable"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc GetNodeRoutes(GetNodeRoutesRequest) returns(GetNodeRoutesResponse) {
 | 
					    rpc GetNodeRoutes(GetNodeRoutesRequest) returns (GetNodeRoutesResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            get : "/api/v1/node/{node_id}/routes"
 | 
					            get: "/api/v1/node/{node_id}/routes"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc DeleteRoute(DeleteRouteRequest) returns(DeleteRouteResponse) {
 | 
					    rpc DeleteRoute(DeleteRouteRequest) returns (DeleteRouteResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            delete : "/api/v1/routes/{route_id}"
 | 
					            delete: "/api/v1/routes/{route_id}"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // --- Route end ---
 | 
					    // --- Route end ---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // --- ApiKeys start ---
 | 
					    // --- ApiKeys start ---
 | 
				
			||||||
    rpc CreateApiKey(CreateApiKeyRequest) returns(CreateApiKeyResponse) {
 | 
					    rpc CreateApiKey(CreateApiKeyRequest) returns (CreateApiKeyResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            post : "/api/v1/apikey"
 | 
					            post: "/api/v1/apikey"
 | 
				
			||||||
            body : "*"
 | 
					            body: "*"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc ExpireApiKey(ExpireApiKeyRequest) returns(ExpireApiKeyResponse) {
 | 
					    rpc ExpireApiKey(ExpireApiKeyRequest) returns (ExpireApiKeyResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            post : "/api/v1/apikey/expire"
 | 
					            post: "/api/v1/apikey/expire"
 | 
				
			||||||
            body : "*"
 | 
					            body: "*"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc ListApiKeys(ListApiKeysRequest) returns(ListApiKeysResponse) {
 | 
					    rpc ListApiKeys(ListApiKeysRequest) returns (ListApiKeysResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            get : "/api/v1/apikey"
 | 
					            get: "/api/v1/apikey"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc DeleteApiKey(DeleteApiKeyRequest) returns(DeleteApiKeyResponse) {
 | 
					    rpc DeleteApiKey(DeleteApiKeyRequest) returns (DeleteApiKeyResponse) {
 | 
				
			||||||
        option(google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            delete : "/api/v1/apikey/{prefix}"
 | 
					            delete: "/api/v1/apikey/{prefix}"
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    // --- ApiKeys end ---
 | 
					    // --- ApiKeys end ---
 | 
				
			||||||
 | 
				
			|||||||
@ -1,10 +1,11 @@
 | 
				
			|||||||
syntax = "proto3";
 | 
					syntax = "proto3";
 | 
				
			||||||
package headscale.v1;
 | 
					package headscale.v1;
 | 
				
			||||||
option  go_package = "github.com/juanfont/headscale/gen/go/v1";
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import "google/protobuf/timestamp.proto";
 | 
					import "google/protobuf/timestamp.proto";
 | 
				
			||||||
import "headscale/v1/user.proto";
 | 
					 | 
				
			||||||
import "headscale/v1/preauthkey.proto";
 | 
					import "headscale/v1/preauthkey.proto";
 | 
				
			||||||
 | 
					import "headscale/v1/user.proto";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					option go_package = "github.com/juanfont/headscale/gen/go/v1";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum RegisterMethod {
 | 
					enum RegisterMethod {
 | 
				
			||||||
    REGISTER_METHOD_UNSPECIFIED = 0;
 | 
					    REGISTER_METHOD_UNSPECIFIED = 0;
 | 
				
			||||||
@ -14,6 +15,9 @@ enum RegisterMethod {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message Node {
 | 
					message Node {
 | 
				
			||||||
 | 
					    // 9: removal of last_successful_update
 | 
				
			||||||
 | 
					    reserved 9;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    uint64          id           = 1;
 | 
					    uint64          id           = 1;
 | 
				
			||||||
    string          machine_key  = 2;
 | 
					    string          machine_key  = 2;
 | 
				
			||||||
    string          node_key     = 3;
 | 
					    string          node_key     = 3;
 | 
				
			||||||
@ -23,7 +27,6 @@ message Node {
 | 
				
			|||||||
    User            user         = 7;
 | 
					    User            user         = 7;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    google.protobuf.Timestamp last_seen = 8;
 | 
					    google.protobuf.Timestamp last_seen = 8;
 | 
				
			||||||
    google.protobuf.Timestamp last_successful_update = 9;
 | 
					 | 
				
			||||||
    google.protobuf.Timestamp expiry    = 10;
 | 
					    google.protobuf.Timestamp expiry    = 10;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PreAuthKey pre_auth_key = 11;
 | 
					    PreAuthKey pre_auth_key = 11;
 | 
				
			||||||
@ -77,8 +80,7 @@ message DeleteNodeRequest {
 | 
				
			|||||||
    uint64 node_id = 1;
 | 
					    uint64 node_id = 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message DeleteNodeResponse {
 | 
					message DeleteNodeResponse {}
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
message ExpireNodeRequest {
 | 
					message ExpireNodeRequest {
 | 
				
			||||||
    uint64 node_id = 1;
 | 
					    uint64 node_id = 1;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user