diff --git a/VERSION b/VERSION
index c81aa44..e3e1807 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.9.7
+0.9.8
diff --git a/dmi.pb b/dmi.pb
index 00c6cce..e6dad4a 100644
--- a/dmi.pb
+++ b/dmi.pb
Binary files differ
diff --git a/go/dmi/sw_management_service.pb.go b/go/dmi/sw_management_service.pb.go
index d61b85b..a4d6f9f 100644
--- a/go/dmi/sw_management_service.pb.go
+++ b/go/dmi/sw_management_service.pb.go
@@ -87,6 +87,34 @@
 	return fileDescriptor_000929e4bec891d7, []int{4, 0}
 }
 
+type StartupConfigInfoResponse_Reason int32
+
+const (
+	StartupConfigInfoResponse_UNDEFINED_REASON StartupConfigInfoResponse_Reason = 0
+	StartupConfigInfoResponse_UNKNOWN_DEVICE   StartupConfigInfoResponse_Reason = 1
+	StartupConfigInfoResponse_INTERNAL_ERROR   StartupConfigInfoResponse_Reason = 2
+)
+
+var StartupConfigInfoResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "UNKNOWN_DEVICE",
+	2: "INTERNAL_ERROR",
+}
+
+var StartupConfigInfoResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON": 0,
+	"UNKNOWN_DEVICE":   1,
+	"INTERNAL_ERROR":   2,
+}
+
+func (x StartupConfigInfoResponse_Reason) String() string {
+	return proto.EnumName(StartupConfigInfoResponse_Reason_name, int32(x))
+}
+
+func (StartupConfigInfoResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_000929e4bec891d7, []int{6, 0}
+}
+
 type SoftwareVersionInformation struct {
 	ActiveVersions       []*ImageVersion `protobuf:"bytes,1,rep,name=active_versions,json=activeVersions,proto3" json:"active_versions,omitempty"`
 	StandbyVersions      []*ImageVersion `protobuf:"bytes,2,rep,name=standby_versions,json=standbyVersions,proto3" json:"standby_versions,omitempty"`
@@ -333,62 +361,177 @@
 	return ConfigResponse_UNDEFINED_REASON
 }
 
