diff --git a/go/dmi/commons.pb.go b/go/dmi/commons.pb.go
index 1b3b9da..d30c79c 100644
--- a/go/dmi/commons.pb.go
+++ b/go/dmi/commons.pb.go
@@ -48,59 +48,6 @@
 	return fileDescriptor_74aedf0dda1205d8, []int{0}
 }
 
-// Reason for the failure of request
-type Reason int32
-
-const (
-	Reason_UNDEFINED_REASON                Reason = 0
-	Reason_UNKNOWN_DEVICE                  Reason = 1
-	Reason_INTERNAL_ERROR                  Reason = 2
-	Reason_WRONG_METRIC                    Reason = 3
-	Reason_WRONG_EVENT                     Reason = 4
-	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
-	Reason_ERROR_FETCHING_CONFIG           Reason = 9
-	Reason_INVALID_CONFIG                  Reason = 10
-)
-
-var Reason_name = map[int32]string{
-	0:  "UNDEFINED_REASON",
-	1:  "UNKNOWN_DEVICE",
-	2:  "INTERNAL_ERROR",
-	3:  "WRONG_METRIC",
-	4:  "WRONG_EVENT",
-	5:  "LOGGING_ENDPOINT_ERROR",
-	6:  "LOGGING_ENDPOINT_PROTOCOL_ERROR",
-	7:  "KAFKA_ENDPOINT_ERROR",
-	8:  "UNKNOWN_LOG_ENTITY",
-	9:  "ERROR_FETCHING_CONFIG",
-	10: "INVALID_CONFIG",
-}
-
-var Reason_value = map[string]int32{
-	"UNDEFINED_REASON":                0,
-	"UNKNOWN_DEVICE":                  1,
-	"INTERNAL_ERROR":                  2,
-	"WRONG_METRIC":                    3,
-	"WRONG_EVENT":                     4,
-	"LOGGING_ENDPOINT_ERROR":          5,
-	"LOGGING_ENDPOINT_PROTOCOL_ERROR": 6,
-	"KAFKA_ENDPOINT_ERROR":            7,
-	"UNKNOWN_LOG_ENTITY":              8,
-	"ERROR_FETCHING_CONFIG":           9,
-	"INVALID_CONFIG":                  10,
-}
-
-func (x Reason) String() string {
-	return proto.EnumName(Reason_name, int32(x))
-}
-
-func (Reason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_74aedf0dda1205d8, []int{1}
-}
-
 //Log Level
 type LogLevel int32
 
@@ -133,41 +80,30 @@
 }
 
 func (LogLevel) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_74aedf0dda1205d8, []int{2}
