diff --git a/go/dmi/commons.pb.go b/go/dmi/commons.pb.go
index 99a0eeb..91791d2 100644
--- a/go/dmi/commons.pb.go
+++ b/go/dmi/commons.pb.go
@@ -60,6 +60,7 @@
 	Reason_LOGGING_ENDPOINT_ERROR          Reason = 5
 	Reason_LOGGING_ENDPOINT_PROTOCOL_ERROR Reason = 6
 	Reason_KAFKA_ENDPOINT_ERROR            Reason = 7
+	Reason_UNKNOWN_LOG_ENTITY              Reason = 8
 )
 
 var Reason_name = map[int32]string{
@@ -71,6 +72,7 @@
 	5: "LOGGING_ENDPOINT_ERROR",
 	6: "LOGGING_ENDPOINT_PROTOCOL_ERROR",
 	7: "KAFKA_ENDPOINT_ERROR",
+	8: "UNKNOWN_LOG_ENTITY",
 }
 
 var Reason_value = map[string]int32{
@@ -82,6 +84,7 @@
 	"LOGGING_ENDPOINT_ERROR":          5,
 	"LOGGING_ENDPOINT_PROTOCOL_ERROR": 6,
 	"KAFKA_ENDPOINT_ERROR":            7,
+	"UNKNOWN_LOG_ENTITY":              8,
 }
 
 func (x Reason) String() string {
@@ -136,26 +139,27 @@
 func init() { proto.RegisterFile("dmi/commons.proto", fileDescriptor_74aedf0dda1205d8) }
 
 var fileDescriptor_74aedf0dda1205d8 = []byte{
-	// 332 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0xbd, 0x6e, 0xf2, 0x30,
-	0x18, 0x85, 0x09, 0x3f, 0xf9, 0xc0, 0xdf, 0x9f, 0x6b, 0xa1, 0xaa, 0xea, 0xd2, 0xa1, 0x1b, 0x12,
-	0x64, 0x60, 0xaa, 0x3a, 0xa0, 0x90, 0x98, 0x28, 0x4a, 0xfa, 0x1a, 0x39, 0x0e, 0x48, 0x5d, 0xa2,
-	0x90, 0xb8, 0x69, 0xa4, 0x3a, 0x46, 0x10, 0xb8, 0xc2, 0x5e, 0x58, 0x15, 0x28, 0x43, 0xdb, 0xed,
-	0xf8, 0x39, 0x3a, 0x8f, 0x87, 0x17, 0x5d, 0xe5, 0xaa, 0xb4, 0x32, 0xad, 0x94, 0xae, 0xf6, 0x93,
-	0xed, 0x4e, 0xd7, 0x9a, 0x74, 0x72, 0x55, 0x8e, 0x66, 0xc8, 0x8c, 0xea, 0xb4, 0x3e, 0xec, 0xc9,
-	0x10, 0xe1, 0x18, 0x5c, 0xba, 0xf0, 0x81, 0xba, 0x49, 0x24, 0x6c, 0x11, 0x47, 0xb8, 0x45, 0xfe,
-	0xa2, 0x01, 0x0b, 0x2e, 0x4f, 0x83, 0x60, 0xf4, 0x87, 0x72, 0xce, 0xf8, 0x85, 0xb4, 0x47, 0xef,
-	0x06, 0x32, 0xb9, 0x4c, 0xf7, 0xba, 0xfa, 0x6a, 0xe0, 0xd4, 0x8e, 0x18, 0xe0, 0x16, 0x21, 0xe8,
-	0x5f, 0x0c, 0x01, 0xb0, 0x35, 0x24, 0x2e, 0x5d, 0xf9, 0x0e, 0xc5, 0x46, 0xc3, 0x7c, 0x10, 0x94,
-	0x83, 0x1d, 0x26, 0x27, 0x1f, 0x6e, 0x37, 0xea, 0x35, 0x67, 0xe0, 0x25, 0x4f, 0x54, 0x70, 0xdf,
-	0xc1, 0x1d, 0xf2, 0x1f, 0xfd, 0x3e, 0x13, 0xba, 0xa2, 0x20, 0x70, 0x97, 0xdc, 0xa2, 0xeb, 0x90,
-	0x79, 0x9e, 0xdf, 0x20, 0x70, 0x97, 0xcc, 0x07, 0xf1, 0x39, 0xef, 0x91, 0x7b, 0x74, 0xf7, 0xa3,
-	0x5b, 0x72, 0x26, 0x98, 0xc3, 0x2e, 0x7f, 0x98, 0xe4, 0x06, 0x0d, 0x03, 0x7b, 0x11, 0xd8, 0xdf,
-	0xe7, 0xbf, 0x46, 0x33, 0xd4, 0x0f, 0x75, 0x11, 0xca, 0xa3, 0x7c, 0x23, 0x03, 0xd4, 0x13, 0xdc,
-	0x76, 0x28, 0x6e, 0x35, 0xd1, 0xa5, 0xf3, 0xd8, 0xc3, 0x06, 0xe9, 0xa3, 0xae, 0x0f, 0x0b, 0x86,
-	0xdb, 0x4d, 0x5a, 0xdb, 0x1c, 0x70, 0xa7, 0xa9, 0xcf, 0x82, 0xee, 0xfc, 0xf1, 0xf9, 0xa1, 0x28,
-	0xeb, 0xd7, 0xc3, 0x66, 0x92, 0x69, 0x65, 0xe9, 0xad, 0xac, 0x32, 0xbd, 0xcb, 0xad, 0x5c, 0x1e,
-	0xcb, 0x4c, 0x8e, 0x55, 0x5a, 0xa5, 0x85, 0x54, 0xb2, 0xaa, 0xc7, 0x65, 0x55, 0xcb, 0xdd, 0x4b,
-	0x9a, 0x49, 0xeb, 0x38, 0xb5, 0x0a, 0x6d, 0xe5, 0xaa, 0xdc, 0x98, 0xa7, 0x8b, 0x4c, 0x3f, 0x02,
-	0x00, 0x00, 0xff, 0xff, 0xab, 0xaf, 0x4b, 0x69, 0xa6, 0x01, 0x00, 0x00,
+	// 344 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0x4d, 0x6f, 0xba, 0x30,
+	0x00, 0xc6, 0xc5, 0x17, 0xfe, 0xda, 0xff, 0x5b, 0xd7, 0x18, 0xb3, 0xec, 0xb2, 0xc3, 0x6e, 0x26,
+	0xca, 0xc1, 0xd3, 0xb2, 0x83, 0x41, 0xa8, 0xa4, 0x81, 0xb5, 0xa6, 0x14, 0xcd, 0x76, 0x21, 0x08,
+	0x1d, 0x23, 0x59, 0xa9, 0x51, 0xf4, 0xd3, 0xee, 0xc3, 0x2c, 0xe8, 0x38, 0x6c, 0xbb, 0x3d, 0xfd,
+	0x3d, 0x79, 0x7e, 0x6d, 0x52, 0x70, 0x95, 0xa9, 0xc2, 0x4a, 0xb5, 0x52, 0xba, 0x3c, 0x4c, 0x77,
+	0x7b, 0x5d, 0x69, 0xd4, 0xc9, 0x54, 0x31, 0x9e, 0x03, 0x33, 0xac, 0x92, 0xea, 0x78, 0x40, 0x43,
+	0x00, 0x23, 0xea, 0xe2, 0x25, 0xa1, 0xd8, 0x8d, 0x43, 0x61, 0x8b, 0x28, 0x84, 0x2d, 0xf4, 0x17,
+	0x0c, 0x98, 0xdf, 0x1c, 0x0d, 0x04, 0xc1, 0x1f, 0xcc, 0x39, 0xe3, 0x0d, 0x69, 0x8f, 0xdf, 0x0d,
+	0x60, 0x72, 0x99, 0x1c, 0x74, 0xf9, 0xd5, 0xc0, 0xb1, 0x1d, 0x32, 0x0a, 0x5b, 0x08, 0x81, 0x7f,
+	0x11, 0xf5, 0x29, 0xdb, 0xd0, 0xd8, 0xc5, 0x6b, 0xe2, 0x60, 0x68, 0xd4, 0x8c, 0x50, 0x81, 0x39,
+	0xb5, 0x83, 0xf8, 0xec, 0x83, 0xed, 0x5a, 0xbd, 0xe1, 0x8c, 0x7a, 0xf1, 0x23, 0x16, 0x9c, 0x38,
+	0xb0, 0x83, 0xfe, 0x83, 0xdf, 0x17, 0x82, 0xd7, 0x98, 0x0a, 0xd8, 0x45, 0x37, 0x60, 0x14, 0x30,
+	0xcf, 0x23, 0x35, 0xa2, 0xee, 0x8a, 0x11, 0x2a, 0x3e, 0xe7, 0x3d, 0x74, 0x07, 0x6e, 0x7f, 0x74,
+	0x2b, 0xce, 0x04, 0x73, 0x58, 0x73, 0x87, 0x89, 0xae, 0xc1, 0xd0, 0xb7, 0x97, 0xbe, 0xfd, 0x7d,
+	0xfe, 0x0b, 0x8d, 0x00, 0x6a, 0x5e, 0x19, 0xb0, 0x5a, 0x21, 0x88, 0x78, 0x82, 0xfd, 0xf1, 0x1c,
+	0xf4, 0x03, 0x9d, 0x07, 0xf2, 0x24, 0xdf, 0xd0, 0x00, 0xf4, 0x04, 0xb7, 0x1d, 0x0c, 0x5b, 0x75,
+	0x74, 0xf1, 0x22, 0xf2, 0xa0, 0x81, 0xfa, 0xa0, 0x4b, 0xe8, 0x92, 0xc1, 0x76, 0x9d, 0x36, 0x36,
+	0xa7, 0xb0, 0x53, 0xd7, 0x17, 0x71, 0x77, 0xf1, 0xf0, 0x7c, 0x9f, 0x17, 0xd5, 0xeb, 0x71, 0x3b,
+	0x4d, 0xb5, 0xb2, 0xf4, 0x4e, 0x96, 0xa9, 0xde, 0x67, 0x56, 0x26, 0x4f, 0x45, 0x2a, 0x27, 0x2a,
+	0x29, 0x93, 0x5c, 0x2a, 0x59, 0x56, 0x93, 0xa2, 0xac, 0xe4, 0xfe, 0x25, 0x49, 0xa5, 0x75, 0x9a,
+	0x59, 0xb9, 0xb6, 0x32, 0x55, 0x6c, 0xcd, 0xf3, 0x4f, 0xcd, 0x3e, 0x02, 0x00, 0x00, 0xff, 0xff,
+	0x79, 0x7a, 0xa9, 0x6f, 0xbe, 0x01, 0x00, 0x00,
 }
diff --git a/go/dmi/hw_management_service.pb.go b/go/dmi/hw_management_service.pb.go
index edf3b37..dded8f3 100644
--- a/go/dmi/hw_management_service.pb.go
+++ b/go/dmi/hw_management_service.pb.go
@@ -871,10 +871,12 @@
 }
 
 type SetLogLevelResponse struct {
-	Responses            []*DeviceLogResponse `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	DeviceUuid           *Uuid    `protobuf:"bytes,1,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
+	Status               Status   `protobuf:"varint,2,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               Reason   `protobuf:"varint,3,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *SetLogLevelResponse) Reset()         { *m = SetLogLevelResponse{} }
@@ -902,62 +904,21 @@
 
 var xxx_messageInfo_SetLogLevelResponse proto.InternalMessageInfo
 
-func (m *SetLogLevelResponse) GetResponses() []*DeviceLogResponse {
-	if m != nil {
-		return m.Responses
-	}
-	return nil
-}
-
-type DeviceLogResponse struct {
-	DeviceUuid           *Uuid    `protobuf:"bytes,1,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
-	Status               Status   `protobuf:"varint,2,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason   `protobuf:"varint,3,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *DeviceLogResponse) Reset()         { *m = DeviceLogResponse{} }
-func (m *DeviceLogResponse) String() string { return proto.CompactTextString(m) }
-func (*DeviceLogResponse) ProtoMessage()    {}
-func (*DeviceLogResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_eae902e73066286d, []int{18}
-}
-
-func (m *DeviceLogResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceLogResponse.Unmarshal(m, b)
-}
-func (m *DeviceLogResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceLogResponse.Marshal(b, m, deterministic)
-}
-func (m *DeviceLogResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceLogResponse.Merge(m, src)
-}
-func (m *DeviceLogResponse) XXX_Size() int {
-	return xxx_messageInfo_DeviceLogResponse.Size(m)
-}
-func (m *DeviceLogResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceLogResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceLogResponse proto.InternalMessageInfo
-
-func (m *DeviceLogResponse) GetDeviceUuid() *Uuid {
+func (m *SetLogLevelResponse) GetDeviceUuid() *Uuid {
 	if m != nil {
 		return m.DeviceUuid
 	}
 	return nil
 }
 
-func (m *DeviceLogResponse) GetStatus() Status {
+func (m *SetLogLevelResponse) GetStatus() Status {
 	if m != nil {
 		return m.Status
 	}
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *DeviceLogResponse) GetReason() Reason {
+func (m *SetLogLevelResponse) GetReason() Reason {
 	if m != nil {
 		return m.Reason
 	}
@@ -976,7 +937,7 @@
 func (m *GetLogLevelRequest) String() string { return proto.CompactTextString(m) }
 func (*GetLogLevelRequest) ProtoMessage()    {}
 func (*GetLogLevelRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_eae902e73066286d, []int{19}
+	return fileDescriptor_eae902e73066286d, []int{18}
 }
 
 func (m *GetLogLevelRequest) XXX_Unmarshal(b []byte) error {
@@ -1025,7 +986,7 @@
 func (m *GetLogLevelResponse) String() string { return proto.CompactTextString(m) }
 func (*GetLogLevelResponse) ProtoMessage()    {}
 func (*GetLogLevelResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_eae902e73066286d, []int{20}
+	return fileDescriptor_eae902e73066286d, []int{19}
 }
 
 func (m *GetLogLevelResponse) XXX_Unmarshal(b []byte) error {
@@ -1085,7 +1046,7 @@
 func (m *GetLoggableEntitiesRequest) String() string { return proto.CompactTextString(m) }
 func (*GetLoggableEntitiesRequest) ProtoMessage()    {}
 func (*GetLoggableEntitiesRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_eae902e73066286d, []int{21}
+	return fileDescriptor_eae902e73066286d, []int{20}
 }
 
 func (m *GetLoggableEntitiesRequest) XXX_Unmarshal(b []byte) error {
@@ -1132,7 +1093,6 @@
 	proto.RegisterType((*EntitiesLogLevel)(nil), "dmi.EntitiesLogLevel")
 	proto.RegisterType((*SetLogLevelRequest)(nil), "dmi.SetLogLevelRequest")
 	proto.RegisterType((*SetLogLevelResponse)(nil), "dmi.SetLogLevelResponse")
-	proto.RegisterType((*DeviceLogResponse)(nil), "dmi.DeviceLogResponse")
 	proto.RegisterType((*GetLogLevelRequest)(nil), "dmi.GetLogLevelRequest")
 	proto.RegisterType((*GetLogLevelResponse)(nil), "dmi.GetLogLevelResponse")
 	proto.RegisterType((*GetLoggableEntitiesRequest)(nil), "dmi.GetLoggableEntitiesRequest")
@@ -1141,71 +1101,69 @@
 func init() { proto.RegisterFile("dmi/hw_management_service.proto", fileDescriptor_eae902e73066286d) }
 
 var fileDescriptor_eae902e73066286d = []byte{
-	// 1009 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0xcd, 0x6e, 0xdb, 0x46,
-	0x10, 0x06, 0x2d, 0x23, 0xb1, 0x46, 0x8d, 0x13, 0xaf, 0x5b, 0x57, 0xa2, 0x51, 0xc7, 0x60, 0x51,
-	0x34, 0x69, 0x1b, 0x29, 0x90, 0x7b, 0x29, 0x7a, 0x09, 0x92, 0xba, 0x52, 0x10, 0x39, 0x30, 0xc8,
-	0x06, 0x46, 0x8b, 0x02, 0x06, 0x25, 0x8e, 0x68, 0x02, 0xe4, 0xae, 0x4a, 0x2e, 0x15, 0xf8, 0x11,
-	0x7a, 0xe9, 0xa1, 0xed, 0xb5, 0x40, 0xaf, 0x7d, 0x87, 0x1e, 0xfa, 0x10, 0x7d, 0xa0, 0x82, 0xbb,
-	0xcb, 0x3f, 0x89, 0x74, 0x14, 0x57, 0x06, 0x72, 0xa3, 0x76, 0xbf, 0xfd, 0x76, 0xe6, 0x9b, 0xd9,
-	0x99, 0x11, 0xdc, 0x77, 0x02, 0xaf, 0x77, 0xf1, 0xfa, 0x3c, 0xb0, 0xa9, 0xed, 0x62, 0x80, 0x94,
-	0x9f, 0x47, 0x18, 0xce, 0xbd, 0x09, 0x76, 0x67, 0x21, 0xe3, 0x8c, 0x34, 0x9c, 0xc0, 0xd3, 0x77,
-	0x12, 0xd4, 0x84, 0x05, 0x01, 0xa3, 0x91, 0x5c, 0xd7, 0xdf, 0x93, 0x07, 0xd5, 0xaf, 0x7d, 0x97,
-	0x31, 0xd7, 0xc7, 0x9e, 0xf8, 0x35, 0x8e, 0xa7, 0x3d, 0x0c, 0x66, 0xfc, 0x52, 0x6e, 0x1a, 0xdf,
-	0x42, 0xfb, 0xf4, 0xe2, 0x32, 0xf2, 0x26, 0xb6, 0xff, 0x9c, 0xce, 0x91, 0x72, 0x16, 0x5e, 0x9a,
-	0xf8, 0x53, 0x8c, 0x11, 0x27, 0x9f, 0x41, 0xcb, 0xc1, 0xe4, 0xba, 0xf3, 0x38, 0xf6, 0x9c, 0xb6,
-	0x76, 0xa8, 0x3d, 0x68, 0xf5, 0x9b, 0x5d, 0x27, 0xf0, 0xba, 0xaf, 0x62, 0xcf, 0x31, 0x41, 0xee,
-	0x26, 0xdf, 0xc6, 0xaf, 0x1a, 0x74, 0x2a, 0x88, 0xa2, 0x19, 0xa3, 0x11, 0x92, 0x8f, 0xe1, 0x56,
-	0xc4, 0x6d, 0x1e, 0x47, 0x82, 0x64, 0xbb, 0xdf, 0x12, 0x24, 0x96, 0x58, 0x32, 0xd5, 0x56, 0x02,
-	0x0a, 0xd1, 0x8e, 0x18, 0x6d, 0x6f, 0x14, 0x40, 0xa6, 0x58, 0x32, 0xd5, 0x16, 0xf9, 0x1c, 0x9a,
-	0x5e, 0x4a, 0xdf, 0x6e, 0x08, 0x8b, 0xee, 0x08, 0xdc, 0xd0, 0x0e, 0x9d, 0xd7, 0x76, 0x88, 0x66,
-	0xbe, 0x6f, 0xfc, 0xa9, 0x41, 0x67, 0x78, 0xf6, 0x8c, 0x05, 0x33, 0x46, 0x91, 0xf2, 0xe7, 0x74,
-	0xca, 0x06, 0xc8, 0xaf, 0xe1, 0x1e, 0x79, 0x0c, 0xdb, 0x93, 0x94, 0x46, 0xc2, 0x37, 0x16, 0xe1,
-	0x77, 0x32, 0x80, 0x38, 0xf1, 0x49, 0xf1, 0x04, 0xb5, 0x03, 0x14, 0xd6, 0x36, 0x0b, 0xb0, 0x97,
-	0x76, 0x80, 0xc6, 0xef, 0x1a, 0xe8, 0x55, 0x26, 0xae, 0x5d, 0xb8, 0x2f, 0xa0, 0x99, 0xdd, 0xac,
-	0x84, 0xdb, 0x16, 0xb8, 0xec, 0x6e, 0x33, 0x07, 0x18, 0xff, 0x2e, 0x2b, 0x67, 0xbd, 0x5b, 0xca,
-	0x91, 0x3e, 0xdc, 0x9e, 0x5c, 0xd8, 0xd4, 0xc5, 0xa8, 0xbd, 0x29, 0x18, 0xdb, 0x82, 0xf1, 0x84,
-	0x39, 0xde, 0xd4, 0xb3, 0xc7, 0x3e, 0xe6, 0x8e, 0xa5, 0x40, 0x63, 0xba, 0x24, 0xb6, 0x75, 0x13,
-	0x62, 0x1b, 0xbf, 0x69, 0xb0, 0x6f, 0x71, 0x3b, 0xe4, 0x27, 0xc9, 0xd3, 0xf5, 0xa8, 0xfb, 0x8d,
-	0x10, 0xe4, 0x06, 0xc2, 0xba, 0x10, 0x8a, 0xc6, 0x55, 0x6f, 0xb4, 0x07, 0x1d, 0x8b, 0xb3, 0xd9,
-	0xa2, 0x4d, 0x32, 0xa6, 0x04, 0x36, 0x85, 0xd6, 0x9a, 0xd0, 0x5a, 0x7c, 0x27, 0x72, 0x55, 0x1d,
-	0x58, 0xbb, 0x5c, 0x23, 0xd8, 0x13, 0x77, 0xa0, 0x23, 0xaf, 0x88, 0xb2, 0x3b, 0xfa, 0x70, 0x5b,
-	0x3a, 0x90, 0x5c, 0xd2, 0xb8, 0x3a, 0xc8, 0x0a, 0x68, 0xfc, 0xa1, 0x41, 0xc7, 0x42, 0x3e, 0x62,
-	0x6e, 0x62, 0xf4, 0x31, 0x75, 0x66, 0xcc, 0xa3, 0xd7, 0xca, 0xdd, 0x87, 0x70, 0xcf, 0x97, 0x2c,
-	0xe7, 0xa8, 0x68, 0x84, 0x1b, 0x4d, 0xf3, 0xae, 0x5f, 0x66, 0x2f, 0x42, 0x45, 0x61, 0x9d, 0x30,
-	0x5f, 0xa5, 0x6d, 0x0a, 0x3d, 0x55, 0xcb, 0x06, 0x0a, 0xf3, 0x4c, 0x0c, 0x18, 0xc7, 0xdc, 0xba,
-	0xb5, 0x8b, 0xfa, 0xb7, 0x06, 0xfa, 0xa0, 0x42, 0x86, 0xb5, 0xa7, 0x60, 0x95, 0x4a, 0x8d, 0xd5,
-	0x55, 0xda, 0xac, 0x56, 0xe9, 0x19, 0xb4, 0x2d, 0xe4, 0x27, 0x91, 0xfb, 0x34, 0x8e, 0x16, 0x63,
-	0xf8, 0x29, 0xdc, 0x0d, 0x22, 0x77, 0x1c, 0x47, 0xf9, 0x85, 0x32, 0x6d, 0xb7, 0xe5, 0x72, 0x8a,
-	0x37, 0x7e, 0xd1, 0xa0, 0x33, 0x58, 0x66, 0x59, 0xbb, 0x04, 0x15, 0x06, 0x35, 0x2a, 0x0d, 0xfa,
-	0x1e, 0xee, 0x1d, 0x53, 0xee, 0x71, 0x0f, 0xa3, 0x11, 0x73, 0x47, 0x38, 0x47, 0x9f, 0x3c, 0x84,
-	0x2d, 0x5f, 0x7d, 0x2b, 0x43, 0x64, 0x47, 0x4b, 0x01, 0x66, 0xb6, 0x4d, 0x74, 0xd8, 0x42, 0x75,
-	0xbc, 0xbd, 0x71, 0xd8, 0x78, 0xd0, 0x34, 0xb3, 0xdf, 0x46, 0x0c, 0x44, 0x66, 0xbd, 0x3c, 0x74,
-	0x8d, 0x74, 0x3f, 0x82, 0xa6, 0x9f, 0x4c, 0x0a, 0x73, 0xf4, 0x25, 0x7d, 0xab, 0xff, 0x81, 0x40,
-	0x2e, 0x9a, 0x6c, 0xe6, 0x38, 0xe3, 0x05, 0xec, 0x96, 0xae, 0x55, 0xda, 0x7e, 0x09, 0xcd, 0x50,
-	0x7d, 0xa7, 0x4f, 0x77, 0x4f, 0x70, 0xc9, 0x17, 0x3e, 0x62, 0x6e, 0x0a, 0x35, 0x73, 0xa0, 0xf1,
-	0xb3, 0x06, 0x3b, 0x4b, 0x80, 0xb7, 0xf2, 0x21, 0x8f, 0xe9, 0xc6, 0x2a, 0x31, 0x6d, 0xd4, 0xbf,
-	0x9f, 0x1f, 0x81, 0x0c, 0xfe, 0x9f, 0x9e, 0x57, 0x45, 0xeb, 0x1f, 0x0d, 0x76, 0x07, 0x15, 0xba,
-	0xbd, 0x7d, 0xbc, 0x46, 0x2b, 0xc6, 0x4b, 0xe2, 0x0a, 0x02, 0x35, 0x56, 0x11, 0x68, 0xb3, 0x5e,
-	0xa0, 0x61, 0x56, 0x5f, 0x92, 0x42, 0x9c, 0xde, 0x79, 0x0d, 0xa1, 0xfa, 0x7f, 0x6d, 0x41, 0xe7,
-	0xa5, 0xcd, 0xbd, 0x39, 0x0e, 0xcf, 0x4e, 0xb2, 0x61, 0xd7, 0x92, 0xb3, 0x2e, 0xb1, 0x60, 0xb7,
-	0xa2, 0x97, 0x92, 0xda, 0x4e, 0xa0, 0x1f, 0xa6, 0x2e, 0xd5, 0xf5, 0xdf, 0xc7, 0x1a, 0x79, 0x05,
-	0x64, 0xb9, 0xb5, 0x91, 0x03, 0x75, 0xb2, 0xa6, 0x49, 0xea, 0xf7, 0x6b, 0xf7, 0x55, 0xf8, 0x86,
-	0xb0, 0x93, 0xd4, 0x9b, 0x52, 0x33, 0x23, 0x7b, 0x5d, 0x39, 0x81, 0x77, 0xd3, 0x09, 0xbc, 0x7b,
-	0x9c, 0x4c, 0xe0, 0xfa, 0xbe, 0xf4, 0xa0, 0xba, 0xf3, 0x9d, 0xc1, 0xfb, 0x03, 0xe4, 0x4b, 0x23,
-	0x35, 0xf9, 0x48, 0x1c, 0xaa, 0x9b, 0xd9, 0xf5, 0x83, 0xba, 0xed, 0xcc, 0xf3, 0x33, 0x91, 0xd7,
-	0x0b, 0x63, 0x90, 0xf2, 0xbc, 0x76, 0x58, 0x56, 0x9e, 0xd7, 0x4f, 0xaa, 0x4a, 0xd2, 0x15, 0x89,
-	0xad, 0x37, 0x10, 0x17, 0xa7, 0xb2, 0xef, 0xd2, 0xba, 0x56, 0xea, 0x24, 0x2a, 0x52, 0x75, 0x6d,
-	0x5e, 0xcf, 0xf6, 0x6b, 0xfa, 0xec, 0x93, 0xf4, 0x75, 0x97, 0x58, 0xf3, 0xfc, 0x54, 0x76, 0x5d,
-	0xd1, 0x40, 0x4d, 0xd8, 0x59, 0x6a, 0x50, 0x2a, 0x3a, 0x75, 0x8d, 0xeb, 0x8d, 0x56, 0xbd, 0x90,
-	0xe9, 0x53, 0xe6, 0xac, 0x4b, 0x9f, 0x83, 0xd4, 0xc2, 0x9a, 0xf6, 0x76, 0x9a, 0x56, 0x98, 0xd2,
-	0xfb, 0x24, 0x25, 0xc7, 0x2a, 0x5e, 0xae, 0xde, 0x2e, 0x00, 0xca, 0xc5, 0xe9, 0x09, 0xb4, 0x0a,
-	0xb5, 0x9e, 0x7c, 0x58, 0x88, 0x41, 0xb1, 0x48, 0x2a, 0x06, 0xab, 0x9a, 0x61, 0xb0, 0xc4, 0x30,
-	0xa8, 0x63, 0xa8, 0xb0, 0xe1, 0xe9, 0xd7, 0x3f, 0x7c, 0xe5, 0x7a, 0xfc, 0x22, 0x1e, 0x77, 0x27,
-	0x2c, 0xe8, 0xb1, 0x19, 0xd2, 0x09, 0x0b, 0x9d, 0x9e, 0xac, 0x26, 0x8f, 0xf2, 0xbf, 0xca, 0x8f,
-	0x3c, 0xca, 0x31, 0x9c, 0xda, 0x13, 0xec, 0xcd, 0x8f, 0x7a, 0x2e, 0xeb, 0x39, 0x81, 0x37, 0xbe,
-	0x25, 0x24, 0x3c, 0xfa, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xf2, 0x86, 0xe7, 0xb8, 0x5a, 0x0f, 0x00,
-	0x00,
+	// 988 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x51, 0x6f, 0xe3, 0x44,
+	0x10, 0x96, 0x9b, 0xea, 0xae, 0x99, 0x70, 0xed, 0x75, 0x0b, 0x47, 0xe2, 0x8a, 0x5e, 0x65, 0x84,
+	0xb8, 0x03, 0x2e, 0x39, 0xa5, 0x4f, 0x88, 0x17, 0x74, 0x77, 0xbd, 0xa4, 0x22, 0x3d, 0x55, 0x36,
+	0xa7, 0x0a, 0x84, 0x54, 0x39, 0xf1, 0xc4, 0x5d, 0xc9, 0xde, 0x0d, 0xf1, 0x3a, 0xa7, 0xfe, 0x06,
+	0x24, 0x1e, 0x80, 0x57, 0x24, 0xfe, 0x01, 0x7f, 0x80, 0x07, 0x7e, 0x04, 0x3f, 0x08, 0x79, 0x77,
+	0xed, 0xd8, 0x89, 0xdd, 0x0b, 0xbd, 0x54, 0xe2, 0x2d, 0xf6, 0x7e, 0xfb, 0xcd, 0xcc, 0x37, 0xe3,
+	0x99, 0x09, 0x3c, 0xf4, 0x42, 0xda, 0xb9, 0x7c, 0x73, 0x11, 0xba, 0xcc, 0xf5, 0x31, 0x44, 0x26,
+	0x2e, 0x22, 0x9c, 0xce, 0xe8, 0x08, 0xdb, 0x93, 0x29, 0x17, 0x9c, 0xd4, 0xbc, 0x90, 0x9a, 0xbb,
+	0x09, 0x6a, 0xc4, 0xc3, 0x90, 0xb3, 0x48, 0xbd, 0x37, 0xdf, 0x53, 0x17, 0xf5, 0xd3, 0xbe, 0xcf,
+	0xb9, 0x1f, 0x60, 0x47, 0x3e, 0x0d, 0xe3, 0x71, 0x07, 0xc3, 0x89, 0xb8, 0x52, 0x87, 0xd6, 0x4b,
+	0x68, 0x9e, 0x5d, 0x5e, 0x45, 0x74, 0xe4, 0x06, 0x27, 0x6c, 0x86, 0x4c, 0xf0, 0xe9, 0x95, 0x8d,
+	0x3f, 0xc6, 0x18, 0x09, 0xf2, 0x19, 0x34, 0x3c, 0x4c, 0xcc, 0x5d, 0xc4, 0x31, 0xf5, 0x9a, 0xc6,
+	0xa1, 0xf1, 0xa8, 0xd1, 0xad, 0xb7, 0xbd, 0x90, 0xb6, 0x5f, 0xc7, 0xd4, 0xb3, 0x41, 0x9d, 0x26,
+	0xbf, 0xad, 0x5f, 0x0c, 0x68, 0x95, 0x10, 0x45, 0x13, 0xce, 0x22, 0x24, 0x1f, 0xc3, 0x9d, 0x48,
+	0xb8, 0x22, 0x8e, 0x24, 0xc9, 0x76, 0xb7, 0x21, 0x49, 0x1c, 0xf9, 0xca, 0xd6, 0x47, 0x09, 0x68,
+	0x8a, 0x6e, 0xc4, 0x59, 0x73, 0x23, 0x07, 0xb2, 0xe5, 0x2b, 0x5b, 0x1f, 0x91, 0xcf, 0xa1, 0x4e,
+	0x53, 0xfa, 0x66, 0x4d, 0x7a, 0x74, 0x4f, 0xe2, 0xfa, 0xee, 0xd4, 0x7b, 0xe3, 0x4e, 0xd1, 0x9e,
+	0x9f, 0x5b, 0x7f, 0x18, 0xd0, 0xea, 0x9f, 0x3f, 0xe7, 0xe1, 0x84, 0x33, 0x64, 0xe2, 0x84, 0x8d,
+	0x79, 0x0f, 0xc5, 0x0d, 0xc2, 0x23, 0x4f, 0x61, 0x7b, 0x94, 0xd2, 0x28, 0xf8, 0xc6, 0x22, 0xfc,
+	0x5e, 0x06, 0x90, 0x37, 0x3e, 0xc9, 0xdf, 0x60, 0x6e, 0x88, 0xd2, 0xdb, 0x7a, 0x0e, 0xf6, 0xca,
+	0x0d, 0xd1, 0xfa, 0xcd, 0x00, 0xb3, 0xcc, 0xc5, 0xb5, 0x0b, 0xf7, 0x05, 0xd4, 0x33, 0xcb, 0x5a,
+	0xb8, 0x6d, 0x89, 0xcb, 0x6c, 0xdb, 0x73, 0x80, 0xf5, 0xcf, 0xb2, 0x72, 0xce, 0xff, 0x4b, 0x39,
+	0xd2, 0x85, 0xbb, 0xa3, 0x4b, 0x97, 0xf9, 0x18, 0x35, 0x37, 0x25, 0x63, 0x53, 0x32, 0x9e, 0x72,
+	0x8f, 0x8e, 0xa9, 0x3b, 0x0c, 0x70, 0x1e, 0x58, 0x0a, 0xb4, 0xc6, 0x4b, 0x62, 0x3b, 0xb7, 0x21,
+	0xb6, 0xf5, 0xab, 0x01, 0xfb, 0x8e, 0x70, 0xa7, 0xe2, 0x34, 0xf9, 0x74, 0x29, 0xf3, 0x5f, 0x48,
+	0x41, 0x6e, 0x21, 0xad, 0x0b, 0xa9, 0xa8, 0x5d, 0xf7, 0x8d, 0x76, 0xa0, 0xe5, 0x08, 0x3e, 0x59,
+	0xf4, 0x49, 0xe5, 0x94, 0xc0, 0xa6, 0xd4, 0xda, 0x90, 0x5a, 0xcb, 0xdf, 0x89, 0x5c, 0x65, 0x17,
+	0xd6, 0x2e, 0xd7, 0x00, 0x1e, 0x48, 0x1b, 0xe8, 0x29, 0x13, 0x51, 0x66, 0xa3, 0x0b, 0x77, 0x55,
+	0x00, 0x89, 0x91, 0xda, 0xf5, 0x49, 0xd6, 0x40, 0xeb, 0x77, 0x03, 0x5a, 0x0e, 0x8a, 0x01, 0xf7,
+	0x13, 0xa7, 0x8f, 0x99, 0x37, 0xe1, 0x94, 0xdd, 0xa8, 0x76, 0x1f, 0xc3, 0xfd, 0x40, 0xb1, 0x5c,
+	0xa0, 0xa6, 0x91, 0x61, 0xd4, 0xed, 0x9d, 0xa0, 0xc8, 0x9e, 0x87, 0xca, 0xc6, 0x3a, 0xe2, 0x81,
+	0x2e, 0xdb, 0x14, 0x7a, 0xa6, 0x5f, 0x5b, 0x28, 0xdd, 0xb3, 0x31, 0xe4, 0x02, 0xe7, 0xde, 0xad,
+	0x5d, 0xd4, 0xbf, 0x0c, 0x30, 0x7b, 0x25, 0x32, 0xac, 0xbd, 0x04, 0xcb, 0x54, 0xaa, 0xad, 0xae,
+	0xd2, 0x66, 0xb9, 0x4a, 0xcf, 0xa1, 0xe9, 0xa0, 0x38, 0x8d, 0xfc, 0x67, 0x71, 0xb4, 0x98, 0xc3,
+	0x4f, 0x61, 0x27, 0x8c, 0xfc, 0x61, 0x1c, 0xcd, 0x0d, 0xaa, 0xb2, 0xdd, 0x56, 0xaf, 0x53, 0xbc,
+	0xf5, 0xb3, 0x01, 0xad, 0xde, 0x32, 0xcb, 0xda, 0x25, 0x28, 0x71, 0xa8, 0x56, 0xea, 0xd0, 0x77,
+	0x70, 0xff, 0x98, 0x09, 0x2a, 0x28, 0x46, 0x03, 0xee, 0x0f, 0x70, 0x86, 0x01, 0x79, 0x0c, 0x5b,
+	0x81, 0xfe, 0xad, 0x1d, 0x51, 0x13, 0x2d, 0x05, 0xd8, 0xd9, 0x31, 0x31, 0x61, 0x0b, 0xf5, 0xf5,
+	0xe6, 0xc6, 0x61, 0xed, 0x51, 0xdd, 0xce, 0x9e, 0xad, 0x18, 0x88, 0xaa, 0x7a, 0x75, 0xe9, 0x06,
+	0xe5, 0x7e, 0x04, 0xf5, 0x20, 0xd9, 0x14, 0x66, 0x18, 0x28, 0xfa, 0x46, 0xf7, 0x03, 0x89, 0x5c,
+	0x74, 0xd9, 0x9e, 0xe3, 0xac, 0x9f, 0x0c, 0xd8, 0x2b, 0xd8, 0xd5, 0xe2, 0xfe, 0x17, 0xc3, 0xf3,
+	0x44, 0x6c, 0xac, 0x92, 0x88, 0x5a, 0x75, 0xd1, 0xff, 0x00, 0xa4, 0xf7, 0x6e, 0x22, 0x5c, 0x27,
+	0xf1, 0xdf, 0x06, 0xec, 0xf5, 0xde, 0x31, 0x56, 0x25, 0xf2, 0x60, 0x45, 0x91, 0x15, 0x2e, 0x27,
+	0x50, 0x6d, 0x15, 0x81, 0x36, 0xab, 0x05, 0xea, 0x67, 0x4d, 0x21, 0xe9, 0x9e, 0xa9, 0xcd, 0x1b,
+	0x08, 0xd5, 0xfd, 0x73, 0x0b, 0x5a, 0xaf, 0x5c, 0x41, 0x67, 0xd8, 0x3f, 0x3f, 0xcd, 0x36, 0x54,
+	0x47, 0x2d, 0xa8, 0xc4, 0x81, 0xbd, 0x92, 0x01, 0x48, 0x2a, 0xdb, 0xb7, 0x79, 0x98, 0x86, 0x54,
+	0x35, 0x34, 0x9f, 0x1a, 0xe4, 0x35, 0x90, 0xe5, 0x79, 0x44, 0x0e, 0xf4, 0xcd, 0x8a, 0xc9, 0x66,
+	0x3e, 0xac, 0x3c, 0xd7, 0xe9, 0xeb, 0xc3, 0x6e, 0xd2, 0x24, 0x0a, 0x13, 0x88, 0x3c, 0x68, 0xab,
+	0xb5, 0xb9, 0x9d, 0xae, 0xcd, 0xed, 0xe3, 0x64, 0x6d, 0x36, 0xf7, 0x55, 0x04, 0xe5, 0xe3, 0xea,
+	0x1c, 0xde, 0xef, 0xa1, 0x58, 0xda, 0x83, 0xc9, 0x47, 0xf2, 0x52, 0xd5, 0xa2, 0x6d, 0x1e, 0x54,
+	0x1d, 0x67, 0x91, 0x9f, 0xcb, 0xba, 0x5e, 0xd8, 0x5d, 0x74, 0xe4, 0x95, 0x1b, 0xae, 0x8e, 0xbc,
+	0x7a, 0xbd, 0xd4, 0x92, 0xae, 0x48, 0xec, 0xbc, 0x85, 0x38, 0xbf, 0x4a, 0x7d, 0x9b, 0x36, 0xa3,
+	0x42, 0xfb, 0xd7, 0x99, 0xaa, 0x9a, 0xcd, 0x66, 0x76, 0x5e, 0x31, 0x1c, 0x5f, 0xa6, 0x5f, 0x77,
+	0x81, 0x75, 0xa7, 0xb0, 0xff, 0x9f, 0xbc, 0xd0, 0xde, 0x5d, 0x33, 0xfb, 0x6c, 0xd8, 0x5d, 0x9a,
+	0x2d, 0x3a, 0x47, 0x55, 0x33, 0xe7, 0xad, 0xbe, 0x7d, 0xa3, 0x8a, 0xa8, 0xc8, 0x59, 0x55, 0x44,
+	0x07, 0xa9, 0x87, 0x15, 0x93, 0xe9, 0x2c, 0xed, 0x33, 0x85, 0xaf, 0x94, 0x14, 0x02, 0x2b, 0xf9,
+	0x7e, 0xcd, 0x66, 0x0e, 0x50, 0x6c, 0x51, 0x5f, 0x43, 0x23, 0xd7, 0xa5, 0xc9, 0x87, 0xb9, 0x4c,
+	0xe4, 0x5b, 0xa5, 0x66, 0x70, 0xca, 0x19, 0x7a, 0x4b, 0x0c, 0xbd, 0x2a, 0x86, 0x12, 0x1f, 0x9e,
+	0x7d, 0xf5, 0xfd, 0x97, 0x3e, 0x15, 0x97, 0xf1, 0xb0, 0x3d, 0xe2, 0x61, 0x87, 0x4f, 0x90, 0x8d,
+	0xf8, 0xd4, 0xeb, 0xa8, 0x9e, 0xf2, 0x64, 0xfe, 0x2f, 0xf7, 0x09, 0x65, 0x02, 0xa7, 0x63, 0x77,
+	0x84, 0x9d, 0xd9, 0x51, 0xc7, 0xe7, 0x1d, 0x2f, 0xa4, 0xc3, 0x3b, 0x52, 0xc2, 0xa3, 0x7f, 0x03,
+	0x00, 0x00, 0xff, 0xff, 0x3a, 0x27, 0xf3, 0x9c, 0x15, 0x0f, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -1243,7 +1201,7 @@
 	// Sets the location to which logs need to be shipped
 	SetLoggingEndpoint(ctx context.Context, in *SetLoggingEndpointRequest, opts ...grpc.CallOption) (*SetRemoteEndpointResponse, error)
 	// Gets the configured location to which the logs are being shipped
-	GetLoggingEndpoint(ctx context.Context, in *Uuid, opts ...grpc.CallOption) (*GetLoggingEndpointResponse, error)
+	GetLoggingEndpoint(ctx context.Context, in *HardwareID, opts ...grpc.CallOption) (*GetLoggingEndpointResponse, error)
 	// Sets the location of the Message Bus to which events and metrics are shipped
 	SetMsgBusEndpoint(ctx context.Context, in *SetMsgBusEndpointRequest, opts ...grpc.CallOption) (*SetRemoteEndpointResponse, error)
 	// Gets the configured location to which the events and metrics are being shipped
@@ -1252,7 +1210,7 @@
 	// In general an entity is any item within an hardware system that can emit logs, e.g. service, process, subsystem,
 	// interface, package etc.
 	GetLoggableEntities(ctx context.Context, in *GetLoggableEntitiesRequest, opts ...grpc.CallOption) (*GetLogLevelResponse, error)
-	// Sets the log level for one or more devices for each given entity to a certain level.
+	// Sets the log level of the device, for each given entity to a certain level.
 	// If only one EntitiesLogLevel is provided for the device and that request contains only a log level with
 	// no entity in the list it's assumed that the caller wants to set that level for all the entities.
 	SetLogLevel(ctx context.Context, in *SetLogLevelRequest, opts ...grpc.CallOption) (*SetLogLevelResponse, error)
@@ -1401,7 +1359,7 @@
 	return out, nil
 }
 
-func (c *nativeHWManagementServiceClient) GetLoggingEndpoint(ctx context.Context, in *Uuid, opts ...grpc.CallOption) (*GetLoggingEndpointResponse, error) {
+func (c *nativeHWManagementServiceClient) GetLoggingEndpoint(ctx context.Context, in *HardwareID, opts ...grpc.CallOption) (*GetLoggingEndpointResponse, error) {
 	out := new(GetLoggingEndpointResponse)
 	err := c.cc.Invoke(ctx, "/dmi.NativeHWManagementService/GetLoggingEndpoint", in, out, opts...)
 	if err != nil {
@@ -1480,7 +1438,7 @@
 	// Sets the location to which logs need to be shipped
 	SetLoggingEndpoint(context.Context, *SetLoggingEndpointRequest) (*SetRemoteEndpointResponse, error)
 	// Gets the configured location to which the logs are being shipped
-	GetLoggingEndpoint(context.Context, *Uuid) (*GetLoggingEndpointResponse, error)
+	GetLoggingEndpoint(context.Context, *HardwareID) (*GetLoggingEndpointResponse, error)
 	// Sets the location of the Message Bus to which events and metrics are shipped
 	SetMsgBusEndpoint(context.Context, *SetMsgBusEndpointRequest) (*SetRemoteEndpointResponse, error)
 	// Gets the configured location to which the events and metrics are being shipped
@@ -1489,7 +1447,7 @@
 	// In general an entity is any item within an hardware system that can emit logs, e.g. service, process, subsystem,
 	// interface, package etc.
 	GetLoggableEntities(context.Context, *GetLoggableEntitiesRequest) (*GetLogLevelResponse, error)
-	// Sets the log level for one or more devices for each given entity to a certain level.
+	// Sets the log level of the device, for each given entity to a certain level.
 	// If only one EntitiesLogLevel is provided for the device and that request contains only a log level with
 	// no entity in the list it's assumed that the caller wants to set that level for all the entities.
 	SetLogLevel(context.Context, *SetLogLevelRequest) (*SetLogLevelResponse, error)
@@ -1638,7 +1596,7 @@
 }
 
 func _NativeHWManagementService_GetLoggingEndpoint_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Uuid)
+	in := new(HardwareID)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
@@ -1650,7 +1608,7 @@
 		FullMethod: "/dmi.NativeHWManagementService/GetLoggingEndpoint",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(NativeHWManagementServiceServer).GetLoggingEndpoint(ctx, req.(*Uuid))
+		return srv.(NativeHWManagementServiceServer).GetLoggingEndpoint(ctx, req.(*HardwareID))
 	}
 	return interceptor(ctx, in, info, handler)
 }