+type StartupConfigInfoRequest struct {
+	DeviceUuid           *Uuid    `protobuf:"bytes,1,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StartupConfigInfoRequest) Reset()         { *m = StartupConfigInfoRequest{} }
+func (m *StartupConfigInfoRequest) String() string { return proto.CompactTextString(m) }
+func (*StartupConfigInfoRequest) ProtoMessage()    {}
+func (*StartupConfigInfoRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_000929e4bec891d7, []int{5}
+}
+
+func (m *StartupConfigInfoRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StartupConfigInfoRequest.Unmarshal(m, b)
+}
+func (m *StartupConfigInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StartupConfigInfoRequest.Marshal(b, m, deterministic)
+}
+func (m *StartupConfigInfoRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StartupConfigInfoRequest.Merge(m, src)
+}
+func (m *StartupConfigInfoRequest) XXX_Size() int {
+	return xxx_messageInfo_StartupConfigInfoRequest.Size(m)
+}
+func (m *StartupConfigInfoRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_StartupConfigInfoRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StartupConfigInfoRequest proto.InternalMessageInfo
+
+func (m *StartupConfigInfoRequest) GetDeviceUuid() *Uuid {
+	if m != nil {
+		return m.DeviceUuid
+	}
+	return nil
+}
+
+type StartupConfigInfoResponse struct {
+	Status Status                           `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason StartupConfigInfoResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.StartupConfigInfoResponse_Reason" json:"reason,omitempty"`
+	// The config_url is an optional attribute, the device manager could return the location from
+	// where the config was downloaded. Also it would not be present/empty for a fresh device into which the
+	// startup config would have been installed in the factory.
+	ConfigUrl string `protobuf:"bytes,3,opt,name=config_url,json=configUrl,proto3" json:"config_url,omitempty"`
+	// The version of the startup configuration. It is recommended to use semVer, but the DM implementations
+	// and operators could choose any other format as well.
+	Version              string   `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StartupConfigInfoResponse) Reset()         { *m = StartupConfigInfoResponse{} }
+func (m *StartupConfigInfoResponse) String() string { return proto.CompactTextString(m) }
+func (*StartupConfigInfoResponse) ProtoMessage()    {}
+func (*StartupConfigInfoResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_000929e4bec891d7, []int{6}
+}
+
+func (m *StartupConfigInfoResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StartupConfigInfoResponse.Unmarshal(m, b)
+}
+func (m *StartupConfigInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StartupConfigInfoResponse.Marshal(b, m, deterministic)
+}
+func (m *StartupConfigInfoResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StartupConfigInfoResponse.Merge(m, src)
+}
+func (m *StartupConfigInfoResponse) XXX_Size() int {
+	return xxx_messageInfo_StartupConfigInfoResponse.Size(m)
+}
+func (m *StartupConfigInfoResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_StartupConfigInfoResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StartupConfigInfoResponse proto.InternalMessageInfo
+
+func (m *StartupConfigInfoResponse) GetStatus() Status {
+	if m != nil {
+		return m.Status
+	}
+	return Status_UNDEFINED_STATUS
+}
+
+func (m *StartupConfigInfoResponse) GetReason() StartupConfigInfoResponse_Reason {
+	if m != nil {
+		return m.Reason
+	}
+	return StartupConfigInfoResponse_UNDEFINED_REASON
+}
+
+func (m *StartupConfigInfoResponse) GetConfigUrl() string {
+	if m != nil {
+		return m.ConfigUrl
+	}
+	return ""
+}
+
+func (m *StartupConfigInfoResponse) GetVersion() string {
+	if m != nil {
+		return m.Version
+	}
+	return ""
+}
+
 func init() {
 	proto.RegisterEnum("dmi.GetSoftwareVersionInformationResponse_Reason", GetSoftwareVersionInformationResponse_Reason_name, GetSoftwareVersionInformationResponse_Reason_value)
 	proto.RegisterEnum("dmi.ConfigResponse_Reason", ConfigResponse_Reason_name, ConfigResponse_Reason_value)
+	proto.RegisterEnum("dmi.StartupConfigInfoResponse_Reason", StartupConfigInfoResponse_Reason_name, StartupConfigInfoResponse_Reason_value)
 	proto.RegisterType((*SoftwareVersionInformation)(nil), "dmi.SoftwareVersionInformation")
 	proto.RegisterType((*GetSoftwareVersionInformationResponse)(nil), "dmi.GetSoftwareVersionInformationResponse")
 	proto.RegisterType((*DownloadImageRequest)(nil), "dmi.DownloadImageRequest")
 	proto.RegisterType((*ConfigRequest)(nil), "dmi.ConfigRequest")
 	proto.RegisterType((*ConfigResponse)(nil), "dmi.ConfigResponse")
+	proto.RegisterType((*StartupConfigInfoRequest)(nil), "dmi.StartupConfigInfoRequest")
+	proto.RegisterType((*StartupConfigInfoResponse)(nil), "dmi.StartupConfigInfoResponse")
 }
 
 func init() { proto.RegisterFile("dmi/sw_management_service.proto", fileDescriptor_000929e4bec891d7) }
 
 var fileDescriptor_000929e4bec891d7 = []byte{
-	// 671 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x5f, 0x4f, 0x13, 0x4f,
-	0x14, 0xfd, 0x6d, 0xcb, 0xaf, 0x49, 0x6f, 0xa5, 0x2c, 0x23, 0x24, 0xd0, 0x84, 0x80, 0x35, 0x26,
-	0x84, 0x84, 0x16, 0x0b, 0x2f, 0x8a, 0x31, 0xa9, 0xed, 0xb6, 0x6c, 0xc4, 0x2d, 0x4e, 0x5b, 0x8c,
-	0xbc, 0x6c, 0x86, 0xee, 0xb4, 0x4c, 0xc2, 0xce, 0xd4, 0xd9, 0xd9, 0x56, 0xdf, 0xfd, 0x08, 0xc6,
-	0xf8, 0x31, 0xfd, 0x08, 0x66, 0x67, 0xb6, 0x56, 0xfe, 0x25, 0x60, 0x7c, 0xdb, 0x3d, 0x73, 0xce,
-	0xb9, 0x77, 0xf7, 0x9e, 0x3b, 0xb0, 0x19, 0x84, 0xac, 0x1a, 0x4d, 0xfd, 0x90, 0x70, 0x32, 0xa2,
-	0x21, 0xe5, 0xca, 0x8f, 0xa8, 0x9c, 0xb0, 0x01, 0xad, 0x8c, 0xa5, 0x50, 0x02, 0x65, 0x83, 0x90,
-	0x95, 0x96, 0x13, 0xd6, 0x40, 0x84, 0xa1, 0xe0, 0x91, 0xc1, 0x4b, 0x8f, 0x12, 0xe8, 0x62, 0x9a,
-	0xbe, 0xa1, 0xd4, 0x86, 0x85, 0x64, 0x94, 0x2a, 0xcb, 0xdf, 0x2d, 0x28, 0x75, 0xc5, 0x50, 0x4d,
-	0x89, 0xa4, 0xa7, 0x54, 0x46, 0x4c, 0x70, 0x97, 0x0f, 0x85, 0x0c, 0x89, 0x62, 0x82, 0xa3, 0x97,
-	0xb0, 0x44, 0x06, 0x8a, 0x4d, 0xa8, 0x3f, 0x31, 0x87, 0xd1, 0x9a, 0xb5, 0x95, 0xdd, 0x2e, 0xd4,
-	0x96, 0x2b, 0x41, 0xc8, 0x2a, 0x6e, 0xe2, 0x94, 0xca, 0x70, 0xd1, 0x30, 0xd3, 0xd7, 0x08, 0xbd,
-	0x02, 0x3b, 0x52, 0x84, 0x07, 0xe7, 0x5f, 0xe6, 0xe2, 0xcc, 0x5d, 0xe2, 0xa5, 0x94, 0x3a, 0x53,
-	0x97, 0xbf, 0x65, 0xe0, 0x59, 0x9b, 0xaa, 0xbb, 0x7b, 0xc3, 0x34, 0x1a, 0x0b, 0x1e, 0x51, 0xf4,
-	0x14, 0x72, 0x91, 0x22, 0x2a, 0x4e, 0x5a, 0xb3, 0xb6, 0x8b, 0xb5, 0x82, 0x76, 0xef, 0x6a, 0x08,
-	0xa7, 0x47, 0xc8, 0x85, 0x9c, 0xa4, 0x24, 0x12, 0x7c, 0x2d, 0xa3, 0x49, 0xcf, 0x35, 0xe9, 0x5e,
-	0x05, 0x2a, 0x58, 0x0b, 0x71, 0x6a, 0x80, 0xf6, 0x61, 0x81, 0xf1, 0xa1, 0x58, 0xcb, 0x6e, 0x59,
-	0xdb, 0x85, 0xda, 0xa6, 0xa9, 0x76, 0xb7, 0x8b, 0x26, 0x97, 0x5b, 0x90, 0x33, 0x36, 0x68, 0x05,
-	0xec, 0xbe, 0xd7, 0x74, 0x5a, 0xae, 0xe7, 0x34, 0x7d, 0xec, 0xd4, 0xbb, 0x1d, 0xcf, 0xfe, 0x0f,
-	0x21, 0x28, 0xf6, 0xbd, 0xb7, 0x5e, 0xe7, 0x83, 0xe7, 0x37, 0x9d, 0x53, 0xb7, 0xe1, 0xd8, 0x56,
-	0x82, 0xb9, 0x5e, 0xcf, 0xc1, 0x5e, 0xfd, 0xd8, 0x77, 0x30, 0xee, 0x60, 0x3b, 0x53, 0xfe, 0x0c,
-	0x2b, 0x4d, 0x31, 0xe5, 0x97, 0x82, 0x04, 0xfa, 0xff, 0x61, 0xfa, 0x29, 0xa6, 0x91, 0x42, 0x3b,
-	0x50, 0x08, 0x68, 0x92, 0x08, 0x3f, 0x8e, 0x59, 0xa0, 0xff, 0x44, 0xa1, 0x96, 0xd7, 0xbd, 0xf5,
-	0x63, 0x16, 0x60, 0x30, 0xa7, 0xc9, 0x33, 0x3a, 0x00, 0xd0, 0x11, 0xf0, 0xf5, 0x67, 0x64, 0x34,
-	0x75, 0x75, 0x3e, 0x92, 0x3f, 0x9b, 0xcf, 0xb3, 0x19, 0x52, 0x3e, 0x83, 0xc5, 0x86, 0xe0, 0x43,
-	0x36, 0xfa, 0x9b, 0x92, 0x1b, 0x00, 0x03, 0x2d, 0xf6, 0x63, 0x79, 0xa9, 0x4b, 0xe6, 0x71, 0xde,
-	0x20, 0x7d, 0x79, 0x59, 0xfe, 0x9a, 0x81, 0xe2, 0xcc, 0xfc, 0x21, 0x53, 0xad, 0x5d, 0x9b, 0x6a,
-	0x49, 0x93, 0xae, 0x3a, 0x5d, 0x1b, 0x5f, 0xf9, 0x87, 0xf5, 0x6f, 0x46, 0x81, 0xd6, 0x61, 0x55,
-	0x3f, 0xfa, 0x2d, 0xa7, 0xd7, 0x38, 0x72, 0xbd, 0xb6, 0xdf, 0xe8, 0x78, 0x2d, 0xb7, 0x6d, 0x67,
-	0x0d, 0xfd, 0xb4, 0x7e, 0xec, 0x36, 0x67, 0xd8, 0x02, 0x7a, 0x02, 0x1b, 0x9d, 0x13, 0x07, 0xd7,
-	0x7b, 0x6e, 0xc7, 0xf3, 0xeb, 0xc7, 0xd8, 0xa9, 0x37, 0x3f, 0xfa, 0xae, 0xe7, 0x9f, 0xe0, 0x4e,
-	0x1b, 0x3b, 0xdd, 0xae, 0xfd, 0x7f, 0xed, 0x67, 0x06, 0x36, 0x3d, 0x92, 0x2c, 0xd1, 0x2c, 0x4f,
-	0xef, 0x7e, 0x6f, 0x7c, 0xd7, 0x2c, 0x3c, 0x7a, 0x0f, 0xe8, 0x66, 0x6a, 0xd1, 0x92, 0xfe, 0xf0,
-	0x23, 0x22, 0x83, 0x04, 0x75, 0x9b, 0xa5, 0x9d, 0xfb, 0xe7, 0x1b, 0xbd, 0x86, 0xc5, 0x2b, 0x99,
-	0x42, 0xeb, 0x5a, 0x7c, 0x5b, 0xce, 0x4a, 0xf6, 0x3c, 0x27, 0x66, 0x16, 0x7b, 0x16, 0x3a, 0x80,
-	0xc5, 0x7a, 0xb2, 0xfa, 0x44, 0x51, 0xa3, 0xbf, 0xd1, 0xcd, 0x6d, 0xaa, 0x43, 0x58, 0xc1, 0x74,
-	0x42, 0xa5, 0xea, 0x89, 0xae, 0xd9, 0xfd, 0x07, 0x88, 0xdb, 0x50, 0xea, 0x8f, 0x03, 0xa2, 0x12,
-	0x44, 0xaa, 0x78, 0x6c, 0x46, 0x1e, 0x4b, 0x73, 0x6b, 0xa1, 0x2b, 0x31, 0x30, 0x8d, 0x3f, 0xbe,
-	0x25, 0x1a, 0x7b, 0xd6, 0x9b, 0xc3, 0xb3, 0x17, 0x23, 0xa6, 0x2e, 0xe2, 0xf3, 0xca, 0x40, 0x84,
-	0x55, 0x31, 0xa6, 0x7c, 0x20, 0x64, 0x50, 0x35, 0xd1, 0xdd, 0x9d, 0x5f, 0xb8, 0xbb, 0x8c, 0x2b,
-	0x2a, 0x87, 0x64, 0x40, 0xab, 0x93, 0xfd, 0xea, 0x48, 0x54, 0x83, 0x90, 0x9d, 0xe7, 0xf4, 0x1d,
-	0xba, 0xff, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x55, 0x2e, 0xda, 0x40, 0xa0, 0x05, 0x00, 0x00,
+	// 750 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x6f, 0x4f, 0x22, 0x47,
+	0x18, 0xef, 0x82, 0xa5, 0xe1, 0xa1, 0xe2, 0x3a, 0xd5, 0x04, 0x69, 0xac, 0x76, 0x1b, 0x13, 0x63,
+	0x22, 0x58, 0xf4, 0x4d, 0x6b, 0xdb, 0x84, 0xc2, 0x82, 0x9b, 0xda, 0xc5, 0xce, 0x82, 0x4d, 0x4d,
+	0x93, 0xcd, 0xc8, 0x0e, 0x38, 0x89, 0xbb, 0x43, 0x77, 0x67, 0xa1, 0x7d, 0xd7, 0x17, 0xf7, 0x11,
+	0x2e, 0x97, 0xfb, 0x54, 0xf7, 0x99, 0x2e, 0x3b, 0xb3, 0x1c, 0x07, 0xc2, 0x45, 0x8d, 0xef, 0x66,
+	0x9e, 0xf9, 0xfd, 0x7e, 0xf3, 0xcc, 0xf3, 0x6f, 0x60, 0xcf, 0xf3, 0x59, 0x35, 0x9a, 0xb8, 0x3e,
+	0x09, 0xc8, 0x90, 0xfa, 0x34, 0x10, 0x6e, 0x44, 0xc3, 0x31, 0xeb, 0xd3, 0xca, 0x28, 0xe4, 0x82,
+	0xa3, 0xac, 0xe7, 0xb3, 0xf2, 0x66, 0x82, 0xea, 0x73, 0xdf, 0xe7, 0x41, 0xa4, 0xec, 0xe5, 0x2f,
+	0x13, 0xd3, 0xdd, 0x24, 0xdd, 0xa1, 0x54, 0x86, 0xf9, 0x64, 0x98, 0x32, 0x8d, 0x37, 0x1a, 0x94,
+	0x1d, 0x3e, 0x10, 0x13, 0x12, 0xd2, 0x6b, 0x1a, 0x46, 0x8c, 0x07, 0x56, 0x30, 0xe0, 0xa1, 0x4f,
+	0x04, 0xe3, 0x01, 0xfa, 0x11, 0x36, 0x48, 0x5f, 0xb0, 0x31, 0x75, 0xc7, 0xea, 0x30, 0x2a, 0x69,
+	0xfb, 0xd9, 0xc3, 0x42, 0x6d, 0xb3, 0xe2, 0xf9, 0xac, 0x62, 0x25, 0x4a, 0x29, 0x0d, 0x17, 0x15,
+	0x32, 0xdd, 0x46, 0xe8, 0x27, 0xd0, 0x23, 0x41, 0x02, 0xef, 0xf6, 0xbf, 0x19, 0x39, 0xb3, 0x8a,
+	0xbc, 0x91, 0x42, 0xa7, 0x6c, 0xe3, 0x75, 0x06, 0x0e, 0xda, 0x54, 0xac, 0xf6, 0x0d, 0xd3, 0x68,
+	0xc4, 0x83, 0x88, 0xa2, 0xef, 0x20, 0x17, 0x09, 0x22, 0xe2, 0xc4, 0x35, 0xed, 0xb0, 0x58, 0x2b,
+	0x48, 0x75, 0x47, 0x9a, 0x70, 0x7a, 0x84, 0x2c, 0xc8, 0x85, 0x94, 0x44, 0x3c, 0x28, 0x65, 0x24,
+	0xe8, 0x7b, 0x09, 0x7a, 0xd4, 0x05, 0x15, 0x2c, 0x89, 0x38, 0x15, 0x40, 0xa7, 0xb0, 0xc6, 0x82,
+	0x01, 0x2f, 0x65, 0xf7, 0xb5, 0xc3, 0x42, 0x6d, 0x4f, 0xdd, 0xb6, 0x5a, 0x45, 0x82, 0x8d, 0x16,
+	0xe4, 0x94, 0x0c, 0xda, 0x02, 0xbd, 0x67, 0x37, 0xcd, 0x96, 0x65, 0x9b, 0x4d, 0x17, 0x9b, 0x75,
+	0xa7, 0x63, 0xeb, 0x9f, 0x21, 0x04, 0xc5, 0x9e, 0xfd, 0x9b, 0xdd, 0xf9, 0xd3, 0x76, 0x9b, 0xe6,
+	0xb5, 0xd5, 0x30, 0x75, 0x2d, 0xb1, 0x59, 0x76, 0xd7, 0xc4, 0x76, 0xfd, 0xd2, 0x35, 0x31, 0xee,
+	0x60, 0x3d, 0x63, 0xfc, 0x0b, 0x5b, 0x4d, 0x3e, 0x09, 0xee, 0x39, 0xf1, 0x64, 0xfc, 0x30, 0xfd,
+	0x27, 0xa6, 0x91, 0x40, 0x47, 0x50, 0xf0, 0x68, 0x52, 0x11, 0x6e, 0x1c, 0x33, 0x4f, 0x46, 0xa2,
+	0x50, 0xcb, 0x4b, 0xdf, 0x7a, 0x31, 0xf3, 0x30, 0xa8, 0xd3, 0x64, 0x8d, 0xce, 0x00, 0x64, 0x09,
+	0xb8, 0xf2, 0x19, 0x19, 0x09, 0xdd, 0x9e, 0xa5, 0xe4, 0x63, 0xe7, 0xf3, 0x6c, 0x6a, 0x31, 0x6e,
+	0x60, 0xbd, 0xc1, 0x83, 0x01, 0x1b, 0x3e, 0xe7, 0xca, 0x5d, 0x80, 0xbe, 0x24, 0xbb, 0x71, 0x78,
+	0x2f, 0xaf, 0xcc, 0xe3, 0xbc, 0xb2, 0xf4, 0xc2, 0x7b, 0xe3, 0x55, 0x06, 0x8a, 0x53, 0xf1, 0xa7,
+	0x64, 0xb5, 0xb6, 0x90, 0xd5, 0xb2, 0x04, 0xcd, 0x2b, 0x2d, 0xa4, 0xcf, 0x78, 0xab, 0xbd, 0x4c,
+	0x2a, 0xd0, 0x0e, 0x6c, 0xcb, 0xa5, 0xdb, 0x32, 0xbb, 0x8d, 0x0b, 0xcb, 0x6e, 0xbb, 0x8d, 0x8e,
+	0xdd, 0xb2, 0xda, 0x7a, 0x56, 0xc1, 0xaf, 0xeb, 0x97, 0x56, 0x73, 0x6a, 0x5b, 0x43, 0xdf, 0xc2,
+	0x6e, 0xe7, 0xca, 0xc4, 0xf5, 0xae, 0xd5, 0xb1, 0xdd, 0xfa, 0x25, 0x36, 0xeb, 0xcd, 0xbf, 0x5c,
+	0xcb, 0x76, 0xaf, 0x70, 0xa7, 0x8d, 0x4d, 0xc7, 0xd1, 0x3f, 0x37, 0x5a, 0x50, 0x72, 0x04, 0x09,
+	0x45, 0x3c, 0x52, 0x4f, 0x48, 0xe2, 0xfe, 0x8c, 0x68, 0x1b, 0xff, 0x67, 0x60, 0x67, 0x89, 0xd0,
+	0x53, 0x22, 0xfb, 0xf3, 0x42, 0x64, 0x0f, 0xa6, 0xa0, 0xe5, 0xa2, 0x8b, 0x3d, 0x32, 0x9f, 0xef,
+	0xec, 0x42, 0xbe, 0x51, 0x09, 0xbe, 0x48, 0x47, 0x42, 0x69, 0x4d, 0x9e, 0x4d, 0xb7, 0x2f, 0xd5,
+	0x27, 0xb5, 0x77, 0x59, 0xd8, 0xb3, 0x49, 0x32, 0x8f, 0xa6, 0xad, 0xf9, 0xfb, 0x87, 0xe1, 0xe9,
+	0xa8, 0xd9, 0x89, 0xfe, 0x00, 0xf4, 0x70, 0x00, 0xa0, 0x0d, 0xf9, 0xd2, 0x0b, 0x12, 0x7a, 0x89,
+	0xd5, 0x6a, 0x96, 0x8f, 0x1e, 0x3f, 0x2a, 0xd0, 0x2f, 0xb0, 0x3e, 0xd7, 0x9e, 0x68, 0x47, 0x92,
+	0x97, 0xb5, 0x6c, 0x59, 0x9f, 0xb5, 0x9c, 0x0a, 0xfe, 0x89, 0x86, 0xce, 0x60, 0xbd, 0x9e, 0x4c,
+	0x51, 0x22, 0xa8, 0xe2, 0x3f, 0xf0, 0x66, 0x19, 0xeb, 0x1c, 0xb6, 0x30, 0x1d, 0xd3, 0x50, 0x74,
+	0xb9, 0xa3, 0xc6, 0xe8, 0x13, 0xc8, 0x6d, 0x28, 0xf7, 0x46, 0x1e, 0x11, 0x74, 0x2e, 0xb9, 0x71,
+	0xa8, 0x3e, 0x00, 0x34, 0xd7, 0x51, 0xca, 0xf1, 0xaf, 0x96, 0x74, 0xd9, 0x89, 0x86, 0xfe, 0x86,
+	0xaf, 0x93, 0x20, 0x2d, 0x51, 0x49, 0x22, 0x85, 0x76, 0x57, 0x55, 0x90, 0x12, 0xfd, 0xe6, 0xd3,
+	0x05, 0xf6, 0xeb, 0xf9, 0xcd, 0x0f, 0x43, 0x26, 0xee, 0xe2, 0xdb, 0x4a, 0x9f, 0xfb, 0x55, 0x3e,
+	0xa2, 0x41, 0x9f, 0x87, 0x5e, 0x55, 0x55, 0xfd, 0xf1, 0xec, 0x67, 0x3c, 0x66, 0x81, 0xa0, 0xe1,
+	0x80, 0xf4, 0x69, 0x75, 0x7c, 0x5a, 0x1d, 0xf2, 0xaa, 0xe7, 0xb3, 0xdb, 0x9c, 0xfc, 0xec, 0x4e,
+	0xdf, 0x07, 0x00, 0x00, 0xff, 0xff, 0xc3, 0xb2, 0x02, 0xf8, 0x49, 0x07, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -416,6 +559,8 @@
 	RevertToStandbyImage(ctx context.Context, in *HardwareID, opts ...grpc.CallOption) (NativeSoftwareManagementService_RevertToStandbyImageClient, error)
 	// This API can be used to let the devices pickup their properitary configuration which they need at startup.
 	UpdateStartupConfiguration(ctx context.Context, in *ConfigRequest, opts ...grpc.CallOption) (NativeSoftwareManagementService_UpdateStartupConfigurationClient, error)
+	// This API can be used to retrieve information about the current startup configuration that a device is using
+	GetStartupConfigurationInfo(ctx context.Context, in *StartupConfigInfoRequest, opts ...grpc.CallOption) (*StartupConfigInfoResponse, error)
 }
 
 type nativeSoftwareManagementServiceClient struct {
@@ -563,6 +708,15 @@
 	return m, nil
 }
 
+func (c *nativeSoftwareManagementServiceClient) GetStartupConfigurationInfo(ctx context.Context, in *StartupConfigInfoRequest, opts ...grpc.CallOption) (*StartupConfigInfoResponse, error) {
+	out := new(StartupConfigInfoResponse)
+	err := c.cc.Invoke(ctx, "/dmi.NativeSoftwareManagementService/GetStartupConfigurationInfo", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // NativeSoftwareManagementServiceServer is the server API for NativeSoftwareManagementService service.
 type NativeSoftwareManagementServiceServer interface {
 	// Get the software version information of the Active and Standby images
@@ -578,6 +732,8 @@
 	RevertToStandbyImage(*HardwareID, NativeSoftwareManagementService_RevertToStandbyImageServer) error
 	// This API can be used to let the devices pickup their properitary configuration which they need at startup.
 	UpdateStartupConfiguration(*ConfigRequest, NativeSoftwareManagementService_UpdateStartupConfigurationServer) error
+	// This API can be used to retrieve information about the current startup configuration that a device is using
+	GetStartupConfigurationInfo(context.Context, *StartupConfigInfoRequest) (*StartupConfigInfoResponse, error)
 }
 
 func RegisterNativeSoftwareManagementServiceServer(s *grpc.Server, srv NativeSoftwareManagementServiceServer) {
@@ -686,6 +842,24 @@
 	return x.ServerStream.SendMsg(m)
 }
 
+func _NativeSoftwareManagementService_GetStartupConfigurationInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(StartupConfigInfoRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NativeSoftwareManagementServiceServer).GetStartupConfigurationInfo(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/dmi.NativeSoftwareManagementService/GetStartupConfigurationInfo",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NativeSoftwareManagementServiceServer).GetStartupConfigurationInfo(ctx, req.(*StartupConfigInfoRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 var _NativeSoftwareManagementService_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "dmi.NativeSoftwareManagementService",
 	HandlerType: (*NativeSoftwareManagementServiceServer)(nil),
@@ -694,6 +868,10 @@
 			MethodName: "GetSoftwareVersion",
 			Handler:    _NativeSoftwareManagementService_GetSoftwareVersion_Handler,
 		},
+		{
+			MethodName: "GetStartupConfigurationInfo",
+			Handler:    _NativeSoftwareManagementService_GetStartupConfigurationInfo_Handler,
+		},
 	},
 	Streams: []grpc.StreamDesc{
 		{
diff --git a/protos/dmi/sw_management_service.proto b/protos/dmi/sw_management_service.proto
index 754a654..9fcc322 100644
--- a/protos/dmi/sw_management_service.proto
+++ b/protos/dmi/sw_management_service.proto
@@ -55,6 +55,27 @@
     Reason reason = 2;
 }
 
+message StartupConfigInfoRequest {
+    Uuid device_uuid = 1;
+}
+
+message StartupConfigInfoResponse {
+    enum Reason {
+        UNDEFINED_REASON = 0;
+        UNKNOWN_DEVICE = 1;
+        INTERNAL_ERROR = 2;
+    }
+    Status status = 1;
+    Reason reason = 2;
+    // The config_url is an optional attribute, the device manager could return the location from
+    // where the config was downloaded. Also it would not be present/empty for a fresh device into which the
+    // startup config would have been installed in the factory.
+    string config_url = 3;
+    // The version of the startup configuration. It is recommended to use semVer, but the DM implementations
+    // and operators could choose any other format as well.
+    string version = 4;
+}
+
 service NativeSoftwareManagementService {
     // Get the software version information of the Active and Standby images
     rpc GetSoftwareVersion(HardwareID) returns(GetSoftwareVersionInformationResponse);
@@ -74,6 +95,9 @@
     // This API can be used to let the devices pickup their properitary configuration which they need at startup.
     rpc UpdateStartupConfiguration(ConfigRequest) returns(stream ConfigResponse);
 
+    // This API can be used to retrieve information about the current startup configuration that a device is using
+    rpc GetStartupConfigurationInfo(StartupConfigInfoRequest) returns(StartupConfigInfoResponse);
+
     // If needed we can add this later
     //rpc SubscribeToEvents() returns (stream );
 }
diff --git a/python/dmi/sw_management_service_pb2.py b/python/dmi/sw_management_service_pb2.py
index f795b76..748b2e8 100644
--- a/python/dmi/sw_management_service_pb2.py
+++ b/python/dmi/sw_management_service_pb2.py
@@ -22,7 +22,7 @@
   syntax='proto3',
   serialized_options=b'Z9github.com/opencord/device-management-interface/v3/go/dmi',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x1f\x64mi/sw_management_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\x1a\x12\x64mi/sw_image.proto\"u\n\x1aSoftwareVersionInformation\x12*\n\x0f\x61\x63tive_versions\x18\x01 \x03(\x0b\x32\x11.dmi.ImageVersion\x12+\n\x10standby_versions\x18\x02 \x03(\x0b\x32\x11.dmi.ImageVersion\"\xfe\x01\n%GetSoftwareVersionInformationResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x41\n\x06reason\x18\x02 \x01(\x0e\x32\x31.dmi.GetSoftwareVersionInformationResponse.Reason\x12-\n\x04info\x18\x03 \x01(\x0b\x32\x1f.dmi.SoftwareVersionInformation\"F\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\"a\n\x14\x44ownloadImageRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12)\n\nimage_info\x18\x02 \x01(\x0b\x32\x15.dmi.ImageInformation\"C\n\rConfigRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12\x12\n\nconfig_url\x18\x02 \x01(\t\"\xf4\x01\n\x0e\x43onfigResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12*\n\x06reason\x18\x02 \x01(\x0e\x32\x1a.dmi.ConfigResponse.Reason\"\x98\x01\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x19\n\x15\x45RROR_FETCHING_CONFIG\x10\x03\x12\x12\n\x0eINVALID_CONFIG\x10\x04\x12!\n\x1dOPERATION_ALREADY_IN_PROGRESS\x10\x05\x32\xf0\x02\n\x1fNativeSoftwareManagementService\x12Q\n\x12GetSoftwareVersion\x12\x0f.dmi.HardwareID\x1a*.dmi.GetSoftwareVersionInformationResponse\x12>\n\rDownloadImage\x12\x19.dmi.DownloadImageRequest\x1a\x10.dmi.ImageStatus0\x01\x12\x34\n\rActivateImage\x12\x0f.dmi.HardwareID\x1a\x10.dmi.ImageStatus0\x01\x12;\n\x14RevertToStandbyImage\x12\x0f.dmi.HardwareID\x1a\x10.dmi.ImageStatus0\x01\x12G\n\x1aUpdateStartupConfiguration\x12\x12.dmi.ConfigRequest\x1a\x13.dmi.ConfigResponse0\x01\x42;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3'
+  serialized_pb=b'\n\x1f\x64mi/sw_management_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\x1a\x12\x64mi/sw_image.proto\"u\n\x1aSoftwareVersionInformation\x12*\n\x0f\x61\x63tive_versions\x18\x01 \x03(\x0b\x32\x11.dmi.ImageVersion\x12+\n\x10standby_versions\x18\x02 \x03(\x0b\x32\x11.dmi.ImageVersion\"\xfe\x01\n%GetSoftwareVersionInformationResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x41\n\x06reason\x18\x02 \x01(\x0e\x32\x31.dmi.GetSoftwareVersionInformationResponse.Reason\x12-\n\x04info\x18\x03 \x01(\x0b\x32\x1f.dmi.SoftwareVersionInformation\"F\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\"a\n\x14\x44ownloadImageRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12)\n\nimage_info\x18\x02 \x01(\x0b\x32\x15.dmi.ImageInformation\"C\n\rConfigRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12\x12\n\nconfig_url\x18\x02 \x01(\t\"\xf4\x01\n\x0e\x43onfigResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12*\n\x06reason\x18\x02 \x01(\x0e\x32\x1a.dmi.ConfigResponse.Reason\"\x98\x01\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x19\n\x15\x45RROR_FETCHING_CONFIG\x10\x03\x12\x12\n\x0eINVALID_CONFIG\x10\x04\x12!\n\x1dOPERATION_ALREADY_IN_PROGRESS\x10\x05\":\n\x18StartupConfigInfoRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\"\xdc\x01\n\x19StartupConfigInfoResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x35\n\x06reason\x18\x02 \x01(\x0e\x32%.dmi.StartupConfigInfoResponse.Reason\x12\x12\n\nconfig_url\x18\x03 \x01(\t\x12\x0f\n\x07version\x18\x04 \x01(\t\"F\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x32\xce\x03\n\x1fNativeSoftwareManagementService\x12Q\n\x12GetSoftwareVersion\x12\x0f.dmi.HardwareID\x1a*.dmi.GetSoftwareVersionInformationResponse\x12>\n\rDownloadImage\x12\x19.dmi.DownloadImageRequest\x1a\x10.dmi.ImageStatus0\x01\x12\x34\n\rActivateImage\x12\x0f.dmi.HardwareID\x1a\x10.dmi.ImageStatus0\x01\x12;\n\x14RevertToStandbyImage\x12\x0f.dmi.HardwareID\x1a\x10.dmi.ImageStatus0\x01\x12G\n\x1aUpdateStartupConfiguration\x12\x12.dmi.ConfigRequest\x1a\x13.dmi.ConfigResponse0\x01\x12\\\n\x1bGetStartupConfigurationInfo\x12\x1d.dmi.StartupConfigInfoRequest\x1a\x1e.dmi.StartupConfigInfoResponseB;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3'
   ,
   dependencies=[dmi_dot_commons__pb2.DESCRIPTOR,dmi_dot_hw__pb2.DESCRIPTOR,dmi_dot_sw__image__pb2.DESCRIPTOR,])
 
@@ -103,6 +103,36 @@
 )
 _sym_db.RegisterEnumDescriptor(_CONFIGRESPONSE_REASON)
 
+_STARTUPCONFIGINFORESPONSE_REASON = _descriptor.EnumDescriptor(
+  name='Reason',
+  full_name='dmi.StartupConfigInfoResponse.Reason',
+  filename=None,
+  file=DESCRIPTOR,
+  create_key=_descriptor._internal_create_key,
+  values=[
+    _descriptor.EnumValueDescriptor(
+      name='UNDEFINED_REASON', index=0, number=0,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='UNKNOWN_DEVICE', index=1, number=1,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='INTERNAL_ERROR', index=2, number=2,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+  ],
+  containing_type=None,
+  serialized_options=None,
+  serialized_start=397,
+  serialized_end=467,
+)
+_sym_db.RegisterEnumDescriptor(_STARTUPCONFIGINFORESPONSE_REASON)
+
 
 _SOFTWAREVERSIONINFORMATION = _descriptor.Descriptor(
   name='SoftwareVersionInformation',
@@ -307,6 +337,92 @@
   serialized_end=882,
 )
 
+
+_STARTUPCONFIGINFOREQUEST = _descriptor.Descriptor(
+  name='StartupConfigInfoRequest',
+  full_name='dmi.StartupConfigInfoRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='device_uuid', full_name='dmi.StartupConfigInfoRequest.device_uuid', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=884,
+  serialized_end=942,
+)
+
+
+_STARTUPCONFIGINFORESPONSE = _descriptor.Descriptor(
+  name='StartupConfigInfoResponse',
+  full_name='dmi.StartupConfigInfoResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='status', full_name='dmi.StartupConfigInfoResponse.status', index=0,
+      number=1, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='reason', full_name='dmi.StartupConfigInfoResponse.reason', index=1,
+      number=2, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='config_url', full_name='dmi.StartupConfigInfoResponse.config_url', index=2,
+      number=3, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='version', full_name='dmi.StartupConfigInfoResponse.version', index=3,
+      number=4, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+    _STARTUPCONFIGINFORESPONSE_REASON,
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=945,
+  serialized_end=1165,
+)
+
 _SOFTWAREVERSIONINFORMATION.fields_by_name['active_versions'].message_type = dmi_dot_sw__image__pb2._IMAGEVERSION
 _SOFTWAREVERSIONINFORMATION.fields_by_name['standby_versions'].message_type = dmi_dot_sw__image__pb2._IMAGEVERSION
 _GETSOFTWAREVERSIONINFORMATIONRESPONSE.fields_by_name['status'].enum_type = dmi_dot_commons__pb2._STATUS
@@ -319,11 +435,17 @@
 _CONFIGRESPONSE.fields_by_name['status'].enum_type = dmi_dot_commons__pb2._STATUS
 _CONFIGRESPONSE.fields_by_name['reason'].enum_type = _CONFIGRESPONSE_REASON
 _CONFIGRESPONSE_REASON.containing_type = _CONFIGRESPONSE
+_STARTUPCONFIGINFOREQUEST.fields_by_name['device_uuid'].message_type = dmi_dot_hw__pb2._UUID
+_STARTUPCONFIGINFORESPONSE.fields_by_name['status'].enum_type = dmi_dot_commons__pb2._STATUS
+_STARTUPCONFIGINFORESPONSE.fields_by_name['reason'].enum_type = _STARTUPCONFIGINFORESPONSE_REASON
+_STARTUPCONFIGINFORESPONSE_REASON.containing_type = _STARTUPCONFIGINFORESPONSE
 DESCRIPTOR.message_types_by_name['SoftwareVersionInformation'] = _SOFTWAREVERSIONINFORMATION
 DESCRIPTOR.message_types_by_name['GetSoftwareVersionInformationResponse'] = _GETSOFTWAREVERSIONINFORMATIONRESPONSE
 DESCRIPTOR.message_types_by_name['DownloadImageRequest'] = _DOWNLOADIMAGEREQUEST
 DESCRIPTOR.message_types_by_name['ConfigRequest'] = _CONFIGREQUEST
 DESCRIPTOR.message_types_by_name['ConfigResponse'] = _CONFIGRESPONSE
+DESCRIPTOR.message_types_by_name['StartupConfigInfoRequest'] = _STARTUPCONFIGINFOREQUEST
+DESCRIPTOR.message_types_by_name['StartupConfigInfoResponse'] = _STARTUPCONFIGINFORESPONSE
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 SoftwareVersionInformation = _reflection.GeneratedProtocolMessageType('SoftwareVersionInformation', (_message.Message,), {
@@ -361,6 +483,20 @@
   })
 _sym_db.RegisterMessage(ConfigResponse)
 
+StartupConfigInfoRequest = _reflection.GeneratedProtocolMessageType('StartupConfigInfoRequest', (_message.Message,), {
+  'DESCRIPTOR' : _STARTUPCONFIGINFOREQUEST,
+  '__module__' : 'dmi.sw_management_service_pb2'
+  # @@protoc_insertion_point(class_scope:dmi.StartupConfigInfoRequest)
+  })
+_sym_db.RegisterMessage(StartupConfigInfoRequest)
+
+StartupConfigInfoResponse = _reflection.GeneratedProtocolMessageType('StartupConfigInfoResponse', (_message.Message,), {
+  'DESCRIPTOR' : _STARTUPCONFIGINFORESPONSE,
+  '__module__' : 'dmi.sw_management_service_pb2'
+  # @@protoc_insertion_point(class_scope:dmi.StartupConfigInfoResponse)
+  })
+_sym_db.RegisterMessage(StartupConfigInfoResponse)
+
 
 DESCRIPTOR._options = None
 
@@ -371,8 +507,8 @@
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=885,
-  serialized_end=1253,
+  serialized_start=1168,
+  serialized_end=1630,
   methods=[
   _descriptor.MethodDescriptor(
     name='GetSoftwareVersion',
@@ -424,6 +560,16 @@
     serialized_options=None,
     create_key=_descriptor._internal_create_key,
   ),
+  _descriptor.MethodDescriptor(
+    name='GetStartupConfigurationInfo',
+    full_name='dmi.NativeSoftwareManagementService.GetStartupConfigurationInfo',
+    index=5,
+    containing_service=None,
+    input_type=_STARTUPCONFIGINFOREQUEST,
+    output_type=_STARTUPCONFIGINFORESPONSE,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
 ])
 _sym_db.RegisterServiceDescriptor(_NATIVESOFTWAREMANAGEMENTSERVICE)
 
diff --git a/python/dmi/sw_management_service_pb2_grpc.py b/python/dmi/sw_management_service_pb2_grpc.py
index f8b076e..cf2398d 100644
--- a/python/dmi/sw_management_service_pb2_grpc.py
+++ b/python/dmi/sw_management_service_pb2_grpc.py
@@ -41,6 +41,11 @@
                 request_serializer=dmi_dot_sw__management__service__pb2.ConfigRequest.SerializeToString,
                 response_deserializer=dmi_dot_sw__management__service__pb2.ConfigResponse.FromString,
                 )
+        self.GetStartupConfigurationInfo = channel.unary_unary(
+                '/dmi.NativeSoftwareManagementService/GetStartupConfigurationInfo',
+                request_serializer=dmi_dot_sw__management__service__pb2.StartupConfigInfoRequest.SerializeToString,
+                response_deserializer=dmi_dot_sw__management__service__pb2.StartupConfigInfoResponse.FromString,
+                )
 
 
 class NativeSoftwareManagementServiceServicer(object):
@@ -84,6 +89,13 @@
         context.set_details('Method not implemented!')
         raise NotImplementedError('Method not implemented!')
 
+    def GetStartupConfigurationInfo(self, request, context):
+        """This API can be used to retrieve information about the current startup configuration that a device is using
+        """
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
 
 def add_NativeSoftwareManagementServiceServicer_to_server(servicer, server):
     rpc_method_handlers = {
@@ -112,6 +124,11 @@
                     request_deserializer=dmi_dot_sw__management__service__pb2.ConfigRequest.FromString,
                     response_serializer=dmi_dot_sw__management__service__pb2.ConfigResponse.SerializeToString,
             ),
+            'GetStartupConfigurationInfo': grpc.unary_unary_rpc_method_handler(
+                    servicer.GetStartupConfigurationInfo,
+                    request_deserializer=dmi_dot_sw__management__service__pb2.StartupConfigInfoRequest.FromString,
+                    response_serializer=dmi_dot_sw__management__service__pb2.StartupConfigInfoResponse.SerializeToString,
+            ),
     }
     generic_handler = grpc.method_handlers_generic_handler(
             'dmi.NativeSoftwareManagementService', rpc_method_handlers)
@@ -206,3 +223,20 @@
             dmi_dot_sw__management__service__pb2.ConfigResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+    @staticmethod
+    def GetStartupConfigurationInfo(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/dmi.NativeSoftwareManagementService/GetStartupConfigurationInfo',
+            dmi_dot_sw__management__service__pb2.StartupConfigInfoRequest.SerializeToString,
+            dmi_dot_sw__management__service__pb2.StartupConfigInfoResponse.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
