mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	Added approved fields and procedure to proto files
This commit is contained in:
		
							parent
							
								
									7512e236d6
								
							
						
					
					
						commit
						89f70595d1
					
				@ -37,7 +37,7 @@ var file_headscale_v1_headscale_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c,
 | 
						0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c,
 | 
				
			||||||
	0x65, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,
 | 
						0x65, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,
 | 
				
			||||||
	0x6f, 0x1a, 0x19, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f,
 | 
						0x6f, 0x1a, 0x19, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f,
 | 
				
			||||||
	0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xd2, 0x1a, 0x0a,
 | 
						0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xce, 0x1b, 0x0a,
 | 
				
			||||||
	0x10, 0x48, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
 | 
						0x10, 0x48, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
 | 
				
			||||||
	0x65, 0x12, 0x63, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x68,
 | 
						0x65, 0x12, 0x63, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x68,
 | 
				
			||||||
	0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55,
 | 
						0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55,
 | 
				
			||||||
@ -133,128 +133,135 @@ var file_headscale_v1_headscale_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65,
 | 
						0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65,
 | 
				
			||||||
	0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e,
 | 
						0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e,
 | 
				
			||||||
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
 | 
						0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
 | 
				
			||||||
	0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x76,
 | 
						0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x7a,
 | 
				
			||||||
	0x0a, 0x0a, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x2e, 0x68,
 | 
						0x0a, 0x0b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x2e,
 | 
				
			||||||
	0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x69,
 | 
						0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70,
 | 
				
			||||||
	0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e,
 | 
						0x72, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
 | 
				
			||||||
	0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70,
 | 
						0x21, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41,
 | 
				
			||||||
	0x69, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
 | 
						0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
 | 
				
			||||||
	0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31,
 | 
						0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x1e, 0x2f, 0x61, 0x70, 0x69,
 | 
				
			||||||
	0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f,
 | 
						0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69,
 | 
				
			||||||
	0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x6e, 0x61, 0x6d,
 | 
						0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, 0x76, 0x0a, 0x0a, 0x45, 0x78,
 | 
				
			||||||
	0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c,
 | 
						0x70, 0x69, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73,
 | 
				
			||||||
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52,
 | 
						0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x4e, 0x6f,
 | 
				
			||||||
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61,
 | 
						0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x68, 0x65, 0x61, 0x64,
 | 
				
			||||||
	0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65,
 | 
						0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x4e,
 | 
				
			||||||
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a,
 | 
						0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4,
 | 
				
			||||||
	0x22, 0x28, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x7b,
 | 
						0x93, 0x02, 0x1f, 0x22, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64,
 | 
				
			||||||
	0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x2f,
 | 
						0x65, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x65, 0x78, 0x70, 0x69,
 | 
				
			||||||
	0x7b, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x62, 0x0a, 0x09, 0x4c, 0x69,
 | 
						0x72, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x64,
 | 
				
			||||||
	0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63,
 | 
						0x65, 0x12, 0x1f, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31,
 | 
				
			||||||
	0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73,
 | 
						0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
 | 
				
			||||||
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63,
 | 
						0x73, 0x74, 0x1a, 0x20, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76,
 | 
				
			||||||
	0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73,
 | 
						0x31, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70,
 | 
				
			||||||
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e,
 | 
						0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x22, 0x28, 0x2f, 0x61,
 | 
				
			||||||
	0x12, 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x71,
 | 
						0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65,
 | 
				
			||||||
	0x0a, 0x08, 0x4d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x2e, 0x68, 0x65, 0x61,
 | 
						0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x7b, 0x6e, 0x65, 0x77,
 | 
				
			||||||
	0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x4e, 0x6f,
 | 
						0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x62, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f,
 | 
				
			||||||
	0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x68, 0x65, 0x61, 0x64,
 | 
						0x64, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e,
 | 
				
			||||||
	0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64,
 | 
						0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
 | 
				
			||||||
	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02,
 | 
						0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e,
 | 
				
			||||||
	0x20, 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f,
 | 
						0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
 | 
				
			||||||
	0x64, 0x65, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x73, 0x65,
 | 
						0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x61,
 | 
				
			||||||
	0x72, 0x12, 0x80, 0x01, 0x0a, 0x0f, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x4e, 0x6f,
 | 
						0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x71, 0x0a, 0x08, 0x4d, 0x6f,
 | 
				
			||||||
	0x64, 0x65, 0x49, 0x50, 0x73, 0x12, 0x24, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c,
 | 
						0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61,
 | 
				
			||||||
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x4e, 0x6f, 0x64,
 | 
						0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
 | 
				
			||||||
	0x65, 0x49, 0x50, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x68, 0x65,
 | 
						0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c,
 | 
				
			||||||
	0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x66,
 | 
						0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73,
 | 
				
			||||||
	0x69, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x50, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
 | 
						0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a,
 | 
				
			||||||
	0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x18, 0x2f, 0x61, 0x70, 0x69,
 | 
						0x22, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x7b,
 | 
				
			||||||
	0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c,
 | 
						0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x12, 0x80, 0x01,
 | 
				
			||||||
	0x6c, 0x69, 0x70, 0x73, 0x12, 0x64, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65,
 | 
						0x0a, 0x0f, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x50,
 | 
				
			||||||
	0x73, 0x12, 0x1e, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31,
 | 
						0x73, 0x12, 0x24, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31,
 | 
				
			||||||
	0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
 | 
						0x2e, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x50, 0x73,
 | 
				
			||||||
	0x74, 0x1a, 0x1f, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31,
 | 
						0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63,
 | 
				
			||||||
	0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
 | 
						0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x4e,
 | 
				
			||||||
	0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69,
 | 
						0x6f, 0x64, 0x65, 0x49, 0x50, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20,
 | 
				
			||||||
	0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x7c, 0x0a, 0x0b, 0x45, 0x6e,
 | 
						0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x18, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
 | 
				
			||||||
	0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x20, 0x2e, 0x68, 0x65, 0x61, 0x64,
 | 
						0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x69, 0x70, 0x73,
 | 
				
			||||||
	0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52,
 | 
						0x12, 0x64, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x2e,
 | 
				
			||||||
	0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x68, 0x65,
 | 
						0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
 | 
				
			||||||
	0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c,
 | 
						0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e,
 | 
				
			||||||
	0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28,
 | 
						0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
 | 
				
			||||||
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
 | 
						0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16,
 | 
				
			||||||
	0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64,
 | 
						0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
 | 
				
			||||||
	0x7d, 0x2f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0c, 0x44, 0x69, 0x73,
 | 
						0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x7c, 0x0a, 0x0b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
 | 
				
			||||||
	0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x68, 0x65, 0x61, 0x64,
 | 
						0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x20, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c,
 | 
				
			||||||
	0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65,
 | 
						0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65,
 | 
				
			||||||
	0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x68,
 | 
						0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63,
 | 
				
			||||||
	0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x61,
 | 
						0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x75,
 | 
				
			||||||
	0x62, 0x6c, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
 | 
						0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93,
 | 
				
			||||||
	0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76,
 | 
						0x02, 0x22, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x75, 0x74,
 | 
				
			||||||
	0x31, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f,
 | 
						0x65, 0x73, 0x2f, 0x7b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x65, 0x6e,
 | 
				
			||||||
	0x69, 0x64, 0x7d, 0x2f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x7f, 0x0a, 0x0d, 0x47,
 | 
						0x61, 0x62, 0x6c, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0c, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65,
 | 
				
			||||||
	0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x68,
 | 
						0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c,
 | 
				
			||||||
 | 
						0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x75, 0x74,
 | 
				
			||||||
 | 
						0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73,
 | 
				
			||||||
 | 
						0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52,
 | 
				
			||||||
 | 
						0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3,
 | 
				
			||||||
 | 
						0xe4, 0x93, 0x02, 0x23, 0x22, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f,
 | 
				
			||||||
 | 
						0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f,
 | 
				
			||||||
 | 
						0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x7f, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4e, 0x6f,
 | 
				
			||||||
 | 
						0x64, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73,
 | 
				
			||||||
 | 
						0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52,
 | 
				
			||||||
 | 
						0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x68,
 | 
				
			||||||
	0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e,
 | 
						0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e,
 | 
				
			||||||
	0x6f, 0x64, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
 | 
						0x6f, 0x64, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
 | 
				
			||||||
	0x1a, 0x23, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e,
 | 
						0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x2f,
 | 
				
			||||||
	0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73,
 | 
						0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64,
 | 
				
			||||||
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f,
 | 
						0x7d, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x75, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65,
 | 
				
			||||||
	0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x7b, 0x6e, 0x6f, 0x64,
 | 
						0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x20, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63,
 | 
				
			||||||
	0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x75, 0x0a, 0x0b,
 | 
						0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x75,
 | 
				
			||||||
	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x20, 0x2e, 0x68, 0x65,
 | 
						0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x68, 0x65, 0x61, 0x64,
 | 
				
			||||||
	0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
 | 
						0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52,
 | 
				
			||||||
	0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e,
 | 
						0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3,
 | 
				
			||||||
	0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c,
 | 
						0xe4, 0x93, 0x02, 0x1b, 0x2a, 0x19, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f,
 | 
				
			||||||
	0x65, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
 | 
						0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12,
 | 
				
			||||||
	0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x2a, 0x19, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76,
 | 
						0x70, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12,
 | 
				
			||||||
	0x31, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f,
 | 
						0x21, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43,
 | 
				
			||||||
	0x69, 0x64, 0x7d, 0x12, 0x70, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x69,
 | 
						0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
 | 
				
			||||||
	0x4b, 0x65, 0x79, 0x12, 0x21, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e,
 | 
						0x73, 0x74, 0x1a, 0x22, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76,
 | 
				
			||||||
	0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52,
 | 
						0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65,
 | 
				
			||||||
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61,
 | 
					 | 
				
			||||||
	0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x69, 0x4b,
 | 
					 | 
				
			||||||
	0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93,
 | 
					 | 
				
			||||||
	0x02, 0x13, 0x3a, 0x01, 0x2a, 0x22, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61,
 | 
					 | 
				
			||||||
	0x70, 0x69, 0x6b, 0x65, 0x79, 0x12, 0x77, 0x0a, 0x0c, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x41,
 | 
					 | 
				
			||||||
	0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c,
 | 
					 | 
				
			||||||
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65,
 | 
					 | 
				
			||||||
	0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73,
 | 
					 | 
				
			||||||
	0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x41, 0x70,
 | 
					 | 
				
			||||||
	0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3,
 | 
					 | 
				
			||||||
	0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, 0x22, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31,
 | 
					 | 
				
			||||||
	0x2f, 0x61, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x2f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x12, 0x6a,
 | 
					 | 
				
			||||||
	0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x20, 0x2e,
 | 
					 | 
				
			||||||
	0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
 | 
					 | 
				
			||||||
	0x74, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
 | 
					 | 
				
			||||||
	0x21, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c,
 | 
					 | 
				
			||||||
	0x69, 0x73, 0x74, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
 | 
					 | 
				
			||||||
	0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69,
 | 
					 | 
				
			||||||
	0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x12, 0x76, 0x0a, 0x0c, 0x44, 0x65,
 | 
					 | 
				
			||||||
	0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x2e, 0x68, 0x65, 0x61,
 | 
					 | 
				
			||||||
	0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
 | 
					 | 
				
			||||||
	0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e,
 | 
					 | 
				
			||||||
	0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c,
 | 
					 | 
				
			||||||
	0x65, 0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
 | 
					 | 
				
			||||||
	0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x2a, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x2f,
 | 
					 | 
				
			||||||
	0x76, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x2f, 0x7b, 0x70, 0x72, 0x65, 0x66, 0x69,
 | 
					 | 
				
			||||||
	0x78, 0x7d, 0x12, 0x64, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
 | 
					 | 
				
			||||||
	0x1e, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47,
 | 
					 | 
				
			||||||
	0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
 | 
					 | 
				
			||||||
	0x1f, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47,
 | 
					 | 
				
			||||||
	0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
 | 
					 | 
				
			||||||
	0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76,
 | 
					 | 
				
			||||||
	0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x67, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x50,
 | 
					 | 
				
			||||||
	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1e, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c,
 | 
					 | 
				
			||||||
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
 | 
					 | 
				
			||||||
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c,
 | 
					 | 
				
			||||||
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
 | 
					 | 
				
			||||||
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x3a, 0x01,
 | 
						0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x3a, 0x01,
 | 
				
			||||||
	0x2a, 0x1a, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63,
 | 
						0x2a, 0x22, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x6b, 0x65,
 | 
				
			||||||
	0x79, 0x42, 0x29, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
 | 
						0x79, 0x12, 0x77, 0x0a, 0x0c, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65,
 | 
				
			||||||
	0x6a, 0x75, 0x61, 0x6e, 0x66, 0x6f, 0x6e, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61,
 | 
						0x79, 0x12, 0x21, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31,
 | 
				
			||||||
	0x6c, 0x65, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72,
 | 
						0x2e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71,
 | 
				
			||||||
	0x6f, 0x74, 0x6f, 0x33,
 | 
						0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65,
 | 
				
			||||||
 | 
						0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79,
 | 
				
			||||||
 | 
						0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a,
 | 
				
			||||||
 | 
						0x3a, 0x01, 0x2a, 0x22, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x69,
 | 
				
			||||||
 | 
						0x6b, 0x65, 0x79, 0x2f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x12, 0x6a, 0x0a, 0x0b, 0x4c, 0x69,
 | 
				
			||||||
 | 
						0x73, 0x74, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x20, 0x2e, 0x68, 0x65, 0x61, 0x64,
 | 
				
			||||||
 | 
						0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x69,
 | 
				
			||||||
 | 
						0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x68, 0x65,
 | 
				
			||||||
 | 
						0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41,
 | 
				
			||||||
 | 
						0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16,
 | 
				
			||||||
 | 
						0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
 | 
				
			||||||
 | 
						0x61, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x12, 0x76, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
 | 
				
			||||||
 | 
						0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61,
 | 
				
			||||||
 | 
						0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x69, 0x4b,
 | 
				
			||||||
 | 
						0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x68, 0x65, 0x61, 0x64,
 | 
				
			||||||
 | 
						0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41,
 | 
				
			||||||
 | 
						0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82,
 | 
				
			||||||
 | 
						0xd3, 0xe4, 0x93, 0x02, 0x19, 0x2a, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61,
 | 
				
			||||||
 | 
						0x70, 0x69, 0x6b, 0x65, 0x79, 0x2f, 0x7b, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x7d, 0x12, 0x64,
 | 
				
			||||||
 | 
						0x0a, 0x09, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1e, 0x2e, 0x68, 0x65,
 | 
				
			||||||
 | 
						0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f,
 | 
				
			||||||
 | 
						0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x68, 0x65,
 | 
				
			||||||
 | 
						0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f,
 | 
				
			||||||
 | 
						0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3,
 | 
				
			||||||
 | 
						0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f,
 | 
				
			||||||
 | 
						0x6c, 0x69, 0x63, 0x79, 0x12, 0x67, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63,
 | 
				
			||||||
 | 
						0x79, 0x12, 0x1e, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31,
 | 
				
			||||||
 | 
						0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
 | 
				
			||||||
 | 
						0x74, 0x1a, 0x1f, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31,
 | 
				
			||||||
 | 
						0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
 | 
				
			||||||
 | 
						0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x3a, 0x01, 0x2a, 0x1a, 0x0e, 0x2f,
 | 
				
			||||||
 | 
						0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 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 file_headscale_v1_headscale_proto_goTypes = []any{
 | 
					var file_headscale_v1_headscale_proto_goTypes = []any{
 | 
				
			||||||
@ -271,51 +278,53 @@ var file_headscale_v1_headscale_proto_goTypes = []any{
 | 
				
			|||||||
	(*SetTagsRequest)(nil),           // 10: headscale.v1.SetTagsRequest
 | 
						(*SetTagsRequest)(nil),           // 10: headscale.v1.SetTagsRequest
 | 
				
			||||||
	(*RegisterNodeRequest)(nil),      // 11: headscale.v1.RegisterNodeRequest
 | 
						(*RegisterNodeRequest)(nil),      // 11: headscale.v1.RegisterNodeRequest
 | 
				
			||||||
	(*DeleteNodeRequest)(nil),        // 12: headscale.v1.DeleteNodeRequest
 | 
						(*DeleteNodeRequest)(nil),        // 12: headscale.v1.DeleteNodeRequest
 | 
				
			||||||
	(*ExpireNodeRequest)(nil),        // 13: headscale.v1.ExpireNodeRequest
 | 
						(*ApproveNodeRequest)(nil),       // 13: headscale.v1.ApproveNodeRequest
 | 
				
			||||||
	(*RenameNodeRequest)(nil),        // 14: headscale.v1.RenameNodeRequest
 | 
						(*ExpireNodeRequest)(nil),        // 14: headscale.v1.ExpireNodeRequest
 | 
				
			||||||
	(*ListNodesRequest)(nil),         // 15: headscale.v1.ListNodesRequest
 | 
						(*RenameNodeRequest)(nil),        // 15: headscale.v1.RenameNodeRequest
 | 
				
			||||||
	(*MoveNodeRequest)(nil),          // 16: headscale.v1.MoveNodeRequest
 | 
						(*ListNodesRequest)(nil),         // 16: headscale.v1.ListNodesRequest
 | 
				
			||||||
	(*BackfillNodeIPsRequest)(nil),   // 17: headscale.v1.BackfillNodeIPsRequest
 | 
						(*MoveNodeRequest)(nil),          // 17: headscale.v1.MoveNodeRequest
 | 
				
			||||||
	(*GetRoutesRequest)(nil),         // 18: headscale.v1.GetRoutesRequest
 | 
						(*BackfillNodeIPsRequest)(nil),   // 18: headscale.v1.BackfillNodeIPsRequest
 | 
				
			||||||
	(*EnableRouteRequest)(nil),       // 19: headscale.v1.EnableRouteRequest
 | 
						(*GetRoutesRequest)(nil),         // 19: headscale.v1.GetRoutesRequest
 | 
				
			||||||
	(*DisableRouteRequest)(nil),      // 20: headscale.v1.DisableRouteRequest
 | 
						(*EnableRouteRequest)(nil),       // 20: headscale.v1.EnableRouteRequest
 | 
				
			||||||
	(*GetNodeRoutesRequest)(nil),     // 21: headscale.v1.GetNodeRoutesRequest
 | 
						(*DisableRouteRequest)(nil),      // 21: headscale.v1.DisableRouteRequest
 | 
				
			||||||
	(*DeleteRouteRequest)(nil),       // 22: headscale.v1.DeleteRouteRequest
 | 
						(*GetNodeRoutesRequest)(nil),     // 22: headscale.v1.GetNodeRoutesRequest
 | 
				
			||||||
	(*CreateApiKeyRequest)(nil),      // 23: headscale.v1.CreateApiKeyRequest
 | 
						(*DeleteRouteRequest)(nil),       // 23: headscale.v1.DeleteRouteRequest
 | 
				
			||||||
	(*ExpireApiKeyRequest)(nil),      // 24: headscale.v1.ExpireApiKeyRequest
 | 
						(*CreateApiKeyRequest)(nil),      // 24: headscale.v1.CreateApiKeyRequest
 | 
				
			||||||
	(*ListApiKeysRequest)(nil),       // 25: headscale.v1.ListApiKeysRequest
 | 
						(*ExpireApiKeyRequest)(nil),      // 25: headscale.v1.ExpireApiKeyRequest
 | 
				
			||||||
	(*DeleteApiKeyRequest)(nil),      // 26: headscale.v1.DeleteApiKeyRequest
 | 
						(*ListApiKeysRequest)(nil),       // 26: headscale.v1.ListApiKeysRequest
 | 
				
			||||||
	(*GetPolicyRequest)(nil),         // 27: headscale.v1.GetPolicyRequest
 | 
						(*DeleteApiKeyRequest)(nil),      // 27: headscale.v1.DeleteApiKeyRequest
 | 
				
			||||||
	(*SetPolicyRequest)(nil),         // 28: headscale.v1.SetPolicyRequest
 | 
						(*GetPolicyRequest)(nil),         // 28: headscale.v1.GetPolicyRequest
 | 
				
			||||||
	(*GetUserResponse)(nil),          // 29: headscale.v1.GetUserResponse
 | 
						(*SetPolicyRequest)(nil),         // 29: headscale.v1.SetPolicyRequest
 | 
				
			||||||
	(*CreateUserResponse)(nil),       // 30: headscale.v1.CreateUserResponse
 | 
						(*GetUserResponse)(nil),          // 30: headscale.v1.GetUserResponse
 | 
				
			||||||
	(*RenameUserResponse)(nil),       // 31: headscale.v1.RenameUserResponse
 | 
						(*CreateUserResponse)(nil),       // 31: headscale.v1.CreateUserResponse
 | 
				
			||||||
	(*DeleteUserResponse)(nil),       // 32: headscale.v1.DeleteUserResponse
 | 
						(*RenameUserResponse)(nil),       // 32: headscale.v1.RenameUserResponse
 | 
				
			||||||
	(*ListUsersResponse)(nil),        // 33: headscale.v1.ListUsersResponse
 | 
						(*DeleteUserResponse)(nil),       // 33: headscale.v1.DeleteUserResponse
 | 
				
			||||||
	(*CreatePreAuthKeyResponse)(nil), // 34: headscale.v1.CreatePreAuthKeyResponse
 | 
						(*ListUsersResponse)(nil),        // 34: headscale.v1.ListUsersResponse
 | 
				
			||||||
	(*ExpirePreAuthKeyResponse)(nil), // 35: headscale.v1.ExpirePreAuthKeyResponse
 | 
						(*CreatePreAuthKeyResponse)(nil), // 35: headscale.v1.CreatePreAuthKeyResponse
 | 
				
			||||||
	(*ListPreAuthKeysResponse)(nil),  // 36: headscale.v1.ListPreAuthKeysResponse
 | 
						(*ExpirePreAuthKeyResponse)(nil), // 36: headscale.v1.ExpirePreAuthKeyResponse
 | 
				
			||||||
	(*DebugCreateNodeResponse)(nil),  // 37: headscale.v1.DebugCreateNodeResponse
 | 
						(*ListPreAuthKeysResponse)(nil),  // 37: headscale.v1.ListPreAuthKeysResponse
 | 
				
			||||||
	(*GetNodeResponse)(nil),          // 38: headscale.v1.GetNodeResponse
 | 
						(*DebugCreateNodeResponse)(nil),  // 38: headscale.v1.DebugCreateNodeResponse
 | 
				
			||||||
	(*SetTagsResponse)(nil),          // 39: headscale.v1.SetTagsResponse
 | 
						(*GetNodeResponse)(nil),          // 39: headscale.v1.GetNodeResponse
 | 
				
			||||||
	(*RegisterNodeResponse)(nil),     // 40: headscale.v1.RegisterNodeResponse
 | 
						(*SetTagsResponse)(nil),          // 40: headscale.v1.SetTagsResponse
 | 
				
			||||||
	(*DeleteNodeResponse)(nil),       // 41: headscale.v1.DeleteNodeResponse
 | 
						(*RegisterNodeResponse)(nil),     // 41: headscale.v1.RegisterNodeResponse
 | 
				
			||||||
	(*ExpireNodeResponse)(nil),       // 42: headscale.v1.ExpireNodeResponse
 | 
						(*DeleteNodeResponse)(nil),       // 42: headscale.v1.DeleteNodeResponse
 | 
				
			||||||
	(*RenameNodeResponse)(nil),       // 43: headscale.v1.RenameNodeResponse
 | 
						(*ApproveNodeResponse)(nil),      // 43: headscale.v1.ApproveNodeResponse
 | 
				
			||||||
	(*ListNodesResponse)(nil),        // 44: headscale.v1.ListNodesResponse
 | 
						(*ExpireNodeResponse)(nil),       // 44: headscale.v1.ExpireNodeResponse
 | 
				
			||||||
	(*MoveNodeResponse)(nil),         // 45: headscale.v1.MoveNodeResponse
 | 
						(*RenameNodeResponse)(nil),       // 45: headscale.v1.RenameNodeResponse
 | 
				
			||||||
	(*BackfillNodeIPsResponse)(nil),  // 46: headscale.v1.BackfillNodeIPsResponse
 | 
						(*ListNodesResponse)(nil),        // 46: headscale.v1.ListNodesResponse
 | 
				
			||||||
	(*GetRoutesResponse)(nil),        // 47: headscale.v1.GetRoutesResponse
 | 
						(*MoveNodeResponse)(nil),         // 47: headscale.v1.MoveNodeResponse
 | 
				
			||||||
	(*EnableRouteResponse)(nil),      // 48: headscale.v1.EnableRouteResponse
 | 
						(*BackfillNodeIPsResponse)(nil),  // 48: headscale.v1.BackfillNodeIPsResponse
 | 
				
			||||||
	(*DisableRouteResponse)(nil),     // 49: headscale.v1.DisableRouteResponse
 | 
						(*GetRoutesResponse)(nil),        // 49: headscale.v1.GetRoutesResponse
 | 
				
			||||||
	(*GetNodeRoutesResponse)(nil),    // 50: headscale.v1.GetNodeRoutesResponse
 | 
						(*EnableRouteResponse)(nil),      // 50: headscale.v1.EnableRouteResponse
 | 
				
			||||||
	(*DeleteRouteResponse)(nil),      // 51: headscale.v1.DeleteRouteResponse
 | 
						(*DisableRouteResponse)(nil),     // 51: headscale.v1.DisableRouteResponse
 | 
				
			||||||
	(*CreateApiKeyResponse)(nil),     // 52: headscale.v1.CreateApiKeyResponse
 | 
						(*GetNodeRoutesResponse)(nil),    // 52: headscale.v1.GetNodeRoutesResponse
 | 
				
			||||||
	(*ExpireApiKeyResponse)(nil),     // 53: headscale.v1.ExpireApiKeyResponse
 | 
						(*DeleteRouteResponse)(nil),      // 53: headscale.v1.DeleteRouteResponse
 | 
				
			||||||
	(*ListApiKeysResponse)(nil),      // 54: headscale.v1.ListApiKeysResponse
 | 
						(*CreateApiKeyResponse)(nil),     // 54: headscale.v1.CreateApiKeyResponse
 | 
				
			||||||
	(*DeleteApiKeyResponse)(nil),     // 55: headscale.v1.DeleteApiKeyResponse
 | 
						(*ExpireApiKeyResponse)(nil),     // 55: headscale.v1.ExpireApiKeyResponse
 | 
				
			||||||
	(*GetPolicyResponse)(nil),        // 56: headscale.v1.GetPolicyResponse
 | 
						(*ListApiKeysResponse)(nil),      // 56: headscale.v1.ListApiKeysResponse
 | 
				
			||||||
	(*SetPolicyResponse)(nil),        // 57: headscale.v1.SetPolicyResponse
 | 
						(*DeleteApiKeyResponse)(nil),     // 57: headscale.v1.DeleteApiKeyResponse
 | 
				
			||||||
 | 
						(*GetPolicyResponse)(nil),        // 58: headscale.v1.GetPolicyResponse
 | 
				
			||||||
 | 
						(*SetPolicyResponse)(nil),        // 59: headscale.v1.SetPolicyResponse
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
var file_headscale_v1_headscale_proto_depIdxs = []int32{
 | 
					var file_headscale_v1_headscale_proto_depIdxs = []int32{
 | 
				
			||||||
	0,  // 0: headscale.v1.HeadscaleService.GetUser:input_type -> headscale.v1.GetUserRequest
 | 
						0,  // 0: headscale.v1.HeadscaleService.GetUser:input_type -> headscale.v1.GetUserRequest
 | 
				
			||||||
@ -331,53 +340,55 @@ var file_headscale_v1_headscale_proto_depIdxs = []int32{
 | 
				
			|||||||
	10, // 10: headscale.v1.HeadscaleService.SetTags:input_type -> headscale.v1.SetTagsRequest
 | 
						10, // 10: headscale.v1.HeadscaleService.SetTags:input_type -> headscale.v1.SetTagsRequest
 | 
				
			||||||
	11, // 11: headscale.v1.HeadscaleService.RegisterNode:input_type -> headscale.v1.RegisterNodeRequest
 | 
						11, // 11: headscale.v1.HeadscaleService.RegisterNode:input_type -> headscale.v1.RegisterNodeRequest
 | 
				
			||||||
	12, // 12: headscale.v1.HeadscaleService.DeleteNode:input_type -> headscale.v1.DeleteNodeRequest
 | 
						12, // 12: headscale.v1.HeadscaleService.DeleteNode:input_type -> headscale.v1.DeleteNodeRequest
 | 
				
			||||||
	13, // 13: headscale.v1.HeadscaleService.ExpireNode:input_type -> headscale.v1.ExpireNodeRequest
 | 
						13, // 13: headscale.v1.HeadscaleService.ApproveNode:input_type -> headscale.v1.ApproveNodeRequest
 | 
				
			||||||
	14, // 14: headscale.v1.HeadscaleService.RenameNode:input_type -> headscale.v1.RenameNodeRequest
 | 
						14, // 14: headscale.v1.HeadscaleService.ExpireNode:input_type -> headscale.v1.ExpireNodeRequest
 | 
				
			||||||
	15, // 15: headscale.v1.HeadscaleService.ListNodes:input_type -> headscale.v1.ListNodesRequest
 | 
						15, // 15: headscale.v1.HeadscaleService.RenameNode:input_type -> headscale.v1.RenameNodeRequest
 | 
				
			||||||
	16, // 16: headscale.v1.HeadscaleService.MoveNode:input_type -> headscale.v1.MoveNodeRequest
 | 
						16, // 16: headscale.v1.HeadscaleService.ListNodes:input_type -> headscale.v1.ListNodesRequest
 | 
				
			||||||
	17, // 17: headscale.v1.HeadscaleService.BackfillNodeIPs:input_type -> headscale.v1.BackfillNodeIPsRequest
 | 
						17, // 17: headscale.v1.HeadscaleService.MoveNode:input_type -> headscale.v1.MoveNodeRequest
 | 
				
			||||||
	18, // 18: headscale.v1.HeadscaleService.GetRoutes:input_type -> headscale.v1.GetRoutesRequest
 | 
						18, // 18: headscale.v1.HeadscaleService.BackfillNodeIPs:input_type -> headscale.v1.BackfillNodeIPsRequest
 | 
				
			||||||
	19, // 19: headscale.v1.HeadscaleService.EnableRoute:input_type -> headscale.v1.EnableRouteRequest
 | 
						19, // 19: headscale.v1.HeadscaleService.GetRoutes:input_type -> headscale.v1.GetRoutesRequest
 | 
				
			||||||
	20, // 20: headscale.v1.HeadscaleService.DisableRoute:input_type -> headscale.v1.DisableRouteRequest
 | 
						20, // 20: headscale.v1.HeadscaleService.EnableRoute:input_type -> headscale.v1.EnableRouteRequest
 | 
				
			||||||
	21, // 21: headscale.v1.HeadscaleService.GetNodeRoutes:input_type -> headscale.v1.GetNodeRoutesRequest
 | 
						21, // 21: headscale.v1.HeadscaleService.DisableRoute:input_type -> headscale.v1.DisableRouteRequest
 | 
				
			||||||
	22, // 22: headscale.v1.HeadscaleService.DeleteRoute:input_type -> headscale.v1.DeleteRouteRequest
 | 
						22, // 22: headscale.v1.HeadscaleService.GetNodeRoutes:input_type -> headscale.v1.GetNodeRoutesRequest
 | 
				
			||||||
	23, // 23: headscale.v1.HeadscaleService.CreateApiKey:input_type -> headscale.v1.CreateApiKeyRequest
 | 
						23, // 23: headscale.v1.HeadscaleService.DeleteRoute:input_type -> headscale.v1.DeleteRouteRequest
 | 
				
			||||||
	24, // 24: headscale.v1.HeadscaleService.ExpireApiKey:input_type -> headscale.v1.ExpireApiKeyRequest
 | 
						24, // 24: headscale.v1.HeadscaleService.CreateApiKey:input_type -> headscale.v1.CreateApiKeyRequest
 | 
				
			||||||
	25, // 25: headscale.v1.HeadscaleService.ListApiKeys:input_type -> headscale.v1.ListApiKeysRequest
 | 
						25, // 25: headscale.v1.HeadscaleService.ExpireApiKey:input_type -> headscale.v1.ExpireApiKeyRequest
 | 
				
			||||||
	26, // 26: headscale.v1.HeadscaleService.DeleteApiKey:input_type -> headscale.v1.DeleteApiKeyRequest
 | 
						26, // 26: headscale.v1.HeadscaleService.ListApiKeys:input_type -> headscale.v1.ListApiKeysRequest
 | 
				
			||||||
	27, // 27: headscale.v1.HeadscaleService.GetPolicy:input_type -> headscale.v1.GetPolicyRequest
 | 
						27, // 27: headscale.v1.HeadscaleService.DeleteApiKey:input_type -> headscale.v1.DeleteApiKeyRequest
 | 
				
			||||||
	28, // 28: headscale.v1.HeadscaleService.SetPolicy:input_type -> headscale.v1.SetPolicyRequest
 | 
						28, // 28: headscale.v1.HeadscaleService.GetPolicy:input_type -> headscale.v1.GetPolicyRequest
 | 
				
			||||||
	29, // 29: headscale.v1.HeadscaleService.GetUser:output_type -> headscale.v1.GetUserResponse
 | 
						29, // 29: headscale.v1.HeadscaleService.SetPolicy:input_type -> headscale.v1.SetPolicyRequest
 | 
				
			||||||
	30, // 30: headscale.v1.HeadscaleService.CreateUser:output_type -> headscale.v1.CreateUserResponse
 | 
						30, // 30: headscale.v1.HeadscaleService.GetUser:output_type -> headscale.v1.GetUserResponse
 | 
				
			||||||
	31, // 31: headscale.v1.HeadscaleService.RenameUser:output_type -> headscale.v1.RenameUserResponse
 | 
						31, // 31: headscale.v1.HeadscaleService.CreateUser:output_type -> headscale.v1.CreateUserResponse
 | 
				
			||||||
	32, // 32: headscale.v1.HeadscaleService.DeleteUser:output_type -> headscale.v1.DeleteUserResponse
 | 
						32, // 32: headscale.v1.HeadscaleService.RenameUser:output_type -> headscale.v1.RenameUserResponse
 | 
				
			||||||
	33, // 33: headscale.v1.HeadscaleService.ListUsers:output_type -> headscale.v1.ListUsersResponse
 | 
						33, // 33: headscale.v1.HeadscaleService.DeleteUser:output_type -> headscale.v1.DeleteUserResponse
 | 
				
			||||||
	34, // 34: headscale.v1.HeadscaleService.CreatePreAuthKey:output_type -> headscale.v1.CreatePreAuthKeyResponse
 | 
						34, // 34: headscale.v1.HeadscaleService.ListUsers:output_type -> headscale.v1.ListUsersResponse
 | 
				
			||||||
	35, // 35: headscale.v1.HeadscaleService.ExpirePreAuthKey:output_type -> headscale.v1.ExpirePreAuthKeyResponse
 | 
						35, // 35: headscale.v1.HeadscaleService.CreatePreAuthKey:output_type -> headscale.v1.CreatePreAuthKeyResponse
 | 
				
			||||||
	36, // 36: headscale.v1.HeadscaleService.ListPreAuthKeys:output_type -> headscale.v1.ListPreAuthKeysResponse
 | 
						36, // 36: headscale.v1.HeadscaleService.ExpirePreAuthKey:output_type -> headscale.v1.ExpirePreAuthKeyResponse
 | 
				
			||||||
	37, // 37: headscale.v1.HeadscaleService.DebugCreateNode:output_type -> headscale.v1.DebugCreateNodeResponse
 | 
						37, // 37: headscale.v1.HeadscaleService.ListPreAuthKeys:output_type -> headscale.v1.ListPreAuthKeysResponse
 | 
				
			||||||
	38, // 38: headscale.v1.HeadscaleService.GetNode:output_type -> headscale.v1.GetNodeResponse
 | 
						38, // 38: headscale.v1.HeadscaleService.DebugCreateNode:output_type -> headscale.v1.DebugCreateNodeResponse
 | 
				
			||||||
	39, // 39: headscale.v1.HeadscaleService.SetTags:output_type -> headscale.v1.SetTagsResponse
 | 
						39, // 39: headscale.v1.HeadscaleService.GetNode:output_type -> headscale.v1.GetNodeResponse
 | 
				
			||||||
	40, // 40: headscale.v1.HeadscaleService.RegisterNode:output_type -> headscale.v1.RegisterNodeResponse
 | 
						40, // 40: headscale.v1.HeadscaleService.SetTags:output_type -> headscale.v1.SetTagsResponse
 | 
				
			||||||
	41, // 41: headscale.v1.HeadscaleService.DeleteNode:output_type -> headscale.v1.DeleteNodeResponse
 | 
						41, // 41: headscale.v1.HeadscaleService.RegisterNode:output_type -> headscale.v1.RegisterNodeResponse
 | 
				
			||||||
	42, // 42: headscale.v1.HeadscaleService.ExpireNode:output_type -> headscale.v1.ExpireNodeResponse
 | 
						42, // 42: headscale.v1.HeadscaleService.DeleteNode:output_type -> headscale.v1.DeleteNodeResponse
 | 
				
			||||||
	43, // 43: headscale.v1.HeadscaleService.RenameNode:output_type -> headscale.v1.RenameNodeResponse
 | 
						43, // 43: headscale.v1.HeadscaleService.ApproveNode:output_type -> headscale.v1.ApproveNodeResponse
 | 
				
			||||||
	44, // 44: headscale.v1.HeadscaleService.ListNodes:output_type -> headscale.v1.ListNodesResponse
 | 
						44, // 44: headscale.v1.HeadscaleService.ExpireNode:output_type -> headscale.v1.ExpireNodeResponse
 | 
				
			||||||
	45, // 45: headscale.v1.HeadscaleService.MoveNode:output_type -> headscale.v1.MoveNodeResponse
 | 
						45, // 45: headscale.v1.HeadscaleService.RenameNode:output_type -> headscale.v1.RenameNodeResponse
 | 
				
			||||||
	46, // 46: headscale.v1.HeadscaleService.BackfillNodeIPs:output_type -> headscale.v1.BackfillNodeIPsResponse
 | 
						46, // 46: headscale.v1.HeadscaleService.ListNodes:output_type -> headscale.v1.ListNodesResponse
 | 
				
			||||||
	47, // 47: headscale.v1.HeadscaleService.GetRoutes:output_type -> headscale.v1.GetRoutesResponse
 | 
						47, // 47: headscale.v1.HeadscaleService.MoveNode:output_type -> headscale.v1.MoveNodeResponse
 | 
				
			||||||
	48, // 48: headscale.v1.HeadscaleService.EnableRoute:output_type -> headscale.v1.EnableRouteResponse
 | 
						48, // 48: headscale.v1.HeadscaleService.BackfillNodeIPs:output_type -> headscale.v1.BackfillNodeIPsResponse
 | 
				
			||||||
	49, // 49: headscale.v1.HeadscaleService.DisableRoute:output_type -> headscale.v1.DisableRouteResponse
 | 
						49, // 49: headscale.v1.HeadscaleService.GetRoutes:output_type -> headscale.v1.GetRoutesResponse
 | 
				
			||||||
	50, // 50: headscale.v1.HeadscaleService.GetNodeRoutes:output_type -> headscale.v1.GetNodeRoutesResponse
 | 
						50, // 50: headscale.v1.HeadscaleService.EnableRoute:output_type -> headscale.v1.EnableRouteResponse
 | 
				
			||||||
	51, // 51: headscale.v1.HeadscaleService.DeleteRoute:output_type -> headscale.v1.DeleteRouteResponse
 | 
						51, // 51: headscale.v1.HeadscaleService.DisableRoute:output_type -> headscale.v1.DisableRouteResponse
 | 
				
			||||||
	52, // 52: headscale.v1.HeadscaleService.CreateApiKey:output_type -> headscale.v1.CreateApiKeyResponse
 | 
						52, // 52: headscale.v1.HeadscaleService.GetNodeRoutes:output_type -> headscale.v1.GetNodeRoutesResponse
 | 
				
			||||||
	53, // 53: headscale.v1.HeadscaleService.ExpireApiKey:output_type -> headscale.v1.ExpireApiKeyResponse
 | 
						53, // 53: headscale.v1.HeadscaleService.DeleteRoute:output_type -> headscale.v1.DeleteRouteResponse
 | 
				
			||||||
	54, // 54: headscale.v1.HeadscaleService.ListApiKeys:output_type -> headscale.v1.ListApiKeysResponse
 | 
						54, // 54: headscale.v1.HeadscaleService.CreateApiKey:output_type -> headscale.v1.CreateApiKeyResponse
 | 
				
			||||||
	55, // 55: headscale.v1.HeadscaleService.DeleteApiKey:output_type -> headscale.v1.DeleteApiKeyResponse
 | 
						55, // 55: headscale.v1.HeadscaleService.ExpireApiKey:output_type -> headscale.v1.ExpireApiKeyResponse
 | 
				
			||||||
	56, // 56: headscale.v1.HeadscaleService.GetPolicy:output_type -> headscale.v1.GetPolicyResponse
 | 
						56, // 56: headscale.v1.HeadscaleService.ListApiKeys:output_type -> headscale.v1.ListApiKeysResponse
 | 
				
			||||||
	57, // 57: headscale.v1.HeadscaleService.SetPolicy:output_type -> headscale.v1.SetPolicyResponse
 | 
						57, // 57: headscale.v1.HeadscaleService.DeleteApiKey:output_type -> headscale.v1.DeleteApiKeyResponse
 | 
				
			||||||
	29, // [29:58] is the sub-list for method output_type
 | 
						58, // 58: headscale.v1.HeadscaleService.GetPolicy:output_type -> headscale.v1.GetPolicyResponse
 | 
				
			||||||
	0,  // [0:29] is the sub-list for method input_type
 | 
						59, // 59: headscale.v1.HeadscaleService.SetPolicy:output_type -> headscale.v1.SetPolicyResponse
 | 
				
			||||||
 | 
						30, // [30:60] is the sub-list for method output_type
 | 
				
			||||||
 | 
						0,  // [0:30] is the sub-list for method input_type
 | 
				
			||||||
	0,  // [0:0] is the sub-list for extension type_name
 | 
						0,  // [0:0] is the sub-list for extension type_name
 | 
				
			||||||
	0,  // [0:0] is the sub-list for extension extendee
 | 
						0,  // [0:0] is the sub-list for extension extendee
 | 
				
			||||||
	0,  // [0:0] is the sub-list for field type_name
 | 
						0,  // [0:0] is the sub-list for field type_name
 | 
				
			||||||
 | 
				
			|||||||
@ -565,6 +565,58 @@ func local_request_HeadscaleService_DeleteNode_0(ctx context.Context, marshaler
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func request_HeadscaleService_ApproveNode_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
 | 
				
			||||||
 | 
						var protoReq ApproveNodeRequest
 | 
				
			||||||
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var (
 | 
				
			||||||
 | 
							val string
 | 
				
			||||||
 | 
							ok  bool
 | 
				
			||||||
 | 
							err error
 | 
				
			||||||
 | 
							_   = err
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						val, ok = pathParams["node_id"]
 | 
				
			||||||
 | 
						if !ok {
 | 
				
			||||||
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						protoReq.NodeId, err = runtime.Uint64(val)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						msg, err := client.ApproveNode(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
 | 
				
			||||||
 | 
						return msg, metadata, err
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func local_request_HeadscaleService_ApproveNode_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
 | 
				
			||||||
 | 
						var protoReq ApproveNodeRequest
 | 
				
			||||||
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var (
 | 
				
			||||||
 | 
							val string
 | 
				
			||||||
 | 
							ok  bool
 | 
				
			||||||
 | 
							err error
 | 
				
			||||||
 | 
							_   = err
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						val, ok = pathParams["node_id"]
 | 
				
			||||||
 | 
						if !ok {
 | 
				
			||||||
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						protoReq.NodeId, err = runtime.Uint64(val)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						msg, err := server.ApproveNode(ctx, &protoReq)
 | 
				
			||||||
 | 
						return msg, metadata, err
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func request_HeadscaleService_ExpireNode_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
 | 
					func request_HeadscaleService_ExpireNode_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
 | 
				
			||||||
	var protoReq ExpireNodeRequest
 | 
						var protoReq ExpireNodeRequest
 | 
				
			||||||
	var metadata runtime.ServerMetadata
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
@ -1545,6 +1597,31 @@ func RegisterHeadscaleServiceHandlerServer(ctx context.Context, mux *runtime.Ser
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mux.Handle("POST", pattern_HeadscaleService_ApproveNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
 | 
				
			||||||
 | 
							ctx, cancel := context.WithCancel(req.Context())
 | 
				
			||||||
 | 
							defer cancel()
 | 
				
			||||||
 | 
							var stream runtime.ServerTransportStream
 | 
				
			||||||
 | 
							ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 | 
				
			||||||
 | 
							inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
 | 
				
			||||||
 | 
							var err error
 | 
				
			||||||
 | 
							var annotatedContext context.Context
 | 
				
			||||||
 | 
							annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/ApproveNode", runtime.WithHTTPPathPattern("/api/v1/node/{node_id}/approve"))
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							resp, md, err := local_request_HeadscaleService_ApproveNode_0(annotatedContext, inboundMarshaler, server, req, pathParams)
 | 
				
			||||||
 | 
							md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
 | 
				
			||||||
 | 
							annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							forward_HeadscaleService_ApproveNode_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mux.Handle("POST", pattern_HeadscaleService_ExpireNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
 | 
						mux.Handle("POST", pattern_HeadscaleService_ExpireNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
 | 
				
			||||||
		ctx, cancel := context.WithCancel(req.Context())
 | 
							ctx, cancel := context.WithCancel(req.Context())
 | 
				
			||||||
		defer cancel()
 | 
							defer cancel()
 | 
				
			||||||
@ -2272,6 +2349,28 @@ func RegisterHeadscaleServiceHandlerClient(ctx context.Context, mux *runtime.Ser
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mux.Handle("POST", pattern_HeadscaleService_ApproveNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
 | 
				
			||||||
 | 
							ctx, cancel := context.WithCancel(req.Context())
 | 
				
			||||||
 | 
							defer cancel()
 | 
				
			||||||
 | 
							inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
 | 
				
			||||||
 | 
							var err error
 | 
				
			||||||
 | 
							var annotatedContext context.Context
 | 
				
			||||||
 | 
							annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/ApproveNode", runtime.WithHTTPPathPattern("/api/v1/node/{node_id}/approve"))
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							resp, md, err := request_HeadscaleService_ApproveNode_0(annotatedContext, inboundMarshaler, client, req, pathParams)
 | 
				
			||||||
 | 
							annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							forward_HeadscaleService_ApproveNode_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mux.Handle("POST", pattern_HeadscaleService_ExpireNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
 | 
						mux.Handle("POST", pattern_HeadscaleService_ExpireNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
 | 
				
			||||||
		ctx, cancel := context.WithCancel(req.Context())
 | 
							ctx, cancel := context.WithCancel(req.Context())
 | 
				
			||||||
		defer cancel()
 | 
							defer cancel()
 | 
				
			||||||
@ -2654,6 +2753,8 @@ var (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	pattern_HeadscaleService_DeleteNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "node", "node_id"}, ""))
 | 
						pattern_HeadscaleService_DeleteNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "node", "node_id"}, ""))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pattern_HeadscaleService_ApproveNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"api", "v1", "node", "node_id", "approve"}, ""))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pattern_HeadscaleService_ExpireNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"api", "v1", "node", "node_id", "expire"}, ""))
 | 
						pattern_HeadscaleService_ExpireNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"api", "v1", "node", "node_id", "expire"}, ""))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pattern_HeadscaleService_RenameNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "node", "node_id", "rename", "new_name"}, ""))
 | 
						pattern_HeadscaleService_RenameNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "node", "node_id", "rename", "new_name"}, ""))
 | 
				
			||||||