+	return fileDescriptor_74aedf0dda1205d8, []int{1}
 }
 
 func init() {
 	proto.RegisterEnum("dmi.Status", Status_name, Status_value)
-	proto.RegisterEnum("dmi.Reason", Reason_name, Reason_value)
 	proto.RegisterEnum("dmi.LogLevel", LogLevel_name, LogLevel_value)
 }
 
 func init() { proto.RegisterFile("dmi/commons.proto", fileDescriptor_74aedf0dda1205d8) }
 
 var fileDescriptor_74aedf0dda1205d8 = []byte{
-	// 373 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0xcf, 0x6f, 0xd3, 0x30,
-	0x14, 0xc7, 0xdb, 0xb4, 0x0b, 0xed, 0xe3, 0x97, 0xb1, 0xc6, 0x04, 0x5c, 0x38, 0x70, 0xab, 0xb4,
-	0xe5, 0xb0, 0x13, 0xe2, 0x30, 0x79, 0x89, 0x13, 0xac, 0x04, 0x7b, 0x72, 0x9c, 0x56, 0x70, 0x89,
-	0xb2, 0xc4, 0x84, 0x48, 0x38, 0x9e, 0xda, 0xac, 0xff, 0x04, 0xff, 0x34, 0x72, 0x43, 0x0e, 0xc0,
-	0xed, 0xf9, 0xf3, 0xf4, 0x3e, 0x7e, 0x5f, 0x3d, 0x78, 0xd5, 0x98, 0x2e, 0xa8, 0xad, 0x31, 0xb6,
-	0x3f, 0x5c, 0x3d, 0xec, 0xed, 0x60, 0xf1, 0xa2, 0x31, 0xdd, 0xe6, 0x06, 0xfc, 0x7c, 0xa8, 0x86,
-	0xc7, 0x03, 0x3e, 0x07, 0x54, 0xf0, 0x88, 0xc6, 0x8c, 0xd3, 0xa8, 0xcc, 0x15, 0x51, 0x45, 0x8e,
-	0x66, 0xf8, 0x39, 0xac, 0x45, 0x3a, 0x3d, 0xe7, 0x18, 0xc1, 0x33, 0x2a, 0xa5, 0x90, 0x13, 0xf1,
-	0x36, 0xbf, 0x3c, 0xf0, 0xa5, 0xae, 0x0e, 0xb6, 0xff, 0xdb, 0x20, 0x29, 0xc9, 0x05, 0x47, 0x33,
-	0x8c, 0xe1, 0x45, 0xc1, 0x53, 0x2e, 0x76, 0xbc, 0x8c, 0xe8, 0x96, 0x85, 0x14, 0xcd, 0x1d, 0x63,
-	0x5c, 0x51, 0xc9, 0x49, 0x56, 0x9e, 0x7c, 0xc8, 0x73, 0xea, 0x9d, 0x14, 0x3c, 0x29, 0xbf, 0x50,
-	0x25, 0x59, 0x88, 0x16, 0xf8, 0x25, 0x3c, 0x1d, 0x09, 0xdd, 0x52, 0xae, 0xd0, 0x12, 0xbf, 0x83,
-	0x8b, 0x4c, 0x24, 0x09, 0x73, 0x88, 0x47, 0x77, 0x82, 0x71, 0xf5, 0x67, 0xfc, 0x0c, 0x7f, 0x80,
-	0xf7, 0xff, 0xf5, 0xee, 0xa4, 0x50, 0x22, 0x14, 0xd3, 0x1f, 0x3e, 0x7e, 0x03, 0xe7, 0x29, 0x89,
-	0x53, 0xf2, 0xef, 0xf8, 0x13, 0x7c, 0x01, 0x78, 0xda, 0x32, 0x13, 0x4e, 0xa1, 0x98, 0xfa, 0x8a,
-	0x56, 0xf8, 0x2d, 0xbc, 0x1e, 0x03, 0xc7, 0x54, 0x85, 0x9f, 0x9d, 0x3d, 0x14, 0x3c, 0x66, 0x09,
-	0x5a, 0x8f, 0x21, 0xb6, 0x24, 0x63, 0xd1, 0xc4, 0x60, 0x73, 0x03, 0xab, 0xcc, 0xb6, 0x99, 0x3e,
-	0xea, 0x9f, 0x78, 0x0d, 0x67, 0x4a, 0x92, 0x90, 0xa2, 0x99, 0x2b, 0x23, 0x7a, 0x5b, 0x24, 0x68,
-	0x8e, 0x57, 0xb0, 0x64, 0x3c, 0x16, 0xc8, 0x73, 0xd5, 0x8e, 0x48, 0x8e, 0x16, 0xae, 0x3d, 0xee,
-	0xb1, 0xbc, 0xfd, 0xf4, 0xed, 0x63, 0xdb, 0x0d, 0x3f, 0x1e, 0xef, 0xaf, 0x6a, 0x6b, 0x02, 0xfb,
-	0xa0, 0xfb, 0xda, 0xee, 0x9b, 0xa0, 0xd1, 0xc7, 0xae, 0xd6, 0x97, 0xa6, 0xea, 0xab, 0x56, 0x1b,
-	0xdd, 0x0f, 0x97, 0x5d, 0x3f, 0xe8, 0xfd, 0xf7, 0xaa, 0xd6, 0xc1, 0xf1, 0x3a, 0x68, 0x6d, 0xd0,
-	0x98, 0xee, 0xde, 0x3f, 0x1d, 0xf6, 0xfa, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc8, 0xb6, 0xed,
-	0xcf, 0xed, 0x01, 0x00, 0x00,
+	// 217 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x34, 0x8f, 0x5f, 0x6b, 0xc2, 0x30,
+	0x14, 0xc5, 0xfd, 0x37, 0xd1, 0xb0, 0xc1, 0x5d, 0xd8, 0xa7, 0x10, 0x34, 0x0f, 0x3e, 0x8d, 0x3d,
+	0x48, 0x5d, 0xe3, 0x90, 0x49, 0x0b, 0x69, 0xcb, 0x60, 0x2f, 0xa3, 0x26, 0x77, 0x5d, 0x60, 0x37,
+	0x57, 0x6a, 0xec, 0xe7, 0x97, 0x0a, 0xbe, 0xfd, 0xce, 0x39, 0x70, 0xe0, 0x27, 0x9e, 0x1d, 0x79,
+	0x65, 0x99, 0x88, 0xc3, 0x79, 0x75, 0x6a, 0x39, 0xb2, 0x1c, 0x3b, 0xf2, 0x8b, 0x8d, 0x98, 0x16,
+	0xb1, 0x8e, 0x97, 0xb3, 0x7c, 0x11, 0x50, 0x65, 0xa9, 0xde, 0xed, 0x33, 0x9d, 0xfe, 0x14, 0x65,
+	0x52, 0x56, 0x05, 0x0c, 0xe4, 0x93, 0x98, 0xe7, 0x9f, 0xf7, 0x38, 0x94, 0x20, 0x1e, 0xb5, 0x31,
+	0xb9, 0xb9, 0x37, 0xa3, 0xc5, 0x46, 0xcc, 0x0e, 0xdc, 0x1c, 0xb0, 0xc3, 0x7f, 0x39, 0x17, 0x0f,
+	0xa5, 0x49, 0xde, 0x35, 0x0c, 0x7a, 0x4c, 0xf5, 0xb6, 0xfa, 0x80, 0xa1, 0x9c, 0x89, 0xc9, 0x3e,
+	0xdb, 0xe5, 0x30, 0xea, 0xe9, 0x2b, 0x31, 0x19, 0x8c, 0xfb, 0xf9, 0xf6, 0x03, 0x93, 0xed, 0xdb,
+	0xf7, 0x6b, 0xe3, 0xe3, 0xdf, 0xe5, 0xb8, 0xb2, 0x4c, 0x8a, 0x4f, 0x18, 0x2c, 0xb7, 0x4e, 0x39,
+	0xec, 0xbc, 0xc5, 0x25, 0xd5, 0xa1, 0x6e, 0x90, 0x30, 0xc4, 0xa5, 0x0f, 0x11, 0xdb, 0xdf, 0xda,
+	0xa2, 0xea, 0xd6, 0xaa, 0x61, 0xe5, 0xc8, 0x1f, 0xa7, 0x37, 0x95, 0xf5, 0x35, 0x00, 0x00, 0xff,
+	0xff, 0x6b, 0x43, 0x1e, 0x6c, 0xdf, 0x00, 0x00, 0x00,
 }