@ -2714,6 +2815,8 @@ var (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	forward_HeadscaleService_DeleteNode_0 = runtime.ForwardResponseMessage
 | 
						forward_HeadscaleService_DeleteNode_0 = runtime.ForwardResponseMessage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						forward_HeadscaleService_ApproveNode_0 = runtime.ForwardResponseMessage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	forward_HeadscaleService_ExpireNode_0 = runtime.ForwardResponseMessage
 | 
						forward_HeadscaleService_ExpireNode_0 = runtime.ForwardResponseMessage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	forward_HeadscaleService_RenameNode_0 = runtime.ForwardResponseMessage
 | 
						forward_HeadscaleService_RenameNode_0 = runtime.ForwardResponseMessage
 | 
				
			||||||
 | 
				
			|||||||
@ -32,6 +32,7 @@ const (
 | 
				
			|||||||
	HeadscaleService_SetTags_FullMethodName          = "/headscale.v1.HeadscaleService/SetTags"
 | 
						HeadscaleService_SetTags_FullMethodName          = "/headscale.v1.HeadscaleService/SetTags"
 | 
				
			||||||
	HeadscaleService_RegisterNode_FullMethodName     = "/headscale.v1.HeadscaleService/RegisterNode"
 | 
						HeadscaleService_RegisterNode_FullMethodName     = "/headscale.v1.HeadscaleService/RegisterNode"
 | 
				
			||||||
	HeadscaleService_DeleteNode_FullMethodName       = "/headscale.v1.HeadscaleService/DeleteNode"
 | 
						HeadscaleService_DeleteNode_FullMethodName       = "/headscale.v1.HeadscaleService/DeleteNode"
 | 
				
			||||||
 | 
						HeadscaleService_ApproveNode_FullMethodName      = "/headscale.v1.HeadscaleService/ApproveNode"
 | 
				
			||||||
	HeadscaleService_ExpireNode_FullMethodName       = "/headscale.v1.HeadscaleService/ExpireNode"
 | 
						HeadscaleService_ExpireNode_FullMethodName       = "/headscale.v1.HeadscaleService/ExpireNode"
 | 
				
			||||||
	HeadscaleService_RenameNode_FullMethodName       = "/headscale.v1.HeadscaleService/RenameNode"
 | 
						HeadscaleService_RenameNode_FullMethodName       = "/headscale.v1.HeadscaleService/RenameNode"
 | 
				
			||||||
	HeadscaleService_ListNodes_FullMethodName        = "/headscale.v1.HeadscaleService/ListNodes"
 | 
						HeadscaleService_ListNodes_FullMethodName        = "/headscale.v1.HeadscaleService/ListNodes"
 | 
				
			||||||
@ -70,6 +71,7 @@ type HeadscaleServiceClient interface {
 | 
				
			|||||||
	SetTags(ctx context.Context, in *SetTagsRequest, opts ...grpc.CallOption) (*SetTagsResponse, error)
 | 
						SetTags(ctx context.Context, in *SetTagsRequest, opts ...grpc.CallOption) (*SetTagsResponse, error)
 | 
				
			||||||
	RegisterNode(ctx context.Context, in *RegisterNodeRequest, opts ...grpc.CallOption) (*RegisterNodeResponse, error)
 | 
						RegisterNode(ctx context.Context, in *RegisterNodeRequest, opts ...grpc.CallOption) (*RegisterNodeResponse, error)
 | 
				
			||||||
	DeleteNode(ctx context.Context, in *DeleteNodeRequest, opts ...grpc.CallOption) (*DeleteNodeResponse, error)
 | 
						DeleteNode(ctx context.Context, in *DeleteNodeRequest, opts ...grpc.CallOption) (*DeleteNodeResponse, error)
 | 
				
			||||||
 | 
						ApproveNode(ctx context.Context, in *ApproveNodeRequest, opts ...grpc.CallOption) (*ApproveNodeResponse, error)
 | 
				
			||||||
	ExpireNode(ctx context.Context, in *ExpireNodeRequest, opts ...grpc.CallOption) (*ExpireNodeResponse, error)
 | 
						ExpireNode(ctx context.Context, in *ExpireNodeRequest, opts ...grpc.CallOption) (*ExpireNodeResponse, error)
 | 
				
			||||||
	RenameNode(ctx context.Context, in *RenameNodeRequest, opts ...grpc.CallOption) (*RenameNodeResponse, error)
 | 
						RenameNode(ctx context.Context, in *RenameNodeRequest, opts ...grpc.CallOption) (*RenameNodeResponse, error)
 | 
				
			||||||
	ListNodes(ctx context.Context, in *ListNodesRequest, opts ...grpc.CallOption) (*ListNodesResponse, error)
 | 
						ListNodes(ctx context.Context, in *ListNodesRequest, opts ...grpc.CallOption) (*ListNodesResponse, error)
 | 
				
			||||||
@ -216,6 +218,15 @@ func (c *headscaleServiceClient) DeleteNode(ctx context.Context, in *DeleteNodeR
 | 
				
			|||||||
	return out, nil
 | 
						return out, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *headscaleServiceClient) ApproveNode(ctx context.Context, in *ApproveNodeRequest, opts ...grpc.CallOption) (*ApproveNodeResponse, error) {
 | 
				
			||||||
 | 
						out := new(ApproveNodeResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_ApproveNode_FullMethodName, in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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, HeadscaleService_ExpireNode_FullMethodName, in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, HeadscaleService_ExpireNode_FullMethodName, in, out, opts...)
 | 
				
			||||||
@ -380,6 +391,7 @@ type HeadscaleServiceServer interface {
 | 
				
			|||||||
	SetTags(context.Context, *SetTagsRequest) (*SetTagsResponse, error)
 | 
						SetTags(context.Context, *SetTagsRequest) (*SetTagsResponse, error)
 | 
				
			||||||
	RegisterNode(context.Context, *RegisterNodeRequest) (*RegisterNodeResponse, error)
 | 
						RegisterNode(context.Context, *RegisterNodeRequest) (*RegisterNodeResponse, error)
 | 
				
			||||||
	DeleteNode(context.Context, *DeleteNodeRequest) (*DeleteNodeResponse, error)
 | 
						DeleteNode(context.Context, *DeleteNodeRequest) (*DeleteNodeResponse, error)
 | 
				
			||||||
 | 
						ApproveNode(context.Context, *ApproveNodeRequest) (*ApproveNodeResponse, error)
 | 
				
			||||||
	ExpireNode(context.Context, *ExpireNodeRequest) (*ExpireNodeResponse, error)
 | 
						ExpireNode(context.Context, *ExpireNodeRequest) (*ExpireNodeResponse, error)
 | 
				
			||||||
	RenameNode(context.Context, *RenameNodeRequest) (*RenameNodeResponse, error)
 | 
						RenameNode(context.Context, *RenameNodeRequest) (*RenameNodeResponse, error)
 | 
				
			||||||
	ListNodes(context.Context, *ListNodesRequest) (*ListNodesResponse, error)
 | 
						ListNodes(context.Context, *ListNodesRequest) (*ListNodesResponse, error)
 | 
				
			||||||
@ -445,6 +457,9 @@ func (UnimplementedHeadscaleServiceServer) RegisterNode(context.Context, *Regist
 | 
				
			|||||||
func (UnimplementedHeadscaleServiceServer) DeleteNode(context.Context, *DeleteNodeRequest) (*DeleteNodeResponse, error) {
 | 
					func (UnimplementedHeadscaleServiceServer) DeleteNode(context.Context, *DeleteNodeRequest) (*DeleteNodeResponse, error) {
 | 
				
			||||||
	return nil, status.Errorf(codes.Unimplemented, "method DeleteNode not implemented")
 | 
						return nil, status.Errorf(codes.Unimplemented, "method DeleteNode not implemented")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					func (UnimplementedHeadscaleServiceServer) ApproveNode(context.Context, *ApproveNodeRequest) (*ApproveNodeResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method ApproveNode not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
func (UnimplementedHeadscaleServiceServer) ExpireNode(context.Context, *ExpireNodeRequest) (*ExpireNodeResponse, error) {
 | 
					func (UnimplementedHeadscaleServiceServer) ExpireNode(context.Context, *ExpireNodeRequest) (*ExpireNodeResponse, error) {
 | 
				
			||||||
	return nil, status.Errorf(codes.Unimplemented, "method ExpireNode not implemented")
 | 
						return nil, status.Errorf(codes.Unimplemented, "method ExpireNode not implemented")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -740,6 +755,24 @@ func _HeadscaleService_DeleteNode_Handler(srv interface{}, ctx context.Context,
 | 
				
			|||||||
	return interceptor(ctx, in, info, handler)
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _HeadscaleService_ApproveNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(ApproveNodeRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(HeadscaleServiceServer).ApproveNode(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: HeadscaleService_ApproveNode_FullMethodName,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(HeadscaleServiceServer).ApproveNode(ctx, req.(*ApproveNodeRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func _HeadscaleService_ExpireNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
					func _HeadscaleService_ExpireNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
	in := new(ExpireNodeRequest)
 | 
						in := new(ExpireNodeRequest)
 | 
				
			||||||
	if err := dec(in); err != nil {
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
@ -1087,6 +1120,10 @@ var HeadscaleService_ServiceDesc = grpc.ServiceDesc{
 | 
				
			|||||||
			MethodName: "DeleteNode",
 | 
								MethodName: "DeleteNode",
 | 
				
			||||||
			Handler:    _HeadscaleService_DeleteNode_Handler,
 | 
								Handler:    _HeadscaleService_DeleteNode_Handler,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "ApproveNode",
 | 
				
			||||||
 | 
								Handler:    _HeadscaleService_ApproveNode_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			MethodName: "ExpireNode",
 | 
								MethodName: "ExpireNode",
 | 
				
			||||||
			Handler:    _HeadscaleService_ExpireNode_Handler,
 | 
								Handler:    _HeadscaleService_ExpireNode_Handler,
 | 
				
			||||||
 | 
				
			|||||||
@ -95,6 +95,7 @@ type Node struct {
 | 
				
			|||||||
	ValidTags      []string               `protobuf:"bytes,20,rep,name=valid_tags,json=validTags,proto3" json:"valid_tags,omitempty"`
 | 
						ValidTags      []string               `protobuf:"bytes,20,rep,name=valid_tags,json=validTags,proto3" json:"valid_tags,omitempty"`
 | 
				
			||||||
	GivenName      string                 `protobuf:"bytes,21,opt,name=given_name,json=givenName,proto3" json:"given_name,omitempty"`
 | 
						GivenName      string                 `protobuf:"bytes,21,opt,name=given_name,json=givenName,proto3" json:"given_name,omitempty"`
 | 
				
			||||||
	Online         bool                   `protobuf:"varint,22,opt,name=online,proto3" json:"online,omitempty"`
 | 
						Online         bool                   `protobuf:"varint,22,opt,name=online,proto3" json:"online,omitempty"`
 | 
				
			||||||
 | 
						Approved       bool                   `protobuf:"varint,23,opt,name=approved,proto3" json:"approved,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *Node) Reset() {
 | 
					func (x *Node) Reset() {
 | 
				
			||||||
@ -248,6 +249,13 @@ func (x *Node) GetOnline() bool {
 | 
				
			|||||||
	return false
 | 
						return false
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *Node) GetApproved() bool {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Approved
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type RegisterNodeRequest struct {
 | 
					type RegisterNodeRequest struct {
 | 
				
			||||||
	state         protoimpl.MessageState
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
	sizeCache     protoimpl.SizeCache
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
@ -631,6 +639,100 @@ func (*DeleteNodeResponse) Descriptor() ([]byte, []int) {
 | 
				
			|||||||
	return file_headscale_v1_node_proto_rawDescGZIP(), []int{8}
 | 
						return file_headscale_v1_node_proto_rawDescGZIP(), []int{8}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type ApproveNodeRequest struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						NodeId uint64 `protobuf:"varint,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ApproveNodeRequest) Reset() {
 | 
				
			||||||
 | 
						*x = ApproveNodeRequest{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_headscale_v1_node_proto_msgTypes[9]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ApproveNodeRequest) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*ApproveNodeRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ApproveNodeRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_headscale_v1_node_proto_msgTypes[9]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use ApproveNodeRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*ApproveNodeRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_headscale_v1_node_proto_rawDescGZIP(), []int{9}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ApproveNodeRequest) GetNodeId() uint64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.NodeId
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type ApproveNodeResponse struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ApproveNodeResponse) Reset() {
 | 
				
			||||||
 | 
						*x = ApproveNodeResponse{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_headscale_v1_node_proto_msgTypes[10]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ApproveNodeResponse) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*ApproveNodeResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ApproveNodeResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_headscale_v1_node_proto_msgTypes[10]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use ApproveNodeResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*ApproveNodeResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_headscale_v1_node_proto_rawDescGZIP(), []int{10}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *ApproveNodeResponse) GetNode() *Node {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Node
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ExpireNodeRequest struct {
 | 
					type ExpireNodeRequest struct {
 | 
				
			||||||
	state         protoimpl.MessageState
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
	sizeCache     protoimpl.SizeCache
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
@ -642,7 +744,7 @@ type ExpireNodeRequest struct {
 | 
				
			|||||||
func (x *ExpireNodeRequest) Reset() {
 | 
					func (x *ExpireNodeRequest) Reset() {
 | 
				
			||||||
	*x = ExpireNodeRequest{}
 | 
						*x = ExpireNodeRequest{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_node_proto_msgTypes[9]
 | 
							mi := &file_headscale_v1_node_proto_msgTypes[11]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -655,7 +757,7 @@ func (x *ExpireNodeRequest) String() string {
 | 
				
			|||||||
func (*ExpireNodeRequest) ProtoMessage() {}
 | 
					func (*ExpireNodeRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ExpireNodeRequest) ProtoReflect() protoreflect.Message {
 | 
					func (x *ExpireNodeRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_node_proto_msgTypes[9]
 | 
						mi := &file_headscale_v1_node_proto_msgTypes[11]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@ -668,7 +770,7 @@ func (x *ExpireNodeRequest) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use ExpireNodeRequest.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use ExpireNodeRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*ExpireNodeRequest) Descriptor() ([]byte, []int) {
 | 
					func (*ExpireNodeRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_node_proto_rawDescGZIP(), []int{9}
 | 
						return file_headscale_v1_node_proto_rawDescGZIP(), []int{11}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ExpireNodeRequest) GetNodeId() uint64 {
 | 
					func (x *ExpireNodeRequest) GetNodeId() uint64 {
 | 
				
			||||||
@ -689,7 +791,7 @@ type ExpireNodeResponse struct {
 | 
				
			|||||||
func (x *ExpireNodeResponse) Reset() {
 | 
					func (x *ExpireNodeResponse) Reset() {
 | 
				
			||||||
	*x = ExpireNodeResponse{}
 | 
						*x = ExpireNodeResponse{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_node_proto_msgTypes[10]
 | 
							mi := &file_headscale_v1_node_proto_msgTypes[12]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -702,7 +804,7 @@ func (x *ExpireNodeResponse) String() string {
 | 
				
			|||||||
func (*ExpireNodeResponse) ProtoMessage() {}
 | 
					func (*ExpireNodeResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ExpireNodeResponse) ProtoReflect() protoreflect.Message {
 | 
					func (x *ExpireNodeResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_node_proto_msgTypes[10]
 | 
						mi := &file_headscale_v1_node_proto_msgTypes[12]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@ -715,7 +817,7 @@ func (x *ExpireNodeResponse) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use ExpireNodeResponse.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use ExpireNodeResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*ExpireNodeResponse) Descriptor() ([]byte, []int) {
 | 
					func (*ExpireNodeResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_node_proto_rawDescGZIP(), []int{10}
 | 
						return file_headscale_v1_node_proto_rawDescGZIP(), []int{12}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ExpireNodeResponse) GetNode() *Node {
 | 
					func (x *ExpireNodeResponse) GetNode() *Node {
 | 
				
			||||||
@ -737,7 +839,7 @@ type RenameNodeRequest struct {
 | 
				
			|||||||
func (x *RenameNodeRequest) Reset() {
 | 
					func (x *RenameNodeRequest) Reset() {
 | 
				
			||||||
	*x = RenameNodeRequest{}
 | 
						*x = RenameNodeRequest{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_node_proto_msgTypes[11]
 | 
							mi := &file_headscale_v1_node_proto_msgTypes[13]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -750,7 +852,7 @@ func (x *RenameNodeRequest) String() string {
 | 
				
			|||||||
func (*RenameNodeRequest) ProtoMessage() {}
 | 
					func (*RenameNodeRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *RenameNodeRequest) ProtoReflect() protoreflect.Message {
 | 
					func (x *RenameNodeRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_node_proto_msgTypes[11]
 | 
						mi := &file_headscale_v1_node_proto_msgTypes[13]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@ -763,7 +865,7 @@ func (x *RenameNodeRequest) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use RenameNodeRequest.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use RenameNodeRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*RenameNodeRequest) Descriptor() ([]byte, []int) {
 | 
					func (*RenameNodeRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_node_proto_rawDescGZIP(), []int{11}
 | 
						return file_headscale_v1_node_proto_rawDescGZIP(), []int{13}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *RenameNodeRequest) GetNodeId() uint64 {
 | 
					func (x *RenameNodeRequest) GetNodeId() uint64 {
 | 
				
			||||||
@ -791,7 +893,7 @@ type RenameNodeResponse struct {
 | 
				
			|||||||
func (x *RenameNodeResponse) Reset() {
 | 
					func (x *RenameNodeResponse) Reset() {
 | 
				
			||||||
	*x = RenameNodeResponse{}
 | 
						*x = RenameNodeResponse{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_node_proto_msgTypes[12]
 | 
							mi := &file_headscale_v1_node_proto_msgTypes[14]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -804,7 +906,7 @@ func (x *RenameNodeResponse) String() string {
 | 
				
			|||||||
func (*RenameNodeResponse) ProtoMessage() {}
 | 
					func (*RenameNodeResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *RenameNodeResponse) ProtoReflect() protoreflect.Message {
 | 
					func (x *RenameNodeResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_node_proto_msgTypes[12]
 | 
						mi := &file_headscale_v1_node_proto_msgTypes[14]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@ -817,7 +919,7 @@ func (x *RenameNodeResponse) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use RenameNodeResponse.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use RenameNodeResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*RenameNodeResponse) Descriptor() ([]byte, []int) {
 | 
					func (*RenameNodeResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_node_proto_rawDescGZIP(), []int{12}
 | 
						return file_headscale_v1_node_proto_rawDescGZIP(), []int{14}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *RenameNodeResponse) GetNode() *Node {
 | 
					func (x *RenameNodeResponse) GetNode() *Node {
 | 
				
			||||||
@ -838,7 +940,7 @@ type ListNodesRequest struct {
 | 
				
			|||||||
func (x *ListNodesRequest) Reset() {
 | 
					func (x *ListNodesRequest) Reset() {
 | 
				
			||||||
	*x = ListNodesRequest{}
 | 
						*x = ListNodesRequest{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_node_proto_msgTypes[13]
 | 
							mi := &file_headscale_v1_node_proto_msgTypes[15]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -851,7 +953,7 @@ func (x *ListNodesRequest) String() string {
 | 
				
			|||||||
func (*ListNodesRequest) ProtoMessage() {}
 | 
					func (*ListNodesRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ListNodesRequest) ProtoReflect() protoreflect.Message {
 | 
					func (x *ListNodesRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_node_proto_msgTypes[13]
 | 
						mi := &file_headscale_v1_node_proto_msgTypes[15]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@ -864,7 +966,7 @@ func (x *ListNodesRequest) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use ListNodesRequest.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use ListNodesRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*ListNodesRequest) Descriptor() ([]byte, []int) {
 | 
					func (*ListNodesRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_node_proto_rawDescGZIP(), []int{13}
 | 
						return file_headscale_v1_node_proto_rawDescGZIP(), []int{15}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ListNodesRequest) GetUser() string {
 | 
					func (x *ListNodesRequest) GetUser() string {
 | 
				
			||||||
@ -885,7 +987,7 @@ type ListNodesResponse struct {
 | 
				
			|||||||
func (x *ListNodesResponse) Reset() {
 | 
					func (x *ListNodesResponse) Reset() {
 | 
				
			||||||
	*x = ListNodesResponse{}
 | 
						*x = ListNodesResponse{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_node_proto_msgTypes[14]
 | 
							mi := &file_headscale_v1_node_proto_msgTypes[16]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -898,7 +1000,7 @@ func (x *ListNodesResponse) String() string {
 | 
				
			|||||||
func (*ListNodesResponse) ProtoMessage() {}
 | 
					func (*ListNodesResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ListNodesResponse) ProtoReflect() protoreflect.Message {
 | 
					func (x *ListNodesResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_node_proto_msgTypes[14]
 | 
						mi := &file_headscale_v1_node_proto_msgTypes[16]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@ -911,7 +1013,7 @@ func (x *ListNodesResponse) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use ListNodesResponse.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use ListNodesResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*ListNodesResponse) Descriptor() ([]byte, []int) {
 | 
					func (*ListNodesResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_node_proto_rawDescGZIP(), []int{14}
 | 
						return file_headscale_v1_node_proto_rawDescGZIP(), []int{16}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ListNodesResponse) GetNodes() []*Node {
 | 
					func (x *ListNodesResponse) GetNodes() []*Node {
 | 
				
			||||||
@ -933,7 +1035,7 @@ type MoveNodeRequest struct {
 | 
				
			|||||||
func (x *MoveNodeRequest) Reset() {
 | 
					func (x *MoveNodeRequest) Reset() {
 | 
				
			||||||
	*x = MoveNodeRequest{}
 | 
						*x = MoveNodeRequest{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_node_proto_msgTypes[15]
 | 
							mi := &file_headscale_v1_node_proto_msgTypes[17]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -946,7 +1048,7 @@ func (x *MoveNodeRequest) String() string {
 | 
				
			|||||||
func (*MoveNodeRequest) ProtoMessage() {}
 | 
					func (*MoveNodeRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *MoveNodeRequest) ProtoReflect() protoreflect.Message {
 | 
					func (x *MoveNodeRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_node_proto_msgTypes[15]
 | 
						mi := &file_headscale_v1_node_proto_msgTypes[17]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@ -959,7 +1061,7 @@ func (x *MoveNodeRequest) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use MoveNodeRequest.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use MoveNodeRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*MoveNodeRequest) Descriptor() ([]byte, []int) {
 | 
					func (*MoveNodeRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_node_proto_rawDescGZIP(), []int{15}
 | 
						return file_headscale_v1_node_proto_rawDescGZIP(), []int{17}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *MoveNodeRequest) GetNodeId() uint64 {
 | 
					func (x *MoveNodeRequest) GetNodeId() uint64 {
 | 
				
			||||||
@ -987,7 +1089,7 @@ type MoveNodeResponse struct {
 | 
				
			|||||||
func (x *MoveNodeResponse) Reset() {
 | 
					func (x *MoveNodeResponse) Reset() {
 | 
				
			||||||
	*x = MoveNodeResponse{}
 | 
						*x = MoveNodeResponse{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_node_proto_msgTypes[16]
 | 
							mi := &file_headscale_v1_node_proto_msgTypes[18]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -1000,7 +1102,7 @@ func (x *MoveNodeResponse) String() string {
 | 
				
			|||||||
func (*MoveNodeResponse) ProtoMessage() {}
 | 
					func (*MoveNodeResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *MoveNodeResponse) ProtoReflect() protoreflect.Message {
 | 
					func (x *MoveNodeResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_node_proto_msgTypes[16]
 | 
						mi := &file_headscale_v1_node_proto_msgTypes[18]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@ -1013,7 +1115,7 @@ func (x *MoveNodeResponse) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use MoveNodeResponse.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use MoveNodeResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*MoveNodeResponse) Descriptor() ([]byte, []int) {
 | 
					func (*MoveNodeResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_node_proto_rawDescGZIP(), []int{16}
 | 
						return file_headscale_v1_node_proto_rawDescGZIP(), []int{18}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *MoveNodeResponse) GetNode() *Node {
 | 
					func (x *MoveNodeResponse) GetNode() *Node {
 | 
				
			||||||
@ -1037,7 +1139,7 @@ type DebugCreateNodeRequest struct {
 | 
				
			|||||||
func (x *DebugCreateNodeRequest) Reset() {
 | 
					func (x *DebugCreateNodeRequest) Reset() {
 | 
				
			||||||
	*x = DebugCreateNodeRequest{}
 | 
						*x = DebugCreateNodeRequest{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_node_proto_msgTypes[17]
 | 
							mi := &file_headscale_v1_node_proto_msgTypes[19]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -1050,7 +1152,7 @@ func (x *DebugCreateNodeRequest) String() string {
 | 
				
			|||||||
func (*DebugCreateNodeRequest) ProtoMessage() {}
 | 
					func (*DebugCreateNodeRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *DebugCreateNodeRequest) ProtoReflect() protoreflect.Message {
 | 
					func (x *DebugCreateNodeRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_node_proto_msgTypes[17]
 | 
						mi := &file_headscale_v1_node_proto_msgTypes[19]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@ -1063,7 +1165,7 @@ func (x *DebugCreateNodeRequest) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use DebugCreateNodeRequest.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use DebugCreateNodeRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*DebugCreateNodeRequest) Descriptor() ([]byte, []int) {
 | 
					func (*DebugCreateNodeRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_node_proto_rawDescGZIP(), []int{17}
 | 
						return file_headscale_v1_node_proto_rawDescGZIP(), []int{19}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *DebugCreateNodeRequest) GetUser() string {
 | 
					func (x *DebugCreateNodeRequest) GetUser() string {
 | 
				
			||||||
@ -1105,7 +1207,7 @@ type DebugCreateNodeResponse struct {
 | 
				
			|||||||
func (x *DebugCreateNodeResponse) Reset() {
 | 
					func (x *DebugCreateNodeResponse) Reset() {
 | 
				
			||||||
	*x = DebugCreateNodeResponse{}
 | 
						*x = DebugCreateNodeResponse{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_node_proto_msgTypes[18]
 | 
							mi := &file_headscale_v1_node_proto_msgTypes[20]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -1118,7 +1220,7 @@ func (x *DebugCreateNodeResponse) String() string {
 | 
				
			|||||||
func (*DebugCreateNodeResponse) ProtoMessage() {}
 | 
					func (*DebugCreateNodeResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *DebugCreateNodeResponse) ProtoReflect() protoreflect.Message {
 | 
					func (x *DebugCreateNodeResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_node_proto_msgTypes[18]
 | 
						mi := &file_headscale_v1_node_proto_msgTypes[20]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@ -1131,7 +1233,7 @@ func (x *DebugCreateNodeResponse) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use DebugCreateNodeResponse.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use DebugCreateNodeResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*DebugCreateNodeResponse) Descriptor() ([]byte, []int) {
 | 
					func (*DebugCreateNodeResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_node_proto_rawDescGZIP(), []int{18}
 | 
						return file_headscale_v1_node_proto_rawDescGZIP(), []int{20}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *DebugCreateNodeResponse) GetNode() *Node {
 | 
					func (x *DebugCreateNodeResponse) GetNode() *Node {
 | 
				
			||||||
@ -1152,7 +1254,7 @@ type BackfillNodeIPsRequest struct {
 | 
				
			|||||||
func (x *BackfillNodeIPsRequest) Reset() {
 | 
					func (x *BackfillNodeIPsRequest) Reset() {
 | 
				
			||||||
	*x = BackfillNodeIPsRequest{}
 | 
						*x = BackfillNodeIPsRequest{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_node_proto_msgTypes[19]
 | 
							mi := &file_headscale_v1_node_proto_msgTypes[21]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -1165,7 +1267,7 @@ func (x *BackfillNodeIPsRequest) String() string {
 | 
				
			|||||||
func (*BackfillNodeIPsRequest) ProtoMessage() {}
 | 
					func (*BackfillNodeIPsRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *BackfillNodeIPsRequest) ProtoReflect() protoreflect.Message {
 | 
					func (x *BackfillNodeIPsRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_node_proto_msgTypes[19]
 | 
						mi := &file_headscale_v1_node_proto_msgTypes[21]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@ -1178,7 +1280,7 @@ func (x *BackfillNodeIPsRequest) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use BackfillNodeIPsRequest.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use BackfillNodeIPsRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*BackfillNodeIPsRequest) Descriptor() ([]byte, []int) {
 | 
					func (*BackfillNodeIPsRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_node_proto_rawDescGZIP(), []int{19}
 | 
						return file_headscale_v1_node_proto_rawDescGZIP(), []int{21}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *BackfillNodeIPsRequest) GetConfirmed() bool {
 | 
					func (x *BackfillNodeIPsRequest) GetConfirmed() bool {
 | 
				
			||||||
@ -1199,7 +1301,7 @@ type BackfillNodeIPsResponse struct {
 | 
				
			|||||||
func (x *BackfillNodeIPsResponse) Reset() {
 | 
					func (x *BackfillNodeIPsResponse) Reset() {
 | 
				
			||||||
	*x = BackfillNodeIPsResponse{}
 | 
						*x = BackfillNodeIPsResponse{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_node_proto_msgTypes[20]
 | 
							mi := &file_headscale_v1_node_proto_msgTypes[22]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -1212,7 +1314,7 @@ func (x *BackfillNodeIPsResponse) String() string {
 | 
				
			|||||||
func (*BackfillNodeIPsResponse) ProtoMessage() {}
 | 
					func (*BackfillNodeIPsResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *BackfillNodeIPsResponse) ProtoReflect() protoreflect.Message {
 | 
					func (x *BackfillNodeIPsResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_node_proto_msgTypes[20]
 | 
						mi := &file_headscale_v1_node_proto_msgTypes[22]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@ -1225,7 +1327,7 @@ func (x *BackfillNodeIPsResponse) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use BackfillNodeIPsResponse.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use BackfillNodeIPsResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*BackfillNodeIPsResponse) Descriptor() ([]byte, []int) {
 | 
					func (*BackfillNodeIPsResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_node_proto_rawDescGZIP(), []int{20}
 | 
						return file_headscale_v1_node_proto_rawDescGZIP(), []int{22}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *BackfillNodeIPsResponse) GetChanges() []string {
 | 
					func (x *BackfillNodeIPsResponse) GetChanges() []string {
 | 
				
			||||||
@ -1246,7 +1348,7 @@ var file_headscale_v1_node_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x61, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x65, 0x61, 0x75, 0x74, 0x68, 0x6b, 0x65,
 | 
						0x61, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x65, 0x61, 0x75, 0x74, 0x68, 0x6b, 0x65,
 | 
				
			||||||
	0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61,
 | 
						0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61,
 | 
				
			||||||
	0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 | 
						0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 | 
				
			||||||
	0x22, 0x9f, 0x05, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
 | 
						0x22, 0xbb, 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,
 | 
				
			||||||
@ -1287,92 +1389,101 @@ var file_headscale_v1_node_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x15, 0x20,
 | 
						0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x15, 0x20,
 | 
				
			||||||
	0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16,
 | 
						0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16,
 | 
				
			||||||
	0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06,
 | 
						0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06,
 | 
				
			||||||
	0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0e,
 | 
						0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76,
 | 
				
			||||||
	0x10, 0x12, 0x22, 0x3b, 0x0a, 0x13, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f,
 | 
						0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76,
 | 
				
			||||||
	0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65,
 | 
						0x65, 0x64, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0e, 0x10, 0x12, 0x22, 0x3b,
 | 
				
			||||||
	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x10, 0x0a,
 | 
						0x0a, 0x13, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
 | 
				
			||||||
	0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22,
 | 
						0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20,
 | 
				
			||||||
	0x3e, 0x0a, 0x14, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52,
 | 
						0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
 | 
				
			||||||
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18,
 | 
						0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x3e, 0x0a, 0x14, 0x52,
 | 
				
			||||||
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c,
 | 
						0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
 | 
				
			||||||
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22,
 | 
						0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
 | 
				
			||||||
	0x29, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
 | 
						0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31,
 | 
				
			||||||
	0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
 | 
						0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x29, 0x0a, 0x0e, 0x47,
 | 
				
			||||||
	0x28, 0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x39, 0x0a, 0x0f, 0x47, 0x65,
 | 
						0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
 | 
				
			||||||
	0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a,
 | 
						0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06,
 | 
				
			||||||
	0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65,
 | 
						0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x39, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64,
 | 
				
			||||||
	0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52,
 | 
						0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64,
 | 
				
			||||||
	0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x3d, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73,
 | 
						0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63,
 | 
				
			||||||
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
 | 
						0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64,
 | 
				
			||||||
	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64,
 | 
						0x65, 0x22, 0x3d, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75,
 | 
				
			||||||
	0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04,
 | 
						0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01,
 | 
				
			||||||
	0x74, 0x61, 0x67, 0x73, 0x22, 0x39, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52,
 | 
						0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
 | 
				
			||||||
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18,
 | 
						0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73,
 | 
				
			||||||
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c,
 | 
						0x22, 0x39, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
 | 
				
			||||||
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22,
 | 
						0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
 | 
				
			||||||
	0x2c, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71,
 | 
						0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31,
 | 
				
			||||||
	0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18,
 | 
						0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x2c, 0x0a, 0x11, 0x44,
 | 
				
			||||||
	0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x14, 0x0a,
 | 
						0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
 | 
				
			||||||
	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,
 | 
						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,
 | 
						0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c,
 | 
				
			||||||
	0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, 0x0a,
 | 
						0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
 | 
				
			||||||
	0x10, 0x4d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
 | 
						0x2d, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x72, 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, 0x22, 0x3d,
 | 
				
			||||||
 | 
						0x0a, 0x13, 0x41, 0x70, 0x70, 0x72, 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, 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,
 | 
						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,
 | 
						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,
 | 
						0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x47, 0x0a, 0x11, 0x52, 0x65, 0x6e,
 | 
				
			||||||
	0x75, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75,
 | 
						0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
 | 
				
			||||||
	0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
 | 
						0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
 | 
				
			||||||
	0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02,
 | 
						0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6e,
 | 
				
			||||||
	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
 | 
						0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4e, 0x61,
 | 
				
			||||||
	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a,
 | 
						0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x12, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65,
 | 
				
			||||||
	0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x72,
 | 
						0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65,
 | 
				
			||||||
	0x6f, 0x75, 0x74, 0x65, 0x73, 0x22, 0x41, 0x0a, 0x17, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x72,
 | 
						0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61,
 | 
				
			||||||
	0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
 | 
						0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65,
 | 
				
			||||||
	0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
 | 
						0x22, 0x26, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71,
 | 
				
			||||||
	0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
 | 
						0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
 | 
				
			||||||
	0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x36, 0x0a, 0x16, 0x42, 0x61, 0x63, 0x6b,
 | 
						0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3d, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74,
 | 
				
			||||||
	0x66, 0x69, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x50, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
 | 
						0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a,
 | 
				
			||||||
	0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x18,
 | 
						0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68,
 | 
				
			||||||
	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64,
 | 
						0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
 | 
				
			||||||
	0x22, 0x33, 0x0a, 0x17, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65,
 | 
						0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x3e, 0x0a, 0x0f, 0x4d, 0x6f, 0x76, 0x65, 0x4e,
 | 
				
			||||||
	0x49, 0x50, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63,
 | 
						0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f,
 | 
				
			||||||
	0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68,
 | 
						0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64,
 | 
				
			||||||
	0x61, 0x6e, 0x67, 0x65, 0x73, 0x2a, 0x82, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
 | 
						0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
 | 
				
			||||||
	0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x45, 0x47, 0x49,
 | 
						0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, 0x0a, 0x10, 0x4d, 0x6f, 0x76, 0x65, 0x4e,
 | 
				
			||||||
	0x53, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50,
 | 
						0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e,
 | 
				
			||||||
	0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x47,
 | 
						0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x68, 0x65, 0x61, 0x64,
 | 
				
			||||||
	0x49, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x55, 0x54,
 | 
						0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e,
 | 
				
			||||||
	0x48, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x47, 0x49, 0x53,
 | 
						0x6f, 0x64, 0x65, 0x22, 0x6a, 0x0a, 0x16, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x72, 0x65, 0x61,
 | 
				
			||||||
	0x54, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x43, 0x4c, 0x49, 0x10, 0x02,
 | 
						0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a,
 | 
				
			||||||
	0x12, 0x18, 0x0a, 0x14, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54,
 | 
						0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65,
 | 
				
			||||||
	0x48, 0x4f, 0x44, 0x5f, 0x4f, 0x49, 0x44, 0x43, 0x10, 0x03, 0x42, 0x29, 0x5a, 0x27, 0x67, 0x69,
 | 
						0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
 | 
				
			||||||
	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6a, 0x75, 0x61, 0x6e, 0x66, 0x6f, 0x6e,
 | 
						0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
 | 
				
			||||||
	0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2f, 0x67, 0x65, 0x6e, 0x2f,
 | 
						0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65,
 | 
				
			||||||
	0x67, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
						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, 0x22, 0x36, 0x0a, 0x16, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x4e, 0x6f,
 | 
				
			||||||
 | 
						0x64, 0x65, 0x49, 0x50, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09,
 | 
				
			||||||
 | 
						0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
 | 
				
			||||||
 | 
						0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x22, 0x33, 0x0a, 0x17, 0x42, 0x61,
 | 
				
			||||||
 | 
						0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x50, 0x73, 0x52, 0x65, 0x73,
 | 
				
			||||||
 | 
						0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73,
 | 
				
			||||||
 | 
						0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 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 (
 | 
				
			||||||
@ -1388,7 +1499,7 @@ func file_headscale_v1_node_proto_rawDescGZIP() []byte {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var file_headscale_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 | 
					var file_headscale_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 | 
				
			||||||
var file_headscale_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 21)
 | 
					var file_headscale_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 23)
 | 
				
			||||||
var file_headscale_v1_node_proto_goTypes = []any{
 | 
					var file_headscale_v1_node_proto_goTypes = []any{
 | 
				
			||||||
	(RegisterMethod)(0),             // 0: headscale.v1.RegisterMethod
 | 
						(RegisterMethod)(0),             // 0: headscale.v1.RegisterMethod
 | 
				
			||||||
	(*Node)(nil),                    // 1: headscale.v1.Node
 | 
						(*Node)(nil),                    // 1: headscale.v1.Node
 | 
				
			||||||
@ -1400,42 +1511,45 @@ var file_headscale_v1_node_proto_goTypes = []any{
 | 
				
			|||||||
	(*SetTagsResponse)(nil),         // 7: headscale.v1.SetTagsResponse
 | 
						(*SetTagsResponse)(nil),         // 7: headscale.v1.SetTagsResponse
 | 
				
			||||||
	(*DeleteNodeRequest)(nil),       // 8: headscale.v1.DeleteNodeRequest
 | 
						(*DeleteNodeRequest)(nil),       // 8: headscale.v1.DeleteNodeRequest
 | 
				
			||||||
	(*DeleteNodeResponse)(nil),      // 9: headscale.v1.DeleteNodeResponse
 | 
						(*DeleteNodeResponse)(nil),      // 9: headscale.v1.DeleteNodeResponse
 | 
				
			||||||
	(*ExpireNodeRequest)(nil),       // 10: headscale.v1.ExpireNodeRequest
 | 
						(*ApproveNodeRequest)(nil),      // 10: headscale.v1.ApproveNodeRequest
 | 
				
			||||||
	(*ExpireNodeResponse)(nil),      // 11: headscale.v1.ExpireNodeResponse
 | 
						(*ApproveNodeResponse)(nil),     // 11: headscale.v1.ApproveNodeResponse
 | 
				
			||||||
	(*RenameNodeRequest)(nil),       // 12: headscale.v1.RenameNodeRequest
 | 
						(*ExpireNodeRequest)(nil),       // 12: headscale.v1.ExpireNodeRequest
 | 
				
			||||||
	(*RenameNodeResponse)(nil),      // 13: headscale.v1.RenameNodeResponse
 | 
						(*ExpireNodeResponse)(nil),      // 13: headscale.v1.ExpireNodeResponse
 | 
				
			||||||
	(*ListNodesRequest)(nil),        // 14: headscale.v1.ListNodesRequest
 | 
						(*RenameNodeRequest)(nil),       // 14: headscale.v1.RenameNodeRequest
 | 
				
			||||||
	(*ListNodesResponse)(nil),       // 15: headscale.v1.ListNodesResponse
 | 
						(*RenameNodeResponse)(nil),      // 15: headscale.v1.RenameNodeResponse
 | 
				
			||||||
	(*MoveNodeRequest)(nil),         // 16: headscale.v1.MoveNodeRequest
 | 
						(*ListNodesRequest)(nil),        // 16: headscale.v1.ListNodesRequest
 | 
				
			||||||
	(*MoveNodeResponse)(nil),        // 17: headscale.v1.MoveNodeResponse
 | 
						(*ListNodesResponse)(nil),       // 17: headscale.v1.ListNodesResponse
 | 
				
			||||||
	(*DebugCreateNodeRequest)(nil),  // 18: headscale.v1.DebugCreateNodeRequest
 | 
						(*MoveNodeRequest)(nil),         // 18: headscale.v1.MoveNodeRequest
 | 
				
			||||||
	(*DebugCreateNodeResponse)(nil), // 19: headscale.v1.DebugCreateNodeResponse
 | 
						(*MoveNodeResponse)(nil),        // 19: headscale.v1.MoveNodeResponse
 | 
				
			||||||
	(*BackfillNodeIPsRequest)(nil),  // 20: headscale.v1.BackfillNodeIPsRequest
 | 
						(*DebugCreateNodeRequest)(nil),  // 20: headscale.v1.DebugCreateNodeRequest
 | 
				
			||||||
	(*BackfillNodeIPsResponse)(nil), // 21: headscale.v1.BackfillNodeIPsResponse
 | 
						(*DebugCreateNodeResponse)(nil), // 21: headscale.v1.DebugCreateNodeResponse
 | 
				
			||||||
	(*User)(nil),                    // 22: headscale.v1.User
 | 
						(*BackfillNodeIPsRequest)(nil),  // 22: headscale.v1.BackfillNodeIPsRequest
 | 
				
			||||||
	(*timestamppb.Timestamp)(nil),   // 23: google.protobuf.Timestamp
 | 
						(*BackfillNodeIPsResponse)(nil), // 23: headscale.v1.BackfillNodeIPsResponse
 | 
				
			||||||
	(*PreAuthKey)(nil),              // 24: headscale.v1.PreAuthKey
 | 
						(*User)(nil),                    // 24: headscale.v1.User
 | 
				
			||||||
 | 
						(*timestamppb.Timestamp)(nil),   // 25: google.protobuf.Timestamp
 | 
				
			||||||
 | 
						(*PreAuthKey)(nil),              // 26: headscale.v1.PreAuthKey
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
var file_headscale_v1_node_proto_depIdxs = []int32{
 | 
					var file_headscale_v1_node_proto_depIdxs = []int32{
 | 
				
			||||||
	22, // 0: headscale.v1.Node.user:type_name -> headscale.v1.User
 | 
						24, // 0: headscale.v1.Node.user:type_name -> headscale.v1.User
 | 
				
			||||||
	23, // 1: headscale.v1.Node.last_seen:type_name -> google.protobuf.Timestamp
 | 
						25, // 1: headscale.v1.Node.last_seen:type_name -> google.protobuf.Timestamp
 | 
				
			||||||
	23, // 2: headscale.v1.Node.expiry:type_name -> google.protobuf.Timestamp
 | 
						25, // 2: headscale.v1.Node.expiry:type_name -> google.protobuf.Timestamp
 | 
				
			||||||
	24, // 3: headscale.v1.Node.pre_auth_key:type_name -> headscale.v1.PreAuthKey
 | 
						26, // 3: headscale.v1.Node.pre_auth_key:type_name -> headscale.v1.PreAuthKey
 | 
				
			||||||
	23, // 4: headscale.v1.Node.created_at:type_name -> google.protobuf.Timestamp
 | 
						25, // 4: headscale.v1.Node.created_at:type_name -> google.protobuf.Timestamp
 | 
				
			||||||
	0,  // 5: headscale.v1.Node.register_method:type_name -> headscale.v1.RegisterMethod
 | 
						0,  // 5: headscale.v1.Node.register_method:type_name -> headscale.v1.RegisterMethod
 | 
				
			||||||
	1,  // 6: headscale.v1.RegisterNodeResponse.node:type_name -> headscale.v1.Node
 | 
						1,  // 6: headscale.v1.RegisterNodeResponse.node:type_name -> headscale.v1.Node
 | 
				
			||||||
	1,  // 7: headscale.v1.GetNodeResponse.node:type_name -> headscale.v1.Node
 | 
						1,  // 7: headscale.v1.GetNodeResponse.node:type_name -> headscale.v1.Node
 | 
				
			||||||
	1,  // 8: headscale.v1.SetTagsResponse.node:type_name -> headscale.v1.Node
 | 
						1,  // 8: headscale.v1.SetTagsResponse.node:type_name -> headscale.v1.Node
 | 
				
			||||||
	1,  // 9: headscale.v1.ExpireNodeResponse.node:type_name -> headscale.v1.Node
 | 
						1,  // 9: headscale.v1.ApproveNodeResponse.node:type_name -> headscale.v1.Node
 | 
				
			||||||
	1,  // 10: headscale.v1.RenameNodeResponse.node:type_name -> headscale.v1.Node
 | 
						1,  // 10: headscale.v1.ExpireNodeResponse.node:type_name -> headscale.v1.Node
 | 
				
			||||||
	1,  // 11: headscale.v1.ListNodesResponse.nodes:type_name -> headscale.v1.Node
 | 
						1,  // 11: headscale.v1.RenameNodeResponse.node:type_name -> headscale.v1.Node
 | 
				
			||||||
	1,  // 12: headscale.v1.MoveNodeResponse.node:type_name -> headscale.v1.Node
 | 
						1,  // 12: headscale.v1.ListNodesResponse.nodes:type_name -> headscale.v1.Node
 | 
				
			||||||
	1,  // 13: headscale.v1.DebugCreateNodeResponse.node:type_name -> headscale.v1.Node
 | 
						1,  // 13: headscale.v1.MoveNodeResponse.node:type_name -> headscale.v1.Node
 | 
				
			||||||
	14, // [14:14] is the sub-list for method output_type
 | 
						1,  // 14: headscale.v1.DebugCreateNodeResponse.node:type_name -> headscale.v1.Node
 | 
				
			||||||
	14, // [14:14] is the sub-list for method input_type
 | 
						15, // [15:15] is the sub-list for method output_type
 | 
				
			||||||
	14, // [14:14] is the sub-list for extension type_name
 | 
						15, // [15:15] is the sub-list for method input_type
 | 
				
			||||||
	14, // [14:14] is the sub-list for extension extendee
 | 
						15, // [15:15] is the sub-list for extension type_name
 | 
				
			||||||
	0,  // [0:14] is the sub-list for field type_name
 | 
						15, // [15:15] is the sub-list for extension extendee
 | 
				
			||||||
 | 
						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() }
 | 
				
			||||||
@ -1555,7 +1669,7 @@ func file_headscale_v1_node_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_node_proto_msgTypes[9].Exporter = func(v any, i int) any {
 | 
							file_headscale_v1_node_proto_msgTypes[9].Exporter = func(v any, i int) any {
 | 
				
			||||||
			switch v := v.(*ExpireNodeRequest); i {
 | 
								switch v := v.(*ApproveNodeRequest); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@ -1567,7 +1681,7 @@ func file_headscale_v1_node_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_node_proto_msgTypes[10].Exporter = func(v any, i int) any {
 | 
							file_headscale_v1_node_proto_msgTypes[10].Exporter = func(v any, i int) any {
 | 
				
			||||||
			switch v := v.(*ExpireNodeResponse); i {
 | 
								switch v := v.(*ApproveNodeResponse); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@ -1579,7 +1693,7 @@ func file_headscale_v1_node_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_node_proto_msgTypes[11].Exporter = func(v any, i int) any {
 | 
							file_headscale_v1_node_proto_msgTypes[11].Exporter = func(v any, i int) any {
 | 
				
			||||||
			switch v := v.(*RenameNodeRequest); i {
 | 
								switch v := v.(*ExpireNodeRequest); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@ -1591,7 +1705,7 @@ func file_headscale_v1_node_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_node_proto_msgTypes[12].Exporter = func(v any, i int) any {
 | 
							file_headscale_v1_node_proto_msgTypes[12].Exporter = func(v any, i int) any {
 | 
				
			||||||
			switch v := v.(*RenameNodeResponse); i {
 | 
								switch v := v.(*ExpireNodeResponse); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@ -1603,7 +1717,7 @@ func file_headscale_v1_node_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_node_proto_msgTypes[13].Exporter = func(v any, i int) any {
 | 
							file_headscale_v1_node_proto_msgTypes[13].Exporter = func(v any, i int) any {
 | 
				
			||||||
			switch v := v.(*ListNodesRequest); i {
 | 
								switch v := v.(*RenameNodeRequest); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@ -1615,7 +1729,7 @@ func file_headscale_v1_node_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_node_proto_msgTypes[14].Exporter = func(v any, i int) any {
 | 
							file_headscale_v1_node_proto_msgTypes[14].Exporter = func(v any, i int) any {
 | 
				
			||||||
			switch v := v.(*ListNodesResponse); i {
 | 
								switch v := v.(*RenameNodeResponse); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@ -1627,7 +1741,7 @@ func file_headscale_v1_node_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_node_proto_msgTypes[15].Exporter = func(v any, i int) any {
 | 
							file_headscale_v1_node_proto_msgTypes[15].Exporter = func(v any, i int) any {
 | 
				
			||||||
			switch v := v.(*MoveNodeRequest); i {
 | 
								switch v := v.(*ListNodesRequest); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@ -1639,7 +1753,7 @@ func file_headscale_v1_node_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_node_proto_msgTypes[16].Exporter = func(v any, i int) any {
 | 
							file_headscale_v1_node_proto_msgTypes[16].Exporter = func(v any, i int) any {
 | 
				
			||||||
			switch v := v.(*MoveNodeResponse); i {
 | 
								switch v := v.(*ListNodesResponse); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@ -1651,7 +1765,7 @@ func file_headscale_v1_node_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_node_proto_msgTypes[17].Exporter = func(v any, i int) any {
 | 
							file_headscale_v1_node_proto_msgTypes[17].Exporter = func(v any, i int) any {
 | 
				
			||||||
			switch v := v.(*DebugCreateNodeRequest); i {
 | 
								switch v := v.(*MoveNodeRequest); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@ -1663,7 +1777,7 @@ func file_headscale_v1_node_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_node_proto_msgTypes[18].Exporter = func(v any, i int) any {
 | 
							file_headscale_v1_node_proto_msgTypes[18].Exporter = func(v any, i int) any {
 | 
				
			||||||
			switch v := v.(*DebugCreateNodeResponse); i {
 | 
								switch v := v.(*MoveNodeResponse); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@ -1675,7 +1789,7 @@ func file_headscale_v1_node_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_node_proto_msgTypes[19].Exporter = func(v any, i int) any {
 | 
							file_headscale_v1_node_proto_msgTypes[19].Exporter = func(v any, i int) any {
 | 
				
			||||||
			switch v := v.(*BackfillNodeIPsRequest); i {
 | 
								switch v := v.(*DebugCreateNodeRequest); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@ -1687,6 +1801,30 @@ func file_headscale_v1_node_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_node_proto_msgTypes[20].Exporter = func(v any, i int) any {
 | 
							file_headscale_v1_node_proto_msgTypes[20].Exporter = func(v any, i int) any {
 | 
				
			||||||
 | 
								switch v := v.(*DebugCreateNodeResponse); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_headscale_v1_node_proto_msgTypes[21].Exporter = func(v any, i int) any {
 | 
				
			||||||
 | 
								switch v := v.(*BackfillNodeIPsRequest); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_headscale_v1_node_proto_msgTypes[22].Exporter = func(v any, i int) any {
 | 
				
			||||||
			switch v := v.(*BackfillNodeIPsResponse); i {
 | 
								switch v := v.(*BackfillNodeIPsResponse); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
@ -1705,7 +1843,7 @@ func file_headscale_v1_node_proto_init() {
 | 
				
			|||||||
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
								GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
				
			||||||
			RawDescriptor: file_headscale_v1_node_proto_rawDesc,
 | 
								RawDescriptor: file_headscale_v1_node_proto_rawDesc,
 | 
				
			||||||
			NumEnums:      1,
 | 
								NumEnums:      1,
 | 
				
			||||||
			NumMessages:   21,
 | 
								NumMessages:   23,
 | 
				
			||||||
			NumExtensions: 0,
 | 
								NumExtensions: 0,
 | 
				
			||||||
			NumServices:   0,
 | 
								NumServices:   0,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
				
			|||||||
@ -26,15 +26,16 @@ type PreAuthKey struct {
 | 
				
			|||||||
	sizeCache     protoimpl.SizeCache
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
	unknownFields protoimpl.UnknownFields
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	User       string                 `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
 | 
						User        string                 `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
 | 
				
			||||||
	Id         string                 `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
 | 
						Id          string                 `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
 | 
				
			||||||
	Key        string                 `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"`
 | 
						Key         string                 `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"`
 | 
				
			||||||
	Reusable   bool                   `protobuf:"varint,4,opt,name=reusable,proto3" json:"reusable,omitempty"`
 | 
						Reusable    bool                   `protobuf:"varint,4,opt,name=reusable,proto3" json:"reusable,omitempty"`
 | 
				
			||||||
	Ephemeral  bool                   `protobuf:"varint,5,opt,name=ephemeral,proto3" json:"ephemeral,omitempty"`
 | 
						Ephemeral   bool                   `protobuf:"varint,5,opt,name=ephemeral,proto3" json:"ephemeral,omitempty"`
 | 
				
			||||||
	Used       bool                   `protobuf:"varint,6,opt,name=used,proto3" json:"used,omitempty"`
 | 
						Used        bool                   `protobuf:"varint,6,opt,name=used,proto3" json:"used,omitempty"`
 | 
				
			||||||
	Expiration *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=expiration,proto3" json:"expiration,omitempty"`
 | 
						Expiration  *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=expiration,proto3" json:"expiration,omitempty"`
 | 
				
			||||||
	CreatedAt  *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
 | 
						CreatedAt   *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
 | 
				
			||||||
	AclTags    []string               `protobuf:"bytes,9,rep,name=acl_tags,json=aclTags,proto3" json:"acl_tags,omitempty"`
 | 
						AclTags     []string               `protobuf:"bytes,9,rep,name=acl_tags,json=aclTags,proto3" json:"acl_tags,omitempty"`
 | 
				
			||||||
 | 
						PreApproved bool                   `protobuf:"varint,10,opt,name=pre_approved,json=preApproved,proto3" json:"pre_approved,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *PreAuthKey) Reset() {
 | 
					func (x *PreAuthKey) Reset() {
 | 
				
			||||||
@ -132,16 +133,24 @@ func (x *PreAuthKey) GetAclTags() []string {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *PreAuthKey) GetPreApproved() bool {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.PreApproved
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type CreatePreAuthKeyRequest struct {
 | 
					type CreatePreAuthKeyRequest struct {
 | 
				
			||||||
	state         protoimpl.MessageState
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
	sizeCache     protoimpl.SizeCache
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
	unknownFields protoimpl.UnknownFields
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	User       string                 `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
 | 
						User        string                 `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
 | 
				
			||||||
	Reusable   bool                   `protobuf:"varint,2,opt,name=reusable,proto3" json:"reusable,omitempty"`
 | 
						Reusable    bool                   `protobuf:"varint,2,opt,name=reusable,proto3" json:"reusable,omitempty"`
 | 
				
			||||||
	Ephemeral  bool                   `protobuf:"varint,3,opt,name=ephemeral,proto3" json:"ephemeral,omitempty"`
 | 
						Ephemeral   bool                   `protobuf:"varint,3,opt,name=ephemeral,proto3" json:"ephemeral,omitempty"`
 | 
				
			||||||
	Expiration *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expiration,proto3" json:"expiration,omitempty"`
 | 
						Expiration  *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expiration,proto3" json:"expiration,omitempty"`
 | 
				
			||||||
	AclTags    []string               `protobuf:"bytes,5,rep,name=acl_tags,json=aclTags,proto3" json:"acl_tags,omitempty"`
 | 
						AclTags     []string               `protobuf:"bytes,5,rep,name=acl_tags,json=aclTags,proto3" json:"acl_tags,omitempty"`
 | 
				
			||||||
 | 
						PreApproved bool                   `protobuf:"varint,6,opt,name=pre_approved,json=preApproved,proto3" json:"pre_approved,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *CreatePreAuthKeyRequest) Reset() {
 | 
					func (x *CreatePreAuthKeyRequest) Reset() {
 | 
				
			||||||
@ -211,6 +220,13 @@ func (x *CreatePreAuthKeyRequest) GetAclTags() []string {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CreatePreAuthKeyRequest) GetPreApproved() bool {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.PreApproved
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type CreatePreAuthKeyResponse struct {
 | 
					type CreatePreAuthKeyResponse struct {
 | 
				
			||||||
	state         protoimpl.MessageState
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
	sizeCache     protoimpl.SizeCache
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
@ -452,7 +468,7 @@ var file_headscale_v1_preauthkey_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x72, 0x65, 0x61, 0x75, 0x74, 0x68, 0x6b, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
 | 
						0x72, 0x65, 0x61, 0x75, 0x74, 0x68, 0x6b, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
 | 
				
			||||||
	0x0c, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67,
 | 
						0x0c, 0x68, 0x65, 0x61, 0x64, 0x73, 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,
 | 
						0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74,
 | 
				
			||||||
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa2,
 | 
						0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc5,
 | 
				
			||||||
	0x02, 0x0a, 0x0a, 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a,
 | 
						0x02, 0x0a, 0x0a, 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a,
 | 
				
			||||||
	0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65,
 | 
						0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65,
 | 
				
			||||||
	0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
 | 
						0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
 | 
				
			||||||
@ -471,42 +487,46 @@ var file_headscale_v1_preauthkey_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63,
 | 
						0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63,
 | 
				
			||||||
	0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x63, 0x6c, 0x5f,
 | 
						0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x63, 0x6c, 0x5f,
 | 
				
			||||||
	0x74, 0x61, 0x67, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x6c, 0x54,
 | 
						0x74, 0x61, 0x67, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x6c, 0x54,
 | 
				
			||||||
	0x61, 0x67, 0x73, 0x22, 0xbe, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72,
 | 
						0x61, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f,
 | 
				
			||||||
	0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
 | 
						0x76, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x41, 0x70,
 | 
				
			||||||
	0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75,
 | 
						0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x22, 0xe1, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74,
 | 
				
			||||||
	0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x75, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18,
 | 
						0x65, 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
 | 
				
			||||||
	0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x75, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12,
 | 
						0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
 | 
				
			||||||
	0x1c, 0x0a, 0x09, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01,
 | 
						0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x75, 0x73, 0x61, 0x62,
 | 
				
			||||||
	0x28, 0x08, 0x52, 0x09, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x3a, 0x0a,
 | 
						0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x75, 0x73, 0x61, 0x62,
 | 
				
			||||||
	0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28,
 | 
						0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x18,
 | 
				
			||||||
	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 | 
						0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c,
 | 
				
			||||||
	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x65,
 | 
						0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04,
 | 
				
			||||||
	0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x63, 0x6c,
 | 
						0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
 | 
				
			||||||
	0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x6c,
 | 
						0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
 | 
				
			||||||
	0x54, 0x61, 0x67, 0x73, 0x22, 0x56, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72,
 | 
						0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08,
 | 
				
			||||||
	0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
 | 
						0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07,
 | 
				
			||||||
	0x12, 0x3a, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79,
 | 
						0x61, 0x63, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x5f, 0x61,
 | 
				
			||||||
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61,
 | 
						0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70,
 | 
				
			||||||
	0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79,
 | 
						0x72, 0x65, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x22, 0x56, 0x0a, 0x18, 0x43, 0x72,
 | 
				
			||||||
	0x52, 0x0a, 0x70, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x22, 0x3f, 0x0a, 0x17,
 | 
						0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x52, 0x65,
 | 
				
			||||||
	0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79,
 | 
						0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x5f, 0x61, 0x75,
 | 
				
			||||||
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18,
 | 
						0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x68,
 | 
				
			||||||
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b,
 | 
						0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x41,
 | 
				
			||||||
	0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x1a, 0x0a,
 | 
						0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b,
 | 
				
			||||||
	0x18, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65,
 | 
						0x65, 0x79, 0x22, 0x3f, 0x0a, 0x17, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x50, 0x72, 0x65, 0x41,
 | 
				
			||||||
	0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x0a, 0x16, 0x4c, 0x69, 0x73,
 | 
						0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a,
 | 
				
			||||||
	0x74, 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75,
 | 
						0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65,
 | 
				
			||||||
	0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
 | 
						0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
 | 
				
			||||||
	0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x57, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x50,
 | 
						0x6b, 0x65, 0x79, 0x22, 0x1a, 0x0a, 0x18, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x50, 0x72, 0x65,
 | 
				
			||||||
	0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
 | 
						0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
 | 
				
			||||||
	0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b,
 | 
						0x2c, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65,
 | 
				
			||||||
	0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x68, 0x65, 0x61, 0x64,
 | 
						0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65,
 | 
				
			||||||
	0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68,
 | 
						0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x57, 0x0a,
 | 
				
			||||||
	0x4b, 0x65, 0x79, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x73,
 | 
						0x17, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x73,
 | 
				
			||||||
	0x42, 0x29, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6a,
 | 
						0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x5f,
 | 
				
			||||||
	0x75, 0x61, 0x6e, 0x66, 0x6f, 0x6e, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c,
 | 
						0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
 | 
				
			||||||
	0x65, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f,
 | 
						0x18, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50,
 | 
				
			||||||
	0x74, 0x6f, 0x33,
 | 
						0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x41, 0x75,
 | 
				
			||||||
 | 
						0x74, 0x68, 0x4b, 0x65, 0x79, 0x73, 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 (
 | 
				
			||||||
 | 
				
			|||||||
@ -320,6 +320,37 @@
 | 
				
			|||||||
        ]
 | 
					        ]
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "/api/v1/node/{nodeId}/approve": {
 | 
				
			||||||
 | 
					      "post": {
 | 
				
			||||||
 | 
					        "operationId": "HeadscaleService_ApproveNode",
 | 
				
			||||||
 | 
					        "responses": {
 | 
				
			||||||
 | 
					          "200": {
 | 
				
			||||||
 | 
					            "description": "A successful response.",
 | 
				
			||||||
 | 
					            "schema": {
 | 
				
			||||||
 | 
					              "$ref": "#/definitions/v1ApproveNodeResponse"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "default": {
 | 
				
			||||||
 | 
					            "description": "An unexpected error response.",
 | 
				
			||||||
 | 
					            "schema": {
 | 
				
			||||||
 | 
					              "$ref": "#/definitions/rpcStatus"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "parameters": [
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "name": "nodeId",
 | 
				
			||||||
 | 
					            "in": "path",
 | 
				
			||||||
 | 
					            "required": true,
 | 
				
			||||||
 | 
					            "type": "string",
 | 
				
			||||||
 | 
					            "format": "uint64"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "tags": [
 | 
				
			||||||
 | 
					          "HeadscaleService"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "/api/v1/node/{nodeId}/expire": {
 | 
					    "/api/v1/node/{nodeId}/expire": {
 | 
				
			||||||
      "post": {
 | 
					      "post": {
 | 
				
			||||||
        "operationId": "HeadscaleService_ExpireNode",
 | 
					        "operationId": "HeadscaleService_ExpireNode",
 | 
				
			||||||
@ -979,6 +1010,14 @@
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "v1ApproveNodeResponse": {
 | 
				
			||||||
 | 
					      "type": "object",
 | 
				
			||||||
 | 
					      "properties": {
 | 
				
			||||||
 | 
					        "node": {
 | 
				
			||||||
 | 
					          "$ref": "#/definitions/v1Node"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "v1BackfillNodeIPsResponse": {
 | 
					    "v1BackfillNodeIPsResponse": {
 | 
				
			||||||
      "type": "object",
 | 
					      "type": "object",
 | 
				
			||||||
      "properties": {
 | 
					      "properties": {
 | 
				
			||||||
@ -1028,6 +1067,9 @@
 | 
				
			|||||||
          "items": {
 | 
					          "items": {
 | 
				
			||||||
            "type": "string"
 | 
					            "type": "string"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "preApproved": {
 | 
				
			||||||
 | 
					          "type": "boolean"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
@ -1311,6 +1353,9 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        "online": {
 | 
					        "online": {
 | 
				
			||||||
          "type": "boolean"
 | 
					          "type": "boolean"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "approved": {
 | 
				
			||||||
 | 
					          "type": "boolean"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
@ -1348,6 +1393,9 @@
 | 
				
			|||||||
          "items": {
 | 
					          "items": {
 | 
				
			||||||
            "type": "string"
 | 
					            "type": "string"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "preApproved": {
 | 
				
			||||||
 | 
					          "type": "boolean"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
				
			|||||||
@ -101,6 +101,12 @@ service HeadscaleService {
 | 
				
			|||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rpc ApproveNode(ApproveNodeRequest) returns (ApproveNodeResponse) {
 | 
				
			||||||
 | 
					        option (google.api.http) = {
 | 
				
			||||||
 | 
					            post: "/api/v1/node/{node_id}/approve"
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    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"
 | 
				
			||||||
 | 
				
			|||||||
@ -48,6 +48,7 @@ message Node {
 | 
				
			|||||||
    repeated string valid_tags   = 20;
 | 
					    repeated string valid_tags   = 20;
 | 
				
			||||||
    string          given_name   = 21;
 | 
					    string          given_name   = 21;
 | 
				
			||||||
    bool            online       = 22;
 | 
					    bool            online       = 22;
 | 
				
			||||||
 | 
					    bool            approved     = 23;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message RegisterNodeRequest {
 | 
					message RegisterNodeRequest {
 | 
				
			||||||
@ -82,6 +83,14 @@ message DeleteNodeRequest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
message DeleteNodeResponse {}
 | 
					message DeleteNodeResponse {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message ApproveNodeRequest {
 | 
				
			||||||
 | 
					    uint64 node_id = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message ApproveNodeResponse {
 | 
				
			||||||
 | 
					    Node node = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message ExpireNodeRequest {
 | 
					message ExpireNodeRequest {
 | 
				
			||||||
    uint64 node_id = 1;
 | 
					    uint64 node_id = 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -5,23 +5,25 @@ option  go_package = "github.com/juanfont/headscale/gen/go/v1";
 | 
				
			|||||||
import "google/protobuf/timestamp.proto";
 | 
					import "google/protobuf/timestamp.proto";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message PreAuthKey {
 | 
					message PreAuthKey {
 | 
				
			||||||
    string                    user       = 1;
 | 
					    string                    user           = 1;
 | 
				
			||||||
    string                    id         = 2;
 | 
					    string                    id             = 2;
 | 
				
			||||||
    string                    key        = 3;
 | 
					    string                    key            = 3;
 | 
				
			||||||
    bool                      reusable   = 4;
 | 
					    bool                      reusable       = 4;
 | 
				
			||||||
    bool                      ephemeral  = 5;
 | 
					    bool                      ephemeral      = 5;
 | 
				
			||||||
    bool                      used       = 6;
 | 
					    bool                      used           = 6;
 | 
				
			||||||
    google.protobuf.Timestamp expiration = 7;
 | 
					    google.protobuf.Timestamp expiration     = 7;
 | 
				
			||||||
    google.protobuf.Timestamp created_at = 8;
 | 
					    google.protobuf.Timestamp created_at     = 8;
 | 
				
			||||||
    repeated string           acl_tags   = 9;
 | 
					    repeated string           acl_tags       = 9;
 | 
				
			||||||
 | 
					    bool                      pre_approved   = 10;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message CreatePreAuthKeyRequest {
 | 
					message CreatePreAuthKeyRequest {
 | 
				
			||||||
    string                    user       = 1;
 | 
					    string                    user         = 1;
 | 
				
			||||||
    bool                      reusable   = 2;
 | 
					    bool                      reusable     = 2;
 | 
				
			||||||
    bool                      ephemeral  = 3;
 | 
					    bool                      ephemeral    = 3;
 | 
				
			||||||
    google.protobuf.Timestamp expiration = 4;
 | 
					    google.protobuf.Timestamp expiration   = 4;
 | 
				
			||||||
    repeated string           acl_tags   = 5;
 | 
					    repeated string           acl_tags     = 5;
 | 
				
			||||||
 | 
					    bool                      pre_approved = 6;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message CreatePreAuthKeyResponse {
 | 
					message CreatePreAuthKeyResponse {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user