diff --git a/api/go/gosdn/networkelement/networkelement.pb.go b/api/go/gosdn/networkelement/networkelement.pb.go
index 60220e8f7e75534d8acbdcdd7ac1edc54f7aa1f5..1a75e9b8e15b103bb3585d604a167db1af64d244 100644
--- a/api/go/gosdn/networkelement/networkelement.pb.go
+++ b/api/go/gosdn/networkelement/networkelement.pb.go
@@ -8,11 +8,10 @@ package networkelement
 
 import (
 	conflict "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/conflict"
-	_ "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
 	southbound "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
 	transport "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
 	_ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options"
-	_ "github.com/openconfig/gnmi/proto/gnmi"
+	gnmi "github.com/openconfig/gnmi/proto/gnmi"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
@@ -77,20 +76,283 @@ func (Status) EnumDescriptor() ([]byte, []int) {
 	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{0}
 }
 
-type NetworkElement struct {
+type ChangeState int32
+
+const (
+	ChangeState_CHANGE_STATE_UNSPECIFIED  ChangeState = 0
+	ChangeState_CHANGE_STATE_PENDING      ChangeState = 1
+	ChangeState_CHANGE_STATE_COMMITTED    ChangeState = 2
+	ChangeState_CHANGE_STATE_CONFIRMED    ChangeState = 3
+	ChangeState_CHANGE_STATE_INCONSISTENT ChangeState = 4
+)
+
+// Enum value maps for ChangeState.
+var (
+	ChangeState_name = map[int32]string{
+		0: "CHANGE_STATE_UNSPECIFIED",
+		1: "CHANGE_STATE_PENDING",
+		2: "CHANGE_STATE_COMMITTED",
+		3: "CHANGE_STATE_CONFIRMED",
+		4: "CHANGE_STATE_INCONSISTENT",
+	}
+	ChangeState_value = map[string]int32{
+		"CHANGE_STATE_UNSPECIFIED":  0,
+		"CHANGE_STATE_PENDING":      1,
+		"CHANGE_STATE_COMMITTED":    2,
+		"CHANGE_STATE_CONFIRMED":    3,
+		"CHANGE_STATE_INCONSISTENT": 4,
+	}
+)
+
+func (x ChangeState) Enum() *ChangeState {
+	p := new(ChangeState)
+	*p = x
+	return p
+}
+
+func (x ChangeState) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ChangeState) Descriptor() protoreflect.EnumDescriptor {
+	return file_gosdn_networkelement_networkelement_proto_enumTypes[1].Descriptor()
+}
+
+func (ChangeState) Type() protoreflect.EnumType {
+	return &file_gosdn_networkelement_networkelement_proto_enumTypes[1]
+}
+
+func (x ChangeState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ChangeState.Descriptor instead.
+func (ChangeState) EnumDescriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{1}
+}
+
+type ApiOperation int32
+
+const (
+	ApiOperation_API_OPERATION_UNSPECIFIED ApiOperation = 0
+	ApiOperation_API_OPERATION_UPDATE      ApiOperation = 1
+	ApiOperation_API_OPERATION_REPLACE     ApiOperation = 2
+	ApiOperation_API_OPERATION_DELETE      ApiOperation = 3
+)
+
+// Enum value maps for ApiOperation.
+var (
+	ApiOperation_name = map[int32]string{
+		0: "API_OPERATION_UNSPECIFIED",
+		1: "API_OPERATION_UPDATE",
+		2: "API_OPERATION_REPLACE",
+		3: "API_OPERATION_DELETE",
+	}
+	ApiOperation_value = map[string]int32{
+		"API_OPERATION_UNSPECIFIED": 0,
+		"API_OPERATION_UPDATE":      1,
+		"API_OPERATION_REPLACE":     2,
+		"API_OPERATION_DELETE":      3,
+	}
+)
+
+func (x ApiOperation) Enum() *ApiOperation {
+	p := new(ApiOperation)
+	*p = x
+	return p
+}
+
+func (x ApiOperation) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ApiOperation) Descriptor() protoreflect.EnumDescriptor {
+	return file_gosdn_networkelement_networkelement_proto_enumTypes[2].Descriptor()
+}
+
+func (ApiOperation) Type() protoreflect.EnumType {
+	return &file_gosdn_networkelement_networkelement_proto_enumTypes[2]
+}
+
+func (x ApiOperation) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ApiOperation.Descriptor instead.
+func (ApiOperation) EnumDescriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{2}
+}
+
+type Operation int32
+
+const (
+	Operation_OPERATION_UNSPECIFIED Operation = 0
+	Operation_OPERATION_CREATE      Operation = 1
+	Operation_OPERATION_COMMIT      Operation = 2
+	Operation_OPERATION_CONFIRM     Operation = 3
+)
+
+// Enum value maps for Operation.
+var (
+	Operation_name = map[int32]string{
+		0: "OPERATION_UNSPECIFIED",
+		1: "OPERATION_CREATE",
+		2: "OPERATION_COMMIT",
+		3: "OPERATION_CONFIRM",
+	}
+	Operation_value = map[string]int32{
+		"OPERATION_UNSPECIFIED": 0,
+		"OPERATION_CREATE":      1,
+		"OPERATION_COMMIT":      2,
+		"OPERATION_CONFIRM":     3,
+	}
+)
+
+func (x Operation) Enum() *Operation {
+	p := new(Operation)
+	*p = x
+	return p
+}
+
+func (x Operation) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Operation) Descriptor() protoreflect.EnumDescriptor {
+	return file_gosdn_networkelement_networkelement_proto_enumTypes[3].Descriptor()
+}
+
+func (Operation) Type() protoreflect.EnumType {
+	return &file_gosdn_networkelement_networkelement_proto_enumTypes[3]
+}
+
+func (x Operation) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Operation.Descriptor instead.
+func (Operation) EnumDescriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{3}
+}
+
+type SubscriptionMode int32
+
+const (
+	SubscriptionMode_SUBSCRIPTION_MODE_UNSPECIFIED SubscriptionMode = 0
+	SubscriptionMode_SUBSCRIPTION_MODE_ONCE        SubscriptionMode = 1
+	SubscriptionMode_SUBSCRIPTION_MODE_STREAM      SubscriptionMode = 2
+	SubscriptionMode_SUBSCRIPTION_MODE_POLL        SubscriptionMode = 3
+)
+
+// Enum value maps for SubscriptionMode.
+var (
+	SubscriptionMode_name = map[int32]string{
+		0: "SUBSCRIPTION_MODE_UNSPECIFIED",
+		1: "SUBSCRIPTION_MODE_ONCE",
+		2: "SUBSCRIPTION_MODE_STREAM",
+		3: "SUBSCRIPTION_MODE_POLL",
+	}
+	SubscriptionMode_value = map[string]int32{
+		"SUBSCRIPTION_MODE_UNSPECIFIED": 0,
+		"SUBSCRIPTION_MODE_ONCE":        1,
+		"SUBSCRIPTION_MODE_STREAM":      2,
+		"SUBSCRIPTION_MODE_POLL":        3,
+	}
+)
+
+func (x SubscriptionMode) Enum() *SubscriptionMode {
+	p := new(SubscriptionMode)
+	*p = x
+	return p
+}
+
+func (x SubscriptionMode) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (SubscriptionMode) Descriptor() protoreflect.EnumDescriptor {
+	return file_gosdn_networkelement_networkelement_proto_enumTypes[4].Descriptor()
+}
+
+func (SubscriptionMode) Type() protoreflect.EnumType {
+	return &file_gosdn_networkelement_networkelement_proto_enumTypes[4]
+}
+
+func (x SubscriptionMode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SubscriptionMode.Descriptor instead.
+func (SubscriptionMode) EnumDescriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{4}
+}
+
+type StreamMode int32
+
+const (
+	StreamMode_STREAM_MODE_UNSPECIFIED    StreamMode = 0
+	StreamMode_STREAM_MODE_TARGET_DEFINED StreamMode = 1 // The target selects the relevant mode for each element.
+	StreamMode_STREAM_MODE_ON_CHANGE      StreamMode = 2 // The target sends an update on element value change.
+	StreamMode_STREAM_MODE_SAMPLE         StreamMode = 3 // The target samples values according to the interval.
+)
+
+// Enum value maps for StreamMode.
+var (
+	StreamMode_name = map[int32]string{
+		0: "STREAM_MODE_UNSPECIFIED",
+		1: "STREAM_MODE_TARGET_DEFINED",
+		2: "STREAM_MODE_ON_CHANGE",
+		3: "STREAM_MODE_SAMPLE",
+	}
+	StreamMode_value = map[string]int32{
+		"STREAM_MODE_UNSPECIFIED":    0,
+		"STREAM_MODE_TARGET_DEFINED": 1,
+		"STREAM_MODE_ON_CHANGE":      2,
+		"STREAM_MODE_SAMPLE":         3,
+	}
+)
+
+func (x StreamMode) Enum() *StreamMode {
+	p := new(StreamMode)
+	*p = x
+	return p
+}
+
+func (x StreamMode) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (StreamMode) Descriptor() protoreflect.EnumDescriptor {
+	return file_gosdn_networkelement_networkelement_proto_enumTypes[5].Descriptor()
+}
+
+func (StreamMode) Type() protoreflect.EnumType {
+	return &file_gosdn_networkelement_networkelement_proto_enumTypes[5]
+}
+
+func (x StreamMode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use StreamMode.Descriptor instead.
+func (StreamMode) EnumDescriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{5}
+}
+
+type ManagedNetworkElement struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Id               string             `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Name             string             `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-	Model            string             `protobuf:"bytes,3,opt,name=model,proto3" json:"model,omitempty"`
-	TransportAddress string             `protobuf:"bytes,4,opt,name=transport_address,json=transportAddress,proto3" json:"transport_address,omitempty"`
-	Metadata         *conflict.Metadata `protobuf:"bytes,5,opt,name=metadata,proto3" json:"metadata,omitempty"`
+	Id              string                          `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Name            string                          `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+	MneNotification []*gnmi.Notification            `protobuf:"bytes,3,rep,name=mne_notification,json=mneNotification,proto3" json:"mne_notification,omitempty"`
+	Sbi             *southbound.SouthboundInterface `protobuf:"bytes,4,opt,name=sbi,proto3" json:"sbi,omitempty"`
+	Metadata        *conflict.Metadata              `protobuf:"bytes,5,opt,name=metadata,proto3" json:"metadata,omitempty"`
 }
 
-func (x *NetworkElement) Reset() {
-	*x = NetworkElement{}
+func (x *ManagedNetworkElement) Reset() {
+	*x = ManagedNetworkElement{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[0]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -98,13 +360,13 @@ func (x *NetworkElement) Reset() {
 	}
 }
 
-func (x *NetworkElement) String() string {
+func (x *ManagedNetworkElement) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*NetworkElement) ProtoMessage() {}
+func (*ManagedNetworkElement) ProtoMessage() {}
 
-func (x *NetworkElement) ProtoReflect() protoreflect.Message {
+func (x *ManagedNetworkElement) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[0]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -116,59 +378,58 @@ func (x *NetworkElement) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use NetworkElement.ProtoReflect.Descriptor instead.
-func (*NetworkElement) Descriptor() ([]byte, []int) {
+// Deprecated: Use ManagedNetworkElement.ProtoReflect.Descriptor instead.
+func (*ManagedNetworkElement) Descriptor() ([]byte, []int) {
 	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{0}
 }
 
-func (x *NetworkElement) GetId() string {
+func (x *ManagedNetworkElement) GetId() string {
 	if x != nil {
 		return x.Id
 	}
 	return ""
 }
 
-func (x *NetworkElement) GetName() string {
+func (x *ManagedNetworkElement) GetName() string {
 	if x != nil {
 		return x.Name
 	}
 	return ""
 }
 
-func (x *NetworkElement) GetModel() string {
+func (x *ManagedNetworkElement) GetMneNotification() []*gnmi.Notification {
 	if x != nil {
-		return x.Model
+		return x.MneNotification
 	}
-	return ""
+	return nil
 }
 
-func (x *NetworkElement) GetTransportAddress() string {
+func (x *ManagedNetworkElement) GetSbi() *southbound.SouthboundInterface {
 	if x != nil {
-		return x.TransportAddress
+		return x.Sbi
 	}
-	return ""
+	return nil
 }
 
-func (x *NetworkElement) GetMetadata() *conflict.Metadata {
+func (x *ManagedNetworkElement) GetMetadata() *conflict.Metadata {
 	if x != nil {
 		return x.Metadata
 	}
 	return nil
 }
 
-type AddNetworkElementConfiguration struct {
+type FlattenedManagedNetworkElement struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Address            string                          `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
-	Sbi                *southbound.SouthboundInterface `protobuf:"bytes,2,opt,name=sbi,proto3" json:"sbi,omitempty"`
-	NetworkElementName string                          `protobuf:"bytes,3,opt,name=network_element_name,json=networkElementName,proto3" json:"network_element_name,omitempty"`
-	TransportOption    *transport.TransportOption      `protobuf:"bytes,4,opt,name=transport_option,json=transportOption,proto3" json:"transport_option,omitempty"`
+	Id   string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+	Sbi  string `protobuf:"bytes,3,opt,name=sbi,proto3" json:"sbi,omitempty"`
 }
 
-func (x *AddNetworkElementConfiguration) Reset() {
-	*x = AddNetworkElementConfiguration{}
+func (x *FlattenedManagedNetworkElement) Reset() {
+	*x = FlattenedManagedNetworkElement{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[1]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -176,13 +437,13 @@ func (x *AddNetworkElementConfiguration) Reset() {
 	}
 }
 
-func (x *AddNetworkElementConfiguration) String() string {
+func (x *FlattenedManagedNetworkElement) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*AddNetworkElementConfiguration) ProtoMessage() {}
+func (*FlattenedManagedNetworkElement) ProtoMessage() {}
 
-func (x *AddNetworkElementConfiguration) ProtoReflect() protoreflect.Message {
+func (x *FlattenedManagedNetworkElement) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[1]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -194,51 +455,45 @@ func (x *AddNetworkElementConfiguration) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use AddNetworkElementConfiguration.ProtoReflect.Descriptor instead.
-func (*AddNetworkElementConfiguration) Descriptor() ([]byte, []int) {
+// Deprecated: Use FlattenedManagedNetworkElement.ProtoReflect.Descriptor instead.
+func (*FlattenedManagedNetworkElement) Descriptor() ([]byte, []int) {
 	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{1}
 }
 
-func (x *AddNetworkElementConfiguration) GetAddress() string {
+func (x *FlattenedManagedNetworkElement) GetId() string {
 	if x != nil {
-		return x.Address
+		return x.Id
 	}
 	return ""
 }
 
-func (x *AddNetworkElementConfiguration) GetSbi() *southbound.SouthboundInterface {
-	if x != nil {
-		return x.Sbi
-	}
-	return nil
-}
-
-func (x *AddNetworkElementConfiguration) GetNetworkElementName() string {
+func (x *FlattenedManagedNetworkElement) GetName() string {
 	if x != nil {
-		return x.NetworkElementName
+		return x.Name
 	}
 	return ""
 }
 
-func (x *AddNetworkElementConfiguration) GetTransportOption() *transport.TransportOption {
+func (x *FlattenedManagedNetworkElement) GetSbi() string {
 	if x != nil {
-		return x.TransportOption
+		return x.Sbi
 	}
-	return nil
+	return ""
 }
 
-type AddNetworkElementRequest struct {
+// //TODO(PND): this is maybe only temporary, need to figure out how to include without cycle or duplication
+type PrincipalNetworkDomain struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp      int64                           `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
-	NetworkElement *AddNetworkElementConfiguration `protobuf:"bytes,2,opt,name=network_element,json=networkElement,proto3" json:"network_element,omitempty"`
-	Pid            string                          `protobuf:"bytes,3,opt,name=pid,proto3" json:"pid,omitempty"`
+	Id          string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Name        string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
 }
 
-func (x *AddNetworkElementRequest) Reset() {
-	*x = AddNetworkElementRequest{}
+func (x *PrincipalNetworkDomain) Reset() {
+	*x = PrincipalNetworkDomain{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[2]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -246,13 +501,13 @@ func (x *AddNetworkElementRequest) Reset() {
 	}
 }
 
-func (x *AddNetworkElementRequest) String() string {
+func (x *PrincipalNetworkDomain) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*AddNetworkElementRequest) ProtoMessage() {}
+func (*PrincipalNetworkDomain) ProtoMessage() {}
 
-func (x *AddNetworkElementRequest) ProtoReflect() protoreflect.Message {
+func (x *PrincipalNetworkDomain) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[2]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -264,44 +519,43 @@ func (x *AddNetworkElementRequest) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use AddNetworkElementRequest.ProtoReflect.Descriptor instead.
-func (*AddNetworkElementRequest) Descriptor() ([]byte, []int) {
+// Deprecated: Use PrincipalNetworkDomain.ProtoReflect.Descriptor instead.
+func (*PrincipalNetworkDomain) Descriptor() ([]byte, []int) {
 	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{2}
 }
 
-func (x *AddNetworkElementRequest) GetTimestamp() int64 {
+func (x *PrincipalNetworkDomain) GetId() string {
 	if x != nil {
-		return x.Timestamp
+		return x.Id
 	}
-	return 0
+	return ""
 }
 
-func (x *AddNetworkElementRequest) GetNetworkElement() *AddNetworkElementConfiguration {
+func (x *PrincipalNetworkDomain) GetName() string {
 	if x != nil {
-		return x.NetworkElement
+		return x.Name
 	}
-	return nil
+	return ""
 }
 
-func (x *AddNetworkElementRequest) GetPid() string {
+func (x *PrincipalNetworkDomain) GetDescription() string {
 	if x != nil {
-		return x.Pid
+		return x.Description
 	}
 	return ""
 }
 
-type AddNetworkElementResponse struct {
+type GetMneListRequest struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp        int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
-	Status           Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.networkelement.Status" json:"status,omitempty"`
-	NetworkElementId string `protobuf:"bytes,3,opt,name=network_element_id,json=networkElementId,proto3" json:"network_element_id,omitempty"`
+	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Pid       string `protobuf:"bytes,2,opt,name=pid,proto3" json:"pid,omitempty"`
 }
 
-func (x *AddNetworkElementResponse) Reset() {
-	*x = AddNetworkElementResponse{}
+func (x *GetMneListRequest) Reset() {
+	*x = GetMneListRequest{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[3]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -309,13 +563,13 @@ func (x *AddNetworkElementResponse) Reset() {
 	}
 }
 
-func (x *AddNetworkElementResponse) String() string {
+func (x *GetMneListRequest) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*AddNetworkElementResponse) ProtoMessage() {}
+func (*GetMneListRequest) ProtoMessage() {}
 
-func (x *AddNetworkElementResponse) ProtoReflect() protoreflect.Message {
+func (x *GetMneListRequest) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[3]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -327,43 +581,39 @@ func (x *AddNetworkElementResponse) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use AddNetworkElementResponse.ProtoReflect.Descriptor instead.
-func (*AddNetworkElementResponse) Descriptor() ([]byte, []int) {
+// Deprecated: Use GetMneListRequest.ProtoReflect.Descriptor instead.
+func (*GetMneListRequest) Descriptor() ([]byte, []int) {
 	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{3}
 }
 
-func (x *AddNetworkElementResponse) GetTimestamp() int64 {
+func (x *GetMneListRequest) GetTimestamp() int64 {
 	if x != nil {
 		return x.Timestamp
 	}
 	return 0
 }
 
-func (x *AddNetworkElementResponse) GetStatus() Status {
-	if x != nil {
-		return x.Status
-	}
-	return Status_STATUS_UNSPECIFIED
-}
-
-func (x *AddNetworkElementResponse) GetNetworkElementId() string {
+func (x *GetMneListRequest) GetPid() string {
 	if x != nil {
-		return x.NetworkElementId
+		return x.Pid
 	}
 	return ""
 }
 
-type GetNetworkElementRequest struct {
+type GetMneListResponse struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp        int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
-	NetworkElementId string `protobuf:"bytes,2,opt,name=network_element_id,json=networkElementId,proto3" json:"network_element_id,omitempty"`
+	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	// TODO: Check if this is really needed. Perhaps a reference to the PND's ID
+	// is also sufficient.
+	Pnd *PrincipalNetworkDomain  `protobuf:"bytes,2,opt,name=pnd,proto3" json:"pnd,omitempty"`
+	Mne []*ManagedNetworkElement `protobuf:"bytes,3,rep,name=mne,proto3" json:"mne,omitempty"`
 }
 
-func (x *GetNetworkElementRequest) Reset() {
-	*x = GetNetworkElementRequest{}
+func (x *GetMneListResponse) Reset() {
+	*x = GetMneListResponse{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[4]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -371,13 +621,13 @@ func (x *GetNetworkElementRequest) Reset() {
 	}
 }
 
-func (x *GetNetworkElementRequest) String() string {
+func (x *GetMneListResponse) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*GetNetworkElementRequest) ProtoMessage() {}
+func (*GetMneListResponse) ProtoMessage() {}
 
-func (x *GetNetworkElementRequest) ProtoReflect() protoreflect.Message {
+func (x *GetMneListResponse) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[4]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -389,37 +639,47 @@ func (x *GetNetworkElementRequest) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use GetNetworkElementRequest.ProtoReflect.Descriptor instead.
-func (*GetNetworkElementRequest) Descriptor() ([]byte, []int) {
+// Deprecated: Use GetMneListResponse.ProtoReflect.Descriptor instead.
+func (*GetMneListResponse) Descriptor() ([]byte, []int) {
 	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{4}
 }
 
-func (x *GetNetworkElementRequest) GetTimestamp() int64 {
+func (x *GetMneListResponse) GetTimestamp() int64 {
 	if x != nil {
 		return x.Timestamp
 	}
 	return 0
 }
 
-func (x *GetNetworkElementRequest) GetNetworkElementId() string {
+func (x *GetMneListResponse) GetPnd() *PrincipalNetworkDomain {
 	if x != nil {
-		return x.NetworkElementId
+		return x.Pnd
 	}
-	return ""
+	return nil
+}
+
+func (x *GetMneListResponse) GetMne() []*ManagedNetworkElement {
+	if x != nil {
+		return x.Mne
+	}
+	return nil
 }
 
-type GetNetworkElementResponse struct {
+//TODO(PND): add request here
+type GetFlattenedMneListResponse struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp      int64           `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
-	Status         Status          `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.networkelement.Status" json:"status,omitempty"`
-	NetworkElement *NetworkElement `protobuf:"bytes,3,opt,name=network_element,json=networkElement,proto3" json:"network_element,omitempty"`
+	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	// TODO: Check if this is really needed. Perhaps a reference to the PND's ID
+	// is also sufficient.
+	Pnd *PrincipalNetworkDomain           `protobuf:"bytes,2,opt,name=pnd,proto3" json:"pnd,omitempty"`
+	Mne []*FlattenedManagedNetworkElement `protobuf:"bytes,3,rep,name=mne,proto3" json:"mne,omitempty"`
 }
 
-func (x *GetNetworkElementResponse) Reset() {
-	*x = GetNetworkElementResponse{}
+func (x *GetFlattenedMneListResponse) Reset() {
+	*x = GetFlattenedMneListResponse{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[5]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -427,13 +687,13 @@ func (x *GetNetworkElementResponse) Reset() {
 	}
 }
 
-func (x *GetNetworkElementResponse) String() string {
+func (x *GetFlattenedMneListResponse) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*GetNetworkElementResponse) ProtoMessage() {}
+func (*GetFlattenedMneListResponse) ProtoMessage() {}
 
-func (x *GetNetworkElementResponse) ProtoReflect() protoreflect.Message {
+func (x *GetFlattenedMneListResponse) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[5]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -445,42 +705,44 @@ func (x *GetNetworkElementResponse) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use GetNetworkElementResponse.ProtoReflect.Descriptor instead.
-func (*GetNetworkElementResponse) Descriptor() ([]byte, []int) {
+// Deprecated: Use GetFlattenedMneListResponse.ProtoReflect.Descriptor instead.
+func (*GetFlattenedMneListResponse) Descriptor() ([]byte, []int) {
 	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{5}
 }
 
-func (x *GetNetworkElementResponse) GetTimestamp() int64 {
+func (x *GetFlattenedMneListResponse) GetTimestamp() int64 {
 	if x != nil {
 		return x.Timestamp
 	}
 	return 0
 }
 
-func (x *GetNetworkElementResponse) GetStatus() Status {
+func (x *GetFlattenedMneListResponse) GetPnd() *PrincipalNetworkDomain {
 	if x != nil {
-		return x.Status
+		return x.Pnd
 	}
-	return Status_STATUS_UNSPECIFIED
+	return nil
 }
 
-func (x *GetNetworkElementResponse) GetNetworkElement() *NetworkElement {
+func (x *GetFlattenedMneListResponse) GetMne() []*FlattenedManagedNetworkElement {
 	if x != nil {
-		return x.NetworkElement
+		return x.Mne
 	}
 	return nil
 }
 
-type GetAllNetworkElementRequest struct {
+type GetMneRequest struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Mneid     string `protobuf:"bytes,2,opt,name=mneid,proto3" json:"mneid,omitempty"`
+	Pid       string `protobuf:"bytes,3,opt,name=pid,proto3" json:"pid,omitempty"`
 }
 
-func (x *GetAllNetworkElementRequest) Reset() {
-	*x = GetAllNetworkElementRequest{}
+func (x *GetMneRequest) Reset() {
+	*x = GetMneRequest{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[6]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -488,13 +750,13 @@ func (x *GetAllNetworkElementRequest) Reset() {
 	}
 }
 
-func (x *GetAllNetworkElementRequest) String() string {
+func (x *GetMneRequest) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*GetAllNetworkElementRequest) ProtoMessage() {}
+func (*GetMneRequest) ProtoMessage() {}
 
-func (x *GetAllNetworkElementRequest) ProtoReflect() protoreflect.Message {
+func (x *GetMneRequest) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[6]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -506,30 +768,46 @@ func (x *GetAllNetworkElementRequest) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use GetAllNetworkElementRequest.ProtoReflect.Descriptor instead.
-func (*GetAllNetworkElementRequest) Descriptor() ([]byte, []int) {
+// Deprecated: Use GetMneRequest.ProtoReflect.Descriptor instead.
+func (*GetMneRequest) Descriptor() ([]byte, []int) {
 	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{6}
 }
 
-func (x *GetAllNetworkElementRequest) GetTimestamp() int64 {
+func (x *GetMneRequest) GetTimestamp() int64 {
 	if x != nil {
 		return x.Timestamp
 	}
 	return 0
 }
 
-type GetAllNetworkElementResponse struct {
+func (x *GetMneRequest) GetMneid() string {
+	if x != nil {
+		return x.Mneid
+	}
+	return ""
+}
+
+func (x *GetMneRequest) GetPid() string {
+	if x != nil {
+		return x.Pid
+	}
+	return ""
+}
+
+type GetMneResponse struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp      int64             `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
-	Status         Status            `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.networkelement.Status" json:"status,omitempty"`
-	NetworkElement []*NetworkElement `protobuf:"bytes,3,rep,name=network_element,json=networkElement,proto3" json:"network_element,omitempty"`
+	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	// TODO: Check if this is really needed. Perhaps a reference to the PND's ID
+	// is also sufficient.
+	Pnd *PrincipalNetworkDomain `protobuf:"bytes,2,opt,name=pnd,proto3" json:"pnd,omitempty"`
+	Mne *ManagedNetworkElement  `protobuf:"bytes,3,opt,name=mne,proto3" json:"mne,omitempty"`
 }
 
-func (x *GetAllNetworkElementResponse) Reset() {
-	*x = GetAllNetworkElementResponse{}
+func (x *GetMneResponse) Reset() {
+	*x = GetMneResponse{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[7]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -537,13 +815,13 @@ func (x *GetAllNetworkElementResponse) Reset() {
 	}
 }
 
-func (x *GetAllNetworkElementResponse) String() string {
+func (x *GetMneResponse) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*GetAllNetworkElementResponse) ProtoMessage() {}
+func (*GetMneResponse) ProtoMessage() {}
 
-func (x *GetAllNetworkElementResponse) ProtoReflect() protoreflect.Message {
+func (x *GetMneResponse) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[7]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -555,43 +833,45 @@ func (x *GetAllNetworkElementResponse) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use GetAllNetworkElementResponse.ProtoReflect.Descriptor instead.
-func (*GetAllNetworkElementResponse) Descriptor() ([]byte, []int) {
+// Deprecated: Use GetMneResponse.ProtoReflect.Descriptor instead.
+func (*GetMneResponse) Descriptor() ([]byte, []int) {
 	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{7}
 }
 
-func (x *GetAllNetworkElementResponse) GetTimestamp() int64 {
+func (x *GetMneResponse) GetTimestamp() int64 {
 	if x != nil {
 		return x.Timestamp
 	}
 	return 0
 }
 
-func (x *GetAllNetworkElementResponse) GetStatus() Status {
+func (x *GetMneResponse) GetPnd() *PrincipalNetworkDomain {
 	if x != nil {
-		return x.Status
+		return x.Pnd
 	}
-	return Status_STATUS_UNSPECIFIED
+	return nil
 }
 
-func (x *GetAllNetworkElementResponse) GetNetworkElement() []*NetworkElement {
+func (x *GetMneResponse) GetMne() *ManagedNetworkElement {
 	if x != nil {
-		return x.NetworkElement
+		return x.Mne
 	}
 	return nil
 }
 
-type UpdateNetworkElementRequest struct {
+type SetMne struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp      int64           `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
-	NetworkElement *NetworkElement `protobuf:"bytes,2,opt,name=network_element,json=networkElement,proto3" json:"network_element,omitempty"`
+	Address         string                          `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
+	Sbi             *southbound.SouthboundInterface `protobuf:"bytes,2,opt,name=sbi,proto3" json:"sbi,omitempty"`
+	MneName         string                          `protobuf:"bytes,3,opt,name=mne_name,json=mneName,proto3" json:"mne_name,omitempty"`
+	TransportOption *transport.TransportOption      `protobuf:"bytes,4,opt,name=transport_option,json=transportOption,proto3" json:"transport_option,omitempty"`
 }
 
-func (x *UpdateNetworkElementRequest) Reset() {
-	*x = UpdateNetworkElementRequest{}
+func (x *SetMne) Reset() {
+	*x = SetMne{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[8]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -599,13 +879,13 @@ func (x *UpdateNetworkElementRequest) Reset() {
 	}
 }
 
-func (x *UpdateNetworkElementRequest) String() string {
+func (x *SetMne) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*UpdateNetworkElementRequest) ProtoMessage() {}
+func (*SetMne) ProtoMessage() {}
 
-func (x *UpdateNetworkElementRequest) ProtoReflect() protoreflect.Message {
+func (x *SetMne) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[8]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -617,36 +897,51 @@ func (x *UpdateNetworkElementRequest) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use UpdateNetworkElementRequest.ProtoReflect.Descriptor instead.
-func (*UpdateNetworkElementRequest) Descriptor() ([]byte, []int) {
+// Deprecated: Use SetMne.ProtoReflect.Descriptor instead.
+func (*SetMne) Descriptor() ([]byte, []int) {
 	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{8}
 }
 
-func (x *UpdateNetworkElementRequest) GetTimestamp() int64 {
+func (x *SetMne) GetAddress() string {
 	if x != nil {
-		return x.Timestamp
+		return x.Address
 	}
-	return 0
+	return ""
+}
+
+func (x *SetMne) GetSbi() *southbound.SouthboundInterface {
+	if x != nil {
+		return x.Sbi
+	}
+	return nil
+}
+
+func (x *SetMne) GetMneName() string {
+	if x != nil {
+		return x.MneName
+	}
+	return ""
 }
 
-func (x *UpdateNetworkElementRequest) GetNetworkElement() *NetworkElement {
+func (x *SetMne) GetTransportOption() *transport.TransportOption {
 	if x != nil {
-		return x.NetworkElement
+		return x.TransportOption
 	}
 	return nil
 }
 
-type UpdateNetworkElementResponse struct {
+type SetMneListRequest struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
-	Status    Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.networkelement.Status" json:"status,omitempty"`
+	Timestamp int64     `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Mne       []*SetMne `protobuf:"bytes,2,rep,name=mne,proto3" json:"mne,omitempty"`
+	Pid       string    `protobuf:"bytes,3,opt,name=pid,proto3" json:"pid,omitempty"`
 }
 
-func (x *UpdateNetworkElementResponse) Reset() {
-	*x = UpdateNetworkElementResponse{}
+func (x *SetMneListRequest) Reset() {
+	*x = SetMneListRequest{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[9]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -654,13 +949,13 @@ func (x *UpdateNetworkElementResponse) Reset() {
 	}
 }
 
-func (x *UpdateNetworkElementResponse) String() string {
+func (x *SetMneListRequest) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*UpdateNetworkElementResponse) ProtoMessage() {}
+func (*SetMneListRequest) ProtoMessage() {}
 
-func (x *UpdateNetworkElementResponse) ProtoReflect() protoreflect.Message {
+func (x *SetMneListRequest) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[9]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -672,36 +967,44 @@ func (x *UpdateNetworkElementResponse) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use UpdateNetworkElementResponse.ProtoReflect.Descriptor instead.
-func (*UpdateNetworkElementResponse) Descriptor() ([]byte, []int) {
+// Deprecated: Use SetMneListRequest.ProtoReflect.Descriptor instead.
+func (*SetMneListRequest) Descriptor() ([]byte, []int) {
 	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{9}
 }
 
-func (x *UpdateNetworkElementResponse) GetTimestamp() int64 {
+func (x *SetMneListRequest) GetTimestamp() int64 {
 	if x != nil {
 		return x.Timestamp
 	}
 	return 0
 }
 
-func (x *UpdateNetworkElementResponse) GetStatus() Status {
+func (x *SetMneListRequest) GetMne() []*SetMne {
 	if x != nil {
-		return x.Status
+		return x.Mne
 	}
-	return Status_STATUS_UNSPECIFIED
+	return nil
+}
+
+func (x *SetMneListRequest) GetPid() string {
+	if x != nil {
+		return x.Pid
+	}
+	return ""
 }
 
-type DeleteNetworkElementRequest struct {
+type SetMneListResponse struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp        int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
-	NetworkElementId string `protobuf:"bytes,2,opt,name=network_element_id,json=networkElementId,proto3" json:"network_element_id,omitempty"`
+	Timestamp int64          `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Status    Status         `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.networkelement.Status" json:"status,omitempty"`
+	Responses []*SetResponse `protobuf:"bytes,3,rep,name=responses,proto3" json:"responses,omitempty"`
 }
 
-func (x *DeleteNetworkElementRequest) Reset() {
-	*x = DeleteNetworkElementRequest{}
+func (x *SetMneListResponse) Reset() {
+	*x = SetMneListResponse{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[10]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -709,13 +1012,13 @@ func (x *DeleteNetworkElementRequest) Reset() {
 	}
 }
 
-func (x *DeleteNetworkElementRequest) String() string {
+func (x *SetMneListResponse) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*DeleteNetworkElementRequest) ProtoMessage() {}
+func (*SetMneListResponse) ProtoMessage() {}
 
-func (x *DeleteNetworkElementRequest) ProtoReflect() protoreflect.Message {
+func (x *SetMneListResponse) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[10]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -727,36 +1030,45 @@ func (x *DeleteNetworkElementRequest) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use DeleteNetworkElementRequest.ProtoReflect.Descriptor instead.
-func (*DeleteNetworkElementRequest) Descriptor() ([]byte, []int) {
+// Deprecated: Use SetMneListResponse.ProtoReflect.Descriptor instead.
+func (*SetMneListResponse) Descriptor() ([]byte, []int) {
 	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{10}
 }
 
-func (x *DeleteNetworkElementRequest) GetTimestamp() int64 {
+func (x *SetMneListResponse) GetTimestamp() int64 {
 	if x != nil {
 		return x.Timestamp
 	}
 	return 0
 }
 
-func (x *DeleteNetworkElementRequest) GetNetworkElementId() string {
+func (x *SetMneListResponse) GetStatus() Status {
 	if x != nil {
-		return x.NetworkElementId
+		return x.Status
 	}
-	return ""
+	return Status_STATUS_UNSPECIFIED
 }
 
-type DeleteNetworkElementResponse struct {
+func (x *SetMneListResponse) GetResponses() []*SetResponse {
+	if x != nil {
+		return x.Responses
+	}
+	return nil
+}
+
+type GetPathRequest struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
-	Status    Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.networkelement.Status" json:"status,omitempty"`
+	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Mneid     string `protobuf:"bytes,2,opt,name=mneid,proto3" json:"mneid,omitempty"`
+	Path      string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
+	Pid       string `protobuf:"bytes,4,opt,name=pid,proto3" json:"pid,omitempty"`
 }
 
-func (x *DeleteNetworkElementResponse) Reset() {
-	*x = DeleteNetworkElementResponse{}
+func (x *GetPathRequest) Reset() {
+	*x = GetPathRequest{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[11]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -764,13 +1076,13 @@ func (x *DeleteNetworkElementResponse) Reset() {
 	}
 }
 
-func (x *DeleteNetworkElementResponse) String() string {
+func (x *GetPathRequest) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*DeleteNetworkElementResponse) ProtoMessage() {}
+func (*GetPathRequest) ProtoMessage() {}
 
-func (x *DeleteNetworkElementResponse) ProtoReflect() protoreflect.Message {
+func (x *GetPathRequest) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[11]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -782,207 +1094,1671 @@ func (x *DeleteNetworkElementResponse) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use DeleteNetworkElementResponse.ProtoReflect.Descriptor instead.
-func (*DeleteNetworkElementResponse) Descriptor() ([]byte, []int) {
+// Deprecated: Use GetPathRequest.ProtoReflect.Descriptor instead.
+func (*GetPathRequest) Descriptor() ([]byte, []int) {
 	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{11}
 }
 
-func (x *DeleteNetworkElementResponse) GetTimestamp() int64 {
+func (x *GetPathRequest) GetTimestamp() int64 {
 	if x != nil {
 		return x.Timestamp
 	}
 	return 0
 }
 
-func (x *DeleteNetworkElementResponse) GetStatus() Status {
+func (x *GetPathRequest) GetMneid() string {
 	if x != nil {
-		return x.Status
+		return x.Mneid
 	}
-	return Status_STATUS_UNSPECIFIED
+	return ""
 }
 
-var File_gosdn_networkelement_networkelement_proto protoreflect.FileDescriptor
+func (x *GetPathRequest) GetPath() string {
+	if x != nil {
+		return x.Path
+	}
+	return ""
+}
 
-var file_gosdn_networkelement_networkelement_proto_rawDesc = []byte{
-	0x0a, 0x29, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65,
-	0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c,
-	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x67, 0x6f, 0x73,
-	0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
-	0x74, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e,
-	0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
-	0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70,
-	0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
-	0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x1a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70,
-	0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x6c,
-	0x69, 0x63, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x1a, 0x13, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x70, 0x6e, 0x64, 0x2f, 0x70, 0x6e,
-	0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x74,
-	0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f,
-	0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f,
-	0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x73, 0x6f, 0x75, 0x74, 0x68,
-	0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xad, 0x01, 0x0a, 0x0e,
-	0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e,
-	0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12,
-	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
-	0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e,
-	0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x64,
-	0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x34, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
-	0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
-	0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
-	0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xf2, 0x01, 0x0a, 0x1e,
-	0x41, 0x64, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
-	0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18,
-	0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x37, 0x0a, 0x03, 0x73, 0x62, 0x69, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f,
-	0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f,
-	0x75, 0x6e, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x03, 0x73, 0x62,
-	0x69, 0x12, 0x30, 0x0a, 0x14, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x65, 0x6c, 0x65,
-	0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x12, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4e,
-	0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74,
-	0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e,
-	0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52,
-	0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x22, 0xa9, 0x01, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45,
-	0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a,
-	0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x5d, 0x0a, 0x0f, 0x6e,
-	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74,
-	0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x4e,
-	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e,
-	0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6e, 0x65, 0x74, 0x77,
-	0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69,
-	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x9d, 0x01, 0x0a,
-	0x19, 0x41, 0x64, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65,
-	0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69,
-	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
-	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74,
-	0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e,
-	0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
-	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c,
-	0x0a, 0x12, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
-	0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6e, 0x65, 0x74, 0x77,
-	0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x66, 0x0a, 0x18,
-	0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
-	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
-	0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d,
-	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
-	0x6b, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65,
-	0x6e, 0x74, 0x49, 0x64, 0x22, 0xbe, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77,
-	0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
-	0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
-	0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
-	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06,
-	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4d, 0x0a, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
-	0x6b, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x24, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65,
-	0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c,
-	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c,
-	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x3b, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x4e,
-	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
-	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
-	0x6d, 0x70, 0x22, 0xc1, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x65, 0x74,
-	0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
+func (x *GetPathRequest) GetPid() string {
+	if x != nil {
+		return x.Pid
+	}
+	return ""
+}
+
+type GetPathResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	// TODO: Check if this is really needed. Perhaps a reference to the PND's ID
+	// is also sufficient.
+	Pnd             *PrincipalNetworkDomain `protobuf:"bytes,2,opt,name=pnd,proto3" json:"pnd,omitempty"`
+	MneNotification []*gnmi.Notification    `protobuf:"bytes,3,rep,name=mne_notification,json=mneNotification,proto3" json:"mne_notification,omitempty"`
+}
+
+func (x *GetPathResponse) Reset() {
+	*x = GetPathResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetPathResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetPathResponse) ProtoMessage() {}
+
+func (x *GetPathResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[12]
+	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 GetPathResponse.ProtoReflect.Descriptor instead.
+func (*GetPathResponse) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *GetPathResponse) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *GetPathResponse) GetPnd() *PrincipalNetworkDomain {
+	if x != nil {
+		return x.Pnd
+	}
+	return nil
+}
+
+func (x *GetPathResponse) GetMneNotification() []*gnmi.Notification {
+	if x != nil {
+		return x.MneNotification
+	}
+	return nil
+}
+
+type SetResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Id        string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
+	Status    Status `protobuf:"varint,3,opt,name=status,proto3,enum=gosdn.networkelement.Status" json:"status,omitempty"`
+}
+
+func (x *SetResponse) Reset() {
+	*x = SetResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[13]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SetResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SetResponse) ProtoMessage() {}
+
+func (x *SetResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[13]
+	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 SetResponse.ProtoReflect.Descriptor instead.
+func (*SetResponse) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *SetResponse) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *SetResponse) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *SetResponse) GetStatus() Status {
+	if x != nil {
+		return x.Status
+	}
+	return Status_STATUS_UNSPECIFIED
+}
+
+type SetPathListRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Timestamp     int64            `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	ChangeRequest []*ChangeRequest `protobuf:"bytes,2,rep,name=change_request,json=changeRequest,proto3" json:"change_request,omitempty"`
+	Pid           string           `protobuf:"bytes,3,opt,name=pid,proto3" json:"pid,omitempty"`
+}
+
+func (x *SetPathListRequest) Reset() {
+	*x = SetPathListRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[14]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SetPathListRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SetPathListRequest) ProtoMessage() {}
+
+func (x *SetPathListRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[14]
+	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 SetPathListRequest.ProtoReflect.Descriptor instead.
+func (*SetPathListRequest) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *SetPathListRequest) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *SetPathListRequest) GetChangeRequest() []*ChangeRequest {
+	if x != nil {
+		return x.ChangeRequest
+	}
+	return nil
+}
+
+func (x *SetPathListRequest) GetPid() string {
+	if x != nil {
+		return x.Pid
+	}
+	return ""
+}
+
+type SetPathListResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Timestamp int64          `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Status    Status         `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.networkelement.Status" json:"status,omitempty"`
+	Responses []*SetResponse `protobuf:"bytes,3,rep,name=responses,proto3" json:"responses,omitempty"`
+}
+
+func (x *SetPathListResponse) Reset() {
+	*x = SetPathListResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[15]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SetPathListResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SetPathListResponse) ProtoMessage() {}
+
+func (x *SetPathListResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[15]
+	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 SetPathListResponse.ProtoReflect.Descriptor instead.
+func (*SetPathListResponse) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *SetPathListResponse) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *SetPathListResponse) GetStatus() Status {
+	if x != nil {
+		return x.Status
+	}
+	return Status_STATUS_UNSPECIFIED
+}
+
+func (x *SetPathListResponse) GetResponses() []*SetResponse {
+	if x != nil {
+		return x.Responses
+	}
+	return nil
+}
+
+type DeleteMneRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Pid       string `protobuf:"bytes,2,opt,name=pid,proto3" json:"pid,omitempty"`
+	Mneid     string `protobuf:"bytes,3,opt,name=mneid,proto3" json:"mneid,omitempty"`
+}
+
+func (x *DeleteMneRequest) Reset() {
+	*x = DeleteMneRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[16]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *DeleteMneRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteMneRequest) ProtoMessage() {}
+
+func (x *DeleteMneRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[16]
+	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 DeleteMneRequest.ProtoReflect.Descriptor instead.
+func (*DeleteMneRequest) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{16}
+}
+
+func (x *DeleteMneRequest) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *DeleteMneRequest) GetPid() string {
+	if x != nil {
+		return x.Pid
+	}
+	return ""
+}
+
+func (x *DeleteMneRequest) GetMneid() string {
+	if x != nil {
+		return x.Mneid
+	}
+	return ""
+}
+
+type DeleteMneResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Status    Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.networkelement.Status" json:"status,omitempty"`
+}
+
+func (x *DeleteMneResponse) Reset() {
+	*x = DeleteMneResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[17]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *DeleteMneResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteMneResponse) ProtoMessage() {}
+
+func (x *DeleteMneResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[17]
+	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 DeleteMneResponse.ProtoReflect.Descriptor instead.
+func (*DeleteMneResponse) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{17}
+}
+
+func (x *DeleteMneResponse) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *DeleteMneResponse) GetStatus() Status {
+	if x != nil {
+		return x.Status
+	}
+	return Status_STATUS_UNSPECIFIED
+}
+
+type Change struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Id    string             `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Age   int64              `protobuf:"varint,2,opt,name=age,proto3" json:"age,omitempty"`
+	State ChangeState        `protobuf:"varint,3,opt,name=state,proto3,enum=gosdn.networkelement.ChangeState" json:"state,omitempty"`
+	Diff  *gnmi.Notification `protobuf:"bytes,4,opt,name=diff,proto3" json:"diff,omitempty"`
+}
+
+func (x *Change) Reset() {
+	*x = Change{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[18]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Change) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Change) ProtoMessage() {}
+
+func (x *Change) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[18]
+	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 Change.ProtoReflect.Descriptor instead.
+func (*Change) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{18}
+}
+
+func (x *Change) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *Change) GetAge() int64 {
+	if x != nil {
+		return x.Age
+	}
+	return 0
+}
+
+func (x *Change) GetState() ChangeState {
+	if x != nil {
+		return x.State
+	}
+	return ChangeState_CHANGE_STATE_UNSPECIFIED
+}
+
+func (x *Change) GetDiff() *gnmi.Notification {
+	if x != nil {
+		return x.Diff
+	}
+	return nil
+}
+
+//TODO: rename
+type ChangeRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Mneid string       `protobuf:"bytes,1,opt,name=mneid,proto3" json:"mneid,omitempty"`
+	Path  string       `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
+	Value string       `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
+	ApiOp ApiOperation `protobuf:"varint,4,opt,name=api_op,json=apiOp,proto3,enum=gosdn.networkelement.ApiOperation" json:"api_op,omitempty"`
+}
+
+func (x *ChangeRequest) Reset() {
+	*x = ChangeRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[19]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ChangeRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChangeRequest) ProtoMessage() {}
+
+func (x *ChangeRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[19]
+	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 ChangeRequest.ProtoReflect.Descriptor instead.
+func (*ChangeRequest) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{19}
+}
+
+func (x *ChangeRequest) GetMneid() string {
+	if x != nil {
+		return x.Mneid
+	}
+	return ""
+}
+
+func (x *ChangeRequest) GetPath() string {
+	if x != nil {
+		return x.Path
+	}
+	return ""
+}
+
+func (x *ChangeRequest) GetValue() string {
+	if x != nil {
+		return x.Value
+	}
+	return ""
+}
+
+func (x *ChangeRequest) GetApiOp() ApiOperation {
+	if x != nil {
+		return x.ApiOp
+	}
+	return ApiOperation_API_OPERATION_UNSPECIFIED
+}
+
+type SetChange struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Cuid string    `protobuf:"bytes,1,opt,name=cuid,proto3" json:"cuid,omitempty"`
+	Op   Operation `protobuf:"varint,2,opt,name=op,proto3,enum=gosdn.networkelement.Operation" json:"op,omitempty"`
+}
+
+func (x *SetChange) Reset() {
+	*x = SetChange{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[20]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SetChange) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SetChange) ProtoMessage() {}
+
+func (x *SetChange) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[20]
+	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 SetChange.ProtoReflect.Descriptor instead.
+func (*SetChange) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{20}
+}
+
+func (x *SetChange) GetCuid() string {
+	if x != nil {
+		return x.Cuid
+	}
+	return ""
+}
+
+func (x *SetChange) GetOp() Operation {
+	if x != nil {
+		return x.Op
+	}
+	return Operation_OPERATION_UNSPECIFIED
+}
+
+type GetChangeListRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Pid       string `protobuf:"bytes,2,opt,name=pid,proto3" json:"pid,omitempty"`
+}
+
+func (x *GetChangeListRequest) Reset() {
+	*x = GetChangeListRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[21]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetChangeListRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetChangeListRequest) ProtoMessage() {}
+
+func (x *GetChangeListRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[21]
+	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 GetChangeListRequest.ProtoReflect.Descriptor instead.
+func (*GetChangeListRequest) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{21}
+}
+
+func (x *GetChangeListRequest) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *GetChangeListRequest) GetPid() string {
+	if x != nil {
+		return x.Pid
+	}
+	return ""
+}
+
+type GetChangeListResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	// TODO: Check if this is really needed. Perhaps a reference to the PND's ID
+	// is also sufficient.
+	Pnd    *PrincipalNetworkDomain `protobuf:"bytes,2,opt,name=pnd,proto3" json:"pnd,omitempty"`
+	Change []*Change               `protobuf:"bytes,3,rep,name=change,proto3" json:"change,omitempty"`
+}
+
+func (x *GetChangeListResponse) Reset() {
+	*x = GetChangeListResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[22]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetChangeListResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetChangeListResponse) ProtoMessage() {}
+
+func (x *GetChangeListResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[22]
+	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 GetChangeListResponse.ProtoReflect.Descriptor instead.
+func (*GetChangeListResponse) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{22}
+}
+
+func (x *GetChangeListResponse) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *GetChangeListResponse) GetPnd() *PrincipalNetworkDomain {
+	if x != nil {
+		return x.Pnd
+	}
+	return nil
+}
+
+func (x *GetChangeListResponse) GetChange() []*Change {
+	if x != nil {
+		return x.Change
+	}
+	return nil
+}
+
+type GetChangeRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Timestamp int64    `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Cuid      []string `protobuf:"bytes,2,rep,name=cuid,proto3" json:"cuid,omitempty"`
+	Pid       string   `protobuf:"bytes,3,opt,name=pid,proto3" json:"pid,omitempty"`
+}
+
+func (x *GetChangeRequest) Reset() {
+	*x = GetChangeRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[23]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetChangeRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetChangeRequest) ProtoMessage() {}
+
+func (x *GetChangeRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[23]
+	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 GetChangeRequest.ProtoReflect.Descriptor instead.
+func (*GetChangeRequest) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{23}
+}
+
+func (x *GetChangeRequest) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *GetChangeRequest) GetCuid() []string {
+	if x != nil {
+		return x.Cuid
+	}
+	return nil
+}
+
+func (x *GetChangeRequest) GetPid() string {
+	if x != nil {
+		return x.Pid
+	}
+	return ""
+}
+
+type GetChangeResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	// TODO: Check if this is really needed. Perhaps a reference to the PND's ID
+	// is also sufficient.
+	Pnd    *PrincipalNetworkDomain `protobuf:"bytes,2,opt,name=pnd,proto3" json:"pnd,omitempty"`
+	Change []*Change               `protobuf:"bytes,3,rep,name=change,proto3" json:"change,omitempty"`
+}
+
+func (x *GetChangeResponse) Reset() {
+	*x = GetChangeResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[24]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetChangeResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetChangeResponse) ProtoMessage() {}
+
+func (x *GetChangeResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[24]
+	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 GetChangeResponse.ProtoReflect.Descriptor instead.
+func (*GetChangeResponse) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{24}
+}
+
+func (x *GetChangeResponse) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *GetChangeResponse) GetPnd() *PrincipalNetworkDomain {
+	if x != nil {
+		return x.Pnd
+	}
+	return nil
+}
+
+func (x *GetChangeResponse) GetChange() []*Change {
+	if x != nil {
+		return x.Change
+	}
+	return nil
+}
+
+type SetChangeListRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Timestamp int64        `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Change    []*SetChange `protobuf:"bytes,2,rep,name=change,proto3" json:"change,omitempty"`
+	Pid       string       `protobuf:"bytes,3,opt,name=pid,proto3" json:"pid,omitempty"`
+}
+
+func (x *SetChangeListRequest) Reset() {
+	*x = SetChangeListRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[25]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SetChangeListRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SetChangeListRequest) ProtoMessage() {}
+
+func (x *SetChangeListRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[25]
+	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 SetChangeListRequest.ProtoReflect.Descriptor instead.
+func (*SetChangeListRequest) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{25}
+}
+
+func (x *SetChangeListRequest) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *SetChangeListRequest) GetChange() []*SetChange {
+	if x != nil {
+		return x.Change
+	}
+	return nil
+}
+
+func (x *SetChangeListRequest) GetPid() string {
+	if x != nil {
+		return x.Pid
+	}
+	return ""
+}
+
+type SetChangeListResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Timestamp int64          `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Status    Status         `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.networkelement.Status" json:"status,omitempty"`
+	Responses []*SetResponse `protobuf:"bytes,3,rep,name=responses,proto3" json:"responses,omitempty"`
+}
+
+func (x *SetChangeListResponse) Reset() {
+	*x = SetChangeListResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[26]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SetChangeListResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SetChangeListResponse) ProtoMessage() {}
+
+func (x *SetChangeListResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[26]
+	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 SetChangeListResponse.ProtoReflect.Descriptor instead.
+func (*SetChangeListResponse) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{26}
+}
+
+func (x *SetChangeListResponse) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *SetChangeListResponse) GetStatus() Status {
+	if x != nil {
+		return x.Status
+	}
+	return Status_STATUS_UNSPECIFIED
+}
+
+func (x *SetChangeListResponse) GetResponses() []*SetResponse {
+	if x != nil {
+		return x.Responses
+	}
+	return nil
+}
+
+// The mode determines how the target should trigger updates to be sent.
+// Reference: gNMI Specification Section 3.5.1.2
+type SubscriptionList struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Subscription []*Subscription  `protobuf:"bytes,1,rep,name=subscription,proto3" json:"subscription,omitempty"`
+	Mode         SubscriptionMode `protobuf:"varint,2,opt,name=mode,proto3,enum=gosdn.networkelement.SubscriptionMode" json:"mode,omitempty"`
+}
+
+func (x *SubscriptionList) Reset() {
+	*x = SubscriptionList{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[27]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SubscriptionList) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SubscriptionList) ProtoMessage() {}
+
+func (x *SubscriptionList) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[27]
+	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 SubscriptionList.ProtoReflect.Descriptor instead.
+func (*SubscriptionList) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{27}
+}
+
+func (x *SubscriptionList) GetSubscription() []*Subscription {
+	if x != nil {
+		return x.Subscription
+	}
+	return nil
+}
+
+func (x *SubscriptionList) GetMode() SubscriptionMode {
+	if x != nil {
+		return x.Mode
+	}
+	return SubscriptionMode_SUBSCRIPTION_MODE_UNSPECIFIED
+}
+
+type Subscription struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Path           string     `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
+	StreamMode     StreamMode `protobuf:"varint,2,opt,name=stream_mode,json=streamMode,proto3,enum=gosdn.networkelement.StreamMode" json:"stream_mode,omitempty"`
+	SampleInterval uint64     `protobuf:"varint,3,opt,name=sample_interval,json=sampleInterval,proto3" json:"sample_interval,omitempty"` // time in ns between samples in SAMPLE mode.
+}
+
+func (x *Subscription) Reset() {
+	*x = Subscription{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[28]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Subscription) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Subscription) ProtoMessage() {}
+
+func (x *Subscription) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[28]
+	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 Subscription.ProtoReflect.Descriptor instead.
+func (*Subscription) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{28}
+}
+
+func (x *Subscription) GetPath() string {
+	if x != nil {
+		return x.Path
+	}
+	return ""
+}
+
+func (x *Subscription) GetStreamMode() StreamMode {
+	if x != nil {
+		return x.StreamMode
+	}
+	return StreamMode_STREAM_MODE_UNSPECIFIED
+}
+
+func (x *Subscription) GetSampleInterval() uint64 {
+	if x != nil {
+		return x.SampleInterval
+	}
+	return 0
+}
+
+type SubscribePathRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Timestamp int64             `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Mneid     string            `protobuf:"bytes,2,opt,name=mneid,proto3" json:"mneid,omitempty"`
+	Pid       string            `protobuf:"bytes,3,opt,name=pid,proto3" json:"pid,omitempty"`
+	Sublist   *SubscriptionList `protobuf:"bytes,4,opt,name=sublist,proto3" json:"sublist,omitempty"`
+}
+
+func (x *SubscribePathRequest) Reset() {
+	*x = SubscribePathRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[29]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SubscribePathRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SubscribePathRequest) ProtoMessage() {}
+
+func (x *SubscribePathRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[29]
+	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 SubscribePathRequest.ProtoReflect.Descriptor instead.
+func (*SubscribePathRequest) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{29}
+}
+
+func (x *SubscribePathRequest) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *SubscribePathRequest) GetMneid() string {
+	if x != nil {
+		return x.Mneid
+	}
+	return ""
+}
+
+func (x *SubscribePathRequest) GetPid() string {
+	if x != nil {
+		return x.Pid
+	}
+	return ""
+}
+
+func (x *SubscribePathRequest) GetSublist() *SubscriptionList {
+	if x != nil {
+		return x.Sublist
+	}
+	return nil
+}
+
+type SubscribePathResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Timestamp       int64                `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Status          Status               `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.networkelement.Status" json:"status,omitempty"`
+	MneNotification []*gnmi.Notification `protobuf:"bytes,3,rep,name=mne_notification,json=mneNotification,proto3" json:"mne_notification,omitempty"`
+}
+
+func (x *SubscribePathResponse) Reset() {
+	*x = SubscribePathResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[30]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SubscribePathResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SubscribePathResponse) ProtoMessage() {}
+
+func (x *SubscribePathResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[30]
+	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 SubscribePathResponse.ProtoReflect.Descriptor instead.
+func (*SubscribePathResponse) Descriptor() ([]byte, []int) {
+	return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{30}
+}
+
+func (x *SubscribePathResponse) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *SubscribePathResponse) GetStatus() Status {
+	if x != nil {
+		return x.Status
+	}
+	return Status_STATUS_UNSPECIFIED
+}
+
+func (x *SubscribePathResponse) GetMneNotification() []*gnmi.Notification {
+	if x != nil {
+		return x.MneNotification
+	}
+	return nil
+}
+
+var File_gosdn_networkelement_networkelement_proto protoreflect.FileDescriptor
+
+var file_gosdn_networkelement_networkelement_proto_rawDesc = []byte{
+	0x0a, 0x29, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65,
+	0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c,
+	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x67, 0x6f, 0x73,
+	0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
+	0x74, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e,
+	0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
+	0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+	0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70,
+	0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
+	0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x1a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70,
+	0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x6c,
+	0x69, 0x63, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70,
+	0x6f, 0x72, 0x74, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x73, 0x6f, 0x75, 0x74, 0x68,
+	0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe9, 0x01, 0x0a, 0x15, 0x4d, 0x61, 0x6e, 0x61, 0x67,
+	0x65, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+	0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
+	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x10, 0x6d, 0x6e, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x69,
+	0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12,
+	0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x6e, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x03, 0x73, 0x62, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x25, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f,
+	0x75, 0x6e, 0x64, 0x2e, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e,
+	0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x03, 0x73, 0x62, 0x69, 0x12, 0x34, 0x0a, 0x08,
+	0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
+	0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x2e,
+	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
+	0x74, 0x61, 0x22, 0x56, 0x0a, 0x1e, 0x46, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x65, 0x64, 0x4d,
+	0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65,
+	0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x62, 0x69, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x62, 0x69, 0x22, 0x5e, 0x0a, 0x16, 0x50, 0x72,
+	0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f,
+	0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63,
+	0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64,
+	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x43, 0x0a, 0x11, 0x47, 0x65,
+	0x74, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+	0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a,
+	0x03, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22,
+	0xb1, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
+	0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
+	0x74, 0x61, 0x6d, 0x70, 0x12, 0x3e, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+	0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70,
+	0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52,
+	0x03, 0x70, 0x6e, 0x64, 0x12, 0x3d, 0x0a, 0x03, 0x6d, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+	0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64,
+	0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x03,
+	0x6d, 0x6e, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x74, 0x74,
+	0x65, 0x6e, 0x65, 0x64, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
 	0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
 	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
-	0x70, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0e, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
-	0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
-	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4d, 0x0a, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f,
-	0x72, 0x6b, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x24, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
-	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45,
-	0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45,
-	0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x8a, 0x01, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74,
-	0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
-	0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
-	0x74, 0x61, 0x6d, 0x70, 0x12, 0x4d, 0x0a, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f,
-	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65,
-	0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d,
-	0x65, 0x6e, 0x74, 0x52, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d,
-	0x65, 0x6e, 0x74, 0x22, 0x72, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x74,
-	0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x70, 0x12, 0x3e, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c,
+	0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c,
+	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e,
+	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e,
+	0x64, 0x12, 0x46, 0x0a, 0x03, 0x6d, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34,
+	0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c,
+	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x46, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x65, 0x64, 0x4d,
+	0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65,
+	0x6d, 0x65, 0x6e, 0x74, 0x52, 0x03, 0x6d, 0x6e, 0x65, 0x22, 0x55, 0x0a, 0x0d, 0x47, 0x65, 0x74,
+	0x4d, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6e, 0x65, 0x69,
+	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x10,
+	0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64,
+	0x22, 0xad, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+	0x70, 0x12, 0x3e, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c,
+	0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c,
+	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e,
+	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e,
+	0x64, 0x12, 0x3d, 0x0a, 0x03, 0x6d, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b,
+	0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c,
+	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x4e, 0x65, 0x74,
+	0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x03, 0x6d, 0x6e, 0x65,
+	0x22, 0xc3, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61,
+	0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64,
+	0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x37, 0x0a, 0x03, 0x73, 0x62, 0x69, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75, 0x74, 0x68,
+	0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64,
+	0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x03, 0x73, 0x62, 0x69, 0x12, 0x19,
+	0x0a, 0x08, 0x6d, 0x6e, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x07, 0x6d, 0x6e, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x10, 0x74, 0x72, 0x61,
+	0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e,
+	0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74,
+	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x73, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x4d, 0x6e, 0x65,
+	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
+	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2e, 0x0a, 0x03, 0x6d, 0x6e, 0x65,
+	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e,
+	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65,
+	0x74, 0x4d, 0x6e, 0x65, 0x52, 0x03, 0x6d, 0x6e, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0xa9, 0x01, 0x0a, 0x12,
+	0x53, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+	0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
+	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06,
+	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64,
+	0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+	0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, 0x6a, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x61,
+	0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d,
+	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x12, 0x0a,
+	0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74,
+	0x68, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+	0x70, 0x69, 0x64, 0x22, 0xae, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
+	0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65,
+	0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3e, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f,
+	0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69,
+	0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e,
+	0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x3d, 0x0a, 0x10, 0x6d, 0x6e, 0x65, 0x5f, 0x6e, 0x6f, 0x74,
+	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x12, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x6e, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x22, 0x71, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
 	0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
 	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
-	0x70, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+	0x64, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
 	0x0e, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
 	0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
-	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x69, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74,
-	0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
-	0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
-	0x74, 0x61, 0x6d, 0x70, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f,
-	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
-	0x49, 0x64, 0x22, 0x72, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x65, 0x74, 0x77,
-	0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x50,
+	0x61, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c,
+	0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4a, 0x0a, 0x0e,
+	0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74,
+	0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e,
+	0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x67,
+	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0xaa, 0x01, 0x0a, 0x13, 0x53,
+	0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
 	0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
 	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
 	0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
 	0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
 	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06,
-	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2a, 0x41, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
-	0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
-	0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x54, 0x41, 0x54,
-	0x55, 0x53, 0x5f, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x55,
-	0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x32, 0xcd, 0x04, 0x0a, 0x15, 0x4e, 0x65,
-	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76,
-	0x69, 0x63, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x03, 0x41, 0x64, 0x64, 0x12, 0x2e, 0x2e, 0x67, 0x6f,
-	0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65,
-	0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65,
-	0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f,
+	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64,
+	0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+	0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, 0x58, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74,
+	0x65, 0x4d, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
+	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d,
+	0x6e, 0x65, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69,
+	0x64, 0x22, 0x67, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6e, 0x65, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
+	0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
+	0x74, 0x61, 0x6d, 0x70, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74,
+	0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x8b, 0x01, 0x0a, 0x06, 0x43,
+	0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x03, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e,
+	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68,
+	0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
+	0x12, 0x26, 0x0a, 0x04, 0x64, 0x69, 0x66, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
+	0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x52, 0x04, 0x64, 0x69, 0x66, 0x66, 0x22, 0x8a, 0x01, 0x0a, 0x0d, 0x43, 0x68, 0x61,
+	0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6e,
+	0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64,
+	0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+	0x70, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x61, 0x70,
+	0x69, 0x5f, 0x6f, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x73,
+	0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
+	0x74, 0x2e, 0x41, 0x70, 0x69, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05,
+	0x61, 0x70, 0x69, 0x4f, 0x70, 0x22, 0x50, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e,
+	0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x04, 0x63, 0x75, 0x69, 0x64, 0x12, 0x2f, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f,
+	0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x52, 0x02, 0x6f, 0x70, 0x22, 0x46, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x68,
+	0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+	0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a,
+	0x03, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22,
+	0xab, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73,
+	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d,
+	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3e, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74,
+	0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x69, 0x6e,
+	0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61,
+	0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67,
+	0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
+	0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43,
+	0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x56, 0x0a,
+	0x10, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
+	0x12, 0x0a, 0x04, 0x63, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x63,
+	0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0xa7, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61,
+	0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
+	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3e, 0x0a, 0x03, 0x70, 0x6e, 0x64,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e,
+	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72,
+	0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f,
+	0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x68, 0x61,
+	0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64,
+	0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+	0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22,
+	0x7f, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
+	0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65,
+	0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x37, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18,
+	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65,
+	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74,
+	0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10,
+	0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64,
+	0x22, 0xac, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69,
+	0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e,
+	0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
+	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3f,
+	0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+	0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22,
+	0x96, 0x01, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x4c, 0x69, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x73,
+	0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
+	0x74, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c,
+	0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x04,
+	0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x73,
+	0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
+	0x74, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f,
+	0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x0c, 0x53, 0x75, 0x62,
+	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74,
+	0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x41, 0x0a,
+	0x0b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f,
+	0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
+	0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x65,
+	0x12, 0x27, 0x0a, 0x0f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72,
+	0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x61, 0x6d, 0x70, 0x6c,
+	0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x9e, 0x01, 0x0a, 0x14, 0x53, 0x75,
+	0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+	0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6c,
+	0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x73, 0x64,
+	0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+	0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73,
+	0x74, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x74, 0x22, 0xaa, 0x01, 0x0a, 0x15, 0x53,
+	0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f,
+	0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+	0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x10, 0x6d, 0x6e, 0x65, 0x5f,
+	0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69,
+	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x6e, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66,
+	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x41, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50,
+	0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x54, 0x41,
+	0x54, 0x55, 0x53, 0x5f, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54,
+	0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x2a, 0x9c, 0x01, 0x0a, 0x0b, 0x43,
+	0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48,
+	0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
+	0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x48, 0x41, 0x4e,
+	0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47,
+	0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41,
+	0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1a,
+	0x0a, 0x16, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43,
+	0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48,
+	0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4e,
+	0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x04, 0x2a, 0x7c, 0x0a, 0x0c, 0x41, 0x70, 0x69,
+	0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x50, 0x49,
+	0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
+	0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x49, 0x5f,
+	0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45,
+	0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54,
+	0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x02, 0x12, 0x18, 0x0a,
+	0x14, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44,
+	0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x03, 0x2a, 0x69, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f,
+	0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
+	0x14, 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45,
+	0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49,
+	0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4f,
+	0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d,
+	0x10, 0x03, 0x2a, 0x8b, 0x01, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x55, 0x42, 0x53, 0x43,
+	0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53,
+	0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x55,
+	0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f,
+	0x4f, 0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52,
+	0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x45,
+	0x41, 0x4d, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50,
+	0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x4c, 0x10, 0x03,
+	0x2a, 0x7c, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1b,
+	0x0a, 0x17, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e,
+	0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x53,
+	0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45,
+	0x54, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x53,
+	0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x4e, 0x5f, 0x43, 0x48,
+	0x41, 0x4e, 0x47, 0x45, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d,
+	0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x03, 0x32, 0x8e,
+	0x0b, 0x0a, 0x15, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
+	0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5f, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4d,
+	0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e,
+	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65,
+	0x74, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x28, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65,
+	0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73,
+	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x13, 0x47, 0x65,
+	0x74, 0x46, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x65, 0x64, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73,
+	0x74, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+	0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x4c,
+	0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x73,
+	0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
+	0x74, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x65, 0x64, 0x4d, 0x6e,
+	0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82,
+	0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69,
+	0x64, 0x7d, 0x2f, 0x6d, 0x6e, 0x65, 0x73, 0x12, 0x74, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x4d, 0x6e,
+	0x65, 0x12, 0x23, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+	0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e,
+	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65,
+	0x74, 0x4d, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3,
+	0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64,
+	0x7d, 0x2f, 0x6d, 0x6e, 0x65, 0x2f, 0x7b, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x7d, 0x12, 0x7c, 0x0a,
+	0x0a, 0x53, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, 0x2e, 0x67, 0x6f,
 	0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65,
-	0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65,
-	0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3,
-	0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
-	0x6b, 0x2d, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
-	0x12, 0x80, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e,
+	0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74,
+	0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x4d,
+	0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b,
+	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x70, 0x6e, 0x64, 0x73,
+	0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6e, 0x65, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x07,
+	0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
+	0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47,
+	0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e,
+	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65,
+	0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x70,
+	0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6e, 0x65, 0x73, 0x2f, 0x7b,
+	0x6d, 0x6e, 0x65, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x2f, 0x7b, 0x70, 0x61,
+	0x74, 0x68, 0x7d, 0x12, 0x85, 0x01, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x4c,
+	0x69, 0x73, 0x74, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77,
+	0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61,
+	0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e,
+	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65,
+	0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b,
+	0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d,
+	0x2f, 0x6d, 0x6e, 0x65, 0x73, 0x2f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x7e, 0x0a, 0x09, 0x44,
+	0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6e, 0x65, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e,
 	0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
-	0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
-	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e,
+	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x1a, 0x27, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
+	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6e,
+	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+	0x1a, 0x2a, 0x18, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x6d,
+	0x6e, 0x65, 0x73, 0x2f, 0x7b, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a, 0x0d,
+	0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x2e,
+	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65,
+	0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69,
+	0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x6f, 0x73, 0x64,
+	0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+	0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13,
+	0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e,
+	0x67, 0x65, 0x73, 0x12, 0x80, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67,
+	0x65, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+	0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e,
+	0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x6f, 0x73, 0x64,
+	0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+	0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x70, 0x6e, 0x64,
+	0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f,
+	0x7b, 0x63, 0x75, 0x69, 0x64, 0x7d, 0x12, 0x88, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x43, 0x68,
+	0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e,
 	0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
-	0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
-	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02,
-	0x12, 0x12, 0x10, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2d, 0x65, 0x6c, 0x65, 0x6d,
-	0x65, 0x6e, 0x74, 0x12, 0x8d, 0x01, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x12, 0x31,
-	0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c,
-	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x65, 0x74, 0x77,
-	0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
-	0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x4e,
-	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f,
-	0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2d, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f,
-	0x61, 0x6c, 0x6c, 0x12, 0x93, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x31,
+	0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74,
+	0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x43,
+	0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x70,
+	0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
+	0x73, 0x12, 0x6c, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x61,
+	0x74, 0x68, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f,
+	0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,
+	0x69, 0x62, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b,
 	0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c,
-	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x74, 0x77,
-	0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
-	0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e,
-	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a,
-	0x22, 0x17, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2d, 0x65, 0x6c, 0x65, 0x6d, 0x65,
-	0x6e, 0x74, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x3a, 0x5a, 0x38, 0x63, 0x6f, 0x64,
-	0x65, 0x2e, 0x66, 0x62, 0x69, 0x2e, 0x68, 0x2d, 0x64, 0x61, 0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61,
-	0x6e, 0x65, 0x74, 0x2f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f,
-	0x2f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c,
-	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50,
+	0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x42,
+	0x3a, 0x5a, 0x38, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x66, 0x62, 0x69, 0x2e, 0x68, 0x2d, 0x64, 0x61,
+	0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f,
+	0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x6e, 0x65, 0x74,
+	0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x33,
 }
 
 var (
@@ -997,52 +2773,117 @@ func file_gosdn_networkelement_networkelement_proto_rawDescGZIP() []byte {
 	return file_gosdn_networkelement_networkelement_proto_rawDescData
 }
 
-var file_gosdn_networkelement_networkelement_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_gosdn_networkelement_networkelement_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
+var file_gosdn_networkelement_networkelement_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
+var file_gosdn_networkelement_networkelement_proto_msgTypes = make([]protoimpl.MessageInfo, 31)
 var file_gosdn_networkelement_networkelement_proto_goTypes = []interface{}{
 	(Status)(0),                            // 0: gosdn.networkelement.Status
-	(*NetworkElement)(nil),                 // 1: gosdn.networkelement.NetworkElement
-	(*AddNetworkElementConfiguration)(nil), // 2: gosdn.networkelement.AddNetworkElementConfiguration
-	(*AddNetworkElementRequest)(nil),       // 3: gosdn.networkelement.AddNetworkElementRequest
-	(*AddNetworkElementResponse)(nil),      // 4: gosdn.networkelement.AddNetworkElementResponse
-	(*GetNetworkElementRequest)(nil),       // 5: gosdn.networkelement.GetNetworkElementRequest
-	(*GetNetworkElementResponse)(nil),      // 6: gosdn.networkelement.GetNetworkElementResponse
-	(*GetAllNetworkElementRequest)(nil),    // 7: gosdn.networkelement.GetAllNetworkElementRequest
-	(*GetAllNetworkElementResponse)(nil),   // 8: gosdn.networkelement.GetAllNetworkElementResponse
-	(*UpdateNetworkElementRequest)(nil),    // 9: gosdn.networkelement.UpdateNetworkElementRequest
-	(*UpdateNetworkElementResponse)(nil),   // 10: gosdn.networkelement.UpdateNetworkElementResponse
-	(*DeleteNetworkElementRequest)(nil),    // 11: gosdn.networkelement.DeleteNetworkElementRequest
-	(*DeleteNetworkElementResponse)(nil),   // 12: gosdn.networkelement.DeleteNetworkElementResponse
-	(*conflict.Metadata)(nil),              // 13: gosdn.conflict.Metadata
-	(*southbound.SouthboundInterface)(nil), // 14: gosdn.southbound.SouthboundInterface
-	(*transport.TransportOption)(nil),      // 15: gosdn.transport.TransportOption
+	(ChangeState)(0),                       // 1: gosdn.networkelement.ChangeState
+	(ApiOperation)(0),                      // 2: gosdn.networkelement.ApiOperation
+	(Operation)(0),                         // 3: gosdn.networkelement.Operation
+	(SubscriptionMode)(0),                  // 4: gosdn.networkelement.SubscriptionMode
+	(StreamMode)(0),                        // 5: gosdn.networkelement.StreamMode
+	(*ManagedNetworkElement)(nil),          // 6: gosdn.networkelement.ManagedNetworkElement
+	(*FlattenedManagedNetworkElement)(nil), // 7: gosdn.networkelement.FlattenedManagedNetworkElement
+	(*PrincipalNetworkDomain)(nil),         // 8: gosdn.networkelement.PrincipalNetworkDomain
+	(*GetMneListRequest)(nil),              // 9: gosdn.networkelement.GetMneListRequest
+	(*GetMneListResponse)(nil),             // 10: gosdn.networkelement.GetMneListResponse
+	(*GetFlattenedMneListResponse)(nil),    // 11: gosdn.networkelement.GetFlattenedMneListResponse
+	(*GetMneRequest)(nil),                  // 12: gosdn.networkelement.GetMneRequest
+	(*GetMneResponse)(nil),                 // 13: gosdn.networkelement.GetMneResponse
+	(*SetMne)(nil),                         // 14: gosdn.networkelement.SetMne
+	(*SetMneListRequest)(nil),              // 15: gosdn.networkelement.SetMneListRequest
+	(*SetMneListResponse)(nil),             // 16: gosdn.networkelement.SetMneListResponse
+	(*GetPathRequest)(nil),                 // 17: gosdn.networkelement.GetPathRequest
+	(*GetPathResponse)(nil),                // 18: gosdn.networkelement.GetPathResponse
+	(*SetResponse)(nil),                    // 19: gosdn.networkelement.SetResponse
+	(*SetPathListRequest)(nil),             // 20: gosdn.networkelement.SetPathListRequest
+	(*SetPathListResponse)(nil),            // 21: gosdn.networkelement.SetPathListResponse
+	(*DeleteMneRequest)(nil),               // 22: gosdn.networkelement.DeleteMneRequest
+	(*DeleteMneResponse)(nil),              // 23: gosdn.networkelement.DeleteMneResponse
+	(*Change)(nil),                         // 24: gosdn.networkelement.Change
+	(*ChangeRequest)(nil),                  // 25: gosdn.networkelement.ChangeRequest
+	(*SetChange)(nil),                      // 26: gosdn.networkelement.SetChange
+	(*GetChangeListRequest)(nil),           // 27: gosdn.networkelement.GetChangeListRequest
+	(*GetChangeListResponse)(nil),          // 28: gosdn.networkelement.GetChangeListResponse
+	(*GetChangeRequest)(nil),               // 29: gosdn.networkelement.GetChangeRequest
+	(*GetChangeResponse)(nil),              // 30: gosdn.networkelement.GetChangeResponse
+	(*SetChangeListRequest)(nil),           // 31: gosdn.networkelement.SetChangeListRequest
+	(*SetChangeListResponse)(nil),          // 32: gosdn.networkelement.SetChangeListResponse
+	(*SubscriptionList)(nil),               // 33: gosdn.networkelement.SubscriptionList
+	(*Subscription)(nil),                   // 34: gosdn.networkelement.Subscription
+	(*SubscribePathRequest)(nil),           // 35: gosdn.networkelement.SubscribePathRequest
+	(*SubscribePathResponse)(nil),          // 36: gosdn.networkelement.SubscribePathResponse
+	(*gnmi.Notification)(nil),              // 37: gnmi.Notification
+	(*southbound.SouthboundInterface)(nil), // 38: gosdn.southbound.SouthboundInterface
+	(*conflict.Metadata)(nil),              // 39: gosdn.conflict.Metadata
+	(*transport.TransportOption)(nil),      // 40: gosdn.transport.TransportOption
 }
 var file_gosdn_networkelement_networkelement_proto_depIdxs = []int32{
-	13, // 0: gosdn.networkelement.NetworkElement.metadata:type_name -> gosdn.conflict.Metadata
-	14, // 1: gosdn.networkelement.AddNetworkElementConfiguration.sbi:type_name -> gosdn.southbound.SouthboundInterface
-	15, // 2: gosdn.networkelement.AddNetworkElementConfiguration.transport_option:type_name -> gosdn.transport.TransportOption
-	2,  // 3: gosdn.networkelement.AddNetworkElementRequest.network_element:type_name -> gosdn.networkelement.AddNetworkElementConfiguration
-	0,  // 4: gosdn.networkelement.AddNetworkElementResponse.status:type_name -> gosdn.networkelement.Status
-	0,  // 5: gosdn.networkelement.GetNetworkElementResponse.status:type_name -> gosdn.networkelement.Status
-	1,  // 6: gosdn.networkelement.GetNetworkElementResponse.network_element:type_name -> gosdn.networkelement.NetworkElement
-	0,  // 7: gosdn.networkelement.GetAllNetworkElementResponse.status:type_name -> gosdn.networkelement.Status
-	1,  // 8: gosdn.networkelement.GetAllNetworkElementResponse.network_element:type_name -> gosdn.networkelement.NetworkElement
-	1,  // 9: gosdn.networkelement.UpdateNetworkElementRequest.network_element:type_name -> gosdn.networkelement.NetworkElement
-	0,  // 10: gosdn.networkelement.UpdateNetworkElementResponse.status:type_name -> gosdn.networkelement.Status
-	0,  // 11: gosdn.networkelement.DeleteNetworkElementResponse.status:type_name -> gosdn.networkelement.Status
-	3,  // 12: gosdn.networkelement.NetworkElementService.Add:input_type -> gosdn.networkelement.AddNetworkElementRequest
-	5,  // 13: gosdn.networkelement.NetworkElementService.Get:input_type -> gosdn.networkelement.GetNetworkElementRequest
-	7,  // 14: gosdn.networkelement.NetworkElementService.GetAll:input_type -> gosdn.networkelement.GetAllNetworkElementRequest
-	9,  // 15: gosdn.networkelement.NetworkElementService.Update:input_type -> gosdn.networkelement.UpdateNetworkElementRequest
-	4,  // 16: gosdn.networkelement.NetworkElementService.Add:output_type -> gosdn.networkelement.AddNetworkElementResponse
-	6,  // 17: gosdn.networkelement.NetworkElementService.Get:output_type -> gosdn.networkelement.GetNetworkElementResponse
-	8,  // 18: gosdn.networkelement.NetworkElementService.GetAll:output_type -> gosdn.networkelement.GetAllNetworkElementResponse
-	10, // 19: gosdn.networkelement.NetworkElementService.Update:output_type -> gosdn.networkelement.UpdateNetworkElementResponse
-	16, // [16:20] is the sub-list for method output_type
-	12, // [12:16] is the sub-list for method input_type
-	12, // [12:12] is the sub-list for extension type_name
-	12, // [12:12] is the sub-list for extension extendee
-	0,  // [0:12] is the sub-list for field type_name
+	37, // 0: gosdn.networkelement.ManagedNetworkElement.mne_notification:type_name -> gnmi.Notification
+	38, // 1: gosdn.networkelement.ManagedNetworkElement.sbi:type_name -> gosdn.southbound.SouthboundInterface
+	39, // 2: gosdn.networkelement.ManagedNetworkElement.metadata:type_name -> gosdn.conflict.Metadata
+	8,  // 3: gosdn.networkelement.GetMneListResponse.pnd:type_name -> gosdn.networkelement.PrincipalNetworkDomain
+	6,  // 4: gosdn.networkelement.GetMneListResponse.mne:type_name -> gosdn.networkelement.ManagedNetworkElement
+	8,  // 5: gosdn.networkelement.GetFlattenedMneListResponse.pnd:type_name -> gosdn.networkelement.PrincipalNetworkDomain
+	7,  // 6: gosdn.networkelement.GetFlattenedMneListResponse.mne:type_name -> gosdn.networkelement.FlattenedManagedNetworkElement
+	8,  // 7: gosdn.networkelement.GetMneResponse.pnd:type_name -> gosdn.networkelement.PrincipalNetworkDomain
+	6,  // 8: gosdn.networkelement.GetMneResponse.mne:type_name -> gosdn.networkelement.ManagedNetworkElement
+	38, // 9: gosdn.networkelement.SetMne.sbi:type_name -> gosdn.southbound.SouthboundInterface
+	40, // 10: gosdn.networkelement.SetMne.transport_option:type_name -> gosdn.transport.TransportOption
+	14, // 11: gosdn.networkelement.SetMneListRequest.mne:type_name -> gosdn.networkelement.SetMne
+	0,  // 12: gosdn.networkelement.SetMneListResponse.status:type_name -> gosdn.networkelement.Status
+	19, // 13: gosdn.networkelement.SetMneListResponse.responses:type_name -> gosdn.networkelement.SetResponse
+	8,  // 14: gosdn.networkelement.GetPathResponse.pnd:type_name -> gosdn.networkelement.PrincipalNetworkDomain
+	37, // 15: gosdn.networkelement.GetPathResponse.mne_notification:type_name -> gnmi.Notification
+	0,  // 16: gosdn.networkelement.SetResponse.status:type_name -> gosdn.networkelement.Status
+	25, // 17: gosdn.networkelement.SetPathListRequest.change_request:type_name -> gosdn.networkelement.ChangeRequest
+	0,  // 18: gosdn.networkelement.SetPathListResponse.status:type_name -> gosdn.networkelement.Status
+	19, // 19: gosdn.networkelement.SetPathListResponse.responses:type_name -> gosdn.networkelement.SetResponse
+	0,  // 20: gosdn.networkelement.DeleteMneResponse.status:type_name -> gosdn.networkelement.Status
+	1,  // 21: gosdn.networkelement.Change.state:type_name -> gosdn.networkelement.ChangeState
+	37, // 22: gosdn.networkelement.Change.diff:type_name -> gnmi.Notification
+	2,  // 23: gosdn.networkelement.ChangeRequest.api_op:type_name -> gosdn.networkelement.ApiOperation
+	3,  // 24: gosdn.networkelement.SetChange.op:type_name -> gosdn.networkelement.Operation
+	8,  // 25: gosdn.networkelement.GetChangeListResponse.pnd:type_name -> gosdn.networkelement.PrincipalNetworkDomain
+	24, // 26: gosdn.networkelement.GetChangeListResponse.change:type_name -> gosdn.networkelement.Change
+	8,  // 27: gosdn.networkelement.GetChangeResponse.pnd:type_name -> gosdn.networkelement.PrincipalNetworkDomain
+	24, // 28: gosdn.networkelement.GetChangeResponse.change:type_name -> gosdn.networkelement.Change
+	26, // 29: gosdn.networkelement.SetChangeListRequest.change:type_name -> gosdn.networkelement.SetChange
+	0,  // 30: gosdn.networkelement.SetChangeListResponse.status:type_name -> gosdn.networkelement.Status
+	19, // 31: gosdn.networkelement.SetChangeListResponse.responses:type_name -> gosdn.networkelement.SetResponse
+	34, // 32: gosdn.networkelement.SubscriptionList.subscription:type_name -> gosdn.networkelement.Subscription
+	4,  // 33: gosdn.networkelement.SubscriptionList.mode:type_name -> gosdn.networkelement.SubscriptionMode
+	5,  // 34: gosdn.networkelement.Subscription.stream_mode:type_name -> gosdn.networkelement.StreamMode
+	33, // 35: gosdn.networkelement.SubscribePathRequest.sublist:type_name -> gosdn.networkelement.SubscriptionList
+	0,  // 36: gosdn.networkelement.SubscribePathResponse.status:type_name -> gosdn.networkelement.Status
+	37, // 37: gosdn.networkelement.SubscribePathResponse.mne_notification:type_name -> gnmi.Notification
+	9,  // 38: gosdn.networkelement.NetworkElementService.GetMneList:input_type -> gosdn.networkelement.GetMneListRequest
+	9,  // 39: gosdn.networkelement.NetworkElementService.GetFlattenedMneList:input_type -> gosdn.networkelement.GetMneListRequest
+	12, // 40: gosdn.networkelement.NetworkElementService.GetMne:input_type -> gosdn.networkelement.GetMneRequest
+	15, // 41: gosdn.networkelement.NetworkElementService.SetMneList:input_type -> gosdn.networkelement.SetMneListRequest
+	17, // 42: gosdn.networkelement.NetworkElementService.GetPath:input_type -> gosdn.networkelement.GetPathRequest
+	20, // 43: gosdn.networkelement.NetworkElementService.SetPathList:input_type -> gosdn.networkelement.SetPathListRequest
+	22, // 44: gosdn.networkelement.NetworkElementService.DeleteMne:input_type -> gosdn.networkelement.DeleteMneRequest
+	27, // 45: gosdn.networkelement.NetworkElementService.GetChangeList:input_type -> gosdn.networkelement.GetChangeListRequest
+	29, // 46: gosdn.networkelement.NetworkElementService.GetChange:input_type -> gosdn.networkelement.GetChangeRequest
+	31, // 47: gosdn.networkelement.NetworkElementService.SetChangeList:input_type -> gosdn.networkelement.SetChangeListRequest
+	35, // 48: gosdn.networkelement.NetworkElementService.SubscribePath:input_type -> gosdn.networkelement.SubscribePathRequest
+	10, // 49: gosdn.networkelement.NetworkElementService.GetMneList:output_type -> gosdn.networkelement.GetMneListResponse
+	11, // 50: gosdn.networkelement.NetworkElementService.GetFlattenedMneList:output_type -> gosdn.networkelement.GetFlattenedMneListResponse
+	13, // 51: gosdn.networkelement.NetworkElementService.GetMne:output_type -> gosdn.networkelement.GetMneResponse
+	16, // 52: gosdn.networkelement.NetworkElementService.SetMneList:output_type -> gosdn.networkelement.SetMneListResponse
+	18, // 53: gosdn.networkelement.NetworkElementService.GetPath:output_type -> gosdn.networkelement.GetPathResponse
+	21, // 54: gosdn.networkelement.NetworkElementService.SetPathList:output_type -> gosdn.networkelement.SetPathListResponse
+	23, // 55: gosdn.networkelement.NetworkElementService.DeleteMne:output_type -> gosdn.networkelement.DeleteMneResponse
+	28, // 56: gosdn.networkelement.NetworkElementService.GetChangeList:output_type -> gosdn.networkelement.GetChangeListResponse
+	30, // 57: gosdn.networkelement.NetworkElementService.GetChange:output_type -> gosdn.networkelement.GetChangeResponse
+	32, // 58: gosdn.networkelement.NetworkElementService.SetChangeList:output_type -> gosdn.networkelement.SetChangeListResponse
+	36, // 59: gosdn.networkelement.NetworkElementService.SubscribePath:output_type -> gosdn.networkelement.SubscribePathResponse
+	49, // [49:60] is the sub-list for method output_type
+	38, // [38:49] is the sub-list for method input_type
+	38, // [38:38] is the sub-list for extension type_name
+	38, // [38:38] is the sub-list for extension extendee
+	0,  // [0:38] is the sub-list for field type_name
 }
 
 func init() { file_gosdn_networkelement_networkelement_proto_init() }
@@ -1052,7 +2893,7 @@ func file_gosdn_networkelement_networkelement_proto_init() {
 	}
 	if !protoimpl.UnsafeEnabled {
 		file_gosdn_networkelement_networkelement_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*NetworkElement); i {
+			switch v := v.(*ManagedNetworkElement); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -1064,7 +2905,7 @@ func file_gosdn_networkelement_networkelement_proto_init() {
 			}
 		}
 		file_gosdn_networkelement_networkelement_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AddNetworkElementConfiguration); i {
+			switch v := v.(*FlattenedManagedNetworkElement); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -1076,7 +2917,7 @@ func file_gosdn_networkelement_networkelement_proto_init() {
 			}
 		}
 		file_gosdn_networkelement_networkelement_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AddNetworkElementRequest); i {
+			switch v := v.(*PrincipalNetworkDomain); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -1088,7 +2929,7 @@ func file_gosdn_networkelement_networkelement_proto_init() {
 			}
 		}
 		file_gosdn_networkelement_networkelement_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AddNetworkElementResponse); i {
+			switch v := v.(*GetMneListRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -1100,7 +2941,7 @@ func file_gosdn_networkelement_networkelement_proto_init() {
 			}
 		}
 		file_gosdn_networkelement_networkelement_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetNetworkElementRequest); i {
+			switch v := v.(*GetMneListResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -1112,7 +2953,7 @@ func file_gosdn_networkelement_networkelement_proto_init() {
 			}
 		}
 		file_gosdn_networkelement_networkelement_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetNetworkElementResponse); i {
+			switch v := v.(*GetFlattenedMneListResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -1124,7 +2965,7 @@ func file_gosdn_networkelement_networkelement_proto_init() {
 			}
 		}
 		file_gosdn_networkelement_networkelement_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetAllNetworkElementRequest); i {
+			switch v := v.(*GetMneRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -1136,7 +2977,7 @@ func file_gosdn_networkelement_networkelement_proto_init() {
 			}
 		}
 		file_gosdn_networkelement_networkelement_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetAllNetworkElementResponse); i {
+			switch v := v.(*GetMneResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -1148,7 +2989,7 @@ func file_gosdn_networkelement_networkelement_proto_init() {
 			}
 		}
 		file_gosdn_networkelement_networkelement_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UpdateNetworkElementRequest); i {
+			switch v := v.(*SetMne); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -1160,7 +3001,7 @@ func file_gosdn_networkelement_networkelement_proto_init() {
 			}
 		}
 		file_gosdn_networkelement_networkelement_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UpdateNetworkElementResponse); i {
+			switch v := v.(*SetMneListRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -1172,7 +3013,7 @@ func file_gosdn_networkelement_networkelement_proto_init() {
 			}
 		}
 		file_gosdn_networkelement_networkelement_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteNetworkElementRequest); i {
+			switch v := v.(*SetMneListResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -1184,7 +3025,235 @@ func file_gosdn_networkelement_networkelement_proto_init() {
 			}
 		}
 		file_gosdn_networkelement_networkelement_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteNetworkElementResponse); i {
+			switch v := v.(*GetPathRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetPathResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SetResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SetPathListRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SetPathListResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DeleteMneRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DeleteMneResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Change); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ChangeRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SetChange); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetChangeListRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetChangeListResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetChangeRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetChangeResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SetChangeListRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SetChangeListResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SubscriptionList); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Subscription); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SubscribePathRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_gosdn_networkelement_networkelement_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SubscribePathResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -1201,8 +3270,8 @@ func file_gosdn_networkelement_networkelement_proto_init() {
 		File: protoimpl.DescBuilder{
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_gosdn_networkelement_networkelement_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   12,
+			NumEnums:      6,
+			NumMessages:   31,
 			NumExtensions: 0,
 			NumServices:   1,
 		},
diff --git a/api/go/gosdn/networkelement/networkelement.pb.gw.go b/api/go/gosdn/networkelement/networkelement.pb.gw.go
index 2ad35433b955d2d19cbad6d7c0e48de1f746e27d..d803ea38cd6958197a12ce6ab05d73e89d2636fd 100644
--- a/api/go/gosdn/networkelement/networkelement.pb.gw.go
+++ b/api/go/gosdn/networkelement/networkelement.pb.gw.go
@@ -31,8 +31,346 @@ var _ = runtime.String
 var _ = utilities.NewDoubleArray
 var _ = metadata.Join
 
-func request_NetworkElementService_Add_0(ctx context.Context, marshaler runtime.Marshaler, client NetworkElementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq AddNetworkElementRequest
+var (
+	filter_NetworkElementService_GetFlattenedMneList_0 = &utilities.DoubleArray{Encoding: map[string]int{"pid": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
+)
+
+func request_NetworkElementService_GetFlattenedMneList_0(ctx context.Context, marshaler runtime.Marshaler, client NetworkElementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq GetMneListRequest
+	var metadata runtime.ServerMetadata
+
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
+	if err := req.ParseForm(); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_GetFlattenedMneList_0); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+
+	msg, err := client.GetFlattenedMneList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+	return msg, metadata, err
+
+}
+
+func local_request_NetworkElementService_GetFlattenedMneList_0(ctx context.Context, marshaler runtime.Marshaler, server NetworkElementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq GetMneListRequest
+	var metadata runtime.ServerMetadata
+
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
+	if err := req.ParseForm(); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_GetFlattenedMneList_0); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+
+	msg, err := server.GetFlattenedMneList(ctx, &protoReq)
+	return msg, metadata, err
+
+}
+
+var (
+	filter_NetworkElementService_GetMne_0 = &utilities.DoubleArray{Encoding: map[string]int{"pid": 0, "mneid": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}}
+)
+
+func request_NetworkElementService_GetMne_0(ctx context.Context, marshaler runtime.Marshaler, client NetworkElementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq GetMneRequest
+	var metadata runtime.ServerMetadata
+
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
+	val, ok = pathParams["mneid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "mneid")
+	}
+
+	protoReq.Mneid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "mneid", err)
+	}
+
+	if err := req.ParseForm(); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_GetMne_0); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+
+	msg, err := client.GetMne(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+	return msg, metadata, err
+
+}
+
+func local_request_NetworkElementService_GetMne_0(ctx context.Context, marshaler runtime.Marshaler, server NetworkElementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq GetMneRequest
+	var metadata runtime.ServerMetadata
+
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
+	val, ok = pathParams["mneid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "mneid")
+	}
+
+	protoReq.Mneid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "mneid", err)
+	}
+
+	if err := req.ParseForm(); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_GetMne_0); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+
+	msg, err := server.GetMne(ctx, &protoReq)
+	return msg, metadata, err
+
+}
+
+func request_NetworkElementService_SetMneList_0(ctx context.Context, marshaler runtime.Marshaler, client NetworkElementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq SetMneListRequest
+	var metadata runtime.ServerMetadata
+
+	newReader, berr := utilities.IOReaderFactory(req.Body)
+	if berr != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+	}
+	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
+	msg, err := client.SetMneList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+	return msg, metadata, err
+
+}
+
+func local_request_NetworkElementService_SetMneList_0(ctx context.Context, marshaler runtime.Marshaler, server NetworkElementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq SetMneListRequest
+	var metadata runtime.ServerMetadata
+
+	newReader, berr := utilities.IOReaderFactory(req.Body)
+	if berr != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+	}
+	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
+	msg, err := server.SetMneList(ctx, &protoReq)
+	return msg, metadata, err
+
+}
+
+var (
+	filter_NetworkElementService_GetPath_0 = &utilities.DoubleArray{Encoding: map[string]int{"pid": 0, "mneid": 1, "path": 2}, Base: []int{1, 1, 2, 3, 0, 0, 0}, Check: []int{0, 1, 1, 1, 2, 3, 4}}
+)
+
+func request_NetworkElementService_GetPath_0(ctx context.Context, marshaler runtime.Marshaler, client NetworkElementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq GetPathRequest
+	var metadata runtime.ServerMetadata
+
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
+	val, ok = pathParams["mneid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "mneid")
+	}
+
+	protoReq.Mneid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "mneid", err)
+	}
+
+	val, ok = pathParams["path"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "path")
+	}
+
+	protoReq.Path, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "path", err)
+	}
+
+	if err := req.ParseForm(); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_GetPath_0); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+
+	msg, err := client.GetPath(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+	return msg, metadata, err
+
+}
+
+func local_request_NetworkElementService_GetPath_0(ctx context.Context, marshaler runtime.Marshaler, server NetworkElementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq GetPathRequest
+	var metadata runtime.ServerMetadata
+
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
+	val, ok = pathParams["mneid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "mneid")
+	}
+
+	protoReq.Mneid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "mneid", err)
+	}
+
+	val, ok = pathParams["path"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "path")
+	}
+
+	protoReq.Path, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "path", err)
+	}
+
+	if err := req.ParseForm(); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_GetPath_0); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+
+	msg, err := server.GetPath(ctx, &protoReq)
+	return msg, metadata, err
+
+}
+
+func request_NetworkElementService_SetPathList_0(ctx context.Context, marshaler runtime.Marshaler, client NetworkElementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq SetPathListRequest
 	var metadata runtime.ServerMetadata
 
 	newReader, berr := utilities.IOReaderFactory(req.Body)
@@ -43,13 +381,30 @@ func request_NetworkElementService_Add_0(ctx context.Context, marshaler runtime.
 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 	}
 
-	msg, err := client.Add(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
+	msg, err := client.SetPathList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
 	return msg, metadata, err
 
 }
 
-func local_request_NetworkElementService_Add_0(ctx context.Context, marshaler runtime.Marshaler, server NetworkElementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq AddNetworkElementRequest
+func local_request_NetworkElementService_SetPathList_0(ctx context.Context, marshaler runtime.Marshaler, server NetworkElementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq SetPathListRequest
 	var metadata runtime.ServerMetadata
 
 	newReader, berr := utilities.IOReaderFactory(req.Body)
@@ -60,85 +415,280 @@ func local_request_NetworkElementService_Add_0(ctx context.Context, marshaler ru
 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 	}
 
-	msg, err := server.Add(ctx, &protoReq)
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
+	msg, err := server.SetPathList(ctx, &protoReq)
 	return msg, metadata, err
 
 }
 
 var (
-	filter_NetworkElementService_Get_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+	filter_NetworkElementService_DeleteMne_0 = &utilities.DoubleArray{Encoding: map[string]int{"pid": 0, "mneid": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}}
 )
 
-func request_NetworkElementService_Get_0(ctx context.Context, marshaler runtime.Marshaler, client NetworkElementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq GetNetworkElementRequest
+func request_NetworkElementService_DeleteMne_0(ctx context.Context, marshaler runtime.Marshaler, client NetworkElementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq DeleteMneRequest
 	var metadata runtime.ServerMetadata
 
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
+	val, ok = pathParams["mneid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "mneid")
+	}
+
+	protoReq.Mneid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "mneid", err)
+	}
+
 	if err := req.ParseForm(); err != nil {
 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 	}
-	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_Get_0); err != nil {
+	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_DeleteMne_0); err != nil {
 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 	}
 
-	msg, err := client.Get(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+	msg, err := client.DeleteMne(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
 	return msg, metadata, err
 
 }
 
-func local_request_NetworkElementService_Get_0(ctx context.Context, marshaler runtime.Marshaler, server NetworkElementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq GetNetworkElementRequest
+func local_request_NetworkElementService_DeleteMne_0(ctx context.Context, marshaler runtime.Marshaler, server NetworkElementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq DeleteMneRequest
 	var metadata runtime.ServerMetadata
 
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
+	val, ok = pathParams["mneid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "mneid")
+	}
+
+	protoReq.Mneid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "mneid", err)
+	}
+
 	if err := req.ParseForm(); err != nil {
 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 	}
-	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_Get_0); err != nil {
+	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_DeleteMne_0); err != nil {
 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 	}
 
-	msg, err := server.Get(ctx, &protoReq)
+	msg, err := server.DeleteMne(ctx, &protoReq)
 	return msg, metadata, err
 
 }
 
 var (
-	filter_NetworkElementService_GetAll_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+	filter_NetworkElementService_GetChangeList_0 = &utilities.DoubleArray{Encoding: map[string]int{"pid": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
 )
 
-func request_NetworkElementService_GetAll_0(ctx context.Context, marshaler runtime.Marshaler, client NetworkElementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq GetAllNetworkElementRequest
+func request_NetworkElementService_GetChangeList_0(ctx context.Context, marshaler runtime.Marshaler, client NetworkElementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq GetChangeListRequest
 	var metadata runtime.ServerMetadata
 
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
 	if err := req.ParseForm(); err != nil {
 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 	}
-	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_GetAll_0); err != nil {
+	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_GetChangeList_0); err != nil {
 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 	}
 
-	msg, err := client.GetAll(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+	msg, err := client.GetChangeList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
 	return msg, metadata, err
 
 }
 
-func local_request_NetworkElementService_GetAll_0(ctx context.Context, marshaler runtime.Marshaler, server NetworkElementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq GetAllNetworkElementRequest
+func local_request_NetworkElementService_GetChangeList_0(ctx context.Context, marshaler runtime.Marshaler, server NetworkElementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq GetChangeListRequest
 	var metadata runtime.ServerMetadata
 
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
 	if err := req.ParseForm(); err != nil {
 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 	}
-	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_GetAll_0); err != nil {
+	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_GetChangeList_0); err != nil {
 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 	}
 
-	msg, err := server.GetAll(ctx, &protoReq)
+	msg, err := server.GetChangeList(ctx, &protoReq)
 	return msg, metadata, err
 
 }
 
-func request_NetworkElementService_Update_0(ctx context.Context, marshaler runtime.Marshaler, client NetworkElementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq UpdateNetworkElementRequest
+var (
+	filter_NetworkElementService_GetChange_0 = &utilities.DoubleArray{Encoding: map[string]int{"pid": 0, "cuid": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}}
+)
+
+func request_NetworkElementService_GetChange_0(ctx context.Context, marshaler runtime.Marshaler, client NetworkElementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq GetChangeRequest
+	var metadata runtime.ServerMetadata
+
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
+	val, ok = pathParams["cuid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cuid")
+	}
+
+	protoReq.Cuid, err = runtime.StringSlice(val, ",")
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cuid", err)
+	}
+
+	if err := req.ParseForm(); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_GetChange_0); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+
+	msg, err := client.GetChange(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+	return msg, metadata, err
+
+}
+
+func local_request_NetworkElementService_GetChange_0(ctx context.Context, marshaler runtime.Marshaler, server NetworkElementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq GetChangeRequest
+	var metadata runtime.ServerMetadata
+
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
+	val, ok = pathParams["cuid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cuid")
+	}
+
+	protoReq.Cuid, err = runtime.StringSlice(val, ",")
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cuid", err)
+	}
+
+	if err := req.ParseForm(); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_GetChange_0); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+
+	msg, err := server.GetChange(ctx, &protoReq)
+	return msg, metadata, err
+
+}
+
+func request_NetworkElementService_SetChangeList_0(ctx context.Context, marshaler runtime.Marshaler, client NetworkElementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq SetChangeListRequest
 	var metadata runtime.ServerMetadata
 
 	newReader, berr := utilities.IOReaderFactory(req.Body)
@@ -149,13 +699,30 @@ func request_NetworkElementService_Update_0(ctx context.Context, marshaler runti
 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 	}
 
-	msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
+	msg, err := client.SetChangeList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
 	return msg, metadata, err
 
 }
 
-func local_request_NetworkElementService_Update_0(ctx context.Context, marshaler runtime.Marshaler, server NetworkElementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq UpdateNetworkElementRequest
+func local_request_NetworkElementService_SetChangeList_0(ctx context.Context, marshaler runtime.Marshaler, server NetworkElementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq SetChangeListRequest
 	var metadata runtime.ServerMetadata
 
 	newReader, berr := utilities.IOReaderFactory(req.Body)
@@ -166,7 +733,24 @@ func local_request_NetworkElementService_Update_0(ctx context.Context, marshaler
 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 	}
 
-	msg, err := server.Update(ctx, &protoReq)
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["pid"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
+	}
+
+	protoReq.Pid, err = runtime.String(val)
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
+	}
+
+	msg, err := server.SetChangeList(ctx, &protoReq)
 	return msg, metadata, err
 
 }
@@ -177,18 +761,87 @@ func local_request_NetworkElementService_Update_0(ctx context.Context, marshaler
 // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterNetworkElementServiceHandlerFromEndpoint instead.
 func RegisterNetworkElementServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server NetworkElementServiceServer) error {
 
-	mux.Handle("POST", pattern_NetworkElementService_Add_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+	mux.Handle("GET", pattern_NetworkElementService_GetFlattenedMneList_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)
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/GetFlattenedMneList", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes"))
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+		resp, md, err := local_request_NetworkElementService_GetFlattenedMneList_0(rctx, inboundMarshaler, server, req, pathParams)
+		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+		ctx = runtime.NewServerMetadataContext(ctx, md)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+
+		forward_NetworkElementService_GetFlattenedMneList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+	})
+
+	mux.Handle("GET", pattern_NetworkElementService_GetMne_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)
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/GetMne", runtime.WithHTTPPathPattern("/pnds/{pid}/mne/{mneid}"))
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+		resp, md, err := local_request_NetworkElementService_GetMne_0(rctx, inboundMarshaler, server, req, pathParams)
+		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+		ctx = runtime.NewServerMetadataContext(ctx, md)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+
+		forward_NetworkElementService_GetMne_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+	})
+
+	mux.Handle("POST", pattern_NetworkElementService_SetMneList_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)
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/SetMneList", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes"))
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+		resp, md, err := local_request_NetworkElementService_SetMneList_0(rctx, inboundMarshaler, server, req, pathParams)
+		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+		ctx = runtime.NewServerMetadataContext(ctx, md)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+
+		forward_NetworkElementService_SetMneList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+	})
+
+	mux.Handle("GET", pattern_NetworkElementService_GetPath_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)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/Add", runtime.WithHTTPPathPattern("/network-element/create"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/GetPath", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes/{mneid}/paths/{path}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
 		}
-		resp, md, err := local_request_NetworkElementService_Add_0(rctx, inboundMarshaler, server, req, pathParams)
+		resp, md, err := local_request_NetworkElementService_GetPath_0(rctx, inboundMarshaler, server, req, pathParams)
 		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
 		ctx = runtime.NewServerMetadataContext(ctx, md)
 		if err != nil {
@@ -196,22 +849,22 @@ func RegisterNetworkElementServiceHandlerServer(ctx context.Context, mux *runtim
 			return
 		}
 
-		forward_NetworkElementService_Add_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+		forward_NetworkElementService_GetPath_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
 
 	})
 
-	mux.Handle("GET", pattern_NetworkElementService_Get_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+	mux.Handle("POST", pattern_NetworkElementService_SetPathList_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)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/Get", runtime.WithHTTPPathPattern("/network-element"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/SetPathList", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes/paths"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
 		}
-		resp, md, err := local_request_NetworkElementService_Get_0(rctx, inboundMarshaler, server, req, pathParams)
+		resp, md, err := local_request_NetworkElementService_SetPathList_0(rctx, inboundMarshaler, server, req, pathParams)
 		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
 		ctx = runtime.NewServerMetadataContext(ctx, md)
 		if err != nil {
@@ -219,22 +872,22 @@ func RegisterNetworkElementServiceHandlerServer(ctx context.Context, mux *runtim
 			return
 		}
 
-		forward_NetworkElementService_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+		forward_NetworkElementService_SetPathList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
 
 	})
 
-	mux.Handle("GET", pattern_NetworkElementService_GetAll_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+	mux.Handle("DELETE", pattern_NetworkElementService_DeleteMne_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)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/GetAll", runtime.WithHTTPPathPattern("/network-element/all"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/DeleteMne", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes/{mneid}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
 		}
-		resp, md, err := local_request_NetworkElementService_GetAll_0(rctx, inboundMarshaler, server, req, pathParams)
+		resp, md, err := local_request_NetworkElementService_DeleteMne_0(rctx, inboundMarshaler, server, req, pathParams)
 		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
 		ctx = runtime.NewServerMetadataContext(ctx, md)
 		if err != nil {
@@ -242,22 +895,22 @@ func RegisterNetworkElementServiceHandlerServer(ctx context.Context, mux *runtim
 			return
 		}
 
-		forward_NetworkElementService_GetAll_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+		forward_NetworkElementService_DeleteMne_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
 
 	})
 
-	mux.Handle("POST", pattern_NetworkElementService_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+	mux.Handle("GET", pattern_NetworkElementService_GetChangeList_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)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/Update", runtime.WithHTTPPathPattern("/network-element/update"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/GetChangeList", runtime.WithHTTPPathPattern("/pnds/{pid}/changes"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
 		}
-		resp, md, err := local_request_NetworkElementService_Update_0(rctx, inboundMarshaler, server, req, pathParams)
+		resp, md, err := local_request_NetworkElementService_GetChangeList_0(rctx, inboundMarshaler, server, req, pathParams)
 		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
 		ctx = runtime.NewServerMetadataContext(ctx, md)
 		if err != nil {
@@ -265,7 +918,53 @@ func RegisterNetworkElementServiceHandlerServer(ctx context.Context, mux *runtim
 			return
 		}
 
-		forward_NetworkElementService_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+		forward_NetworkElementService_GetChangeList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+	})
+
+	mux.Handle("GET", pattern_NetworkElementService_GetChange_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)
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/GetChange", runtime.WithHTTPPathPattern("/pnds/{pid}/changes/{cuid}"))
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+		resp, md, err := local_request_NetworkElementService_GetChange_0(rctx, inboundMarshaler, server, req, pathParams)
+		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+		ctx = runtime.NewServerMetadataContext(ctx, md)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+
+		forward_NetworkElementService_GetChange_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+	})
+
+	mux.Handle("POST", pattern_NetworkElementService_SetChangeList_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)
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/SetChangeList", runtime.WithHTTPPathPattern("/pnds/{pid}/changes"))
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+		resp, md, err := local_request_NetworkElementService_SetChangeList_0(rctx, inboundMarshaler, server, req, pathParams)
+		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+		ctx = runtime.NewServerMetadataContext(ctx, md)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+
+		forward_NetworkElementService_SetChangeList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
 
 	})
 
@@ -310,83 +1009,183 @@ func RegisterNetworkElementServiceHandler(ctx context.Context, mux *runtime.Serv
 // "NetworkElementServiceClient" to call the correct interceptors.
 func RegisterNetworkElementServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client NetworkElementServiceClient) error {
 
-	mux.Handle("POST", pattern_NetworkElementService_Add_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+	mux.Handle("GET", pattern_NetworkElementService_GetFlattenedMneList_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)
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/GetFlattenedMneList", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes"))
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+		resp, md, err := request_NetworkElementService_GetFlattenedMneList_0(rctx, inboundMarshaler, client, req, pathParams)
+		ctx = runtime.NewServerMetadataContext(ctx, md)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+
+		forward_NetworkElementService_GetFlattenedMneList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+	})
+
+	mux.Handle("GET", pattern_NetworkElementService_GetMne_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)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/Add", runtime.WithHTTPPathPattern("/network-element/create"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/GetMne", runtime.WithHTTPPathPattern("/pnds/{pid}/mne/{mneid}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
 		}
-		resp, md, err := request_NetworkElementService_Add_0(rctx, inboundMarshaler, client, req, pathParams)
+		resp, md, err := request_NetworkElementService_GetMne_0(rctx, inboundMarshaler, client, req, pathParams)
 		ctx = runtime.NewServerMetadataContext(ctx, md)
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
 		}
 
-		forward_NetworkElementService_Add_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+		forward_NetworkElementService_GetMne_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
 
 	})
 
-	mux.Handle("GET", pattern_NetworkElementService_Get_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+	mux.Handle("POST", pattern_NetworkElementService_SetMneList_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)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/Get", runtime.WithHTTPPathPattern("/network-element"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/SetMneList", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
 		}
-		resp, md, err := request_NetworkElementService_Get_0(rctx, inboundMarshaler, client, req, pathParams)
+		resp, md, err := request_NetworkElementService_SetMneList_0(rctx, inboundMarshaler, client, req, pathParams)
 		ctx = runtime.NewServerMetadataContext(ctx, md)
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
 		}
 
-		forward_NetworkElementService_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+		forward_NetworkElementService_SetMneList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
 
 	})
 
-	mux.Handle("GET", pattern_NetworkElementService_GetAll_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+	mux.Handle("GET", pattern_NetworkElementService_GetPath_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)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/GetAll", runtime.WithHTTPPathPattern("/network-element/all"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/GetPath", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes/{mneid}/paths/{path}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
 		}
-		resp, md, err := request_NetworkElementService_GetAll_0(rctx, inboundMarshaler, client, req, pathParams)
+		resp, md, err := request_NetworkElementService_GetPath_0(rctx, inboundMarshaler, client, req, pathParams)
 		ctx = runtime.NewServerMetadataContext(ctx, md)
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
 		}
 
-		forward_NetworkElementService_GetAll_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+		forward_NetworkElementService_GetPath_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
 
 	})
 
-	mux.Handle("POST", pattern_NetworkElementService_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+	mux.Handle("POST", pattern_NetworkElementService_SetPathList_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)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/Update", runtime.WithHTTPPathPattern("/network-element/update"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/SetPathList", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes/paths"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
 		}
-		resp, md, err := request_NetworkElementService_Update_0(rctx, inboundMarshaler, client, req, pathParams)
+		resp, md, err := request_NetworkElementService_SetPathList_0(rctx, inboundMarshaler, client, req, pathParams)
 		ctx = runtime.NewServerMetadataContext(ctx, md)
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
 		}
 
-		forward_NetworkElementService_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+		forward_NetworkElementService_SetPathList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+	})
+
+	mux.Handle("DELETE", pattern_NetworkElementService_DeleteMne_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)
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/DeleteMne", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes/{mneid}"))
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+		resp, md, err := request_NetworkElementService_DeleteMne_0(rctx, inboundMarshaler, client, req, pathParams)
+		ctx = runtime.NewServerMetadataContext(ctx, md)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+
+		forward_NetworkElementService_DeleteMne_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+	})
+
+	mux.Handle("GET", pattern_NetworkElementService_GetChangeList_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)
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/GetChangeList", runtime.WithHTTPPathPattern("/pnds/{pid}/changes"))
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+		resp, md, err := request_NetworkElementService_GetChangeList_0(rctx, inboundMarshaler, client, req, pathParams)
+		ctx = runtime.NewServerMetadataContext(ctx, md)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+
+		forward_NetworkElementService_GetChangeList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+	})
+
+	mux.Handle("GET", pattern_NetworkElementService_GetChange_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)
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/GetChange", runtime.WithHTTPPathPattern("/pnds/{pid}/changes/{cuid}"))
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+		resp, md, err := request_NetworkElementService_GetChange_0(rctx, inboundMarshaler, client, req, pathParams)
+		ctx = runtime.NewServerMetadataContext(ctx, md)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+
+		forward_NetworkElementService_GetChange_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+	})
+
+	mux.Handle("POST", pattern_NetworkElementService_SetChangeList_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)
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/SetChangeList", runtime.WithHTTPPathPattern("/pnds/{pid}/changes"))
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+		resp, md, err := request_NetworkElementService_SetChangeList_0(rctx, inboundMarshaler, client, req, pathParams)
+		ctx = runtime.NewServerMetadataContext(ctx, md)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+
+		forward_NetworkElementService_SetChangeList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
 
 	})
 
@@ -394,21 +1193,41 @@ func RegisterNetworkElementServiceHandlerClient(ctx context.Context, mux *runtim
 }
 
 var (
-	pattern_NetworkElementService_Add_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"network-element", "create"}, ""))
+	pattern_NetworkElementService_GetFlattenedMneList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"pnds", "pid", "mnes"}, ""))
+
+	pattern_NetworkElementService_GetMne_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pnds", "pid", "mne", "mneid"}, ""))
+
+	pattern_NetworkElementService_SetMneList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"pnds", "pid", "mnes"}, ""))
+
+	pattern_NetworkElementService_GetPath_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"pnds", "pid", "mnes", "mneid", "paths", "path"}, ""))
 
-	pattern_NetworkElementService_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"network-element"}, ""))
+	pattern_NetworkElementService_SetPathList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3}, []string{"pnds", "pid", "mnes", "paths"}, ""))
 
-	pattern_NetworkElementService_GetAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"network-element", "all"}, ""))
+	pattern_NetworkElementService_DeleteMne_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pnds", "pid", "mnes", "mneid"}, ""))
 
-	pattern_NetworkElementService_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"network-element", "update"}, ""))
+	pattern_NetworkElementService_GetChangeList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"pnds", "pid", "changes"}, ""))
+
+	pattern_NetworkElementService_GetChange_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pnds", "pid", "changes", "cuid"}, ""))
+
+	pattern_NetworkElementService_SetChangeList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"pnds", "pid", "changes"}, ""))
 )
 
 var (
-	forward_NetworkElementService_Add_0 = runtime.ForwardResponseMessage
+	forward_NetworkElementService_GetFlattenedMneList_0 = runtime.ForwardResponseMessage
+
+	forward_NetworkElementService_GetMne_0 = runtime.ForwardResponseMessage
+
+	forward_NetworkElementService_SetMneList_0 = runtime.ForwardResponseMessage
+
+	forward_NetworkElementService_GetPath_0 = runtime.ForwardResponseMessage
+
+	forward_NetworkElementService_SetPathList_0 = runtime.ForwardResponseMessage
+
+	forward_NetworkElementService_DeleteMne_0 = runtime.ForwardResponseMessage
 
-	forward_NetworkElementService_Get_0 = runtime.ForwardResponseMessage
+	forward_NetworkElementService_GetChangeList_0 = runtime.ForwardResponseMessage
 
-	forward_NetworkElementService_GetAll_0 = runtime.ForwardResponseMessage
+	forward_NetworkElementService_GetChange_0 = runtime.ForwardResponseMessage
 
-	forward_NetworkElementService_Update_0 = runtime.ForwardResponseMessage
+	forward_NetworkElementService_SetChangeList_0 = runtime.ForwardResponseMessage
 )
diff --git a/api/go/gosdn/networkelement/networkelement_grpc.pb.go b/api/go/gosdn/networkelement/networkelement_grpc.pb.go
index c73b569e984108d4922b5e7bdbad421b90dff3b5..963f5e20002ed3c42f3751f77d530019b16f9019 100644
--- a/api/go/gosdn/networkelement/networkelement_grpc.pb.go
+++ b/api/go/gosdn/networkelement/networkelement_grpc.pb.go
@@ -18,10 +18,42 @@ const _ = grpc.SupportPackageIsVersion7
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 type NetworkElementServiceClient interface {
-	Add(ctx context.Context, in *AddNetworkElementRequest, opts ...grpc.CallOption) (*AddNetworkElementResponse, error)
-	Get(ctx context.Context, in *GetNetworkElementRequest, opts ...grpc.CallOption) (*GetNetworkElementResponse, error)
-	GetAll(ctx context.Context, in *GetAllNetworkElementRequest, opts ...grpc.CallOption) (*GetAllNetworkElementResponse, error)
-	Update(ctx context.Context, in *UpdateNetworkElementRequest, opts ...grpc.CallOption) (*UpdateNetworkElementResponse, error)
+	// Allows to request all Managed Network Elements (MNE) which are
+	// managed by a specific Principal Network Domain.
+	// Full MNEs are provided, which also includes the MNE config as gNMI
+	// notification.
+	GetMneList(ctx context.Context, in *GetMneListRequest, opts ...grpc.CallOption) (*GetMneListResponse, error)
+	//TODO(PND): change GetRequest!
+	// Allows to request all Managed Network Elements (MNE) which are
+	// managed by a specific Principal Network Domain.
+	// Flattened MNEs are provided, which does not include the MNE config as gNMI
+	// notification.
+	GetFlattenedMneList(ctx context.Context, in *GetMneListRequest, opts ...grpc.CallOption) (*GetFlattenedMneListResponse, error)
+	// Allows to request a specific Managed Network Element which is managed by a
+	// specific Principal Network Domain.
+	GetMne(ctx context.Context, in *GetMneRequest, opts ...grpc.CallOption) (*GetMneResponse, error)
+	// Allows to add multiple Managed Network Elements to be managed by a
+	// specific Principal Network Domain.
+	SetMneList(ctx context.Context, in *SetMneListRequest, opts ...grpc.CallOption) (*SetMneListResponse, error)
+	// Allows to request a specific Path of a Managed Network Element,
+	// managed by a specific Principal Network Domain.
+	GetPath(ctx context.Context, in *GetPathRequest, opts ...grpc.CallOption) (*GetPathResponse, error)
+	// Allows to set a specific Path of a Managed Network Element,
+	// managed by a specific Principal Network Domain.
+	SetPathList(ctx context.Context, in *SetPathListRequest, opts ...grpc.CallOption) (*SetPathListResponse, error)
+	// Allows to delete a specific Managed Network Element which is managed by a
+	// specific Principal Network Domain.
+	DeleteMne(ctx context.Context, in *DeleteMneRequest, opts ...grpc.CallOption) (*DeleteMneResponse, error)
+	// Allows to request all Changes registered for a specific Principal Network Domain.
+	GetChangeList(ctx context.Context, in *GetChangeListRequest, opts ...grpc.CallOption) (*GetChangeListResponse, error)
+	// Allows to request a specific Change registered for a specific Principal Network Domain.
+	GetChange(ctx context.Context, in *GetChangeRequest, opts ...grpc.CallOption) (*GetChangeResponse, error)
+	// Allows to operate on multiple Changes registered for a specific Principal Network Domain.
+	SetChangeList(ctx context.Context, in *SetChangeListRequest, opts ...grpc.CallOption) (*SetChangeListResponse, error)
+	// Allows to subscribe to multiple paths of a Managed Network Element which is
+	// managed by a specific Principal Network Domain and streams data depending on the subscribe
+	// method.
+	SubscribePath(ctx context.Context, in *SubscribePathRequest, opts ...grpc.CallOption) (NetworkElementService_SubscribePathClient, error)
 }
 
 type networkElementServiceClient struct {
@@ -32,50 +64,168 @@ func NewNetworkElementServiceClient(cc grpc.ClientConnInterface) NetworkElementS
 	return &networkElementServiceClient{cc}
 }
 
-func (c *networkElementServiceClient) Add(ctx context.Context, in *AddNetworkElementRequest, opts ...grpc.CallOption) (*AddNetworkElementResponse, error) {
-	out := new(AddNetworkElementResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.networkelement.NetworkElementService/Add", in, out, opts...)
+func (c *networkElementServiceClient) GetMneList(ctx context.Context, in *GetMneListRequest, opts ...grpc.CallOption) (*GetMneListResponse, error) {
+	out := new(GetMneListResponse)
+	err := c.cc.Invoke(ctx, "/gosdn.networkelement.NetworkElementService/GetMneList", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
 	return out, nil
 }
 
-func (c *networkElementServiceClient) Get(ctx context.Context, in *GetNetworkElementRequest, opts ...grpc.CallOption) (*GetNetworkElementResponse, error) {
-	out := new(GetNetworkElementResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.networkelement.NetworkElementService/Get", in, out, opts...)
+func (c *networkElementServiceClient) GetFlattenedMneList(ctx context.Context, in *GetMneListRequest, opts ...grpc.CallOption) (*GetFlattenedMneListResponse, error) {
+	out := new(GetFlattenedMneListResponse)
+	err := c.cc.Invoke(ctx, "/gosdn.networkelement.NetworkElementService/GetFlattenedMneList", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
 	return out, nil
 }
 
-func (c *networkElementServiceClient) GetAll(ctx context.Context, in *GetAllNetworkElementRequest, opts ...grpc.CallOption) (*GetAllNetworkElementResponse, error) {
-	out := new(GetAllNetworkElementResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.networkelement.NetworkElementService/GetAll", in, out, opts...)
+func (c *networkElementServiceClient) GetMne(ctx context.Context, in *GetMneRequest, opts ...grpc.CallOption) (*GetMneResponse, error) {
+	out := new(GetMneResponse)
+	err := c.cc.Invoke(ctx, "/gosdn.networkelement.NetworkElementService/GetMne", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
 	return out, nil
 }
 
-func (c *networkElementServiceClient) Update(ctx context.Context, in *UpdateNetworkElementRequest, opts ...grpc.CallOption) (*UpdateNetworkElementResponse, error) {
-	out := new(UpdateNetworkElementResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.networkelement.NetworkElementService/Update", in, out, opts...)
+func (c *networkElementServiceClient) SetMneList(ctx context.Context, in *SetMneListRequest, opts ...grpc.CallOption) (*SetMneListResponse, error) {
+	out := new(SetMneListResponse)
+	err := c.cc.Invoke(ctx, "/gosdn.networkelement.NetworkElementService/SetMneList", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
 	return out, nil
 }
 
+func (c *networkElementServiceClient) GetPath(ctx context.Context, in *GetPathRequest, opts ...grpc.CallOption) (*GetPathResponse, error) {
+	out := new(GetPathResponse)
+	err := c.cc.Invoke(ctx, "/gosdn.networkelement.NetworkElementService/GetPath", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *networkElementServiceClient) SetPathList(ctx context.Context, in *SetPathListRequest, opts ...grpc.CallOption) (*SetPathListResponse, error) {
+	out := new(SetPathListResponse)
+	err := c.cc.Invoke(ctx, "/gosdn.networkelement.NetworkElementService/SetPathList", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *networkElementServiceClient) DeleteMne(ctx context.Context, in *DeleteMneRequest, opts ...grpc.CallOption) (*DeleteMneResponse, error) {
+	out := new(DeleteMneResponse)
+	err := c.cc.Invoke(ctx, "/gosdn.networkelement.NetworkElementService/DeleteMne", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *networkElementServiceClient) GetChangeList(ctx context.Context, in *GetChangeListRequest, opts ...grpc.CallOption) (*GetChangeListResponse, error) {
+	out := new(GetChangeListResponse)
+	err := c.cc.Invoke(ctx, "/gosdn.networkelement.NetworkElementService/GetChangeList", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *networkElementServiceClient) GetChange(ctx context.Context, in *GetChangeRequest, opts ...grpc.CallOption) (*GetChangeResponse, error) {
+	out := new(GetChangeResponse)
+	err := c.cc.Invoke(ctx, "/gosdn.networkelement.NetworkElementService/GetChange", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *networkElementServiceClient) SetChangeList(ctx context.Context, in *SetChangeListRequest, opts ...grpc.CallOption) (*SetChangeListResponse, error) {
+	out := new(SetChangeListResponse)
+	err := c.cc.Invoke(ctx, "/gosdn.networkelement.NetworkElementService/SetChangeList", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *networkElementServiceClient) SubscribePath(ctx context.Context, in *SubscribePathRequest, opts ...grpc.CallOption) (NetworkElementService_SubscribePathClient, error) {
+	stream, err := c.cc.NewStream(ctx, &NetworkElementService_ServiceDesc.Streams[0], "/gosdn.networkelement.NetworkElementService/SubscribePath", opts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &networkElementServiceSubscribePathClient{stream}
+	if err := x.ClientStream.SendMsg(in); err != nil {
+		return nil, err
+	}
+	if err := x.ClientStream.CloseSend(); err != nil {
+		return nil, err
+	}
+	return x, nil
+}
+
+type NetworkElementService_SubscribePathClient interface {
+	Recv() (*SubscribePathResponse, error)
+	grpc.ClientStream
+}
+
+type networkElementServiceSubscribePathClient struct {
+	grpc.ClientStream
+}
+
+func (x *networkElementServiceSubscribePathClient) Recv() (*SubscribePathResponse, error) {
+	m := new(SubscribePathResponse)
+	if err := x.ClientStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
 // NetworkElementServiceServer is the server API for NetworkElementService service.
 // All implementations must embed UnimplementedNetworkElementServiceServer
 // for forward compatibility
 type NetworkElementServiceServer interface {
-	Add(context.Context, *AddNetworkElementRequest) (*AddNetworkElementResponse, error)
-	Get(context.Context, *GetNetworkElementRequest) (*GetNetworkElementResponse, error)
-	GetAll(context.Context, *GetAllNetworkElementRequest) (*GetAllNetworkElementResponse, error)
-	Update(context.Context, *UpdateNetworkElementRequest) (*UpdateNetworkElementResponse, error)
+	// Allows to request all Managed Network Elements (MNE) which are
+	// managed by a specific Principal Network Domain.
+	// Full MNEs are provided, which also includes the MNE config as gNMI
+	// notification.
+	GetMneList(context.Context, *GetMneListRequest) (*GetMneListResponse, error)
+	//TODO(PND): change GetRequest!
+	// Allows to request all Managed Network Elements (MNE) which are
+	// managed by a specific Principal Network Domain.
+	// Flattened MNEs are provided, which does not include the MNE config as gNMI
+	// notification.
+	GetFlattenedMneList(context.Context, *GetMneListRequest) (*GetFlattenedMneListResponse, error)
+	// Allows to request a specific Managed Network Element which is managed by a
+	// specific Principal Network Domain.
+	GetMne(context.Context, *GetMneRequest) (*GetMneResponse, error)
+	// Allows to add multiple Managed Network Elements to be managed by a
+	// specific Principal Network Domain.
+	SetMneList(context.Context, *SetMneListRequest) (*SetMneListResponse, error)
+	// Allows to request a specific Path of a Managed Network Element,
+	// managed by a specific Principal Network Domain.
+	GetPath(context.Context, *GetPathRequest) (*GetPathResponse, error)
+	// Allows to set a specific Path of a Managed Network Element,
+	// managed by a specific Principal Network Domain.
+	SetPathList(context.Context, *SetPathListRequest) (*SetPathListResponse, error)
+	// Allows to delete a specific Managed Network Element which is managed by a
+	// specific Principal Network Domain.
+	DeleteMne(context.Context, *DeleteMneRequest) (*DeleteMneResponse, error)
+	// Allows to request all Changes registered for a specific Principal Network Domain.
+	GetChangeList(context.Context, *GetChangeListRequest) (*GetChangeListResponse, error)
+	// Allows to request a specific Change registered for a specific Principal Network Domain.
+	GetChange(context.Context, *GetChangeRequest) (*GetChangeResponse, error)
+	// Allows to operate on multiple Changes registered for a specific Principal Network Domain.
+	SetChangeList(context.Context, *SetChangeListRequest) (*SetChangeListResponse, error)
+	// Allows to subscribe to multiple paths of a Managed Network Element which is
+	// managed by a specific Principal Network Domain and streams data depending on the subscribe
+	// method.
+	SubscribePath(*SubscribePathRequest, NetworkElementService_SubscribePathServer) error
 	mustEmbedUnimplementedNetworkElementServiceServer()
 }
 
@@ -83,17 +233,38 @@ type NetworkElementServiceServer interface {
 type UnimplementedNetworkElementServiceServer struct {
 }
 
-func (UnimplementedNetworkElementServiceServer) Add(context.Context, *AddNetworkElementRequest) (*AddNetworkElementResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method Add not implemented")
+func (UnimplementedNetworkElementServiceServer) GetMneList(context.Context, *GetMneListRequest) (*GetMneListResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetMneList not implemented")
+}
+func (UnimplementedNetworkElementServiceServer) GetFlattenedMneList(context.Context, *GetMneListRequest) (*GetFlattenedMneListResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetFlattenedMneList not implemented")
+}
+func (UnimplementedNetworkElementServiceServer) GetMne(context.Context, *GetMneRequest) (*GetMneResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetMne not implemented")
+}
+func (UnimplementedNetworkElementServiceServer) SetMneList(context.Context, *SetMneListRequest) (*SetMneListResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SetMneList not implemented")
 }
-func (UnimplementedNetworkElementServiceServer) Get(context.Context, *GetNetworkElementRequest) (*GetNetworkElementResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method Get not implemented")
+func (UnimplementedNetworkElementServiceServer) GetPath(context.Context, *GetPathRequest) (*GetPathResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetPath not implemented")
 }
-func (UnimplementedNetworkElementServiceServer) GetAll(context.Context, *GetAllNetworkElementRequest) (*GetAllNetworkElementResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetAll not implemented")
+func (UnimplementedNetworkElementServiceServer) SetPathList(context.Context, *SetPathListRequest) (*SetPathListResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SetPathList not implemented")
 }
-func (UnimplementedNetworkElementServiceServer) Update(context.Context, *UpdateNetworkElementRequest) (*UpdateNetworkElementResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
+func (UnimplementedNetworkElementServiceServer) DeleteMne(context.Context, *DeleteMneRequest) (*DeleteMneResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method DeleteMne not implemented")
+}
+func (UnimplementedNetworkElementServiceServer) GetChangeList(context.Context, *GetChangeListRequest) (*GetChangeListResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetChangeList not implemented")
+}
+func (UnimplementedNetworkElementServiceServer) GetChange(context.Context, *GetChangeRequest) (*GetChangeResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetChange not implemented")
+}
+func (UnimplementedNetworkElementServiceServer) SetChangeList(context.Context, *SetChangeListRequest) (*SetChangeListResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SetChangeList not implemented")
+}
+func (UnimplementedNetworkElementServiceServer) SubscribePath(*SubscribePathRequest, NetworkElementService_SubscribePathServer) error {
+	return status.Errorf(codes.Unimplemented, "method SubscribePath not implemented")
 }
 func (UnimplementedNetworkElementServiceServer) mustEmbedUnimplementedNetworkElementServiceServer() {}
 
@@ -108,78 +279,207 @@ func RegisterNetworkElementServiceServer(s grpc.ServiceRegistrar, srv NetworkEle
 	s.RegisterService(&NetworkElementService_ServiceDesc, srv)
 }
 
-func _NetworkElementService_Add_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(AddNetworkElementRequest)
+func _NetworkElementService_GetMneList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetMneListRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NetworkElementServiceServer).GetMneList(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/gosdn.networkelement.NetworkElementService/GetMneList",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NetworkElementServiceServer).GetMneList(ctx, req.(*GetMneListRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _NetworkElementService_GetFlattenedMneList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetMneListRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NetworkElementServiceServer).GetFlattenedMneList(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/gosdn.networkelement.NetworkElementService/GetFlattenedMneList",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NetworkElementServiceServer).GetFlattenedMneList(ctx, req.(*GetMneListRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _NetworkElementService_GetMne_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetMneRequest)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(NetworkElementServiceServer).Add(ctx, in)
+		return srv.(NetworkElementServiceServer).GetMne(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.networkelement.NetworkElementService/Add",
+		FullMethod: "/gosdn.networkelement.NetworkElementService/GetMne",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(NetworkElementServiceServer).Add(ctx, req.(*AddNetworkElementRequest))
+		return srv.(NetworkElementServiceServer).GetMne(ctx, req.(*GetMneRequest))
 	}
 	return interceptor(ctx, in, info, handler)
 }
 
-func _NetworkElementService_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(GetNetworkElementRequest)
+func _NetworkElementService_SetMneList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SetMneListRequest)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(NetworkElementServiceServer).Get(ctx, in)
+		return srv.(NetworkElementServiceServer).SetMneList(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.networkelement.NetworkElementService/Get",
+		FullMethod: "/gosdn.networkelement.NetworkElementService/SetMneList",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(NetworkElementServiceServer).Get(ctx, req.(*GetNetworkElementRequest))
+		return srv.(NetworkElementServiceServer).SetMneList(ctx, req.(*SetMneListRequest))
 	}
 	return interceptor(ctx, in, info, handler)
 }
 
-func _NetworkElementService_GetAll_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(GetAllNetworkElementRequest)
+func _NetworkElementService_GetPath_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetPathRequest)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(NetworkElementServiceServer).GetAll(ctx, in)
+		return srv.(NetworkElementServiceServer).GetPath(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.networkelement.NetworkElementService/GetAll",
+		FullMethod: "/gosdn.networkelement.NetworkElementService/GetPath",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(NetworkElementServiceServer).GetAll(ctx, req.(*GetAllNetworkElementRequest))
+		return srv.(NetworkElementServiceServer).GetPath(ctx, req.(*GetPathRequest))
 	}
 	return interceptor(ctx, in, info, handler)
 }
 
-func _NetworkElementService_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(UpdateNetworkElementRequest)
+func _NetworkElementService_SetPathList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SetPathListRequest)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(NetworkElementServiceServer).Update(ctx, in)
+		return srv.(NetworkElementServiceServer).SetPathList(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.networkelement.NetworkElementService/Update",
+		FullMethod: "/gosdn.networkelement.NetworkElementService/SetPathList",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(NetworkElementServiceServer).Update(ctx, req.(*UpdateNetworkElementRequest))
+		return srv.(NetworkElementServiceServer).SetPathList(ctx, req.(*SetPathListRequest))
 	}
 	return interceptor(ctx, in, info, handler)
 }
 
+func _NetworkElementService_DeleteMne_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeleteMneRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NetworkElementServiceServer).DeleteMne(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/gosdn.networkelement.NetworkElementService/DeleteMne",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NetworkElementServiceServer).DeleteMne(ctx, req.(*DeleteMneRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _NetworkElementService_GetChangeList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetChangeListRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NetworkElementServiceServer).GetChangeList(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/gosdn.networkelement.NetworkElementService/GetChangeList",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NetworkElementServiceServer).GetChangeList(ctx, req.(*GetChangeListRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _NetworkElementService_GetChange_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetChangeRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NetworkElementServiceServer).GetChange(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/gosdn.networkelement.NetworkElementService/GetChange",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NetworkElementServiceServer).GetChange(ctx, req.(*GetChangeRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _NetworkElementService_SetChangeList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SetChangeListRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NetworkElementServiceServer).SetChangeList(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/gosdn.networkelement.NetworkElementService/SetChangeList",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NetworkElementServiceServer).SetChangeList(ctx, req.(*SetChangeListRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _NetworkElementService_SubscribePath_Handler(srv interface{}, stream grpc.ServerStream) error {
+	m := new(SubscribePathRequest)
+	if err := stream.RecvMsg(m); err != nil {
+		return err
+	}
+	return srv.(NetworkElementServiceServer).SubscribePath(m, &networkElementServiceSubscribePathServer{stream})
+}
+
+type NetworkElementService_SubscribePathServer interface {
+	Send(*SubscribePathResponse) error
+	grpc.ServerStream
+}
+
+type networkElementServiceSubscribePathServer struct {
+	grpc.ServerStream
+}
+
+func (x *networkElementServiceSubscribePathServer) Send(m *SubscribePathResponse) error {
+	return x.ServerStream.SendMsg(m)
+}
+
 // NetworkElementService_ServiceDesc is the grpc.ServiceDesc for NetworkElementService service.
 // It's only intended for direct use with grpc.RegisterService,
 // and not to be introspected or modified (even as a copy)
@@ -188,22 +488,52 @@ var NetworkElementService_ServiceDesc = grpc.ServiceDesc{
 	HandlerType: (*NetworkElementServiceServer)(nil),
 	Methods: []grpc.MethodDesc{
 		{
-			MethodName: "Add",
-			Handler:    _NetworkElementService_Add_Handler,
+			MethodName: "GetMneList",
+			Handler:    _NetworkElementService_GetMneList_Handler,
+		},
+		{
+			MethodName: "GetFlattenedMneList",
+			Handler:    _NetworkElementService_GetFlattenedMneList_Handler,
+		},
+		{
+			MethodName: "GetMne",
+			Handler:    _NetworkElementService_GetMne_Handler,
+		},
+		{
+			MethodName: "SetMneList",
+			Handler:    _NetworkElementService_SetMneList_Handler,
+		},
+		{
+			MethodName: "GetPath",
+			Handler:    _NetworkElementService_GetPath_Handler,
+		},
+		{
+			MethodName: "SetPathList",
+			Handler:    _NetworkElementService_SetPathList_Handler,
 		},
 		{
-			MethodName: "Get",
-			Handler:    _NetworkElementService_Get_Handler,
+			MethodName: "DeleteMne",
+			Handler:    _NetworkElementService_DeleteMne_Handler,
 		},
 		{
-			MethodName: "GetAll",
-			Handler:    _NetworkElementService_GetAll_Handler,
+			MethodName: "GetChangeList",
+			Handler:    _NetworkElementService_GetChangeList_Handler,
 		},
 		{
-			MethodName: "Update",
-			Handler:    _NetworkElementService_Update_Handler,
+			MethodName: "GetChange",
+			Handler:    _NetworkElementService_GetChange_Handler,
+		},
+		{
+			MethodName: "SetChangeList",
+			Handler:    _NetworkElementService_SetChangeList_Handler,
+		},
+	},
+	Streams: []grpc.StreamDesc{
+		{
+			StreamName:    "SubscribePath",
+			Handler:       _NetworkElementService_SubscribePath_Handler,
+			ServerStreams: true,
 		},
 	},
-	Streams:  []grpc.StreamDesc{},
 	Metadata: "gosdn/networkelement/networkelement.proto",
 }
diff --git a/api/go/gosdn/pnd/pnd.pb.go b/api/go/gosdn/pnd/pnd.pb.go
index 312077b0b9a59afc919ff3353be6573ff089fde3..520b9a365580b77f20fa416879d116181c7003e4 100644
--- a/api/go/gosdn/pnd/pnd.pb.go
+++ b/api/go/gosdn/pnd/pnd.pb.go
@@ -7,10 +7,11 @@
 package pnd
 
 import (
+	_ "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	southbound "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
-	transport "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
+	_ "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
 	_ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options"
-	gnmi "github.com/openconfig/gnmi/proto/gnmi"
+	_ "github.com/openconfig/gnmi/proto/gnmi"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
@@ -26,113 +27,6 @@ const (
 	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 )
 
-type ChangeState int32
-
-const (
-	ChangeState_CHANGE_STATE_UNSPECIFIED  ChangeState = 0
-	ChangeState_CHANGE_STATE_PENDING      ChangeState = 1
-	ChangeState_CHANGE_STATE_COMMITTED    ChangeState = 2
-	ChangeState_CHANGE_STATE_CONFIRMED    ChangeState = 3
-	ChangeState_CHANGE_STATE_INCONSISTENT ChangeState = 4
-)
-
-// Enum value maps for ChangeState.
-var (
-	ChangeState_name = map[int32]string{
-		0: "CHANGE_STATE_UNSPECIFIED",
-		1: "CHANGE_STATE_PENDING",
-		2: "CHANGE_STATE_COMMITTED",
-		3: "CHANGE_STATE_CONFIRMED",
-		4: "CHANGE_STATE_INCONSISTENT",
-	}
-	ChangeState_value = map[string]int32{
-		"CHANGE_STATE_UNSPECIFIED":  0,
-		"CHANGE_STATE_PENDING":      1,
-		"CHANGE_STATE_COMMITTED":    2,
-		"CHANGE_STATE_CONFIRMED":    3,
-		"CHANGE_STATE_INCONSISTENT": 4,
-	}
-)
-
-func (x ChangeState) Enum() *ChangeState {
-	p := new(ChangeState)
-	*p = x
-	return p
-}
-
-func (x ChangeState) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ChangeState) Descriptor() protoreflect.EnumDescriptor {
-	return file_gosdn_pnd_pnd_proto_enumTypes[0].Descriptor()
-}
-
-func (ChangeState) Type() protoreflect.EnumType {
-	return &file_gosdn_pnd_pnd_proto_enumTypes[0]
-}
-
-func (x ChangeState) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ChangeState.Descriptor instead.
-func (ChangeState) EnumDescriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{0}
-}
-
-type ApiOperation int32
-
-const (
-	ApiOperation_API_OPERATION_UNSPECIFIED ApiOperation = 0
-	ApiOperation_API_OPERATION_UPDATE      ApiOperation = 1
-	ApiOperation_API_OPERATION_REPLACE     ApiOperation = 2
-	ApiOperation_API_OPERATION_DELETE      ApiOperation = 3
-)
-
-// Enum value maps for ApiOperation.
-var (
-	ApiOperation_name = map[int32]string{
-		0: "API_OPERATION_UNSPECIFIED",
-		1: "API_OPERATION_UPDATE",
-		2: "API_OPERATION_REPLACE",
-		3: "API_OPERATION_DELETE",
-	}
-	ApiOperation_value = map[string]int32{
-		"API_OPERATION_UNSPECIFIED": 0,
-		"API_OPERATION_UPDATE":      1,
-		"API_OPERATION_REPLACE":     2,
-		"API_OPERATION_DELETE":      3,
-	}
-)
-
-func (x ApiOperation) Enum() *ApiOperation {
-	p := new(ApiOperation)
-	*p = x
-	return p
-}
-
-func (x ApiOperation) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ApiOperation) Descriptor() protoreflect.EnumDescriptor {
-	return file_gosdn_pnd_pnd_proto_enumTypes[1].Descriptor()
-}
-
-func (ApiOperation) Type() protoreflect.EnumType {
-	return &file_gosdn_pnd_pnd_proto_enumTypes[1]
-}
-
-func (x ApiOperation) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ApiOperation.Descriptor instead.
-func (ApiOperation) EnumDescriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{1}
-}
-
 type SbiType int32
 
 const (
@@ -169,11 +63,11 @@ func (x SbiType) String() string {
 }
 
 func (SbiType) Descriptor() protoreflect.EnumDescriptor {
-	return file_gosdn_pnd_pnd_proto_enumTypes[2].Descriptor()
+	return file_gosdn_pnd_pnd_proto_enumTypes[0].Descriptor()
 }
 
 func (SbiType) Type() protoreflect.EnumType {
-	return &file_gosdn_pnd_pnd_proto_enumTypes[2]
+	return &file_gosdn_pnd_pnd_proto_enumTypes[0]
 }
 
 func (x SbiType) Number() protoreflect.EnumNumber {
@@ -182,59 +76,7 @@ func (x SbiType) Number() protoreflect.EnumNumber {
 
 // Deprecated: Use SbiType.Descriptor instead.
 func (SbiType) EnumDescriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{2}
-}
-
-type Operation int32
-
-const (
-	Operation_OPERATION_UNSPECIFIED Operation = 0
-	Operation_OPERATION_CREATE      Operation = 1
-	Operation_OPERATION_COMMIT      Operation = 2
-	Operation_OPERATION_CONFIRM     Operation = 3
-)
-
-// Enum value maps for Operation.
-var (
-	Operation_name = map[int32]string{
-		0: "OPERATION_UNSPECIFIED",
-		1: "OPERATION_CREATE",
-		2: "OPERATION_COMMIT",
-		3: "OPERATION_CONFIRM",
-	}
-	Operation_value = map[string]int32{
-		"OPERATION_UNSPECIFIED": 0,
-		"OPERATION_CREATE":      1,
-		"OPERATION_COMMIT":      2,
-		"OPERATION_CONFIRM":     3,
-	}
-)
-
-func (x Operation) Enum() *Operation {
-	p := new(Operation)
-	*p = x
-	return p
-}
-
-func (x Operation) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Operation) Descriptor() protoreflect.EnumDescriptor {
-	return file_gosdn_pnd_pnd_proto_enumTypes[3].Descriptor()
-}
-
-func (Operation) Type() protoreflect.EnumType {
-	return &file_gosdn_pnd_pnd_proto_enumTypes[3]
-}
-
-func (x Operation) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Operation.Descriptor instead.
-func (Operation) EnumDescriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{3}
+	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{0}
 }
 
 type Status int32
@@ -270,11 +112,11 @@ func (x Status) String() string {
 }
 
 func (Status) Descriptor() protoreflect.EnumDescriptor {
-	return file_gosdn_pnd_pnd_proto_enumTypes[4].Descriptor()
+	return file_gosdn_pnd_pnd_proto_enumTypes[1].Descriptor()
 }
 
 func (Status) Type() protoreflect.EnumType {
-	return &file_gosdn_pnd_pnd_proto_enumTypes[4]
+	return &file_gosdn_pnd_pnd_proto_enumTypes[1]
 }
 
 func (x Status) Number() protoreflect.EnumNumber {
@@ -283,124 +125,21 @@ func (x Status) Number() protoreflect.EnumNumber {
 
 // Deprecated: Use Status.Descriptor instead.
 func (Status) EnumDescriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{4}
-}
-
-type SubscriptionMode int32
-
-const (
-	SubscriptionMode_SUBSCRIPTION_MODE_UNSPECIFIED SubscriptionMode = 0
-	SubscriptionMode_SUBSCRIPTION_MODE_ONCE        SubscriptionMode = 1
-	SubscriptionMode_SUBSCRIPTION_MODE_STREAM      SubscriptionMode = 2
-	SubscriptionMode_SUBSCRIPTION_MODE_POLL        SubscriptionMode = 3
-)
-
-// Enum value maps for SubscriptionMode.
-var (
-	SubscriptionMode_name = map[int32]string{
-		0: "SUBSCRIPTION_MODE_UNSPECIFIED",
-		1: "SUBSCRIPTION_MODE_ONCE",
-		2: "SUBSCRIPTION_MODE_STREAM",
-		3: "SUBSCRIPTION_MODE_POLL",
-	}
-	SubscriptionMode_value = map[string]int32{
-		"SUBSCRIPTION_MODE_UNSPECIFIED": 0,
-		"SUBSCRIPTION_MODE_ONCE":        1,
-		"SUBSCRIPTION_MODE_STREAM":      2,
-		"SUBSCRIPTION_MODE_POLL":        3,
-	}
-)
-
-func (x SubscriptionMode) Enum() *SubscriptionMode {
-	p := new(SubscriptionMode)
-	*p = x
-	return p
-}
-
-func (x SubscriptionMode) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (SubscriptionMode) Descriptor() protoreflect.EnumDescriptor {
-	return file_gosdn_pnd_pnd_proto_enumTypes[5].Descriptor()
-}
-
-func (SubscriptionMode) Type() protoreflect.EnumType {
-	return &file_gosdn_pnd_pnd_proto_enumTypes[5]
-}
-
-func (x SubscriptionMode) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use SubscriptionMode.Descriptor instead.
-func (SubscriptionMode) EnumDescriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{5}
-}
-
-type StreamMode int32
-
-const (
-	StreamMode_STREAM_MODE_UNSPECIFIED    StreamMode = 0
-	StreamMode_STREAM_MODE_TARGET_DEFINED StreamMode = 1 // The target selects the relevant mode for each element.
-	StreamMode_STREAM_MODE_ON_CHANGE      StreamMode = 2 // The target sends an update on element value change.
-	StreamMode_STREAM_MODE_SAMPLE         StreamMode = 3 // The target samples values according to the interval.
-)
-
-// Enum value maps for StreamMode.
-var (
-	StreamMode_name = map[int32]string{
-		0: "STREAM_MODE_UNSPECIFIED",
-		1: "STREAM_MODE_TARGET_DEFINED",
-		2: "STREAM_MODE_ON_CHANGE",
-		3: "STREAM_MODE_SAMPLE",
-	}
-	StreamMode_value = map[string]int32{
-		"STREAM_MODE_UNSPECIFIED":    0,
-		"STREAM_MODE_TARGET_DEFINED": 1,
-		"STREAM_MODE_ON_CHANGE":      2,
-		"STREAM_MODE_SAMPLE":         3,
-	}
-)
-
-func (x StreamMode) Enum() *StreamMode {
-	p := new(StreamMode)
-	*p = x
-	return p
-}
-
-func (x StreamMode) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (StreamMode) Descriptor() protoreflect.EnumDescriptor {
-	return file_gosdn_pnd_pnd_proto_enumTypes[6].Descriptor()
-}
-
-func (StreamMode) Type() protoreflect.EnumType {
-	return &file_gosdn_pnd_pnd_proto_enumTypes[6]
-}
-
-func (x StreamMode) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use StreamMode.Descriptor instead.
-func (StreamMode) EnumDescriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{6}
+	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{1}
 }
 
-type GetMneListRequest struct {
+type PrincipalNetworkDomain struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Pid       string `protobuf:"bytes,2,opt,name=pid,proto3" json:"pid,omitempty"`
+	Id          string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Name        string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
 }
 
-func (x *GetMneListRequest) Reset() {
-	*x = GetMneListRequest{}
+func (x *PrincipalNetworkDomain) Reset() {
+	*x = PrincipalNetworkDomain{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_pnd_pnd_proto_msgTypes[0]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -408,13 +147,13 @@ func (x *GetMneListRequest) Reset() {
 	}
 }
 
-func (x *GetMneListRequest) String() string {
+func (x *PrincipalNetworkDomain) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*GetMneListRequest) ProtoMessage() {}
+func (*PrincipalNetworkDomain) ProtoMessage() {}
 
-func (x *GetMneListRequest) ProtoReflect() protoreflect.Message {
+func (x *PrincipalNetworkDomain) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_pnd_pnd_proto_msgTypes[0]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -426,37 +165,43 @@ func (x *GetMneListRequest) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use GetMneListRequest.ProtoReflect.Descriptor instead.
-func (*GetMneListRequest) Descriptor() ([]byte, []int) {
+// Deprecated: Use PrincipalNetworkDomain.ProtoReflect.Descriptor instead.
+func (*PrincipalNetworkDomain) Descriptor() ([]byte, []int) {
 	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{0}
 }
 
-func (x *GetMneListRequest) GetTimestamp() int64 {
+func (x *PrincipalNetworkDomain) GetId() string {
 	if x != nil {
-		return x.Timestamp
+		return x.Id
 	}
-	return 0
+	return ""
 }
 
-func (x *GetMneListRequest) GetPid() string {
+func (x *PrincipalNetworkDomain) GetName() string {
 	if x != nil {
-		return x.Pid
+		return x.Name
+	}
+	return ""
+}
+
+func (x *PrincipalNetworkDomain) GetDescription() string {
+	if x != nil {
+		return x.Description
 	}
 	return ""
 }
 
-type GetMneRequest struct {
+type GetSbiListRequest struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
 	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Mneid     string `protobuf:"bytes,2,opt,name=mneid,proto3" json:"mneid,omitempty"`
-	Pid       string `protobuf:"bytes,3,opt,name=pid,proto3" json:"pid,omitempty"`
+	Pid       string `protobuf:"bytes,2,opt,name=pid,proto3" json:"pid,omitempty"`
 }
 
-func (x *GetMneRequest) Reset() {
-	*x = GetMneRequest{}
+func (x *GetSbiListRequest) Reset() {
+	*x = GetSbiListRequest{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_pnd_pnd_proto_msgTypes[1]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -464,13 +209,13 @@ func (x *GetMneRequest) Reset() {
 	}
 }
 
-func (x *GetMneRequest) String() string {
+func (x *GetSbiListRequest) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*GetMneRequest) ProtoMessage() {}
+func (*GetSbiListRequest) ProtoMessage() {}
 
-func (x *GetMneRequest) ProtoReflect() protoreflect.Message {
+func (x *GetSbiListRequest) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_pnd_pnd_proto_msgTypes[1]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -482,43 +227,39 @@ func (x *GetMneRequest) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use GetMneRequest.ProtoReflect.Descriptor instead.
-func (*GetMneRequest) Descriptor() ([]byte, []int) {
+// Deprecated: Use GetSbiListRequest.ProtoReflect.Descriptor instead.
+func (*GetSbiListRequest) Descriptor() ([]byte, []int) {
 	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{1}
 }
 
-func (x *GetMneRequest) GetTimestamp() int64 {
+func (x *GetSbiListRequest) GetTimestamp() int64 {
 	if x != nil {
 		return x.Timestamp
 	}
 	return 0
 }
 
-func (x *GetMneRequest) GetMneid() string {
-	if x != nil {
-		return x.Mneid
-	}
-	return ""
-}
-
-func (x *GetMneRequest) GetPid() string {
+func (x *GetSbiListRequest) GetPid() string {
 	if x != nil {
 		return x.Pid
 	}
 	return ""
 }
 
-type GetSbiListRequest struct {
+type GetSbiListResponse struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Pid       string `protobuf:"bytes,2,opt,name=pid,proto3" json:"pid,omitempty"`
+	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	// TODO: Check if this is really needed. Perhaps a reference to the PND's ID
+	// is also sufficient.
+	Pnd *PrincipalNetworkDomain           `protobuf:"bytes,2,opt,name=pnd,proto3" json:"pnd,omitempty"`
+	Sbi []*southbound.SouthboundInterface `protobuf:"bytes,3,rep,name=sbi,proto3" json:"sbi,omitempty"`
 }
 
-func (x *GetSbiListRequest) Reset() {
-	*x = GetSbiListRequest{}
+func (x *GetSbiListResponse) Reset() {
+	*x = GetSbiListResponse{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_pnd_pnd_proto_msgTypes[2]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -526,13 +267,13 @@ func (x *GetSbiListRequest) Reset() {
 	}
 }
 
-func (x *GetSbiListRequest) String() string {
+func (x *GetSbiListResponse) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*GetSbiListRequest) ProtoMessage() {}
+func (*GetSbiListResponse) ProtoMessage() {}
 
-func (x *GetSbiListRequest) ProtoReflect() protoreflect.Message {
+func (x *GetSbiListResponse) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_pnd_pnd_proto_msgTypes[2]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -544,23 +285,30 @@ func (x *GetSbiListRequest) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use GetSbiListRequest.ProtoReflect.Descriptor instead.
-func (*GetSbiListRequest) Descriptor() ([]byte, []int) {
+// Deprecated: Use GetSbiListResponse.ProtoReflect.Descriptor instead.
+func (*GetSbiListResponse) Descriptor() ([]byte, []int) {
 	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{2}
 }
 
-func (x *GetSbiListRequest) GetTimestamp() int64 {
+func (x *GetSbiListResponse) GetTimestamp() int64 {
 	if x != nil {
 		return x.Timestamp
 	}
 	return 0
 }
 
-func (x *GetSbiListRequest) GetPid() string {
+func (x *GetSbiListResponse) GetPnd() *PrincipalNetworkDomain {
 	if x != nil {
-		return x.Pid
+		return x.Pnd
 	}
-	return ""
+	return nil
+}
+
+func (x *GetSbiListResponse) GetSbi() []*southbound.SouthboundInterface {
+	if x != nil {
+		return x.Sbi
+	}
+	return nil
 }
 
 type GetSbiRequest struct {
@@ -626,17 +374,20 @@ func (x *GetSbiRequest) GetPid() string {
 	return ""
 }
 
-type GetChangeListRequest struct {
+type GetSbiResponse struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Pid       string `protobuf:"bytes,2,opt,name=pid,proto3" json:"pid,omitempty"`
+	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	// TODO: Check if this is really needed. Perhaps a reference to the PND's ID
+	// is also sufficient.
+	Pnd *PrincipalNetworkDomain         `protobuf:"bytes,2,opt,name=pnd,proto3" json:"pnd,omitempty"`
+	Sbi *southbound.SouthboundInterface `protobuf:"bytes,3,opt,name=sbi,proto3" json:"sbi,omitempty"`
 }
 
-func (x *GetChangeListRequest) Reset() {
-	*x = GetChangeListRequest{}
+func (x *GetSbiResponse) Reset() {
+	*x = GetSbiResponse{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_pnd_pnd_proto_msgTypes[4]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -644,13 +395,13 @@ func (x *GetChangeListRequest) Reset() {
 	}
 }
 
-func (x *GetChangeListRequest) String() string {
+func (x *GetSbiResponse) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*GetChangeListRequest) ProtoMessage() {}
+func (*GetSbiResponse) ProtoMessage() {}
 
-func (x *GetChangeListRequest) ProtoReflect() protoreflect.Message {
+func (x *GetSbiResponse) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_pnd_pnd_proto_msgTypes[4]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -662,37 +413,44 @@ func (x *GetChangeListRequest) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use GetChangeListRequest.ProtoReflect.Descriptor instead.
-func (*GetChangeListRequest) Descriptor() ([]byte, []int) {
+// Deprecated: Use GetSbiResponse.ProtoReflect.Descriptor instead.
+func (*GetSbiResponse) Descriptor() ([]byte, []int) {
 	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{4}
 }
 
-func (x *GetChangeListRequest) GetTimestamp() int64 {
+func (x *GetSbiResponse) GetTimestamp() int64 {
 	if x != nil {
 		return x.Timestamp
 	}
 	return 0
 }
 
-func (x *GetChangeListRequest) GetPid() string {
+func (x *GetSbiResponse) GetPnd() *PrincipalNetworkDomain {
 	if x != nil {
-		return x.Pid
+		return x.Pnd
 	}
-	return ""
+	return nil
+}
+
+func (x *GetSbiResponse) GetSbi() *southbound.SouthboundInterface {
+	if x != nil {
+		return x.Sbi
+	}
+	return nil
 }
 
-type GetChangeRequest struct {
+type SetSbiListRequest struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp int64    `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Cuid      []string `protobuf:"bytes,2,rep,name=cuid,proto3" json:"cuid,omitempty"`
-	Pid       string   `protobuf:"bytes,3,opt,name=pid,proto3" json:"pid,omitempty"`
-}
-
-func (x *GetChangeRequest) Reset() {
-	*x = GetChangeRequest{}
+	Timestamp int64     `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Sbi       []*SetSbi `protobuf:"bytes,2,rep,name=sbi,proto3" json:"sbi,omitempty"`
+	Pid       string    `protobuf:"bytes,3,opt,name=pid,proto3" json:"pid,omitempty"`
+}
+
+func (x *SetSbiListRequest) Reset() {
+	*x = SetSbiListRequest{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_pnd_pnd_proto_msgTypes[5]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -700,13 +458,13 @@ func (x *GetChangeRequest) Reset() {
 	}
 }
 
-func (x *GetChangeRequest) String() string {
+func (x *SetSbiListRequest) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*GetChangeRequest) ProtoMessage() {}
+func (*SetSbiListRequest) ProtoMessage() {}
 
-func (x *GetChangeRequest) ProtoReflect() protoreflect.Message {
+func (x *SetSbiListRequest) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_pnd_pnd_proto_msgTypes[5]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -718,45 +476,42 @@ func (x *GetChangeRequest) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use GetChangeRequest.ProtoReflect.Descriptor instead.
-func (*GetChangeRequest) Descriptor() ([]byte, []int) {
+// Deprecated: Use SetSbiListRequest.ProtoReflect.Descriptor instead.
+func (*SetSbiListRequest) Descriptor() ([]byte, []int) {
 	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{5}
 }
 
-func (x *GetChangeRequest) GetTimestamp() int64 {
+func (x *SetSbiListRequest) GetTimestamp() int64 {
 	if x != nil {
 		return x.Timestamp
 	}
 	return 0
 }
 
-func (x *GetChangeRequest) GetCuid() []string {
+func (x *SetSbiListRequest) GetSbi() []*SetSbi {
 	if x != nil {
-		return x.Cuid
+		return x.Sbi
 	}
 	return nil
 }
 
-func (x *GetChangeRequest) GetPid() string {
+func (x *SetSbiListRequest) GetPid() string {
 	if x != nil {
 		return x.Pid
 	}
 	return ""
 }
 
-type GetPathRequest struct {
+type SetSbi struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Mneid     string `protobuf:"bytes,2,opt,name=mneid,proto3" json:"mneid,omitempty"`
-	Path      string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
-	Pid       string `protobuf:"bytes,4,opt,name=pid,proto3" json:"pid,omitempty"`
+	SbiType SbiType `protobuf:"varint,1,opt,name=sbi_type,json=sbiType,proto3,enum=gosdn.pnd.SbiType" json:"sbi_type,omitempty"`
 }
 
-func (x *GetPathRequest) Reset() {
-	*x = GetPathRequest{}
+func (x *SetSbi) Reset() {
+	*x = SetSbi{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_pnd_pnd_proto_msgTypes[6]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -764,13 +519,13 @@ func (x *GetPathRequest) Reset() {
 	}
 }
 
-func (x *GetPathRequest) String() string {
+func (x *SetSbi) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*GetPathRequest) ProtoMessage() {}
+func (*SetSbi) ProtoMessage() {}
 
-func (x *GetPathRequest) ProtoReflect() protoreflect.Message {
+func (x *SetSbi) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_pnd_pnd_proto_msgTypes[6]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -782,53 +537,30 @@ func (x *GetPathRequest) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use GetPathRequest.ProtoReflect.Descriptor instead.
-func (*GetPathRequest) Descriptor() ([]byte, []int) {
+// Deprecated: Use SetSbi.ProtoReflect.Descriptor instead.
+func (*SetSbi) Descriptor() ([]byte, []int) {
 	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{6}
 }
 
-func (x *GetPathRequest) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *GetPathRequest) GetMneid() string {
-	if x != nil {
-		return x.Mneid
-	}
-	return ""
-}
-
-func (x *GetPathRequest) GetPath() string {
-	if x != nil {
-		return x.Path
-	}
-	return ""
-}
-
-func (x *GetPathRequest) GetPid() string {
+func (x *SetSbi) GetSbiType() SbiType {
 	if x != nil {
-		return x.Pid
+		return x.SbiType
 	}
-	return ""
+	return SbiType_SBI_TYPE_UNSPECIFIED
 }
 
-type GetMneResponse struct {
+type SetSbiListResponse struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	// TODO: Check if this is really needed. Perhaps a reference to the PND's ID
-	// is also sufficient.
-	Pnd *PrincipalNetworkDomain `protobuf:"bytes,2,opt,name=pnd,proto3" json:"pnd,omitempty"`
-	Mne *ManagedNetworkElement  `protobuf:"bytes,3,opt,name=mne,proto3" json:"mne,omitempty"`
+	Timestamp int64          `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Status    Status         `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
+	Responses []*SetResponse `protobuf:"bytes,3,rep,name=responses,proto3" json:"responses,omitempty"`
 }
 
-func (x *GetMneResponse) Reset() {
-	*x = GetMneResponse{}
+func (x *SetSbiListResponse) Reset() {
+	*x = SetSbiListResponse{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_pnd_pnd_proto_msgTypes[7]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -836,13 +568,13 @@ func (x *GetMneResponse) Reset() {
 	}
 }
 
-func (x *GetMneResponse) String() string {
+func (x *SetSbiListResponse) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*GetMneResponse) ProtoMessage() {}
+func (*SetSbiListResponse) ProtoMessage() {}
 
-func (x *GetMneResponse) ProtoReflect() protoreflect.Message {
+func (x *SetSbiListResponse) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_pnd_pnd_proto_msgTypes[7]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -854,46 +586,44 @@ func (x *GetMneResponse) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use GetMneResponse.ProtoReflect.Descriptor instead.
-func (*GetMneResponse) Descriptor() ([]byte, []int) {
+// Deprecated: Use SetSbiListResponse.ProtoReflect.Descriptor instead.
+func (*SetSbiListResponse) Descriptor() ([]byte, []int) {
 	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{7}
 }
 
-func (x *GetMneResponse) GetTimestamp() int64 {
+func (x *SetSbiListResponse) GetTimestamp() int64 {
 	if x != nil {
 		return x.Timestamp
 	}
 	return 0
 }
 
-func (x *GetMneResponse) GetPnd() *PrincipalNetworkDomain {
+func (x *SetSbiListResponse) GetStatus() Status {
 	if x != nil {
-		return x.Pnd
+		return x.Status
 	}
-	return nil
+	return Status_STATUS_UNSPECIFIED
 }
 
-func (x *GetMneResponse) GetMne() *ManagedNetworkElement {
+func (x *SetSbiListResponse) GetResponses() []*SetResponse {
 	if x != nil {
-		return x.Mne
+		return x.Responses
 	}
 	return nil
 }
 
-type GetMneListResponse struct {
+type SetResponse struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	// TODO: Check if this is really needed. Perhaps a reference to the PND's ID
-	// is also sufficient.
-	Pnd *PrincipalNetworkDomain  `protobuf:"bytes,2,opt,name=pnd,proto3" json:"pnd,omitempty"`
-	Mne []*ManagedNetworkElement `protobuf:"bytes,3,rep,name=mne,proto3" json:"mne,omitempty"`
+	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Id        string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
+	Status    Status `protobuf:"varint,3,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
 }
 
-func (x *GetMneListResponse) Reset() {
-	*x = GetMneListResponse{}
+func (x *SetResponse) Reset() {
+	*x = SetResponse{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_gosdn_pnd_pnd_proto_msgTypes[8]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -901,13 +631,13 @@ func (x *GetMneListResponse) Reset() {
 	}
 }
 
-func (x *GetMneListResponse) String() string {
+func (x *SetResponse) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*GetMneListResponse) ProtoMessage() {}
+func (*SetResponse) ProtoMessage() {}
 
-func (x *GetMneListResponse) ProtoReflect() protoreflect.Message {
+func (x *SetResponse) ProtoReflect() protoreflect.Message {
 	mi := &file_gosdn_pnd_pnd_proto_msgTypes[8]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -919,2691 +649,240 @@ func (x *GetMneListResponse) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use GetMneListResponse.ProtoReflect.Descriptor instead.
-func (*GetMneListResponse) Descriptor() ([]byte, []int) {
+// Deprecated: Use SetResponse.ProtoReflect.Descriptor instead.
+func (*SetResponse) Descriptor() ([]byte, []int) {
 	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{8}
 }
 
-func (x *GetMneListResponse) GetTimestamp() int64 {
+func (x *SetResponse) GetTimestamp() int64 {
 	if x != nil {
 		return x.Timestamp
 	}
 	return 0
 }
 
-func (x *GetMneListResponse) GetPnd() *PrincipalNetworkDomain {
+func (x *SetResponse) GetId() string {
 	if x != nil {
-		return x.Pnd
+		return x.Id
 	}
-	return nil
+	return ""
 }
 
-func (x *GetMneListResponse) GetMne() []*ManagedNetworkElement {
+func (x *SetResponse) GetStatus() Status {
 	if x != nil {
-		return x.Mne
-	}
-	return nil
-}
-
-type GetFlattenedMneListResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	// TODO: Check if this is really needed. Perhaps a reference to the PND's ID
-	// is also sufficient.
-	Pnd *PrincipalNetworkDomain           `protobuf:"bytes,2,opt,name=pnd,proto3" json:"pnd,omitempty"`
-	Mne []*FlattenedManagedNetworkElement `protobuf:"bytes,3,rep,name=mne,proto3" json:"mne,omitempty"`
-}
-
-func (x *GetFlattenedMneListResponse) Reset() {
-	*x = GetFlattenedMneListResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+		return x.Status
 	}
+	return Status_STATUS_UNSPECIFIED
 }
 
-func (x *GetFlattenedMneListResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetFlattenedMneListResponse) ProtoMessage() {}
-
-func (x *GetFlattenedMneListResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_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)
-}
+var File_gosdn_pnd_pnd_proto protoreflect.FileDescriptor
 
-// Deprecated: Use GetFlattenedMneListResponse.ProtoReflect.Descriptor instead.
-func (*GetFlattenedMneListResponse) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{9}
+var file_gosdn_pnd_pnd_proto_rawDesc = []byte{
+	0x0a, 0x13, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x70, 0x6e, 0x64, 0x2f, 0x70, 0x6e, 0x64, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64,
+	0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e,
+	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
+	0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x1a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65,
+	0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70,
+	0x6f, 0x72, 0x74, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x73, 0x6f, 0x75, 0x74, 0x68,
+	0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x6e, 0x65,
+	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x65, 0x74,
+	0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70,
+	0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
+	0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x22, 0x5e, 0x0a, 0x16, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65,
+	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69,
+	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+	0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+	0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x22, 0x43, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
+	0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
+	0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0xa0, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x62,
+	0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a,
+	0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70,
+	0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e,
+	0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65,
+	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64,
+	0x12, 0x37, 0x0a, 0x03, 0x73, 0x62, 0x69, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e,
+	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64,
+	0x2e, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72,
+	0x66, 0x61, 0x63, 0x65, 0x52, 0x03, 0x73, 0x62, 0x69, 0x22, 0x51, 0x0a, 0x0d, 0x47, 0x65, 0x74,
+	0x53, 0x62, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x64, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69,
+	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x9c, 0x01, 0x0a,
+	0x0e, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a,
+	0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73,
+	0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c,
+	0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70,
+	0x6e, 0x64, 0x12, 0x37, 0x0a, 0x03, 0x73, 0x62, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x25, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75,
+	0x6e, 0x64, 0x2e, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x74,
+	0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x03, 0x73, 0x62, 0x69, 0x22, 0x68, 0x0a, 0x11, 0x53,
+	0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x23,
+	0x0a, 0x03, 0x73, 0x62, 0x69, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f,
+	0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x62, 0x69, 0x52, 0x03,
+	0x73, 0x62, 0x69, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x37, 0x0a, 0x06, 0x53, 0x65, 0x74, 0x53, 0x62, 0x69, 0x12,
+	0x2d, 0x0a, 0x08, 0x73, 0x62, 0x69, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0e, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x62,
+	0x69, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x73, 0x62, 0x69, 0x54, 0x79, 0x70, 0x65, 0x22, 0x93,
+	0x01, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
+	0x61, 0x6d, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e,
+	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34,
+	0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65,
+	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x73, 0x22, 0x66, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+	0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+	0x64, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x0e, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x74,
+	0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2a, 0x6d, 0x0a, 0x07,
+	0x53, 0x62, 0x69, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x42, 0x49, 0x5f, 0x54,
+	0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
+	0x00, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x42, 0x49, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x50,
+	0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x42,
+	0x49, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52,
+	0x49, 0x53, 0x45, 0x44, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x42, 0x49, 0x5f, 0x54, 0x59,
+	0x50, 0x45, 0x5f, 0x50, 0x4c, 0x55, 0x47, 0x49, 0x4e, 0x10, 0x03, 0x2a, 0x41, 0x0a, 0x06, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f,
+	0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a,
+	0x09, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c,
+	0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x32, 0xb8,
+	0x02, 0x0a, 0x0a, 0x50, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x63, 0x0a,
+	0x0a, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x67, 0x6f,
+	0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69,
+	0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x73, 0x64,
+	0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12,
+	0x12, 0x10, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x62,
+	0x69, 0x73, 0x12, 0x5d, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x12, 0x18, 0x2e, 0x67,
+	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70,
+	0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x70, 0x6e, 0x64, 0x73,
+	0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x62, 0x69, 0x73, 0x2f, 0x7b, 0x73, 0x69, 0x64,
+	0x7d, 0x12, 0x66, 0x0a, 0x0a, 0x53, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x12,
+	0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x53,
+	0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e,
+	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x62, 0x69,
+	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3,
+	0xe4, 0x93, 0x02, 0x15, 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b,
+	0x70, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x62, 0x69, 0x73, 0x42, 0xae, 0x02, 0x5a, 0x2d, 0x63, 0x6f,
+	0x64, 0x65, 0x2e, 0x66, 0x62, 0x69, 0x2e, 0x68, 0x2d, 0x64, 0x61, 0x2e, 0x64, 0x65, 0x2f, 0x64,
+	0x61, 0x6e, 0x65, 0x74, 0x2f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67,
+	0x6f, 0x2f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x70, 0x6e, 0x64, 0x92, 0x41, 0xfb, 0x01, 0x12,
+	0xf8, 0x01, 0x0a, 0x10, 0x67, 0x6f, 0x53, 0x44, 0x4e, 0x20, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x62,
+	0x6f, 0x75, 0x6e, 0x64, 0x12, 0x4d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x20, 0x42,
+	0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x47, 0x6f, 0x20, 0x63, 0x6f, 0x64, 0x65,
+	0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x6f, 0x53, 0x44, 0x4e, 0x20, 0x6e,
+	0x6f, 0x72, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66,
+	0x61, 0x63, 0x65, 0x22, 0x3e, 0x0a, 0x18, 0x67, 0x6f, 0x53, 0x44, 0x4e, 0x20, 0x4e, 0x6f, 0x72,
+	0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12,
+	0x22, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x66, 0x62,
+	0x69, 0x2e, 0x68, 0x2d, 0x64, 0x61, 0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61, 0x6e, 0x65, 0x74, 0x2f,
+	0x61, 0x70, 0x69, 0x2a, 0x50, 0x0a, 0x14, 0x42, 0x53, 0x44, 0x20, 0x33, 0x2d, 0x43, 0x6c, 0x61,
+	0x75, 0x73, 0x65, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x68, 0x74, 0x74,
+	0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x66, 0x62, 0x69, 0x2e, 0x68, 0x2d,
+	0x64, 0x61, 0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f,
+	0x2d, 0x2f, 0x62, 0x6c, 0x6f, 0x62, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x4c, 0x49,
+	0x43, 0x45, 0x4e, 0x53, 0x45, 0x32, 0x03, 0x30, 0x2e, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x33,
 }
 
-func (x *GetFlattenedMneListResponse) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
+var (
+	file_gosdn_pnd_pnd_proto_rawDescOnce sync.Once
+	file_gosdn_pnd_pnd_proto_rawDescData = file_gosdn_pnd_pnd_proto_rawDesc
+)
 
-func (x *GetFlattenedMneListResponse) GetPnd() *PrincipalNetworkDomain {
-	if x != nil {
-		return x.Pnd
-	}
-	return nil
+func file_gosdn_pnd_pnd_proto_rawDescGZIP() []byte {
+	file_gosdn_pnd_pnd_proto_rawDescOnce.Do(func() {
+		file_gosdn_pnd_pnd_proto_rawDescData = protoimpl.X.CompressGZIP(file_gosdn_pnd_pnd_proto_rawDescData)
+	})
+	return file_gosdn_pnd_pnd_proto_rawDescData
 }
 
-func (x *GetFlattenedMneListResponse) GetMne() []*FlattenedManagedNetworkElement {
-	if x != nil {
-		return x.Mne
-	}
-	return nil
+var file_gosdn_pnd_pnd_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_gosdn_pnd_pnd_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
+var file_gosdn_pnd_pnd_proto_goTypes = []interface{}{
+	(SbiType)(0),                           // 0: gosdn.pnd.SbiType
+	(Status)(0),                            // 1: gosdn.pnd.Status
+	(*PrincipalNetworkDomain)(nil),         // 2: gosdn.pnd.PrincipalNetworkDomain
+	(*GetSbiListRequest)(nil),              // 3: gosdn.pnd.GetSbiListRequest
+	(*GetSbiListResponse)(nil),             // 4: gosdn.pnd.GetSbiListResponse
+	(*GetSbiRequest)(nil),                  // 5: gosdn.pnd.GetSbiRequest
+	(*GetSbiResponse)(nil),                 // 6: gosdn.pnd.GetSbiResponse
+	(*SetSbiListRequest)(nil),              // 7: gosdn.pnd.SetSbiListRequest
+	(*SetSbi)(nil),                         // 8: gosdn.pnd.SetSbi
+	(*SetSbiListResponse)(nil),             // 9: gosdn.pnd.SetSbiListResponse
+	(*SetResponse)(nil),                    // 10: gosdn.pnd.SetResponse
+	(*southbound.SouthboundInterface)(nil), // 11: gosdn.southbound.SouthboundInterface
 }
-
-type GetSbiResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	// TODO: Check if this is really needed. Perhaps a reference to the PND's ID
-	// is also sufficient.
-	Pnd *PrincipalNetworkDomain         `protobuf:"bytes,2,opt,name=pnd,proto3" json:"pnd,omitempty"`
-	Sbi *southbound.SouthboundInterface `protobuf:"bytes,3,opt,name=sbi,proto3" json:"sbi,omitempty"`
+var file_gosdn_pnd_pnd_proto_depIdxs = []int32{
+	2,  // 0: gosdn.pnd.GetSbiListResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
+	11, // 1: gosdn.pnd.GetSbiListResponse.sbi:type_name -> gosdn.southbound.SouthboundInterface
+	2,  // 2: gosdn.pnd.GetSbiResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
+	11, // 3: gosdn.pnd.GetSbiResponse.sbi:type_name -> gosdn.southbound.SouthboundInterface
+	8,  // 4: gosdn.pnd.SetSbiListRequest.sbi:type_name -> gosdn.pnd.SetSbi
+	0,  // 5: gosdn.pnd.SetSbi.sbi_type:type_name -> gosdn.pnd.SbiType
+	1,  // 6: gosdn.pnd.SetSbiListResponse.status:type_name -> gosdn.pnd.Status
+	10, // 7: gosdn.pnd.SetSbiListResponse.responses:type_name -> gosdn.pnd.SetResponse
+	1,  // 8: gosdn.pnd.SetResponse.status:type_name -> gosdn.pnd.Status
+	3,  // 9: gosdn.pnd.PndService.GetSbiList:input_type -> gosdn.pnd.GetSbiListRequest
+	5,  // 10: gosdn.pnd.PndService.GetSbi:input_type -> gosdn.pnd.GetSbiRequest
+	7,  // 11: gosdn.pnd.PndService.SetSbiList:input_type -> gosdn.pnd.SetSbiListRequest
+	4,  // 12: gosdn.pnd.PndService.GetSbiList:output_type -> gosdn.pnd.GetSbiListResponse
+	6,  // 13: gosdn.pnd.PndService.GetSbi:output_type -> gosdn.pnd.GetSbiResponse
+	9,  // 14: gosdn.pnd.PndService.SetSbiList:output_type -> gosdn.pnd.SetSbiListResponse
+	12, // [12:15] is the sub-list for method output_type
+	9,  // [9:12] is the sub-list for method input_type
+	9,  // [9:9] is the sub-list for extension type_name
+	9,  // [9:9] is the sub-list for extension extendee
+	0,  // [0:9] is the sub-list for field type_name
 }
 
-func (x *GetSbiResponse) Reset() {
-	*x = GetSbiResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func init() { file_gosdn_pnd_pnd_proto_init() }
+func file_gosdn_pnd_pnd_proto_init() {
+	if File_gosdn_pnd_pnd_proto != nil {
+		return
 	}
-}
-
-func (x *GetSbiResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetSbiResponse) ProtoMessage() {}
-
-func (x *GetSbiResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
+	if !protoimpl.UnsafeEnabled {
+		file_gosdn_pnd_pnd_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PrincipalNetworkDomain); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
 		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetSbiResponse.ProtoReflect.Descriptor instead.
-func (*GetSbiResponse) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *GetSbiResponse) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *GetSbiResponse) GetPnd() *PrincipalNetworkDomain {
-	if x != nil {
-		return x.Pnd
-	}
-	return nil
-}
-
-func (x *GetSbiResponse) GetSbi() *southbound.SouthboundInterface {
-	if x != nil {
-		return x.Sbi
-	}
-	return nil
-}
-
-type GetSbiListResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	// TODO: Check if this is really needed. Perhaps a reference to the PND's ID
-	// is also sufficient.
-	Pnd *PrincipalNetworkDomain           `protobuf:"bytes,2,opt,name=pnd,proto3" json:"pnd,omitempty"`
-	Sbi []*southbound.SouthboundInterface `protobuf:"bytes,3,rep,name=sbi,proto3" json:"sbi,omitempty"`
-}
-
-func (x *GetSbiListResponse) Reset() {
-	*x = GetSbiListResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GetSbiListResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetSbiListResponse) ProtoMessage() {}
-
-func (x *GetSbiListResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[11]
-	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 GetSbiListResponse.ProtoReflect.Descriptor instead.
-func (*GetSbiListResponse) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *GetSbiListResponse) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *GetSbiListResponse) GetPnd() *PrincipalNetworkDomain {
-	if x != nil {
-		return x.Pnd
-	}
-	return nil
-}
-
-func (x *GetSbiListResponse) GetSbi() []*southbound.SouthboundInterface {
-	if x != nil {
-		return x.Sbi
-	}
-	return nil
-}
-
-type GetPathResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	// TODO: Check if this is really needed. Perhaps a reference to the PND's ID
-	// is also sufficient.
-	Pnd             *PrincipalNetworkDomain `protobuf:"bytes,2,opt,name=pnd,proto3" json:"pnd,omitempty"`
-	MneNotification []*gnmi.Notification    `protobuf:"bytes,3,rep,name=mne_notification,json=mneNotification,proto3" json:"mne_notification,omitempty"`
-}
-
-func (x *GetPathResponse) Reset() {
-	*x = GetPathResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GetPathResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetPathResponse) ProtoMessage() {}
-
-func (x *GetPathResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[12]
-	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 GetPathResponse.ProtoReflect.Descriptor instead.
-func (*GetPathResponse) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *GetPathResponse) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *GetPathResponse) GetPnd() *PrincipalNetworkDomain {
-	if x != nil {
-		return x.Pnd
-	}
-	return nil
-}
-
-func (x *GetPathResponse) GetMneNotification() []*gnmi.Notification {
-	if x != nil {
-		return x.MneNotification
-	}
-	return nil
-}
-
-type GetChangeResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	// TODO: Check if this is really needed. Perhaps a reference to the PND's ID
-	// is also sufficient.
-	Pnd    *PrincipalNetworkDomain `protobuf:"bytes,2,opt,name=pnd,proto3" json:"pnd,omitempty"`
-	Change []*Change               `protobuf:"bytes,3,rep,name=change,proto3" json:"change,omitempty"`
-}
-
-func (x *GetChangeResponse) Reset() {
-	*x = GetChangeResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GetChangeResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetChangeResponse) ProtoMessage() {}
-
-func (x *GetChangeResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[13]
-	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 GetChangeResponse.ProtoReflect.Descriptor instead.
-func (*GetChangeResponse) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *GetChangeResponse) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *GetChangeResponse) GetPnd() *PrincipalNetworkDomain {
-	if x != nil {
-		return x.Pnd
-	}
-	return nil
-}
-
-func (x *GetChangeResponse) GetChange() []*Change {
-	if x != nil {
-		return x.Change
-	}
-	return nil
-}
-
-type GetChangeListResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	// TODO: Check if this is really needed. Perhaps a reference to the PND's ID
-	// is also sufficient.
-	Pnd    *PrincipalNetworkDomain `protobuf:"bytes,2,opt,name=pnd,proto3" json:"pnd,omitempty"`
-	Change []*Change               `protobuf:"bytes,3,rep,name=change,proto3" json:"change,omitempty"`
-}
-
-func (x *GetChangeListResponse) Reset() {
-	*x = GetChangeListResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GetChangeListResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetChangeListResponse) ProtoMessage() {}
-
-func (x *GetChangeListResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[14]
-	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 GetChangeListResponse.ProtoReflect.Descriptor instead.
-func (*GetChangeListResponse) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *GetChangeListResponse) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *GetChangeListResponse) GetPnd() *PrincipalNetworkDomain {
-	if x != nil {
-		return x.Pnd
-	}
-	return nil
-}
-
-func (x *GetChangeListResponse) GetChange() []*Change {
-	if x != nil {
-		return x.Change
-	}
-	return nil
-}
-
-type PrincipalNetworkDomain struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Id          string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Name        string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
-}
-
-func (x *PrincipalNetworkDomain) Reset() {
-	*x = PrincipalNetworkDomain{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *PrincipalNetworkDomain) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PrincipalNetworkDomain) ProtoMessage() {}
-
-func (x *PrincipalNetworkDomain) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[15]
-	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 PrincipalNetworkDomain.ProtoReflect.Descriptor instead.
-func (*PrincipalNetworkDomain) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *PrincipalNetworkDomain) GetId() string {
-	if x != nil {
-		return x.Id
-	}
-	return ""
-}
-
-func (x *PrincipalNetworkDomain) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-func (x *PrincipalNetworkDomain) GetDescription() string {
-	if x != nil {
-		return x.Description
-	}
-	return ""
-}
-
-type ManagedNetworkElement struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Id              string                          `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Name            string                          `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-	MneNotification []*gnmi.Notification            `protobuf:"bytes,3,rep,name=mne_notification,json=mneNotification,proto3" json:"mne_notification,omitempty"`
-	Sbi             *southbound.SouthboundInterface `protobuf:"bytes,4,opt,name=sbi,proto3" json:"sbi,omitempty"`
-}
-
-func (x *ManagedNetworkElement) Reset() {
-	*x = ManagedNetworkElement{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ManagedNetworkElement) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ManagedNetworkElement) ProtoMessage() {}
-
-func (x *ManagedNetworkElement) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[16]
-	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 ManagedNetworkElement.ProtoReflect.Descriptor instead.
-func (*ManagedNetworkElement) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *ManagedNetworkElement) GetId() string {
-	if x != nil {
-		return x.Id
-	}
-	return ""
-}
-
-func (x *ManagedNetworkElement) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-func (x *ManagedNetworkElement) GetMneNotification() []*gnmi.Notification {
-	if x != nil {
-		return x.MneNotification
-	}
-	return nil
-}
-
-func (x *ManagedNetworkElement) GetSbi() *southbound.SouthboundInterface {
-	if x != nil {
-		return x.Sbi
-	}
-	return nil
-}
-
-type FlattenedManagedNetworkElement struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Id   string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-	Sbi  string `protobuf:"bytes,3,opt,name=sbi,proto3" json:"sbi,omitempty"`
-}
-
-func (x *FlattenedManagedNetworkElement) Reset() {
-	*x = FlattenedManagedNetworkElement{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[17]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FlattenedManagedNetworkElement) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FlattenedManagedNetworkElement) ProtoMessage() {}
-
-func (x *FlattenedManagedNetworkElement) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[17]
-	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 FlattenedManagedNetworkElement.ProtoReflect.Descriptor instead.
-func (*FlattenedManagedNetworkElement) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *FlattenedManagedNetworkElement) GetId() string {
-	if x != nil {
-		return x.Id
-	}
-	return ""
-}
-
-func (x *FlattenedManagedNetworkElement) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-func (x *FlattenedManagedNetworkElement) GetSbi() string {
-	if x != nil {
-		return x.Sbi
-	}
-	return ""
-}
-
-type Change struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Id    string             `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Age   int64              `protobuf:"varint,2,opt,name=age,proto3" json:"age,omitempty"`
-	State ChangeState        `protobuf:"varint,3,opt,name=state,proto3,enum=gosdn.pnd.ChangeState" json:"state,omitempty"`
-	Diff  *gnmi.Notification `protobuf:"bytes,4,opt,name=diff,proto3" json:"diff,omitempty"`
-}
-
-func (x *Change) Reset() {
-	*x = Change{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[18]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Change) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Change) ProtoMessage() {}
-
-func (x *Change) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[18]
-	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 Change.ProtoReflect.Descriptor instead.
-func (*Change) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *Change) GetId() string {
-	if x != nil {
-		return x.Id
-	}
-	return ""
-}
-
-func (x *Change) GetAge() int64 {
-	if x != nil {
-		return x.Age
-	}
-	return 0
-}
-
-func (x *Change) GetState() ChangeState {
-	if x != nil {
-		return x.State
-	}
-	return ChangeState_CHANGE_STATE_UNSPECIFIED
-}
-
-func (x *Change) GetDiff() *gnmi.Notification {
-	if x != nil {
-		return x.Diff
-	}
-	return nil
-}
-
-type SetMneListRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64     `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Mne       []*SetMne `protobuf:"bytes,2,rep,name=mne,proto3" json:"mne,omitempty"`
-	Pid       string    `protobuf:"bytes,3,opt,name=pid,proto3" json:"pid,omitempty"`
-}
-
-func (x *SetMneListRequest) Reset() {
-	*x = SetMneListRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[19]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SetMneListRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SetMneListRequest) ProtoMessage() {}
-
-func (x *SetMneListRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[19]
-	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 SetMneListRequest.ProtoReflect.Descriptor instead.
-func (*SetMneListRequest) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *SetMneListRequest) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *SetMneListRequest) GetMne() []*SetMne {
-	if x != nil {
-		return x.Mne
-	}
-	return nil
-}
-
-func (x *SetMneListRequest) GetPid() string {
-	if x != nil {
-		return x.Pid
-	}
-	return ""
-}
-
-type SetSbiListRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64     `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Sbi       []*SetSbi `protobuf:"bytes,2,rep,name=sbi,proto3" json:"sbi,omitempty"`
-	Pid       string    `protobuf:"bytes,3,opt,name=pid,proto3" json:"pid,omitempty"`
-}
-
-func (x *SetSbiListRequest) Reset() {
-	*x = SetSbiListRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[20]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SetSbiListRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SetSbiListRequest) ProtoMessage() {}
-
-func (x *SetSbiListRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[20]
-	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 SetSbiListRequest.ProtoReflect.Descriptor instead.
-func (*SetSbiListRequest) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *SetSbiListRequest) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *SetSbiListRequest) GetSbi() []*SetSbi {
-	if x != nil {
-		return x.Sbi
-	}
-	return nil
-}
-
-func (x *SetSbiListRequest) GetPid() string {
-	if x != nil {
-		return x.Pid
-	}
-	return ""
-}
-
-type SetChangeListRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64        `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Change    []*SetChange `protobuf:"bytes,2,rep,name=change,proto3" json:"change,omitempty"`
-	Pid       string       `protobuf:"bytes,3,opt,name=pid,proto3" json:"pid,omitempty"`
-}
-
-func (x *SetChangeListRequest) Reset() {
-	*x = SetChangeListRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[21]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SetChangeListRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SetChangeListRequest) ProtoMessage() {}
-
-func (x *SetChangeListRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[21]
-	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 SetChangeListRequest.ProtoReflect.Descriptor instead.
-func (*SetChangeListRequest) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *SetChangeListRequest) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *SetChangeListRequest) GetChange() []*SetChange {
-	if x != nil {
-		return x.Change
-	}
-	return nil
-}
-
-func (x *SetChangeListRequest) GetPid() string {
-	if x != nil {
-		return x.Pid
-	}
-	return ""
-}
-
-type SetPathListRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp     int64            `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	ChangeRequest []*ChangeRequest `protobuf:"bytes,2,rep,name=change_request,json=changeRequest,proto3" json:"change_request,omitempty"`
-	Pid           string           `protobuf:"bytes,3,opt,name=pid,proto3" json:"pid,omitempty"`
-}
-
-func (x *SetPathListRequest) Reset() {
-	*x = SetPathListRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[22]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SetPathListRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SetPathListRequest) ProtoMessage() {}
-
-func (x *SetPathListRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[22]
-	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 SetPathListRequest.ProtoReflect.Descriptor instead.
-func (*SetPathListRequest) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *SetPathListRequest) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *SetPathListRequest) GetChangeRequest() []*ChangeRequest {
-	if x != nil {
-		return x.ChangeRequest
-	}
-	return nil
-}
-
-func (x *SetPathListRequest) GetPid() string {
-	if x != nil {
-		return x.Pid
-	}
-	return ""
-}
-
-//TODO: rename
-type ChangeRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Mneid string       `protobuf:"bytes,1,opt,name=mneid,proto3" json:"mneid,omitempty"`
-	Path  string       `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
-	Value string       `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
-	ApiOp ApiOperation `protobuf:"varint,4,opt,name=api_op,json=apiOp,proto3,enum=gosdn.pnd.ApiOperation" json:"api_op,omitempty"`
-}
-
-func (x *ChangeRequest) Reset() {
-	*x = ChangeRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[23]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ChangeRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChangeRequest) ProtoMessage() {}
-
-func (x *ChangeRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[23]
-	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 ChangeRequest.ProtoReflect.Descriptor instead.
-func (*ChangeRequest) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *ChangeRequest) GetMneid() string {
-	if x != nil {
-		return x.Mneid
-	}
-	return ""
-}
-
-func (x *ChangeRequest) GetPath() string {
-	if x != nil {
-		return x.Path
-	}
-	return ""
-}
-
-func (x *ChangeRequest) GetValue() string {
-	if x != nil {
-		return x.Value
-	}
-	return ""
-}
-
-func (x *ChangeRequest) GetApiOp() ApiOperation {
-	if x != nil {
-		return x.ApiOp
-	}
-	return ApiOperation_API_OPERATION_UNSPECIFIED
-}
-
-type SetMne struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Address         string                          `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
-	Sbi             *southbound.SouthboundInterface `protobuf:"bytes,2,opt,name=sbi,proto3" json:"sbi,omitempty"`
-	MneName         string                          `protobuf:"bytes,3,opt,name=mne_name,json=mneName,proto3" json:"mne_name,omitempty"`
-	TransportOption *transport.TransportOption      `protobuf:"bytes,4,opt,name=transport_option,json=transportOption,proto3" json:"transport_option,omitempty"`
-}
-
-func (x *SetMne) Reset() {
-	*x = SetMne{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[24]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SetMne) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SetMne) ProtoMessage() {}
-
-func (x *SetMne) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[24]
-	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 SetMne.ProtoReflect.Descriptor instead.
-func (*SetMne) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{24}
-}
-
-func (x *SetMne) GetAddress() string {
-	if x != nil {
-		return x.Address
-	}
-	return ""
-}
-
-func (x *SetMne) GetSbi() *southbound.SouthboundInterface {
-	if x != nil {
-		return x.Sbi
-	}
-	return nil
-}
-
-func (x *SetMne) GetMneName() string {
-	if x != nil {
-		return x.MneName
-	}
-	return ""
-}
-
-func (x *SetMne) GetTransportOption() *transport.TransportOption {
-	if x != nil {
-		return x.TransportOption
-	}
-	return nil
-}
-
-type SetSbi struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	SbiType SbiType `protobuf:"varint,1,opt,name=sbi_type,json=sbiType,proto3,enum=gosdn.pnd.SbiType" json:"sbi_type,omitempty"`
-}
-
-func (x *SetSbi) Reset() {
-	*x = SetSbi{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[25]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SetSbi) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SetSbi) ProtoMessage() {}
-
-func (x *SetSbi) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[25]
-	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 SetSbi.ProtoReflect.Descriptor instead.
-func (*SetSbi) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{25}
-}
-
-func (x *SetSbi) GetSbiType() SbiType {
-	if x != nil {
-		return x.SbiType
-	}
-	return SbiType_SBI_TYPE_UNSPECIFIED
-}
-
-type SetChange struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Cuid string    `protobuf:"bytes,1,opt,name=cuid,proto3" json:"cuid,omitempty"`
-	Op   Operation `protobuf:"varint,2,opt,name=op,proto3,enum=gosdn.pnd.Operation" json:"op,omitempty"`
-}
-
-func (x *SetChange) Reset() {
-	*x = SetChange{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[26]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SetChange) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SetChange) ProtoMessage() {}
-
-func (x *SetChange) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[26]
-	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 SetChange.ProtoReflect.Descriptor instead.
-func (*SetChange) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{26}
-}
-
-func (x *SetChange) GetCuid() string {
-	if x != nil {
-		return x.Cuid
-	}
-	return ""
-}
-
-func (x *SetChange) GetOp() Operation {
-	if x != nil {
-		return x.Op
-	}
-	return Operation_OPERATION_UNSPECIFIED
-}
-
-type SetResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Id        string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
-	Status    Status `protobuf:"varint,3,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
-}
-
-func (x *SetResponse) Reset() {
-	*x = SetResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[27]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SetResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SetResponse) ProtoMessage() {}
-
-func (x *SetResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[27]
-	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 SetResponse.ProtoReflect.Descriptor instead.
-func (*SetResponse) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{27}
-}
-
-func (x *SetResponse) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *SetResponse) GetId() string {
-	if x != nil {
-		return x.Id
-	}
-	return ""
-}
-
-func (x *SetResponse) GetStatus() Status {
-	if x != nil {
-		return x.Status
-	}
-	return Status_STATUS_UNSPECIFIED
-}
-
-type SetMneListResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64          `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Status    Status         `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
-	Responses []*SetResponse `protobuf:"bytes,3,rep,name=responses,proto3" json:"responses,omitempty"`
-}
-
-func (x *SetMneListResponse) Reset() {
-	*x = SetMneListResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[28]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SetMneListResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SetMneListResponse) ProtoMessage() {}
-
-func (x *SetMneListResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[28]
-	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 SetMneListResponse.ProtoReflect.Descriptor instead.
-func (*SetMneListResponse) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{28}
-}
-
-func (x *SetMneListResponse) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *SetMneListResponse) GetStatus() Status {
-	if x != nil {
-		return x.Status
-	}
-	return Status_STATUS_UNSPECIFIED
-}
-
-func (x *SetMneListResponse) GetResponses() []*SetResponse {
-	if x != nil {
-		return x.Responses
-	}
-	return nil
-}
-
-type SetChangeListResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64          `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Status    Status         `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
-	Responses []*SetResponse `protobuf:"bytes,3,rep,name=responses,proto3" json:"responses,omitempty"`
-}
-
-func (x *SetChangeListResponse) Reset() {
-	*x = SetChangeListResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[29]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SetChangeListResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SetChangeListResponse) ProtoMessage() {}
-
-func (x *SetChangeListResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[29]
-	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 SetChangeListResponse.ProtoReflect.Descriptor instead.
-func (*SetChangeListResponse) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{29}
-}
-
-func (x *SetChangeListResponse) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *SetChangeListResponse) GetStatus() Status {
-	if x != nil {
-		return x.Status
-	}
-	return Status_STATUS_UNSPECIFIED
-}
-
-func (x *SetChangeListResponse) GetResponses() []*SetResponse {
-	if x != nil {
-		return x.Responses
-	}
-	return nil
-}
-
-type SetChangeResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Status    Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
-}
-
-func (x *SetChangeResponse) Reset() {
-	*x = SetChangeResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[30]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SetChangeResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SetChangeResponse) ProtoMessage() {}
-
-func (x *SetChangeResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[30]
-	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 SetChangeResponse.ProtoReflect.Descriptor instead.
-func (*SetChangeResponse) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{30}
-}
-
-func (x *SetChangeResponse) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *SetChangeResponse) GetStatus() Status {
-	if x != nil {
-		return x.Status
-	}
-	return Status_STATUS_UNSPECIFIED
-}
-
-type SetSbiListResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64          `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Status    Status         `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
-	Responses []*SetResponse `protobuf:"bytes,3,rep,name=responses,proto3" json:"responses,omitempty"`
-}
-
-func (x *SetSbiListResponse) Reset() {
-	*x = SetSbiListResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[31]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SetSbiListResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SetSbiListResponse) ProtoMessage() {}
-
-func (x *SetSbiListResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[31]
-	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 SetSbiListResponse.ProtoReflect.Descriptor instead.
-func (*SetSbiListResponse) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{31}
-}
-
-func (x *SetSbiListResponse) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *SetSbiListResponse) GetStatus() Status {
-	if x != nil {
-		return x.Status
-	}
-	return Status_STATUS_UNSPECIFIED
-}
-
-func (x *SetSbiListResponse) GetResponses() []*SetResponse {
-	if x != nil {
-		return x.Responses
-	}
-	return nil
-}
-
-type SetPathListResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64          `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Status    Status         `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
-	Responses []*SetResponse `protobuf:"bytes,3,rep,name=responses,proto3" json:"responses,omitempty"`
-}
-
-func (x *SetPathListResponse) Reset() {
-	*x = SetPathListResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[32]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SetPathListResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SetPathListResponse) ProtoMessage() {}
-
-func (x *SetPathListResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[32]
-	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 SetPathListResponse.ProtoReflect.Descriptor instead.
-func (*SetPathListResponse) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{32}
-}
-
-func (x *SetPathListResponse) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *SetPathListResponse) GetStatus() Status {
-	if x != nil {
-		return x.Status
-	}
-	return Status_STATUS_UNSPECIFIED
-}
-
-func (x *SetPathListResponse) GetResponses() []*SetResponse {
-	if x != nil {
-		return x.Responses
-	}
-	return nil
-}
-
-type DeleteMneRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Pid       string `protobuf:"bytes,2,opt,name=pid,proto3" json:"pid,omitempty"`
-	Mneid     string `protobuf:"bytes,3,opt,name=mneid,proto3" json:"mneid,omitempty"`
-}
-
-func (x *DeleteMneRequest) Reset() {
-	*x = DeleteMneRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[33]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *DeleteMneRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteMneRequest) ProtoMessage() {}
-
-func (x *DeleteMneRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[33]
-	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 DeleteMneRequest.ProtoReflect.Descriptor instead.
-func (*DeleteMneRequest) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{33}
-}
-
-func (x *DeleteMneRequest) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *DeleteMneRequest) GetPid() string {
-	if x != nil {
-		return x.Pid
-	}
-	return ""
-}
-
-func (x *DeleteMneRequest) GetMneid() string {
-	if x != nil {
-		return x.Mneid
-	}
-	return ""
-}
-
-type DeleteMneResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Status    Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
-}
-
-func (x *DeleteMneResponse) Reset() {
-	*x = DeleteMneResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[34]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *DeleteMneResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteMneResponse) ProtoMessage() {}
-
-func (x *DeleteMneResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[34]
-	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 DeleteMneResponse.ProtoReflect.Descriptor instead.
-func (*DeleteMneResponse) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{34}
-}
-
-func (x *DeleteMneResponse) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *DeleteMneResponse) GetStatus() Status {
-	if x != nil {
-		return x.Status
-	}
-	return Status_STATUS_UNSPECIFIED
-}
-
-type SubscribePathRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp int64             `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Mneid     string            `protobuf:"bytes,2,opt,name=mneid,proto3" json:"mneid,omitempty"`
-	Pid       string            `protobuf:"bytes,3,opt,name=pid,proto3" json:"pid,omitempty"`
-	Sublist   *SubscriptionList `protobuf:"bytes,4,opt,name=sublist,proto3" json:"sublist,omitempty"`
-}
-
-func (x *SubscribePathRequest) Reset() {
-	*x = SubscribePathRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[35]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SubscribePathRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SubscribePathRequest) ProtoMessage() {}
-
-func (x *SubscribePathRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[35]
-	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 SubscribePathRequest.ProtoReflect.Descriptor instead.
-func (*SubscribePathRequest) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{35}
-}
-
-func (x *SubscribePathRequest) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *SubscribePathRequest) GetMneid() string {
-	if x != nil {
-		return x.Mneid
-	}
-	return ""
-}
-
-func (x *SubscribePathRequest) GetPid() string {
-	if x != nil {
-		return x.Pid
-	}
-	return ""
-}
-
-func (x *SubscribePathRequest) GetSublist() *SubscriptionList {
-	if x != nil {
-		return x.Sublist
-	}
-	return nil
-}
-
-// The mode determines how the target should trigger updates to be sent.
-// Reference: gNMI Specification Section 3.5.1.2
-type SubscriptionList struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Subscription []*Subscription  `protobuf:"bytes,1,rep,name=subscription,proto3" json:"subscription,omitempty"`
-	Mode         SubscriptionMode `protobuf:"varint,2,opt,name=mode,proto3,enum=gosdn.pnd.SubscriptionMode" json:"mode,omitempty"`
-}
-
-func (x *SubscriptionList) Reset() {
-	*x = SubscriptionList{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[36]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SubscriptionList) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SubscriptionList) ProtoMessage() {}
-
-func (x *SubscriptionList) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[36]
-	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 SubscriptionList.ProtoReflect.Descriptor instead.
-func (*SubscriptionList) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{36}
-}
-
-func (x *SubscriptionList) GetSubscription() []*Subscription {
-	if x != nil {
-		return x.Subscription
-	}
-	return nil
-}
-
-func (x *SubscriptionList) GetMode() SubscriptionMode {
-	if x != nil {
-		return x.Mode
-	}
-	return SubscriptionMode_SUBSCRIPTION_MODE_UNSPECIFIED
-}
-
-type Subscription struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Path           string     `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
-	StreamMode     StreamMode `protobuf:"varint,2,opt,name=stream_mode,json=streamMode,proto3,enum=gosdn.pnd.StreamMode" json:"stream_mode,omitempty"`
-	SampleInterval uint64     `protobuf:"varint,3,opt,name=sample_interval,json=sampleInterval,proto3" json:"sample_interval,omitempty"` // time in ns between samples in SAMPLE mode.
-}
-
-func (x *Subscription) Reset() {
-	*x = Subscription{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[37]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Subscription) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Subscription) ProtoMessage() {}
-
-func (x *Subscription) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[37]
-	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 Subscription.ProtoReflect.Descriptor instead.
-func (*Subscription) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{37}
-}
-
-func (x *Subscription) GetPath() string {
-	if x != nil {
-		return x.Path
-	}
-	return ""
-}
-
-func (x *Subscription) GetStreamMode() StreamMode {
-	if x != nil {
-		return x.StreamMode
-	}
-	return StreamMode_STREAM_MODE_UNSPECIFIED
-}
-
-func (x *Subscription) GetSampleInterval() uint64 {
-	if x != nil {
-		return x.SampleInterval
-	}
-	return 0
-}
-
-type SubscribePathResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Timestamp       int64                `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Status          Status               `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
-	MneNotification []*gnmi.Notification `protobuf:"bytes,3,rep,name=mne_notification,json=mneNotification,proto3" json:"mne_notification,omitempty"`
-}
-
-func (x *SubscribePathResponse) Reset() {
-	*x = SubscribePathResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_gosdn_pnd_pnd_proto_msgTypes[38]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SubscribePathResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SubscribePathResponse) ProtoMessage() {}
-
-func (x *SubscribePathResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_gosdn_pnd_pnd_proto_msgTypes[38]
-	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 SubscribePathResponse.ProtoReflect.Descriptor instead.
-func (*SubscribePathResponse) Descriptor() ([]byte, []int) {
-	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{38}
-}
-
-func (x *SubscribePathResponse) GetTimestamp() int64 {
-	if x != nil {
-		return x.Timestamp
-	}
-	return 0
-}
-
-func (x *SubscribePathResponse) GetStatus() Status {
-	if x != nil {
-		return x.Status
-	}
-	return Status_STATUS_UNSPECIFIED
-}
-
-func (x *SubscribePathResponse) GetMneNotification() []*gnmi.Notification {
-	if x != nil {
-		return x.MneNotification
-	}
-	return nil
-}
-
-var File_gosdn_pnd_pnd_proto protoreflect.FileDescriptor
-
-var file_gosdn_pnd_pnd_proto_rawDesc = []byte{
-	0x0a, 0x13, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x70, 0x6e, 0x64, 0x2f, 0x70, 0x6e, 0x64, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64,
-	0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e,
-	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
-	0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x1a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65,
-	0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70,
-	0x6f, 0x72, 0x74, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x73, 0x6f, 0x75, 0x74, 0x68,
-	0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67,
-	0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x43, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4d, 0x6e, 0x65,
-	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74,
-	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
-	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x55, 0x0a, 0x0d, 0x47,
-	0x65, 0x74, 0x4d, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09,
-	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6e,
-	0x65, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64,
-	0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70,
-	0x69, 0x64, 0x22, 0x43, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
-	0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65,
-	0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x51, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x62,
-	0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
-	0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d,
-	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x64, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x46, 0x0a, 0x14, 0x47, 0x65,
-	0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
-	0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70,
-	0x69, 0x64, 0x22, 0x56, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
-	0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
-	0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x04, 0x63, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x6a, 0x0a, 0x0e, 0x47, 0x65,
-	0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09,
-	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6e,
-	0x65, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64,
-	0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
-	0x70, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4d, 0x6e,
-	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d,
-	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69,
-	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64,
-	0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72,
-	0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x32, 0x0a, 0x03,
-	0x6d, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64,
-	0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x4e, 0x65, 0x74,
-	0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x03, 0x6d, 0x6e, 0x65,
-	0x22, 0x9b, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
-	0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65,
-	0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50,
-	0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44,
-	0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x32, 0x0a, 0x03, 0x6d, 0x6e,
-	0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
-	0x70, 0x6e, 0x64, 0x2e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f,
-	0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x03, 0x6d, 0x6e, 0x65, 0x22, 0xad,
-	0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x65, 0x64, 0x4d,
-	0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c,
-	0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03,
-	0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64,
-	0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e,
-	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e,
-	0x64, 0x12, 0x3b, 0x0a, 0x03, 0x6d, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29,
-	0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x46, 0x6c, 0x61, 0x74, 0x74,
-	0x65, 0x6e, 0x65, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f,
-	0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x03, 0x6d, 0x6e, 0x65, 0x22, 0x9c,
-	0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
-	0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67,
-	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70,
-	0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52,
-	0x03, 0x70, 0x6e, 0x64, 0x12, 0x37, 0x0a, 0x03, 0x73, 0x62, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62,
-	0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x49,
-	0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x03, 0x73, 0x62, 0x69, 0x22, 0xa0, 0x01,
-	0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
-	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
-	0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e,
-	0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61,
-	0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x37, 0x0a, 0x03, 0x73, 0x62, 0x69, 0x18, 0x03,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75,
-	0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75,
-	0x6e, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x03, 0x73, 0x62, 0x69,
-	0x22, 0xa3, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
-	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
-	0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e,
-	0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61,
-	0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x3d, 0x0a, 0x10, 0x6d, 0x6e, 0x65, 0x5f, 0x6e,
-	0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x6e, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69,
-	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x91, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x68,
-	0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09,
-	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e,
-	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
-	0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74,
-	0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12,
-	0x29, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x43, 0x68, 0x61, 0x6e,
-	0x67, 0x65, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x15, 0x47,
-	0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
-	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
-	0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e,
-	0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61,
-	0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x29, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67,
-	0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
-	0x70, 0x6e, 0x64, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e,
-	0x67, 0x65, 0x22, 0x5e, 0x0a, 0x16, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e,
-	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02,
-	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04,
-	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
-	0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x22, 0xb3, 0x01, 0x0a, 0x15, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x4e, 0x65,
-	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02,
-	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04,
-	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
-	0x12, 0x3d, 0x0a, 0x10, 0x6d, 0x6e, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
-	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6e, 0x6d,
-	0x69, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f,
-	0x6d, 0x6e, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
-	0x37, 0x0a, 0x03, 0x73, 0x62, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67,
-	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e,
-	0x53, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66,
-	0x61, 0x63, 0x65, 0x52, 0x03, 0x73, 0x62, 0x69, 0x22, 0x56, 0x0a, 0x1e, 0x46, 0x6c, 0x61, 0x74,
-	0x74, 0x65, 0x6e, 0x65, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x4e, 0x65, 0x74, 0x77,
-	0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
-	0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10,
-	0x0a, 0x03, 0x73, 0x62, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x62, 0x69,
-	0x22, 0x80, 0x01, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69,
-	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61,
-	0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a,
-	0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x67,
-	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53,
-	0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x64,
-	0x69, 0x66, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6e, 0x6d, 0x69,
-	0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x64,
-	0x69, 0x66, 0x66, 0x22, 0x68, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73,
-	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
-	0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d,
-	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x23, 0x0a, 0x03, 0x6d, 0x6e, 0x65, 0x18, 0x02, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e,
-	0x53, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x52, 0x03, 0x6d, 0x6e, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70,
-	0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x68, 0x0a,
-	0x11, 0x53, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
-	0x12, 0x23, 0x0a, 0x03, 0x73, 0x62, 0x69, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x62, 0x69,
-	0x52, 0x03, 0x73, 0x62, 0x69, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x74, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x43, 0x68,
-	0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
-	0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2c, 0x0a,
-	0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61,
-	0x6e, 0x67, 0x65, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70,
-	0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x85, 0x01,
-	0x0a, 0x12, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
-	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
-	0x6d, 0x70, 0x12, 0x3f, 0x0a, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x73,
-	0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x7f, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04,
-	0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68,
-	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x61, 0x70, 0x69, 0x5f, 0x6f, 0x70,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70,
-	0x6e, 0x64, 0x2e, 0x41, 0x70, 0x69, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
-	0x05, 0x61, 0x70, 0x69, 0x4f, 0x70, 0x22, 0xc3, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x74, 0x4d, 0x6e,
-	0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x37, 0x0a, 0x03, 0x73,
-	0x62, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e,
-	0x2e, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x53, 0x6f, 0x75, 0x74,
-	0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52,
-	0x03, 0x73, 0x62, 0x69, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x6e, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6e, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12,
-	0x4b, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64,
-	0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e,
-	0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, 0x72, 0x61,
-	0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x37, 0x0a, 0x06,
-	0x53, 0x65, 0x74, 0x53, 0x62, 0x69, 0x12, 0x2d, 0x0a, 0x08, 0x73, 0x62, 0x69, 0x5f, 0x74, 0x79,
-	0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e,
-	0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x62, 0x69, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x73, 0x62,
-	0x69, 0x54, 0x79, 0x70, 0x65, 0x22, 0x45, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e,
-	0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x04, 0x63, 0x75, 0x69, 0x64, 0x12, 0x24, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x4f,
-	0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x6f, 0x70, 0x22, 0x66, 0x0a, 0x0b,
-	0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74,
-	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
-	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x74, 0x61,
-	0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64,
-	0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74,
-	0x61, 0x74, 0x75, 0x73, 0x22, 0x93, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x4c,
-	0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74,
-	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
-	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x74, 0x61,
-	0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64,
-	0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74,
-	0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
-	0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52,
-	0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, 0x96, 0x01, 0x0a, 0x15, 0x53,
-	0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
-	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
-	0x6d, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53,
-	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a,
-	0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x16, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x73, 0x22, 0x5c, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
-	0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d,
-	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70,
-	0x6e, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
-	0x73, 0x22, 0x93, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
-	0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d,
-	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70,
-	0x6e, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
-	0x73, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x03,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64,
-	0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, 0x94, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x50,
-	0x61, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
-	0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x29, 0x0a,
-	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
-	0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f,
-	0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, 0x58,
-	0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
-	0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70,
-	0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x22, 0x5c, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65,
-	0x74, 0x65, 0x4d, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a,
-	0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x73,
-	0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x67, 0x6f,
-	0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06,
-	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x93, 0x01, 0x0a, 0x14, 0x53, 0x75, 0x62, 0x73, 0x63,
-	0x72, 0x69, 0x62, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
-	0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x14, 0x0a,
-	0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6e,
-	0x65, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x35, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x74,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70,
-	0x6e, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c,
-	0x69, 0x73, 0x74, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x80, 0x01, 0x0a,
-	0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73,
-	0x74, 0x12, 0x3b, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
-	0x70, 0x6e, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f,
-	0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67,
-	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22,
-	0x83, 0x01, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
-	0x70, 0x61, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x6d,
-	0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x73, 0x64,
-	0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x65,
-	0x52, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x27, 0x0a, 0x0f,
-	0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x49, 0x6e, 0x74,
-	0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x9f, 0x01, 0x0a, 0x15, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,
-	0x69, 0x62, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
-	0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x29, 0x0a,
-	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
-	0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x10, 0x6d, 0x6e, 0x65, 0x5f,
-	0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69,
-	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x6e, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66,
-	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x9c, 0x01, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e,
-	0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41, 0x4e, 0x47,
-	0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
-	0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f,
-	0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12,
-	0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f,
-	0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x43,
-	0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46,
-	0x49, 0x52, 0x4d, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x41, 0x4e, 0x47,
-	0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4e, 0x53, 0x49, 0x53,
-	0x54, 0x45, 0x4e, 0x54, 0x10, 0x04, 0x2a, 0x7c, 0x0a, 0x0c, 0x41, 0x70, 0x69, 0x4f, 0x70, 0x65,
-	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50,
-	0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
-	0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50, 0x45,
-	0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12,
-	0x19, 0x0a, 0x15, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e,
-	0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50,
-	0x49, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45,
-	0x54, 0x45, 0x10, 0x03, 0x2a, 0x6d, 0x0a, 0x07, 0x53, 0x62, 0x69, 0x54, 0x79, 0x70, 0x65, 0x12,
-	0x18, 0x0a, 0x14, 0x53, 0x42, 0x49, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50,
-	0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x42, 0x49,
-	0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47,
-	0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x42, 0x49, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43,
-	0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x49, 0x53, 0x45, 0x44, 0x10, 0x02, 0x12, 0x13,
-	0x0a, 0x0f, 0x53, 0x42, 0x49, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4c, 0x55, 0x47, 0x49,
-	0x4e, 0x10, 0x03, 0x2a, 0x69, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e,
-	0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4f,
-	0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10,
-	0x01, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43,
-	0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x50, 0x45, 0x52, 0x41,
-	0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x10, 0x03, 0x2a, 0x41,
-	0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54,
-	0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
-	0x12, 0x0d, 0x0a, 0x09, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x4b, 0x10, 0x01, 0x12,
-	0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10,
-	0x02, 0x2a, 0x8b, 0x01, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52,
-	0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50,
-	0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x55, 0x42,
-	0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4f,
-	0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49,
-	0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41,
-	0x4d, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54,
-	0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x4c, 0x10, 0x03, 0x2a,
-	0x7c, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a,
-	0x17, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53,
-	0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x54,
-	0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54,
-	0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54,
-	0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41,
-	0x4e, 0x47, 0x45, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f,
-	0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x03, 0x32, 0xb7, 0x0b,
-	0x0a, 0x0a, 0x50, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x0a,
-	0x47, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x73,
-	0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73,
-	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e,
-	0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, 0x6c,
-	0x61, 0x74, 0x74, 0x65, 0x6e, 0x65, 0x64, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c,
-	0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6e,
-	0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67,
-	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x74,
-	0x74, 0x65, 0x6e, 0x65, 0x64, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x70,
-	0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6e, 0x65, 0x73, 0x12, 0x5e,
-	0x0a, 0x06, 0x47, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x12, 0x18, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e,
-	0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47,
-	0x65, 0x74, 0x4d, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82,
-	0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69,
-	0x64, 0x7d, 0x2f, 0x6d, 0x6e, 0x65, 0x2f, 0x7b, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x7d, 0x12, 0x66,
-	0x0a, 0x0a, 0x53, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x67,
-	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x4c,
-	0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x73,
-	0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x4c, 0x69, 0x73,
-	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02,
-	0x15, 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64,
-	0x7d, 0x2f, 0x6d, 0x6e, 0x65, 0x73, 0x12, 0x63, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69,
-	0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64,
-	0x2e, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47,
-	0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x70, 0x6e, 0x64, 0x73,
-	0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x62, 0x69, 0x73, 0x12, 0x5d, 0x0a, 0x06, 0x47,
-	0x65, 0x74, 0x53, 0x62, 0x69, 0x12, 0x18, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e,
-	0x64, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
-	0x19, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x53,
-	0x62, 0x69, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93,
-	0x02, 0x18, 0x12, 0x16, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f,
-	0x73, 0x62, 0x69, 0x73, 0x2f, 0x7b, 0x73, 0x69, 0x64, 0x7d, 0x12, 0x66, 0x0a, 0x0a, 0x53, 0x65,
-	0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e,
-	0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70,
-	0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, 0x01, 0x2a,
-	0x22, 0x10, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x62,
-	0x69, 0x73, 0x12, 0x6f, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c,
-	0x69, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e,
-	0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64,
-	0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13,
-	0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e,
-	0x67, 0x65, 0x73, 0x12, 0x6a, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
-	0x12, 0x1b, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74,
-	0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61,
-	0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4,
-	0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d,
-	0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x63, 0x75, 0x69, 0x64, 0x7d, 0x12,
-	0x72, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74,
-	0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74,
-	0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x1a, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65,
-	0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13,
-	0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e,
-	0x67, 0x65, 0x73, 0x12, 0x6f, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x19,
-	0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61,
-	0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x73, 0x64,
-	0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f,
-	0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6e, 0x65, 0x73, 0x2f,
-	0x7b, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x2f, 0x7b, 0x70,
-	0x61, 0x74, 0x68, 0x7d, 0x12, 0x6f, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x4c,
-	0x69, 0x73, 0x74, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e,
-	0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53,
-	0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f,
-	0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6e, 0x65, 0x73, 0x2f,
-	0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x68, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d,
-	0x6e, 0x65, 0x12, 0x1b, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x44,
-	0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
-	0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65,
-	0x74, 0x65, 0x4d, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82,
-	0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69,
-	0x64, 0x7d, 0x2f, 0x6d, 0x6e, 0x65, 0x73, 0x2f, 0x7b, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x7d, 0x12,
-	0x56, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x61, 0x74, 0x68,
-	0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x75, 0x62,
-	0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x1a, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x75,
-	0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x42, 0xae, 0x02, 0x5a, 0x2d, 0x63, 0x6f, 0x64, 0x65,
-	0x2e, 0x66, 0x62, 0x69, 0x2e, 0x68, 0x2d, 0x64, 0x61, 0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61, 0x6e,
-	0x65, 0x74, 0x2f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x70, 0x6e, 0x64, 0x92, 0x41, 0xfb, 0x01, 0x12, 0xf8, 0x01,
-	0x0a, 0x10, 0x67, 0x6f, 0x53, 0x44, 0x4e, 0x20, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x62, 0x6f, 0x75,
-	0x6e, 0x64, 0x12, 0x4d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x20, 0x42, 0x75, 0x66,
-	0x66, 0x65, 0x72, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x47, 0x6f, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x66,
-	0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x6f, 0x53, 0x44, 0x4e, 0x20, 0x6e, 0x6f, 0x72,
-	0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63,
-	0x65, 0x22, 0x3e, 0x0a, 0x18, 0x67, 0x6f, 0x53, 0x44, 0x4e, 0x20, 0x4e, 0x6f, 0x72, 0x74, 0x68,
-	0x62, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x22, 0x68,
-	0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x66, 0x62, 0x69, 0x2e,
-	0x68, 0x2d, 0x64, 0x61, 0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x70,
-	0x69, 0x2a, 0x50, 0x0a, 0x14, 0x42, 0x53, 0x44, 0x20, 0x33, 0x2d, 0x43, 0x6c, 0x61, 0x75, 0x73,
-	0x65, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x68, 0x74, 0x74, 0x70, 0x73,
-	0x3a, 0x2f, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x66, 0x62, 0x69, 0x2e, 0x68, 0x2d, 0x64, 0x61,
-	0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x2d, 0x2f,
-	0x62, 0x6c, 0x6f, 0x62, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x4c, 0x49, 0x43, 0x45,
-	0x4e, 0x53, 0x45, 0x32, 0x03, 0x30, 0x2e, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_gosdn_pnd_pnd_proto_rawDescOnce sync.Once
-	file_gosdn_pnd_pnd_proto_rawDescData = file_gosdn_pnd_pnd_proto_rawDesc
-)
-
-func file_gosdn_pnd_pnd_proto_rawDescGZIP() []byte {
-	file_gosdn_pnd_pnd_proto_rawDescOnce.Do(func() {
-		file_gosdn_pnd_pnd_proto_rawDescData = protoimpl.X.CompressGZIP(file_gosdn_pnd_pnd_proto_rawDescData)
-	})
-	return file_gosdn_pnd_pnd_proto_rawDescData
-}
-
-var file_gosdn_pnd_pnd_proto_enumTypes = make([]protoimpl.EnumInfo, 7)
-var file_gosdn_pnd_pnd_proto_msgTypes = make([]protoimpl.MessageInfo, 39)
-var file_gosdn_pnd_pnd_proto_goTypes = []interface{}{
-	(ChangeState)(0),                       // 0: gosdn.pnd.ChangeState
-	(ApiOperation)(0),                      // 1: gosdn.pnd.ApiOperation
-	(SbiType)(0),                           // 2: gosdn.pnd.SbiType
-	(Operation)(0),                         // 3: gosdn.pnd.Operation
-	(Status)(0),                            // 4: gosdn.pnd.Status
-	(SubscriptionMode)(0),                  // 5: gosdn.pnd.SubscriptionMode
-	(StreamMode)(0),                        // 6: gosdn.pnd.StreamMode
-	(*GetMneListRequest)(nil),              // 7: gosdn.pnd.GetMneListRequest
-	(*GetMneRequest)(nil),                  // 8: gosdn.pnd.GetMneRequest
-	(*GetSbiListRequest)(nil),              // 9: gosdn.pnd.GetSbiListRequest
-	(*GetSbiRequest)(nil),                  // 10: gosdn.pnd.GetSbiRequest
-	(*GetChangeListRequest)(nil),           // 11: gosdn.pnd.GetChangeListRequest
-	(*GetChangeRequest)(nil),               // 12: gosdn.pnd.GetChangeRequest
-	(*GetPathRequest)(nil),                 // 13: gosdn.pnd.GetPathRequest
-	(*GetMneResponse)(nil),                 // 14: gosdn.pnd.GetMneResponse
-	(*GetMneListResponse)(nil),             // 15: gosdn.pnd.GetMneListResponse
-	(*GetFlattenedMneListResponse)(nil),    // 16: gosdn.pnd.GetFlattenedMneListResponse
-	(*GetSbiResponse)(nil),                 // 17: gosdn.pnd.GetSbiResponse
-	(*GetSbiListResponse)(nil),             // 18: gosdn.pnd.GetSbiListResponse
-	(*GetPathResponse)(nil),                // 19: gosdn.pnd.GetPathResponse
-	(*GetChangeResponse)(nil),              // 20: gosdn.pnd.GetChangeResponse
-	(*GetChangeListResponse)(nil),          // 21: gosdn.pnd.GetChangeListResponse
-	(*PrincipalNetworkDomain)(nil),         // 22: gosdn.pnd.PrincipalNetworkDomain
-	(*ManagedNetworkElement)(nil),          // 23: gosdn.pnd.ManagedNetworkElement
-	(*FlattenedManagedNetworkElement)(nil), // 24: gosdn.pnd.FlattenedManagedNetworkElement
-	(*Change)(nil),                         // 25: gosdn.pnd.Change
-	(*SetMneListRequest)(nil),              // 26: gosdn.pnd.SetMneListRequest
-	(*SetSbiListRequest)(nil),              // 27: gosdn.pnd.SetSbiListRequest
-	(*SetChangeListRequest)(nil),           // 28: gosdn.pnd.SetChangeListRequest
-	(*SetPathListRequest)(nil),             // 29: gosdn.pnd.SetPathListRequest
-	(*ChangeRequest)(nil),                  // 30: gosdn.pnd.ChangeRequest
-	(*SetMne)(nil),                         // 31: gosdn.pnd.SetMne
-	(*SetSbi)(nil),                         // 32: gosdn.pnd.SetSbi
-	(*SetChange)(nil),                      // 33: gosdn.pnd.SetChange
-	(*SetResponse)(nil),                    // 34: gosdn.pnd.SetResponse
-	(*SetMneListResponse)(nil),             // 35: gosdn.pnd.SetMneListResponse
-	(*SetChangeListResponse)(nil),          // 36: gosdn.pnd.SetChangeListResponse
-	(*SetChangeResponse)(nil),              // 37: gosdn.pnd.SetChangeResponse
-	(*SetSbiListResponse)(nil),             // 38: gosdn.pnd.SetSbiListResponse
-	(*SetPathListResponse)(nil),            // 39: gosdn.pnd.SetPathListResponse
-	(*DeleteMneRequest)(nil),               // 40: gosdn.pnd.DeleteMneRequest
-	(*DeleteMneResponse)(nil),              // 41: gosdn.pnd.DeleteMneResponse
-	(*SubscribePathRequest)(nil),           // 42: gosdn.pnd.SubscribePathRequest
-	(*SubscriptionList)(nil),               // 43: gosdn.pnd.SubscriptionList
-	(*Subscription)(nil),                   // 44: gosdn.pnd.Subscription
-	(*SubscribePathResponse)(nil),          // 45: gosdn.pnd.SubscribePathResponse
-	(*southbound.SouthboundInterface)(nil), // 46: gosdn.southbound.SouthboundInterface
-	(*gnmi.Notification)(nil),              // 47: gnmi.Notification
-	(*transport.TransportOption)(nil),      // 48: gosdn.transport.TransportOption
-}
-var file_gosdn_pnd_pnd_proto_depIdxs = []int32{
-	22, // 0: gosdn.pnd.GetMneResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
-	23, // 1: gosdn.pnd.GetMneResponse.mne:type_name -> gosdn.pnd.ManagedNetworkElement
-	22, // 2: gosdn.pnd.GetMneListResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
-	23, // 3: gosdn.pnd.GetMneListResponse.mne:type_name -> gosdn.pnd.ManagedNetworkElement
-	22, // 4: gosdn.pnd.GetFlattenedMneListResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
-	24, // 5: gosdn.pnd.GetFlattenedMneListResponse.mne:type_name -> gosdn.pnd.FlattenedManagedNetworkElement
-	22, // 6: gosdn.pnd.GetSbiResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
-	46, // 7: gosdn.pnd.GetSbiResponse.sbi:type_name -> gosdn.southbound.SouthboundInterface
-	22, // 8: gosdn.pnd.GetSbiListResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
-	46, // 9: gosdn.pnd.GetSbiListResponse.sbi:type_name -> gosdn.southbound.SouthboundInterface
-	22, // 10: gosdn.pnd.GetPathResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
-	47, // 11: gosdn.pnd.GetPathResponse.mne_notification:type_name -> gnmi.Notification
-	22, // 12: gosdn.pnd.GetChangeResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
-	25, // 13: gosdn.pnd.GetChangeResponse.change:type_name -> gosdn.pnd.Change
-	22, // 14: gosdn.pnd.GetChangeListResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
-	25, // 15: gosdn.pnd.GetChangeListResponse.change:type_name -> gosdn.pnd.Change
-	47, // 16: gosdn.pnd.ManagedNetworkElement.mne_notification:type_name -> gnmi.Notification
-	46, // 17: gosdn.pnd.ManagedNetworkElement.sbi:type_name -> gosdn.southbound.SouthboundInterface
-	0,  // 18: gosdn.pnd.Change.state:type_name -> gosdn.pnd.ChangeState
-	47, // 19: gosdn.pnd.Change.diff:type_name -> gnmi.Notification
-	31, // 20: gosdn.pnd.SetMneListRequest.mne:type_name -> gosdn.pnd.SetMne
-	32, // 21: gosdn.pnd.SetSbiListRequest.sbi:type_name -> gosdn.pnd.SetSbi
-	33, // 22: gosdn.pnd.SetChangeListRequest.change:type_name -> gosdn.pnd.SetChange
-	30, // 23: gosdn.pnd.SetPathListRequest.change_request:type_name -> gosdn.pnd.ChangeRequest
-	1,  // 24: gosdn.pnd.ChangeRequest.api_op:type_name -> gosdn.pnd.ApiOperation
-	46, // 25: gosdn.pnd.SetMne.sbi:type_name -> gosdn.southbound.SouthboundInterface
-	48, // 26: gosdn.pnd.SetMne.transport_option:type_name -> gosdn.transport.TransportOption
-	2,  // 27: gosdn.pnd.SetSbi.sbi_type:type_name -> gosdn.pnd.SbiType
-	3,  // 28: gosdn.pnd.SetChange.op:type_name -> gosdn.pnd.Operation
-	4,  // 29: gosdn.pnd.SetResponse.status:type_name -> gosdn.pnd.Status
-	4,  // 30: gosdn.pnd.SetMneListResponse.status:type_name -> gosdn.pnd.Status
-	34, // 31: gosdn.pnd.SetMneListResponse.responses:type_name -> gosdn.pnd.SetResponse
-	4,  // 32: gosdn.pnd.SetChangeListResponse.status:type_name -> gosdn.pnd.Status
-	34, // 33: gosdn.pnd.SetChangeListResponse.responses:type_name -> gosdn.pnd.SetResponse
-	4,  // 34: gosdn.pnd.SetChangeResponse.status:type_name -> gosdn.pnd.Status
-	4,  // 35: gosdn.pnd.SetSbiListResponse.status:type_name -> gosdn.pnd.Status
-	34, // 36: gosdn.pnd.SetSbiListResponse.responses:type_name -> gosdn.pnd.SetResponse
-	4,  // 37: gosdn.pnd.SetPathListResponse.status:type_name -> gosdn.pnd.Status
-	34, // 38: gosdn.pnd.SetPathListResponse.responses:type_name -> gosdn.pnd.SetResponse
-	4,  // 39: gosdn.pnd.DeleteMneResponse.status:type_name -> gosdn.pnd.Status
-	43, // 40: gosdn.pnd.SubscribePathRequest.sublist:type_name -> gosdn.pnd.SubscriptionList
-	44, // 41: gosdn.pnd.SubscriptionList.subscription:type_name -> gosdn.pnd.Subscription
-	5,  // 42: gosdn.pnd.SubscriptionList.mode:type_name -> gosdn.pnd.SubscriptionMode
-	6,  // 43: gosdn.pnd.Subscription.stream_mode:type_name -> gosdn.pnd.StreamMode
-	4,  // 44: gosdn.pnd.SubscribePathResponse.status:type_name -> gosdn.pnd.Status
-	47, // 45: gosdn.pnd.SubscribePathResponse.mne_notification:type_name -> gnmi.Notification
-	7,  // 46: gosdn.pnd.PndService.GetMneList:input_type -> gosdn.pnd.GetMneListRequest
-	7,  // 47: gosdn.pnd.PndService.GetFlattenedMneList:input_type -> gosdn.pnd.GetMneListRequest
-	8,  // 48: gosdn.pnd.PndService.GetMne:input_type -> gosdn.pnd.GetMneRequest
-	26, // 49: gosdn.pnd.PndService.SetMneList:input_type -> gosdn.pnd.SetMneListRequest
-	9,  // 50: gosdn.pnd.PndService.GetSbiList:input_type -> gosdn.pnd.GetSbiListRequest
-	10, // 51: gosdn.pnd.PndService.GetSbi:input_type -> gosdn.pnd.GetSbiRequest
-	27, // 52: gosdn.pnd.PndService.SetSbiList:input_type -> gosdn.pnd.SetSbiListRequest
-	11, // 53: gosdn.pnd.PndService.GetChangeList:input_type -> gosdn.pnd.GetChangeListRequest
-	12, // 54: gosdn.pnd.PndService.GetChange:input_type -> gosdn.pnd.GetChangeRequest
-	28, // 55: gosdn.pnd.PndService.SetChangeList:input_type -> gosdn.pnd.SetChangeListRequest
-	13, // 56: gosdn.pnd.PndService.GetPath:input_type -> gosdn.pnd.GetPathRequest
-	29, // 57: gosdn.pnd.PndService.SetPathList:input_type -> gosdn.pnd.SetPathListRequest
-	40, // 58: gosdn.pnd.PndService.DeleteMne:input_type -> gosdn.pnd.DeleteMneRequest
-	42, // 59: gosdn.pnd.PndService.SubscribePath:input_type -> gosdn.pnd.SubscribePathRequest
-	15, // 60: gosdn.pnd.PndService.GetMneList:output_type -> gosdn.pnd.GetMneListResponse
-	16, // 61: gosdn.pnd.PndService.GetFlattenedMneList:output_type -> gosdn.pnd.GetFlattenedMneListResponse
-	14, // 62: gosdn.pnd.PndService.GetMne:output_type -> gosdn.pnd.GetMneResponse
-	35, // 63: gosdn.pnd.PndService.SetMneList:output_type -> gosdn.pnd.SetMneListResponse
-	18, // 64: gosdn.pnd.PndService.GetSbiList:output_type -> gosdn.pnd.GetSbiListResponse
-	17, // 65: gosdn.pnd.PndService.GetSbi:output_type -> gosdn.pnd.GetSbiResponse
-	38, // 66: gosdn.pnd.PndService.SetSbiList:output_type -> gosdn.pnd.SetSbiListResponse
-	21, // 67: gosdn.pnd.PndService.GetChangeList:output_type -> gosdn.pnd.GetChangeListResponse
-	20, // 68: gosdn.pnd.PndService.GetChange:output_type -> gosdn.pnd.GetChangeResponse
-	36, // 69: gosdn.pnd.PndService.SetChangeList:output_type -> gosdn.pnd.SetChangeListResponse
-	19, // 70: gosdn.pnd.PndService.GetPath:output_type -> gosdn.pnd.GetPathResponse
-	39, // 71: gosdn.pnd.PndService.SetPathList:output_type -> gosdn.pnd.SetPathListResponse
-	41, // 72: gosdn.pnd.PndService.DeleteMne:output_type -> gosdn.pnd.DeleteMneResponse
-	45, // 73: gosdn.pnd.PndService.SubscribePath:output_type -> gosdn.pnd.SubscribePathResponse
-	60, // [60:74] is the sub-list for method output_type
-	46, // [46:60] is the sub-list for method input_type
-	46, // [46:46] is the sub-list for extension type_name
-	46, // [46:46] is the sub-list for extension extendee
-	0,  // [0:46] is the sub-list for field type_name
-}
-
-func init() { file_gosdn_pnd_pnd_proto_init() }
-func file_gosdn_pnd_pnd_proto_init() {
-	if File_gosdn_pnd_pnd_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_gosdn_pnd_pnd_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetMneListRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetMneRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetSbiListRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetSbiRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetChangeListRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetChangeRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetPathRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetMneResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetMneListResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetFlattenedMneListResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetSbiResponse); i {
+		file_gosdn_pnd_pnd_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetSbiListRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3614,7 +893,7 @@ func file_gosdn_pnd_pnd_proto_init() {
 				return nil
 			}
 		}
-		file_gosdn_pnd_pnd_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+		file_gosdn_pnd_pnd_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*GetSbiListResponse); i {
 			case 0:
 				return &v.state
@@ -3626,80 +905,8 @@ func file_gosdn_pnd_pnd_proto_init() {
 				return nil
 			}
 		}
-		file_gosdn_pnd_pnd_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetPathResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetChangeResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetChangeListResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PrincipalNetworkDomain); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ManagedNetworkElement); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FlattenedManagedNetworkElement); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Change); i {
+		file_gosdn_pnd_pnd_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetSbiRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3710,8 +917,8 @@ func file_gosdn_pnd_pnd_proto_init() {
 				return nil
 			}
 		}
-		file_gosdn_pnd_pnd_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetMneListRequest); i {
+		file_gosdn_pnd_pnd_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetSbiResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3722,7 +929,7 @@ func file_gosdn_pnd_pnd_proto_init() {
 				return nil
 			}
 		}
-		file_gosdn_pnd_pnd_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+		file_gosdn_pnd_pnd_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*SetSbiListRequest); i {
 			case 0:
 				return &v.state
@@ -3734,55 +941,7 @@ func file_gosdn_pnd_pnd_proto_init() {
 				return nil
 			}
 		}
-		file_gosdn_pnd_pnd_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetChangeListRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetPathListRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ChangeRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetMne); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+		file_gosdn_pnd_pnd_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*SetSbi); i {
 			case 0:
 				return &v.state
@@ -3794,67 +953,7 @@ func file_gosdn_pnd_pnd_proto_init() {
 				return nil
 			}
 		}
-		file_gosdn_pnd_pnd_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetChange); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetMneListResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetChangeListResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetChangeResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
+		file_gosdn_pnd_pnd_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*SetSbiListResponse); i {
 			case 0:
 				return &v.state
@@ -3866,80 +965,8 @@ func file_gosdn_pnd_pnd_proto_init() {
 				return nil
 			}
 		}
-		file_gosdn_pnd_pnd_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetPathListResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteMneRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteMneResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SubscribePathRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SubscriptionList); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Subscription); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_gosdn_pnd_pnd_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SubscribePathResponse); i {
+		file_gosdn_pnd_pnd_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SetResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3956,8 +983,8 @@ func file_gosdn_pnd_pnd_proto_init() {
 		File: protoimpl.DescBuilder{
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_gosdn_pnd_pnd_proto_rawDesc,
-			NumEnums:      7,
-			NumMessages:   39,
+			NumEnums:      2,
+			NumMessages:   9,
 			NumExtensions: 0,
 			NumServices:   1,
 		},
diff --git a/api/go/gosdn/pnd/pnd.pb.gw.go b/api/go/gosdn/pnd/pnd.pb.gw.go
index e5e2f606336dc1e5a0e6a91096757aaecbb6fbda..d88d6aea1d8e75da6ba61b7f0f67208c62fd9048 100644
--- a/api/go/gosdn/pnd/pnd.pb.gw.go
+++ b/api/go/gosdn/pnd/pnd.pb.gw.go
@@ -31,234 +31,6 @@ var _ = runtime.String
 var _ = utilities.NewDoubleArray
 var _ = metadata.Join
 
-var (
-	filter_PndService_GetFlattenedMneList_0 = &utilities.DoubleArray{Encoding: map[string]int{"pid": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
-)
-
-func request_PndService_GetFlattenedMneList_0(ctx context.Context, marshaler runtime.Marshaler, client PndServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq GetMneListRequest
-	var metadata runtime.ServerMetadata
-
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
-
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
-
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
-
-	if err := req.ParseForm(); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PndService_GetFlattenedMneList_0); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	msg, err := client.GetFlattenedMneList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
-	return msg, metadata, err
-
-}
-
-func local_request_PndService_GetFlattenedMneList_0(ctx context.Context, marshaler runtime.Marshaler, server PndServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq GetMneListRequest
-	var metadata runtime.ServerMetadata
-
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
-
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
-
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
-
-	if err := req.ParseForm(); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PndService_GetFlattenedMneList_0); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	msg, err := server.GetFlattenedMneList(ctx, &protoReq)
-	return msg, metadata, err
-
-}
-
-var (
-	filter_PndService_GetMne_0 = &utilities.DoubleArray{Encoding: map[string]int{"pid": 0, "mneid": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}}
-)
-
-func request_PndService_GetMne_0(ctx context.Context, marshaler runtime.Marshaler, client PndServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq GetMneRequest
-	var metadata runtime.ServerMetadata
-
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
-
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
-
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
-
-	val, ok = pathParams["mneid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "mneid")
-	}
-
-	protoReq.Mneid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "mneid", err)
-	}
-
-	if err := req.ParseForm(); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PndService_GetMne_0); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	msg, err := client.GetMne(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
-	return msg, metadata, err
-
-}
-
-func local_request_PndService_GetMne_0(ctx context.Context, marshaler runtime.Marshaler, server PndServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq GetMneRequest
-	var metadata runtime.ServerMetadata
-
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
-
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
-
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
-
-	val, ok = pathParams["mneid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "mneid")
-	}
-
-	protoReq.Mneid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "mneid", err)
-	}
-
-	if err := req.ParseForm(); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PndService_GetMne_0); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	msg, err := server.GetMne(ctx, &protoReq)
-	return msg, metadata, err
-
-}
-
-func request_PndService_SetMneList_0(ctx context.Context, marshaler runtime.Marshaler, client PndServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq SetMneListRequest
-	var metadata runtime.ServerMetadata
-
-	newReader, berr := utilities.IOReaderFactory(req.Body)
-	if berr != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
-	}
-	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
-
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
-
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
-
-	msg, err := client.SetMneList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
-	return msg, metadata, err
-
-}
-
-func local_request_PndService_SetMneList_0(ctx context.Context, marshaler runtime.Marshaler, server PndServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq SetMneListRequest
-	var metadata runtime.ServerMetadata
-
-	newReader, berr := utilities.IOReaderFactory(req.Body)
-	if berr != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
-	}
-	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
-
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
-
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
-
-	msg, err := server.SetMneList(ctx, &protoReq)
-	return msg, metadata, err
-
-}
-
 var (
 	filter_PndService_GetSbiList_0 = &utilities.DoubleArray{Encoding: map[string]int{"pid": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
 )
@@ -487,773 +259,70 @@ func local_request_PndService_SetSbiList_0(ctx context.Context, marshaler runtim
 
 }
 
-var (
-	filter_PndService_GetChangeList_0 = &utilities.DoubleArray{Encoding: map[string]int{"pid": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
-)
+// RegisterPndServiceHandlerServer registers the http handlers for service PndService to "mux".
+// UnaryRPC     :call PndServiceServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterPndServiceHandlerFromEndpoint instead.
+func RegisterPndServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server PndServiceServer) error {
 
-func request_PndService_GetChangeList_0(ctx context.Context, marshaler runtime.Marshaler, client PndServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq GetChangeListRequest
-	var metadata runtime.ServerMetadata
+	mux.Handle("GET", pattern_PndService_GetSbiList_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)
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/GetSbiList", runtime.WithHTTPPathPattern("/pnds/{pid}/sbis"))
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+		resp, md, err := local_request_PndService_GetSbiList_0(rctx, inboundMarshaler, server, req, pathParams)
+		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+		ctx = runtime.NewServerMetadataContext(ctx, md)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
 
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
+		forward_PndService_GetSbiList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
 
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
+	})
 
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
+	mux.Handle("GET", pattern_PndService_GetSbi_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)
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/GetSbi", runtime.WithHTTPPathPattern("/pnds/{pid}/sbis/{sid}"))
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+		resp, md, err := local_request_PndService_GetSbi_0(rctx, inboundMarshaler, server, req, pathParams)
+		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+		ctx = runtime.NewServerMetadataContext(ctx, md)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
 
-	if err := req.ParseForm(); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PndService_GetChangeList_0); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	msg, err := client.GetChangeList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
-	return msg, metadata, err
-
-}
-
-func local_request_PndService_GetChangeList_0(ctx context.Context, marshaler runtime.Marshaler, server PndServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq GetChangeListRequest
-	var metadata runtime.ServerMetadata
-
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
-
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
-
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
-
-	if err := req.ParseForm(); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PndService_GetChangeList_0); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	msg, err := server.GetChangeList(ctx, &protoReq)
-	return msg, metadata, err
-
-}
-
-var (
-	filter_PndService_GetChange_0 = &utilities.DoubleArray{Encoding: map[string]int{"pid": 0, "cuid": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}}
-)
-
-func request_PndService_GetChange_0(ctx context.Context, marshaler runtime.Marshaler, client PndServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq GetChangeRequest
-	var metadata runtime.ServerMetadata
-
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
-
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
-
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
-
-	val, ok = pathParams["cuid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cuid")
-	}
-
-	protoReq.Cuid, err = runtime.StringSlice(val, ",")
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cuid", err)
-	}
-
-	if err := req.ParseForm(); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PndService_GetChange_0); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	msg, err := client.GetChange(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
-	return msg, metadata, err
-
-}
-
-func local_request_PndService_GetChange_0(ctx context.Context, marshaler runtime.Marshaler, server PndServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq GetChangeRequest
-	var metadata runtime.ServerMetadata
-
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
-
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
-
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
-
-	val, ok = pathParams["cuid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cuid")
-	}
-
-	protoReq.Cuid, err = runtime.StringSlice(val, ",")
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cuid", err)
-	}
-
-	if err := req.ParseForm(); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PndService_GetChange_0); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	msg, err := server.GetChange(ctx, &protoReq)
-	return msg, metadata, err
-
-}
-
-func request_PndService_SetChangeList_0(ctx context.Context, marshaler runtime.Marshaler, client PndServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq SetChangeListRequest
-	var metadata runtime.ServerMetadata
-
-	newReader, berr := utilities.IOReaderFactory(req.Body)
-	if berr != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
-	}
-	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
-
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
-
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
-
-	msg, err := client.SetChangeList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
-	return msg, metadata, err
-
-}
-
-func local_request_PndService_SetChangeList_0(ctx context.Context, marshaler runtime.Marshaler, server PndServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq SetChangeListRequest
-	var metadata runtime.ServerMetadata
-
-	newReader, berr := utilities.IOReaderFactory(req.Body)
-	if berr != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
-	}
-	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
-
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
-
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
-
-	msg, err := server.SetChangeList(ctx, &protoReq)
-	return msg, metadata, err
-
-}
-
-var (
-	filter_PndService_GetPath_0 = &utilities.DoubleArray{Encoding: map[string]int{"pid": 0, "mneid": 1, "path": 2}, Base: []int{1, 1, 2, 3, 0, 0, 0}, Check: []int{0, 1, 1, 1, 2, 3, 4}}
-)
-
-func request_PndService_GetPath_0(ctx context.Context, marshaler runtime.Marshaler, client PndServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq GetPathRequest
-	var metadata runtime.ServerMetadata
-
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
-
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
-
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
-
-	val, ok = pathParams["mneid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "mneid")
-	}
-
-	protoReq.Mneid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "mneid", err)
-	}
-
-	val, ok = pathParams["path"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "path")
-	}
-
-	protoReq.Path, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "path", err)
-	}
-
-	if err := req.ParseForm(); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PndService_GetPath_0); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	msg, err := client.GetPath(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
-	return msg, metadata, err
-
-}
-
-func local_request_PndService_GetPath_0(ctx context.Context, marshaler runtime.Marshaler, server PndServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq GetPathRequest
-	var metadata runtime.ServerMetadata
-
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
-
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
-
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
-
-	val, ok = pathParams["mneid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "mneid")
-	}
-
-	protoReq.Mneid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "mneid", err)
-	}
-
-	val, ok = pathParams["path"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "path")
-	}
-
-	protoReq.Path, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "path", err)
-	}
-
-	if err := req.ParseForm(); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PndService_GetPath_0); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	msg, err := server.GetPath(ctx, &protoReq)
-	return msg, metadata, err
-
-}
-
-func request_PndService_SetPathList_0(ctx context.Context, marshaler runtime.Marshaler, client PndServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq SetPathListRequest
-	var metadata runtime.ServerMetadata
-
-	newReader, berr := utilities.IOReaderFactory(req.Body)
-	if berr != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
-	}
-	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
-
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
-
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
-
-	msg, err := client.SetPathList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
-	return msg, metadata, err
-
-}
-
-func local_request_PndService_SetPathList_0(ctx context.Context, marshaler runtime.Marshaler, server PndServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq SetPathListRequest
-	var metadata runtime.ServerMetadata
-
-	newReader, berr := utilities.IOReaderFactory(req.Body)
-	if berr != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
-	}
-	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
-
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
-
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
-
-	msg, err := server.SetPathList(ctx, &protoReq)
-	return msg, metadata, err
-
-}
-
-var (
-	filter_PndService_DeleteMne_0 = &utilities.DoubleArray{Encoding: map[string]int{"pid": 0, "mneid": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}}
-)
-
-func request_PndService_DeleteMne_0(ctx context.Context, marshaler runtime.Marshaler, client PndServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq DeleteMneRequest
-	var metadata runtime.ServerMetadata
-
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
-
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
-
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
-
-	val, ok = pathParams["mneid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "mneid")
-	}
-
-	protoReq.Mneid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "mneid", err)
-	}
-
-	if err := req.ParseForm(); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PndService_DeleteMne_0); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	msg, err := client.DeleteMne(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
-	return msg, metadata, err
-
-}
-
-func local_request_PndService_DeleteMne_0(ctx context.Context, marshaler runtime.Marshaler, server PndServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
-	var protoReq DeleteMneRequest
-	var metadata runtime.ServerMetadata
-
-	var (
-		val string
-		ok  bool
-		err error
-		_   = err
-	)
-
-	val, ok = pathParams["pid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pid")
-	}
-
-	protoReq.Pid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pid", err)
-	}
-
-	val, ok = pathParams["mneid"]
-	if !ok {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "mneid")
-	}
-
-	protoReq.Mneid, err = runtime.String(val)
-	if err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "mneid", err)
-	}
-
-	if err := req.ParseForm(); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PndService_DeleteMne_0); err != nil {
-		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
-	}
-
-	msg, err := server.DeleteMne(ctx, &protoReq)
-	return msg, metadata, err
-
-}
-
-// RegisterPndServiceHandlerServer registers the http handlers for service PndService to "mux".
-// UnaryRPC     :call PndServiceServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterPndServiceHandlerFromEndpoint instead.
-func RegisterPndServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server PndServiceServer) error {
-
-	mux.Handle("GET", pattern_PndService_GetFlattenedMneList_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)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/GetFlattenedMneList", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := local_request_PndService_GetFlattenedMneList_0(rctx, inboundMarshaler, server, req, pathParams)
-		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_GetFlattenedMneList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
-	mux.Handle("GET", pattern_PndService_GetMne_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)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/GetMne", runtime.WithHTTPPathPattern("/pnds/{pid}/mne/{mneid}"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := local_request_PndService_GetMne_0(rctx, inboundMarshaler, server, req, pathParams)
-		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_GetMne_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
-	mux.Handle("POST", pattern_PndService_SetMneList_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)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/SetMneList", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := local_request_PndService_SetMneList_0(rctx, inboundMarshaler, server, req, pathParams)
-		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_SetMneList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
-	mux.Handle("GET", pattern_PndService_GetSbiList_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)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/GetSbiList", runtime.WithHTTPPathPattern("/pnds/{pid}/sbis"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := local_request_PndService_GetSbiList_0(rctx, inboundMarshaler, server, req, pathParams)
-		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_GetSbiList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
-	mux.Handle("GET", pattern_PndService_GetSbi_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)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/GetSbi", runtime.WithHTTPPathPattern("/pnds/{pid}/sbis/{sid}"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := local_request_PndService_GetSbi_0(rctx, inboundMarshaler, server, req, pathParams)
-		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_GetSbi_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
-	mux.Handle("POST", pattern_PndService_SetSbiList_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)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/SetSbiList", runtime.WithHTTPPathPattern("/pnds/{pid}/sbis"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := local_request_PndService_SetSbiList_0(rctx, inboundMarshaler, server, req, pathParams)
-		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_SetSbiList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
-	mux.Handle("GET", pattern_PndService_GetChangeList_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)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/GetChangeList", runtime.WithHTTPPathPattern("/pnds/{pid}/changes"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := local_request_PndService_GetChangeList_0(rctx, inboundMarshaler, server, req, pathParams)
-		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_GetChangeList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
-	mux.Handle("GET", pattern_PndService_GetChange_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)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/GetChange", runtime.WithHTTPPathPattern("/pnds/{pid}/changes/{cuid}"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := local_request_PndService_GetChange_0(rctx, inboundMarshaler, server, req, pathParams)
-		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_GetChange_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
-	mux.Handle("POST", pattern_PndService_SetChangeList_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)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/SetChangeList", runtime.WithHTTPPathPattern("/pnds/{pid}/changes"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := local_request_PndService_SetChangeList_0(rctx, inboundMarshaler, server, req, pathParams)
-		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_SetChangeList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
-	mux.Handle("GET", pattern_PndService_GetPath_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)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/GetPath", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes/{mneid}/paths/{path}"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := local_request_PndService_GetPath_0(rctx, inboundMarshaler, server, req, pathParams)
-		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_GetPath_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
-	mux.Handle("POST", pattern_PndService_SetPathList_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)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/SetPathList", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes/paths"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := local_request_PndService_SetPathList_0(rctx, inboundMarshaler, server, req, pathParams)
-		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_SetPathList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+		forward_PndService_GetSbi_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
 
 	})
 
-	mux.Handle("DELETE", pattern_PndService_DeleteMne_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+	mux.Handle("POST", pattern_PndService_SetSbiList_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)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/DeleteMne", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes/{mneid}"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/SetSbiList", runtime.WithHTTPPathPattern("/pnds/{pid}/sbis"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
 		}
-		resp, md, err := local_request_PndService_DeleteMne_0(rctx, inboundMarshaler, server, req, pathParams)
+		resp, md, err := local_request_PndService_SetSbiList_0(rctx, inboundMarshaler, server, req, pathParams)
 		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
 		ctx = runtime.NewServerMetadataContext(ctx, md)
 		if err != nil {
@@ -1261,7 +330,7 @@ func RegisterPndServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux,
 			return
 		}
 
-		forward_PndService_DeleteMne_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+		forward_PndService_SetSbiList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
 
 	})
 
@@ -1306,66 +375,6 @@ func RegisterPndServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn
 // "PndServiceClient" to call the correct interceptors.
 func RegisterPndServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client PndServiceClient) error {
 
-	mux.Handle("GET", pattern_PndService_GetFlattenedMneList_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)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/GetFlattenedMneList", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := request_PndService_GetFlattenedMneList_0(rctx, inboundMarshaler, client, req, pathParams)
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_GetFlattenedMneList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
-	mux.Handle("GET", pattern_PndService_GetMne_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)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/GetMne", runtime.WithHTTPPathPattern("/pnds/{pid}/mne/{mneid}"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := request_PndService_GetMne_0(rctx, inboundMarshaler, client, req, pathParams)
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_GetMne_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
-	mux.Handle("POST", pattern_PndService_SetMneList_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)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/SetMneList", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := request_PndService_SetMneList_0(rctx, inboundMarshaler, client, req, pathParams)
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_SetMneList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
 	mux.Handle("GET", pattern_PndService_GetSbiList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
@@ -1426,177 +435,21 @@ func RegisterPndServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux,
 
 	})
 
-	mux.Handle("GET", pattern_PndService_GetChangeList_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)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/GetChangeList", runtime.WithHTTPPathPattern("/pnds/{pid}/changes"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := request_PndService_GetChangeList_0(rctx, inboundMarshaler, client, req, pathParams)
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_GetChangeList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
-	mux.Handle("GET", pattern_PndService_GetChange_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)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/GetChange", runtime.WithHTTPPathPattern("/pnds/{pid}/changes/{cuid}"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := request_PndService_GetChange_0(rctx, inboundMarshaler, client, req, pathParams)
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_GetChange_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
-	mux.Handle("POST", pattern_PndService_SetChangeList_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)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/SetChangeList", runtime.WithHTTPPathPattern("/pnds/{pid}/changes"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := request_PndService_SetChangeList_0(rctx, inboundMarshaler, client, req, pathParams)
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_SetChangeList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
-	mux.Handle("GET", pattern_PndService_GetPath_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)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/GetPath", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes/{mneid}/paths/{path}"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := request_PndService_GetPath_0(rctx, inboundMarshaler, client, req, pathParams)
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_GetPath_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
-	mux.Handle("POST", pattern_PndService_SetPathList_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)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/SetPathList", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes/paths"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := request_PndService_SetPathList_0(rctx, inboundMarshaler, client, req, pathParams)
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_SetPathList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
-	mux.Handle("DELETE", pattern_PndService_DeleteMne_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)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/DeleteMne", runtime.WithHTTPPathPattern("/pnds/{pid}/mnes/{mneid}"))
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-		resp, md, err := request_PndService_DeleteMne_0(rctx, inboundMarshaler, client, req, pathParams)
-		ctx = runtime.NewServerMetadataContext(ctx, md)
-		if err != nil {
-			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
-			return
-		}
-
-		forward_PndService_DeleteMne_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
-	})
-
 	return nil
 }
 
 var (
-	pattern_PndService_GetFlattenedMneList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"pnds", "pid", "mnes"}, ""))
-
-	pattern_PndService_GetMne_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pnds", "pid", "mne", "mneid"}, ""))
-
-	pattern_PndService_SetMneList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"pnds", "pid", "mnes"}, ""))
-
 	pattern_PndService_GetSbiList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"pnds", "pid", "sbis"}, ""))
 
 	pattern_PndService_GetSbi_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pnds", "pid", "sbis", "sid"}, ""))
 
 	pattern_PndService_SetSbiList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"pnds", "pid", "sbis"}, ""))
-
-	pattern_PndService_GetChangeList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"pnds", "pid", "changes"}, ""))
-
-	pattern_PndService_GetChange_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pnds", "pid", "changes", "cuid"}, ""))
-
-	pattern_PndService_SetChangeList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"pnds", "pid", "changes"}, ""))
-
-	pattern_PndService_GetPath_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"pnds", "pid", "mnes", "mneid", "paths", "path"}, ""))
-
-	pattern_PndService_SetPathList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3}, []string{"pnds", "pid", "mnes", "paths"}, ""))
-
-	pattern_PndService_DeleteMne_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pnds", "pid", "mnes", "mneid"}, ""))
 )
 
 var (
-	forward_PndService_GetFlattenedMneList_0 = runtime.ForwardResponseMessage
-
-	forward_PndService_GetMne_0 = runtime.ForwardResponseMessage
-
-	forward_PndService_SetMneList_0 = runtime.ForwardResponseMessage
-
 	forward_PndService_GetSbiList_0 = runtime.ForwardResponseMessage
 
 	forward_PndService_GetSbi_0 = runtime.ForwardResponseMessage
 
 	forward_PndService_SetSbiList_0 = runtime.ForwardResponseMessage
-
-	forward_PndService_GetChangeList_0 = runtime.ForwardResponseMessage
-
-	forward_PndService_GetChange_0 = runtime.ForwardResponseMessage
-
-	forward_PndService_SetChangeList_0 = runtime.ForwardResponseMessage
-
-	forward_PndService_GetPath_0 = runtime.ForwardResponseMessage
-
-	forward_PndService_SetPathList_0 = runtime.ForwardResponseMessage
-
-	forward_PndService_DeleteMne_0 = runtime.ForwardResponseMessage
 )
diff --git a/api/go/gosdn/pnd/pnd_grpc.pb.go b/api/go/gosdn/pnd/pnd_grpc.pb.go
index 0a76d4fe506274046a276c84e8089fda2df85d47..c4223af3aa7e55ba0f9f54f19b949327fee1a4bb 100644
--- a/api/go/gosdn/pnd/pnd_grpc.pb.go
+++ b/api/go/gosdn/pnd/pnd_grpc.pb.go
@@ -18,22 +18,6 @@ const _ = grpc.SupportPackageIsVersion7
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 type PndServiceClient interface {
-	// Allows to request all Managed Network Elements (MNE) which are
-	// managed by a specific Principal Network Domain.
-	// Full MNEs are provided, which also includes the MNE config as gNMI
-	// notification.
-	GetMneList(ctx context.Context, in *GetMneListRequest, opts ...grpc.CallOption) (*GetMneListResponse, error)
-	// Allows to request all Managed Network Elements (MNE) which are
-	// managed by a specific Principal Network Domain.
-	// Flattened MNEs are provided, which does not include the MNE config as gNMI
-	// notification.
-	GetFlattenedMneList(ctx context.Context, in *GetMneListRequest, opts ...grpc.CallOption) (*GetFlattenedMneListResponse, error)
-	// Allows to request a specific Managed Network Element which is managed by a
-	// specific Principal Network Domain.
-	GetMne(ctx context.Context, in *GetMneRequest, opts ...grpc.CallOption) (*GetMneResponse, error)
-	// Allows to add multiple Managed Network Elements to be managed by a
-	// specific Principal Network Domain.
-	SetMneList(ctx context.Context, in *SetMneListRequest, opts ...grpc.CallOption) (*SetMneListResponse, error)
 	// Allows to request all Southbound Interfaces a specific Principal Network
 	// Domain supports.
 	GetSbiList(ctx context.Context, in *GetSbiListRequest, opts ...grpc.CallOption) (*GetSbiListResponse, error)
@@ -43,25 +27,6 @@ type PndServiceClient interface {
 	// Allows to add multiple specific Southbound Interfaces a specific Principal Network
 	// Domain supports.
 	SetSbiList(ctx context.Context, in *SetSbiListRequest, opts ...grpc.CallOption) (*SetSbiListResponse, error)
-	// Allows to request all Changes registered for a specific Principal Network Domain.
-	GetChangeList(ctx context.Context, in *GetChangeListRequest, opts ...grpc.CallOption) (*GetChangeListResponse, error)
-	// Allows to request a specific Change registered for a specific Principal Network Domain.
-	GetChange(ctx context.Context, in *GetChangeRequest, opts ...grpc.CallOption) (*GetChangeResponse, error)
-	// Allows to operate on multiple Changes registered for a specific Principal Network Domain.
-	SetChangeList(ctx context.Context, in *SetChangeListRequest, opts ...grpc.CallOption) (*SetChangeListResponse, error)
-	// Allows to request a specific Path of a Managed Network Element,
-	// managed by a specific Principal Network Domain.
-	GetPath(ctx context.Context, in *GetPathRequest, opts ...grpc.CallOption) (*GetPathResponse, error)
-	// Allows to set a specific Path of a Managed Network Element,
-	// managed by a specific Principal Network Domain.
-	SetPathList(ctx context.Context, in *SetPathListRequest, opts ...grpc.CallOption) (*SetPathListResponse, error)
-	// Allows to delete a specific Managed Network Element which is managed by a
-	// specific Principal Network Domain.
-	DeleteMne(ctx context.Context, in *DeleteMneRequest, opts ...grpc.CallOption) (*DeleteMneResponse, error)
-	// Allows to subscribe to multiple paths of a Managed Network Element which is
-	// managed by a specific Principal Network Domain and streams data depending on the subscribe
-	// method.
-	SubscribePath(ctx context.Context, in *SubscribePathRequest, opts ...grpc.CallOption) (PndService_SubscribePathClient, error)
 }
 
 type pndServiceClient struct {
@@ -72,42 +37,6 @@ func NewPndServiceClient(cc grpc.ClientConnInterface) PndServiceClient {
 	return &pndServiceClient{cc}
 }
 
-func (c *pndServiceClient) GetMneList(ctx context.Context, in *GetMneListRequest, opts ...grpc.CallOption) (*GetMneListResponse, error) {
-	out := new(GetMneListResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/GetMneList", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *pndServiceClient) GetFlattenedMneList(ctx context.Context, in *GetMneListRequest, opts ...grpc.CallOption) (*GetFlattenedMneListResponse, error) {
-	out := new(GetFlattenedMneListResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/GetFlattenedMneList", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *pndServiceClient) GetMne(ctx context.Context, in *GetMneRequest, opts ...grpc.CallOption) (*GetMneResponse, error) {
-	out := new(GetMneResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/GetMne", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *pndServiceClient) SetMneList(ctx context.Context, in *SetMneListRequest, opts ...grpc.CallOption) (*SetMneListResponse, error) {
-	out := new(SetMneListResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/SetMneList", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
 func (c *pndServiceClient) GetSbiList(ctx context.Context, in *GetSbiListRequest, opts ...grpc.CallOption) (*GetSbiListResponse, error) {
 	out := new(GetSbiListResponse)
 	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/GetSbiList", in, out, opts...)
@@ -135,112 +64,10 @@ func (c *pndServiceClient) SetSbiList(ctx context.Context, in *SetSbiListRequest
 	return out, nil
 }
 
-func (c *pndServiceClient) GetChangeList(ctx context.Context, in *GetChangeListRequest, opts ...grpc.CallOption) (*GetChangeListResponse, error) {
-	out := new(GetChangeListResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/GetChangeList", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *pndServiceClient) GetChange(ctx context.Context, in *GetChangeRequest, opts ...grpc.CallOption) (*GetChangeResponse, error) {
-	out := new(GetChangeResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/GetChange", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *pndServiceClient) SetChangeList(ctx context.Context, in *SetChangeListRequest, opts ...grpc.CallOption) (*SetChangeListResponse, error) {
-	out := new(SetChangeListResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/SetChangeList", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *pndServiceClient) GetPath(ctx context.Context, in *GetPathRequest, opts ...grpc.CallOption) (*GetPathResponse, error) {
-	out := new(GetPathResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/GetPath", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *pndServiceClient) SetPathList(ctx context.Context, in *SetPathListRequest, opts ...grpc.CallOption) (*SetPathListResponse, error) {
-	out := new(SetPathListResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/SetPathList", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *pndServiceClient) DeleteMne(ctx context.Context, in *DeleteMneRequest, opts ...grpc.CallOption) (*DeleteMneResponse, error) {
-	out := new(DeleteMneResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/DeleteMne", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *pndServiceClient) SubscribePath(ctx context.Context, in *SubscribePathRequest, opts ...grpc.CallOption) (PndService_SubscribePathClient, error) {
-	stream, err := c.cc.NewStream(ctx, &PndService_ServiceDesc.Streams[0], "/gosdn.pnd.PndService/SubscribePath", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &pndServiceSubscribePathClient{stream}
-	if err := x.ClientStream.SendMsg(in); err != nil {
-		return nil, err
-	}
-	if err := x.ClientStream.CloseSend(); err != nil {
-		return nil, err
-	}
-	return x, nil
-}
-
-type PndService_SubscribePathClient interface {
-	Recv() (*SubscribePathResponse, error)
-	grpc.ClientStream
-}
-
-type pndServiceSubscribePathClient struct {
-	grpc.ClientStream
-}
-
-func (x *pndServiceSubscribePathClient) Recv() (*SubscribePathResponse, error) {
-	m := new(SubscribePathResponse)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
 // PndServiceServer is the server API for PndService service.
 // All implementations must embed UnimplementedPndServiceServer
 // for forward compatibility
 type PndServiceServer interface {
-	// Allows to request all Managed Network Elements (MNE) which are
-	// managed by a specific Principal Network Domain.
-	// Full MNEs are provided, which also includes the MNE config as gNMI
-	// notification.
-	GetMneList(context.Context, *GetMneListRequest) (*GetMneListResponse, error)
-	// Allows to request all Managed Network Elements (MNE) which are
-	// managed by a specific Principal Network Domain.
-	// Flattened MNEs are provided, which does not include the MNE config as gNMI
-	// notification.
-	GetFlattenedMneList(context.Context, *GetMneListRequest) (*GetFlattenedMneListResponse, error)
-	// Allows to request a specific Managed Network Element which is managed by a
-	// specific Principal Network Domain.
-	GetMne(context.Context, *GetMneRequest) (*GetMneResponse, error)
-	// Allows to add multiple Managed Network Elements to be managed by a
-	// specific Principal Network Domain.
-	SetMneList(context.Context, *SetMneListRequest) (*SetMneListResponse, error)
 	// Allows to request all Southbound Interfaces a specific Principal Network
 	// Domain supports.
 	GetSbiList(context.Context, *GetSbiListRequest) (*GetSbiListResponse, error)
@@ -250,25 +77,6 @@ type PndServiceServer interface {
 	// Allows to add multiple specific Southbound Interfaces a specific Principal Network
 	// Domain supports.
 	SetSbiList(context.Context, *SetSbiListRequest) (*SetSbiListResponse, error)
-	// Allows to request all Changes registered for a specific Principal Network Domain.
-	GetChangeList(context.Context, *GetChangeListRequest) (*GetChangeListResponse, error)
-	// Allows to request a specific Change registered for a specific Principal Network Domain.
-	GetChange(context.Context, *GetChangeRequest) (*GetChangeResponse, error)
-	// Allows to operate on multiple Changes registered for a specific Principal Network Domain.
-	SetChangeList(context.Context, *SetChangeListRequest) (*SetChangeListResponse, error)
-	// Allows to request a specific Path of a Managed Network Element,
-	// managed by a specific Principal Network Domain.
-	GetPath(context.Context, *GetPathRequest) (*GetPathResponse, error)
-	// Allows to set a specific Path of a Managed Network Element,
-	// managed by a specific Principal Network Domain.
-	SetPathList(context.Context, *SetPathListRequest) (*SetPathListResponse, error)
-	// Allows to delete a specific Managed Network Element which is managed by a
-	// specific Principal Network Domain.
-	DeleteMne(context.Context, *DeleteMneRequest) (*DeleteMneResponse, error)
-	// Allows to subscribe to multiple paths of a Managed Network Element which is
-	// managed by a specific Principal Network Domain and streams data depending on the subscribe
-	// method.
-	SubscribePath(*SubscribePathRequest, PndService_SubscribePathServer) error
 	mustEmbedUnimplementedPndServiceServer()
 }
 
@@ -276,18 +84,6 @@ type PndServiceServer interface {
 type UnimplementedPndServiceServer struct {
 }
 
-func (UnimplementedPndServiceServer) GetMneList(context.Context, *GetMneListRequest) (*GetMneListResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetMneList not implemented")
-}
-func (UnimplementedPndServiceServer) GetFlattenedMneList(context.Context, *GetMneListRequest) (*GetFlattenedMneListResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetFlattenedMneList not implemented")
-}
-func (UnimplementedPndServiceServer) GetMne(context.Context, *GetMneRequest) (*GetMneResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetMne not implemented")
-}
-func (UnimplementedPndServiceServer) SetMneList(context.Context, *SetMneListRequest) (*SetMneListResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SetMneList not implemented")
-}
 func (UnimplementedPndServiceServer) GetSbiList(context.Context, *GetSbiListRequest) (*GetSbiListResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method GetSbiList not implemented")
 }
@@ -297,27 +93,6 @@ func (UnimplementedPndServiceServer) GetSbi(context.Context, *GetSbiRequest) (*G
 func (UnimplementedPndServiceServer) SetSbiList(context.Context, *SetSbiListRequest) (*SetSbiListResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method SetSbiList not implemented")
 }
-func (UnimplementedPndServiceServer) GetChangeList(context.Context, *GetChangeListRequest) (*GetChangeListResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetChangeList not implemented")
-}
-func (UnimplementedPndServiceServer) GetChange(context.Context, *GetChangeRequest) (*GetChangeResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetChange not implemented")
-}
-func (UnimplementedPndServiceServer) SetChangeList(context.Context, *SetChangeListRequest) (*SetChangeListResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SetChangeList not implemented")
-}
-func (UnimplementedPndServiceServer) GetPath(context.Context, *GetPathRequest) (*GetPathResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetPath not implemented")
-}
-func (UnimplementedPndServiceServer) SetPathList(context.Context, *SetPathListRequest) (*SetPathListResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SetPathList not implemented")
-}
-func (UnimplementedPndServiceServer) DeleteMne(context.Context, *DeleteMneRequest) (*DeleteMneResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteMne not implemented")
-}
-func (UnimplementedPndServiceServer) SubscribePath(*SubscribePathRequest, PndService_SubscribePathServer) error {
-	return status.Errorf(codes.Unimplemented, "method SubscribePath not implemented")
-}
 func (UnimplementedPndServiceServer) mustEmbedUnimplementedPndServiceServer() {}
 
 // UnsafePndServiceServer may be embedded to opt out of forward compatibility for this service.
@@ -331,78 +106,6 @@ func RegisterPndServiceServer(s grpc.ServiceRegistrar, srv PndServiceServer) {
 	s.RegisterService(&PndService_ServiceDesc, srv)
 }
 
-func _PndService_GetMneList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(GetMneListRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(PndServiceServer).GetMneList(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/gosdn.pnd.PndService/GetMneList",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(PndServiceServer).GetMneList(ctx, req.(*GetMneListRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _PndService_GetFlattenedMneList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(GetMneListRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(PndServiceServer).GetFlattenedMneList(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/gosdn.pnd.PndService/GetFlattenedMneList",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(PndServiceServer).GetFlattenedMneList(ctx, req.(*GetMneListRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _PndService_GetMne_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(GetMneRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(PndServiceServer).GetMne(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/gosdn.pnd.PndService/GetMne",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(PndServiceServer).GetMne(ctx, req.(*GetMneRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _PndService_SetMneList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(SetMneListRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(PndServiceServer).SetMneList(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/gosdn.pnd.PndService/SetMneList",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(PndServiceServer).SetMneList(ctx, req.(*SetMneListRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
 func _PndService_GetSbiList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(GetSbiListRequest)
 	if err := dec(in); err != nil {
@@ -457,135 +160,6 @@ func _PndService_SetSbiList_Handler(srv interface{}, ctx context.Context, dec fu
 	return interceptor(ctx, in, info, handler)
 }
 
-func _PndService_GetChangeList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(GetChangeListRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(PndServiceServer).GetChangeList(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/gosdn.pnd.PndService/GetChangeList",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(PndServiceServer).GetChangeList(ctx, req.(*GetChangeListRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _PndService_GetChange_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(GetChangeRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(PndServiceServer).GetChange(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/gosdn.pnd.PndService/GetChange",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(PndServiceServer).GetChange(ctx, req.(*GetChangeRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _PndService_SetChangeList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(SetChangeListRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(PndServiceServer).SetChangeList(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/gosdn.pnd.PndService/SetChangeList",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(PndServiceServer).SetChangeList(ctx, req.(*SetChangeListRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _PndService_GetPath_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(GetPathRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(PndServiceServer).GetPath(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/gosdn.pnd.PndService/GetPath",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(PndServiceServer).GetPath(ctx, req.(*GetPathRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _PndService_SetPathList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(SetPathListRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(PndServiceServer).SetPathList(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/gosdn.pnd.PndService/SetPathList",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(PndServiceServer).SetPathList(ctx, req.(*SetPathListRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _PndService_DeleteMne_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeleteMneRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(PndServiceServer).DeleteMne(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/gosdn.pnd.PndService/DeleteMne",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(PndServiceServer).DeleteMne(ctx, req.(*DeleteMneRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _PndService_SubscribePath_Handler(srv interface{}, stream grpc.ServerStream) error {
-	m := new(SubscribePathRequest)
-	if err := stream.RecvMsg(m); err != nil {
-		return err
-	}
-	return srv.(PndServiceServer).SubscribePath(m, &pndServiceSubscribePathServer{stream})
-}
-
-type PndService_SubscribePathServer interface {
-	Send(*SubscribePathResponse) error
-	grpc.ServerStream
-}
-
-type pndServiceSubscribePathServer struct {
-	grpc.ServerStream
-}
-
-func (x *pndServiceSubscribePathServer) Send(m *SubscribePathResponse) error {
-	return x.ServerStream.SendMsg(m)
-}
-
 // PndService_ServiceDesc is the grpc.ServiceDesc for PndService service.
 // It's only intended for direct use with grpc.RegisterService,
 // and not to be introspected or modified (even as a copy)
@@ -593,22 +167,6 @@ var PndService_ServiceDesc = grpc.ServiceDesc{
 	ServiceName: "gosdn.pnd.PndService",
 	HandlerType: (*PndServiceServer)(nil),
 	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "GetMneList",
-			Handler:    _PndService_GetMneList_Handler,
-		},
-		{
-			MethodName: "GetFlattenedMneList",
-			Handler:    _PndService_GetFlattenedMneList_Handler,
-		},
-		{
-			MethodName: "GetMne",
-			Handler:    _PndService_GetMne_Handler,
-		},
-		{
-			MethodName: "SetMneList",
-			Handler:    _PndService_SetMneList_Handler,
-		},
 		{
 			MethodName: "GetSbiList",
 			Handler:    _PndService_GetSbiList_Handler,
@@ -621,37 +179,7 @@ var PndService_ServiceDesc = grpc.ServiceDesc{
 			MethodName: "SetSbiList",
 			Handler:    _PndService_SetSbiList_Handler,
 		},
-		{
-			MethodName: "GetChangeList",
-			Handler:    _PndService_GetChangeList_Handler,
-		},
-		{
-			MethodName: "GetChange",
-			Handler:    _PndService_GetChange_Handler,
-		},
-		{
-			MethodName: "SetChangeList",
-			Handler:    _PndService_SetChangeList_Handler,
-		},
-		{
-			MethodName: "GetPath",
-			Handler:    _PndService_GetPath_Handler,
-		},
-		{
-			MethodName: "SetPathList",
-			Handler:    _PndService_SetPathList_Handler,
-		},
-		{
-			MethodName: "DeleteMne",
-			Handler:    _PndService_DeleteMne_Handler,
-		},
-	},
-	Streams: []grpc.StreamDesc{
-		{
-			StreamName:    "SubscribePath",
-			Handler:       _PndService_SubscribePath_Handler,
-			ServerStreams: true,
-		},
 	},
+	Streams:  []grpc.StreamDesc{},
 	Metadata: "gosdn/pnd/pnd.proto",
 }
diff --git a/api/openapiv2/gosdn_northbound.swagger.json b/api/openapiv2/gosdn_northbound.swagger.json
index a4d6d049a28aa2012dd08b0dcfc727e0c5aef970..5704748baa9f52dba2a16da12e469f9a83c67e92 100644
--- a/api/openapiv2/gosdn_northbound.swagger.json
+++ b/api/openapiv2/gosdn_northbound.swagger.json
@@ -33,13 +33,13 @@
       "name": "SbiService"
     },
     {
-      "name": "CoreService"
+      "name": "NetworkElementService"
     },
     {
-      "name": "CsbiService"
+      "name": "CoreService"
     },
     {
-      "name": "NetworkElementService"
+      "name": "CsbiService"
     },
     {
       "name": "AuthService"
@@ -168,138 +168,6 @@
         ]
       }
     },
-    "/network-element": {
-      "get": {
-        "operationId": "NetworkElementService_Get",
-        "responses": {
-          "200": {
-            "description": "A successful response.",
-            "schema": {
-              "$ref": "#/definitions/networkelementGetNetworkElementResponse"
-            }
-          },
-          "default": {
-            "description": "An unexpected error response.",
-            "schema": {
-              "$ref": "#/definitions/googlerpcStatus"
-            }
-          }
-        },
-        "parameters": [
-          {
-            "name": "timestamp",
-            "in": "query",
-            "required": false,
-            "type": "string",
-            "format": "int64"
-          },
-          {
-            "name": "networkElementId",
-            "in": "query",
-            "required": false,
-            "type": "string"
-          }
-        ],
-        "tags": [
-          "NetworkElementService"
-        ]
-      }
-    },
-    "/network-element/all": {
-      "get": {
-        "operationId": "NetworkElementService_GetAll",
-        "responses": {
-          "200": {
-            "description": "A successful response.",
-            "schema": {
-              "$ref": "#/definitions/networkelementGetAllNetworkElementResponse"
-            }
-          },
-          "default": {
-            "description": "An unexpected error response.",
-            "schema": {
-              "$ref": "#/definitions/googlerpcStatus"
-            }
-          }
-        },
-        "parameters": [
-          {
-            "name": "timestamp",
-            "in": "query",
-            "required": false,
-            "type": "string",
-            "format": "int64"
-          }
-        ],
-        "tags": [
-          "NetworkElementService"
-        ]
-      }
-    },
-    "/network-element/create": {
-      "post": {
-        "operationId": "NetworkElementService_Add",
-        "responses": {
-          "200": {
-            "description": "A successful response.",
-            "schema": {
-              "$ref": "#/definitions/networkelementAddNetworkElementResponse"
-            }
-          },
-          "default": {
-            "description": "An unexpected error response.",
-            "schema": {
-              "$ref": "#/definitions/googlerpcStatus"
-            }
-          }
-        },
-        "parameters": [
-          {
-            "name": "body",
-            "in": "body",
-            "required": true,
-            "schema": {
-              "$ref": "#/definitions/networkelementAddNetworkElementRequest"
-            }
-          }
-        ],
-        "tags": [
-          "NetworkElementService"
-        ]
-      }
-    },
-    "/network-element/update": {
-      "post": {
-        "operationId": "NetworkElementService_Update",
-        "responses": {
-          "200": {
-            "description": "A successful response.",
-            "schema": {
-              "$ref": "#/definitions/networkelementUpdateNetworkElementResponse"
-            }
-          },
-          "default": {
-            "description": "An unexpected error response.",
-            "schema": {
-              "$ref": "#/definitions/googlerpcStatus"
-            }
-          }
-        },
-        "parameters": [
-          {
-            "name": "body",
-            "in": "body",
-            "required": true,
-            "schema": {
-              "$ref": "#/definitions/networkelementUpdateNetworkElementRequest"
-            }
-          }
-        ],
-        "tags": [
-          "NetworkElementService"
-        ]
-      }
-    },
     "/pnd/{pid}": {
       "get": {
         "summary": "Allows to request a specific Principal Network Domain.",
@@ -442,12 +310,12 @@
     "/pnds/{pid}/changes": {
       "get": {
         "summary": "Allows to request all Changes registered for a specific Principal Network Domain.",
-        "operationId": "PndService_GetChangeList",
+        "operationId": "NetworkElementService_GetChangeList",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/pndGetChangeListResponse"
+              "$ref": "#/definitions/networkelementGetChangeListResponse"
             }
           },
           "default": {
@@ -473,17 +341,17 @@
           }
         ],
         "tags": [
-          "PndService"
+          "NetworkElementService"
         ]
       },
       "post": {
         "summary": "Allows to operate on multiple Changes registered for a specific Principal Network Domain.",
-        "operationId": "PndService_SetChangeList",
+        "operationId": "NetworkElementService_SetChangeList",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/pndSetChangeListResponse"
+              "$ref": "#/definitions/networkelementSetChangeListResponse"
             }
           },
           "default": {
@@ -514,7 +382,7 @@
                 "change": {
                   "type": "array",
                   "items": {
-                    "$ref": "#/definitions/pndSetChange"
+                    "$ref": "#/definitions/networkelementSetChange"
                   }
                 }
               }
@@ -522,19 +390,19 @@
           }
         ],
         "tags": [
-          "PndService"
+          "NetworkElementService"
         ]
       }
     },
     "/pnds/{pid}/changes/{cuid}": {
       "get": {
         "summary": "Allows to request a specific Change registered for a specific Principal Network Domain.",
-        "operationId": "PndService_GetChange",
+        "operationId": "NetworkElementService_GetChange",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/pndGetChangeResponse"
+              "$ref": "#/definitions/networkelementGetChangeResponse"
             }
           },
           "default": {
@@ -571,19 +439,19 @@
           }
         ],
         "tags": [
-          "PndService"
+          "NetworkElementService"
         ]
       }
     },
     "/pnds/{pid}/mne/{mneid}": {
       "get": {
         "summary": "Allows to request a specific Managed Network Element which is managed by a\nspecific Principal Network Domain.",
-        "operationId": "PndService_GetMne",
+        "operationId": "NetworkElementService_GetMne",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/pndGetMneResponse"
+              "$ref": "#/definitions/networkelementGetMneResponse"
             }
           },
           "default": {
@@ -615,19 +483,19 @@
           }
         ],
         "tags": [
-          "PndService"
+          "NetworkElementService"
         ]
       }
     },
     "/pnds/{pid}/mnes": {
       "get": {
-        "summary": "Allows to request all Managed Network Elements (MNE) which are\nmanaged by a specific Principal Network Domain.\nFlattened MNEs are provided, which does not include the MNE config as gNMI\nnotification.",
-        "operationId": "PndService_GetFlattenedMneList",
+        "summary": "TODO(PND): change GetRequest!\nAllows to request all Managed Network Elements (MNE) which are\nmanaged by a specific Principal Network Domain.\nFlattened MNEs are provided, which does not include the MNE config as gNMI\nnotification.",
+        "operationId": "NetworkElementService_GetFlattenedMneList",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/pndGetFlattenedMneListResponse"
+              "$ref": "#/definitions/networkelementGetFlattenedMneListResponse"
             }
           },
           "default": {
@@ -653,17 +521,17 @@
           }
         ],
         "tags": [
-          "PndService"
+          "NetworkElementService"
         ]
       },
       "post": {
         "summary": "Allows to add multiple Managed Network Elements to be managed by a\nspecific Principal Network Domain.",
-        "operationId": "PndService_SetMneList",
+        "operationId": "NetworkElementService_SetMneList",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/pndSetMneListResponse"
+              "$ref": "#/definitions/networkelementSetMneListResponse"
             }
           },
           "default": {
@@ -694,7 +562,7 @@
                 "mne": {
                   "type": "array",
                   "items": {
-                    "$ref": "#/definitions/pndSetMne"
+                    "$ref": "#/definitions/networkelementSetMne"
                   }
                 }
               }
@@ -702,19 +570,19 @@
           }
         ],
         "tags": [
-          "PndService"
+          "NetworkElementService"
         ]
       }
     },
     "/pnds/{pid}/mnes/paths": {
       "post": {
         "summary": "Allows to set a specific Path of a Managed Network Element,\nmanaged by a specific Principal Network Domain.",
-        "operationId": "PndService_SetPathList",
+        "operationId": "NetworkElementService_SetPathList",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/pndSetPathListResponse"
+              "$ref": "#/definitions/networkelementSetPathListResponse"
             }
           },
           "default": {
@@ -745,7 +613,7 @@
                 "changeRequest": {
                   "type": "array",
                   "items": {
-                    "$ref": "#/definitions/pndChangeRequest"
+                    "$ref": "#/definitions/networkelementChangeRequest"
                   }
                 }
               }
@@ -753,19 +621,19 @@
           }
         ],
         "tags": [
-          "PndService"
+          "NetworkElementService"
         ]
       }
     },
     "/pnds/{pid}/mnes/{mneid}": {
       "delete": {
         "summary": "Allows to delete a specific Managed Network Element which is managed by a\nspecific Principal Network Domain.",
-        "operationId": "PndService_DeleteMne",
+        "operationId": "NetworkElementService_DeleteMne",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/pndDeleteMneResponse"
+              "$ref": "#/definitions/networkelementDeleteMneResponse"
             }
           },
           "default": {
@@ -797,19 +665,19 @@
           }
         ],
         "tags": [
-          "PndService"
+          "NetworkElementService"
         ]
       }
     },
     "/pnds/{pid}/mnes/{mneid}/paths/{path}": {
       "get": {
         "summary": "Allows to request a specific Path of a Managed Network Element,\nmanaged by a specific Principal Network Domain.",
-        "operationId": "PndService_GetPath",
+        "operationId": "NetworkElementService_GetPath",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/pndGetPathResponse"
+              "$ref": "#/definitions/networkelementGetPathResponse"
             }
           },
           "default": {
@@ -847,7 +715,7 @@
           }
         ],
         "tags": [
-          "PndService"
+          "NetworkElementService"
         ]
       }
     },
@@ -1808,7 +1676,7 @@
         "pnd": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/pndPrincipalNetworkDomain"
+            "$ref": "#/definitions/gosdnpndPrincipalNetworkDomain"
           }
         }
       }
@@ -1821,7 +1689,7 @@
           "format": "int64"
         },
         "pnd": {
-          "$ref": "#/definitions/pndPrincipalNetworkDomain"
+          "$ref": "#/definitions/gosdnpndPrincipalNetworkDomain"
         }
       }
     },
@@ -2975,16 +2843,7 @@
       ],
       "default": "STATE_UNSPECIFIED"
     },
-    "gosdnnetworkelementStatus": {
-      "type": "string",
-      "enum": [
-        "STATUS_UNSPECIFIED",
-        "STATUS_OK",
-        "STATUS_ERROR"
-      ],
-      "default": "STATUS_UNSPECIFIED"
-    },
-    "gosdnpndOperation": {
+    "gosdnnetworkelementOperation": {
       "type": "string",
       "enum": [
         "OPERATION_UNSPECIFIED",
@@ -2994,7 +2853,22 @@
       ],
       "default": "OPERATION_UNSPECIFIED"
     },
-    "gosdnpndSetResponse": {
+    "gosdnnetworkelementPrincipalNetworkDomain": {
+      "type": "object",
+      "properties": {
+        "id": {
+          "type": "string"
+        },
+        "name": {
+          "type": "string"
+        },
+        "description": {
+          "type": "string"
+        }
+      },
+      "title": "//TODO(PND): this is maybe only temporary, need to figure out how to include without cycle or duplication"
+    },
+    "gosdnnetworkelementSetResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -3005,11 +2879,11 @@
           "type": "string"
         },
         "status": {
-          "$ref": "#/definitions/gosdnpndStatus"
+          "$ref": "#/definitions/gosdnnetworkelementStatus"
         }
       }
     },
-    "gosdnpndStatus": {
+    "gosdnnetworkelementStatus": {
       "type": "string",
       "enum": [
         "STATUS_UNSPECIFIED",
@@ -3018,14 +2892,14 @@
       ],
       "default": "STATUS_UNSPECIFIED"
     },
-    "gosdnpndSubscription": {
+    "gosdnnetworkelementSubscription": {
       "type": "object",
       "properties": {
         "path": {
           "type": "string"
         },
         "streamMode": {
-          "$ref": "#/definitions/pndStreamMode"
+          "$ref": "#/definitions/networkelementStreamMode"
         },
         "sampleInterval": {
           "type": "string",
@@ -3033,22 +2907,22 @@
         }
       }
     },
-    "gosdnpndSubscriptionList": {
+    "gosdnnetworkelementSubscriptionList": {
       "type": "object",
       "properties": {
         "subscription": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/gosdnpndSubscription"
+            "$ref": "#/definitions/gosdnnetworkelementSubscription"
           }
         },
         "mode": {
-          "$ref": "#/definitions/gosdnpndSubscriptionMode"
+          "$ref": "#/definitions/gosdnnetworkelementSubscriptionMode"
         }
       },
       "title": "The mode determines how the target should trigger updates to be sent.\nReference: gNMI Specification Section 3.5.1.2"
     },
-    "gosdnpndSubscriptionMode": {
+    "gosdnnetworkelementSubscriptionMode": {
       "type": "string",
       "enum": [
         "SUBSCRIPTION_MODE_UNSPECIFIED",
@@ -3058,6 +2932,44 @@
       ],
       "default": "SUBSCRIPTION_MODE_UNSPECIFIED"
     },
+    "gosdnpndPrincipalNetworkDomain": {
+      "type": "object",
+      "properties": {
+        "id": {
+          "type": "string"
+        },
+        "name": {
+          "type": "string"
+        },
+        "description": {
+          "type": "string"
+        }
+      }
+    },
+    "gosdnpndSetResponse": {
+      "type": "object",
+      "properties": {
+        "timestamp": {
+          "type": "string",
+          "format": "int64"
+        },
+        "id": {
+          "type": "string"
+        },
+        "status": {
+          "$ref": "#/definitions/gosdnpndStatus"
+        }
+      }
+    },
+    "gosdnpndStatus": {
+      "type": "string",
+      "enum": [
+        "STATUS_UNSPECIFIED",
+        "STATUS_OK",
+        "STATUS_ERROR"
+      ],
+      "default": "STATUS_UNSPECIFIED"
+    },
     "gosdnrbacRole": {
       "type": "object",
       "properties": {
@@ -3128,131 +3040,7 @@
       ],
       "default": "STATUS_UNSPECIFIED"
     },
-    "networkelementAddNetworkElementConfiguration": {
-      "type": "object",
-      "properties": {
-        "address": {
-          "type": "string"
-        },
-        "sbi": {
-          "$ref": "#/definitions/southboundSouthboundInterface"
-        },
-        "networkElementName": {
-          "type": "string"
-        },
-        "transportOption": {
-          "$ref": "#/definitions/transportTransportOption"
-        }
-      }
-    },
-    "networkelementAddNetworkElementRequest": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "networkElement": {
-          "$ref": "#/definitions/networkelementAddNetworkElementConfiguration"
-        },
-        "pid": {
-          "type": "string"
-        }
-      }
-    },
-    "networkelementAddNetworkElementResponse": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "status": {
-          "$ref": "#/definitions/gosdnnetworkelementStatus"
-        },
-        "networkElementId": {
-          "type": "string"
-        }
-      }
-    },
-    "networkelementGetAllNetworkElementResponse": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "status": {
-          "$ref": "#/definitions/gosdnnetworkelementStatus"
-        },
-        "networkElement": {
-          "type": "array",
-          "items": {
-            "$ref": "#/definitions/networkelementNetworkElement"
-          }
-        }
-      }
-    },
-    "networkelementGetNetworkElementResponse": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "status": {
-          "$ref": "#/definitions/gosdnnetworkelementStatus"
-        },
-        "networkElement": {
-          "$ref": "#/definitions/networkelementNetworkElement"
-        }
-      }
-    },
-    "networkelementNetworkElement": {
-      "type": "object",
-      "properties": {
-        "id": {
-          "type": "string"
-        },
-        "name": {
-          "type": "string"
-        },
-        "model": {
-          "type": "string"
-        },
-        "transportAddress": {
-          "type": "string"
-        },
-        "metadata": {
-          "$ref": "#/definitions/conflictMetadata"
-        }
-      }
-    },
-    "networkelementUpdateNetworkElementRequest": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "networkElement": {
-          "$ref": "#/definitions/networkelementNetworkElement"
-        }
-      }
-    },
-    "networkelementUpdateNetworkElementResponse": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "status": {
-          "$ref": "#/definitions/gosdnnetworkelementStatus"
-        }
-      }
-    },
-    "pndApiOperation": {
+    "networkelementApiOperation": {
       "type": "string",
       "enum": [
         "API_OPERATION_UNSPECIFIED",
@@ -3262,7 +3050,7 @@
       ],
       "default": "API_OPERATION_UNSPECIFIED"
     },
-    "pndChange": {
+    "networkelementChange": {
       "type": "object",
       "properties": {
         "id": {
@@ -3273,14 +3061,14 @@
           "format": "int64"
         },
         "state": {
-          "$ref": "#/definitions/pndChangeState"
+          "$ref": "#/definitions/networkelementChangeState"
         },
         "diff": {
           "$ref": "#/definitions/gnmiNotification"
         }
       }
     },
-    "pndChangeRequest": {
+    "networkelementChangeRequest": {
       "type": "object",
       "properties": {
         "mneid": {
@@ -3293,12 +3081,12 @@
           "type": "string"
         },
         "apiOp": {
-          "$ref": "#/definitions/pndApiOperation"
+          "$ref": "#/definitions/networkelementApiOperation"
         }
       },
       "title": "TODO: rename"
     },
-    "pndChangeState": {
+    "networkelementChangeState": {
       "type": "string",
       "enum": [
         "CHANGE_STATE_UNSPECIFIED",
@@ -3309,7 +3097,7 @@
       ],
       "default": "CHANGE_STATE_UNSPECIFIED"
     },
-    "pndDeleteMneResponse": {
+    "networkelementDeleteMneResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -3317,11 +3105,11 @@
           "format": "int64"
         },
         "status": {
-          "$ref": "#/definitions/gosdnpndStatus"
+          "$ref": "#/definitions/gosdnnetworkelementStatus"
         }
       }
     },
-    "pndFlattenedManagedNetworkElement": {
+    "networkelementFlattenedManagedNetworkElement": {
       "type": "object",
       "properties": {
         "id": {
@@ -3335,7 +3123,7 @@
         }
       }
     },
-    "pndGetChangeListResponse": {
+    "networkelementGetChangeListResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -3343,18 +3131,18 @@
           "format": "int64"
         },
         "pnd": {
-          "$ref": "#/definitions/pndPrincipalNetworkDomain",
+          "$ref": "#/definitions/gosdnnetworkelementPrincipalNetworkDomain",
           "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\nis also sufficient."
         },
         "change": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/pndChange"
+            "$ref": "#/definitions/networkelementChange"
           }
         }
       }
     },
-    "pndGetChangeResponse": {
+    "networkelementGetChangeResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -3362,18 +3150,18 @@
           "format": "int64"
         },
         "pnd": {
-          "$ref": "#/definitions/pndPrincipalNetworkDomain",
+          "$ref": "#/definitions/gosdnnetworkelementPrincipalNetworkDomain",
           "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\nis also sufficient."
         },
         "change": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/pndChange"
+            "$ref": "#/definitions/networkelementChange"
           }
         }
       }
     },
-    "pndGetFlattenedMneListResponse": {
+    "networkelementGetFlattenedMneListResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -3381,18 +3169,19 @@
           "format": "int64"
         },
         "pnd": {
-          "$ref": "#/definitions/pndPrincipalNetworkDomain",
+          "$ref": "#/definitions/gosdnnetworkelementPrincipalNetworkDomain",
           "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\nis also sufficient."
         },
         "mne": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/pndFlattenedManagedNetworkElement"
+            "$ref": "#/definitions/networkelementFlattenedManagedNetworkElement"
           }
         }
-      }
+      },
+      "title": "TODO(PND): add request here"
     },
-    "pndGetMneListResponse": {
+    "networkelementGetMneListResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -3400,18 +3189,18 @@
           "format": "int64"
         },
         "pnd": {
-          "$ref": "#/definitions/pndPrincipalNetworkDomain",
+          "$ref": "#/definitions/gosdnnetworkelementPrincipalNetworkDomain",
           "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\nis also sufficient."
         },
         "mne": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/pndManagedNetworkElement"
+            "$ref": "#/definitions/networkelementManagedNetworkElement"
           }
         }
       }
     },
-    "pndGetMneResponse": {
+    "networkelementGetMneResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -3419,15 +3208,15 @@
           "format": "int64"
         },
         "pnd": {
-          "$ref": "#/definitions/pndPrincipalNetworkDomain",
+          "$ref": "#/definitions/gosdnnetworkelementPrincipalNetworkDomain",
           "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\nis also sufficient."
         },
         "mne": {
-          "$ref": "#/definitions/pndManagedNetworkElement"
+          "$ref": "#/definitions/networkelementManagedNetworkElement"
         }
       }
     },
-    "pndGetPathResponse": {
+    "networkelementGetPathResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -3435,7 +3224,7 @@
           "format": "int64"
         },
         "pnd": {
-          "$ref": "#/definitions/pndPrincipalNetworkDomain",
+          "$ref": "#/definitions/gosdnnetworkelementPrincipalNetworkDomain",
           "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\nis also sufficient."
         },
         "mneNotification": {
@@ -3446,42 +3235,7 @@
         }
       }
     },
-    "pndGetSbiListResponse": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "pnd": {
-          "$ref": "#/definitions/pndPrincipalNetworkDomain",
-          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\nis also sufficient."
-        },
-        "sbi": {
-          "type": "array",
-          "items": {
-            "$ref": "#/definitions/southboundSouthboundInterface"
-          }
-        }
-      }
-    },
-    "pndGetSbiResponse": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "pnd": {
-          "$ref": "#/definitions/pndPrincipalNetworkDomain",
-          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\nis also sufficient."
-        },
-        "sbi": {
-          "$ref": "#/definitions/southboundSouthboundInterface"
-        }
-      }
-    },
-    "pndManagedNetworkElement": {
+    "networkelementManagedNetworkElement": {
       "type": "object",
       "properties": {
         "id": {
@@ -3498,45 +3252,24 @@
         },
         "sbi": {
           "$ref": "#/definitions/southboundSouthboundInterface"
-        }
-      }
-    },
-    "pndPrincipalNetworkDomain": {
-      "type": "object",
-      "properties": {
-        "id": {
-          "type": "string"
-        },
-        "name": {
-          "type": "string"
         },
-        "description": {
-          "type": "string"
+        "metadata": {
+          "$ref": "#/definitions/conflictMetadata"
         }
       }
     },
-    "pndSbiType": {
-      "type": "string",
-      "enum": [
-        "SBI_TYPE_UNSPECIFIED",
-        "SBI_TYPE_OPENCONFIG",
-        "SBI_TYPE_CONTAINERISED",
-        "SBI_TYPE_PLUGIN"
-      ],
-      "default": "SBI_TYPE_UNSPECIFIED"
-    },
-    "pndSetChange": {
+    "networkelementSetChange": {
       "type": "object",
       "properties": {
         "cuid": {
           "type": "string"
         },
         "op": {
-          "$ref": "#/definitions/gosdnpndOperation"
+          "$ref": "#/definitions/gosdnnetworkelementOperation"
         }
       }
     },
-    "pndSetChangeListResponse": {
+    "networkelementSetChangeListResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -3544,17 +3277,17 @@
           "format": "int64"
         },
         "status": {
-          "$ref": "#/definitions/gosdnpndStatus"
+          "$ref": "#/definitions/gosdnnetworkelementStatus"
         },
         "responses": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/gosdnpndSetResponse"
+            "$ref": "#/definitions/gosdnnetworkelementSetResponse"
           }
         }
       }
     },
-    "pndSetMne": {
+    "networkelementSetMne": {
       "type": "object",
       "properties": {
         "address": {
@@ -3571,7 +3304,7 @@
         }
       }
     },
-    "pndSetMneListResponse": {
+    "networkelementSetMneListResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -3579,17 +3312,17 @@
           "format": "int64"
         },
         "status": {
-          "$ref": "#/definitions/gosdnpndStatus"
+          "$ref": "#/definitions/gosdnnetworkelementStatus"
         },
         "responses": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/gosdnpndSetResponse"
+            "$ref": "#/definitions/gosdnnetworkelementSetResponse"
           }
         }
       }
     },
-    "pndSetPathListResponse": {
+    "networkelementSetPathListResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -3597,53 +3330,98 @@
           "format": "int64"
         },
         "status": {
-          "$ref": "#/definitions/gosdnpndStatus"
+          "$ref": "#/definitions/gosdnnetworkelementStatus"
         },
         "responses": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/gosdnpndSetResponse"
+            "$ref": "#/definitions/gosdnnetworkelementSetResponse"
           }
         }
       }
     },
-    "pndSetSbi": {
+    "networkelementStreamMode": {
+      "type": "string",
+      "enum": [
+        "STREAM_MODE_UNSPECIFIED",
+        "STREAM_MODE_TARGET_DEFINED",
+        "STREAM_MODE_ON_CHANGE",
+        "STREAM_MODE_SAMPLE"
+      ],
+      "default": "STREAM_MODE_UNSPECIFIED"
+    },
+    "networkelementSubscribePathResponse": {
       "type": "object",
       "properties": {
-        "sbiType": {
-          "$ref": "#/definitions/pndSbiType"
+        "timestamp": {
+          "type": "string",
+          "format": "int64"
+        },
+        "status": {
+          "$ref": "#/definitions/gosdnnetworkelementStatus"
+        },
+        "mneNotification": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/gnmiNotification"
+          }
         }
       }
     },
-    "pndSetSbiListResponse": {
+    "pndGetSbiListResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
           "type": "string",
           "format": "int64"
         },
-        "status": {
-          "$ref": "#/definitions/gosdnpndStatus"
+        "pnd": {
+          "$ref": "#/definitions/gosdnpndPrincipalNetworkDomain",
+          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\nis also sufficient."
         },
-        "responses": {
+        "sbi": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/gosdnpndSetResponse"
+            "$ref": "#/definitions/southboundSouthboundInterface"
           }
         }
       }
     },
-    "pndStreamMode": {
+    "pndGetSbiResponse": {
+      "type": "object",
+      "properties": {
+        "timestamp": {
+          "type": "string",
+          "format": "int64"
+        },
+        "pnd": {
+          "$ref": "#/definitions/gosdnpndPrincipalNetworkDomain",
+          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\nis also sufficient."
+        },
+        "sbi": {
+          "$ref": "#/definitions/southboundSouthboundInterface"
+        }
+      }
+    },
+    "pndSbiType": {
       "type": "string",
       "enum": [
-        "STREAM_MODE_UNSPECIFIED",
-        "STREAM_MODE_TARGET_DEFINED",
-        "STREAM_MODE_ON_CHANGE",
-        "STREAM_MODE_SAMPLE"
+        "SBI_TYPE_UNSPECIFIED",
+        "SBI_TYPE_OPENCONFIG",
+        "SBI_TYPE_CONTAINERISED",
+        "SBI_TYPE_PLUGIN"
       ],
-      "default": "STREAM_MODE_UNSPECIFIED"
+      "default": "SBI_TYPE_UNSPECIFIED"
+    },
+    "pndSetSbi": {
+      "type": "object",
+      "properties": {
+        "sbiType": {
+          "$ref": "#/definitions/pndSbiType"
+        }
+      }
     },
-    "pndSubscribePathResponse": {
+    "pndSetSbiListResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -3653,10 +3431,10 @@
         "status": {
           "$ref": "#/definitions/gosdnpndStatus"
         },
-        "mneNotification": {
+        "responses": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/gnmiNotification"
+            "$ref": "#/definitions/gosdnpndSetResponse"
           }
         }
       }
diff --git a/api/proto/buf.lock b/api/proto/buf.lock
index e5d1311d723ba10d971038beaedc65d90aa8035c..d8efa9a963ab373273ea644b3e80394aaa893c3b 100644
--- a/api/proto/buf.lock
+++ b/api/proto/buf.lock
@@ -4,8 +4,8 @@ deps:
   - remote: buf.build
     owner: googleapis
     repository: googleapis
-    commit: d1263fe26f8e430a967dc22a4d0cad18
+    commit: 75b4300737fb4efca0831636be94e517
   - remote: buf.build
     owner: grpc-ecosystem
     repository: grpc-gateway
-    commit: b96615cde70c403f8075c48e56178f88
+    commit: a1ecdc58eccd49aa8bea2a7a9022dc27
diff --git a/api/proto/gosdn/core/core.proto b/api/proto/gosdn/core/core.proto
index d2476f3897755c07298973f159a11ca888ae96e6..2c48b55e7068ffdf6a50b9f08b55d807cdd48b63 100644
--- a/api/proto/gosdn/core/core.proto
+++ b/api/proto/gosdn/core/core.proto
@@ -7,6 +7,7 @@ import "gosdn/pnd/pnd.proto";
 
 option go_package = "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/core";
 
+//TODO(PND): make this the pnd service or move to other file, think about better solution?
 service CoreService {
   // Allows to request a specific Principal Network Domain.
   rpc GetPnd(GetPndRequest) returns (GetPndResponse) {
diff --git a/api/proto/gosdn/networkelement/networkelement.proto b/api/proto/gosdn/networkelement/networkelement.proto
index ad75044ab0a86221a3759bfe5269b7aba6a0d119..fa4e668d35081032d7b537ac4f12a06beb8afd55 100644
--- a/api/proto/gosdn/networkelement/networkelement.proto
+++ b/api/proto/gosdn/networkelement/networkelement.proto
@@ -8,45 +8,89 @@ import "protoc-gen-openapiv2/options/annotations.proto";
 import "github.com/openconfig/gnmi/proto/gnmi/gnmi.proto";
 
 import "gosdn/conflict/conflict.proto";
-import "gosdn/pnd/pnd.proto";
 import "gosdn/transport/transport.proto";
 import "gosdn/southbound/southbound.proto";
 
 option go_package = "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement";
 
+//TODO(PND): add option to update our stored MNE (e.g. name,  descr)instead of only being able to change YANG
 service NetworkElementService {
-    rpc Add(AddNetworkElementRequest) returns (AddNetworkElementResponse) {
-        option (google.api.http) = {
-            post: "/network-element/create"
-            body: "*"
-        };
-    }
-
-    rpc Get(GetNetworkElementRequest) returns (GetNetworkElementResponse) {
-        option (google.api.http) = {
-            get: "/network-element"
-        };
-    }
-
-    rpc GetAll(GetAllNetworkElementRequest) returns (GetAllNetworkElementResponse) {
-        option (google.api.http) = {
-            get: "/network-element/all"
-        };
-    }
-
-    rpc Update(UpdateNetworkElementRequest) returns (UpdateNetworkElementResponse) {
-        option (google.api.http) = {
-            post: "/network-element/update"
-            body: "*"
-        };
-    }
-
-    // TODO: not implemented yet!
-    // rpc Delete(DeleteNetworkElementRequest) returns (DeleteNetworkElementRequest) {
-    //     option (google.api.http) = {
-    //         delete: "/network-element"
-    //     };
-    // }
+  // Allows to request all Managed Network Elements (MNE) which are
+  // managed by a specific Principal Network Domain.
+  // Full MNEs are provided, which also includes the MNE config as gNMI
+  // notification.
+  rpc GetMneList(GetMneListRequest) returns (GetMneListResponse);
+
+  //TODO(PND): change GetRequest!
+  // Allows to request all Managed Network Elements (MNE) which are
+  // managed by a specific Principal Network Domain.
+  // Flattened MNEs are provided, which does not include the MNE config as gNMI
+  // notification.
+  rpc GetFlattenedMneList(GetMneListRequest) returns (GetFlattenedMneListResponse) {
+    option (google.api.http) = {
+      get: "/pnds/{pid}/mnes"
+    };
+  }
+  // Allows to request a specific Managed Network Element which is managed by a
+  // specific Principal Network Domain.
+  rpc GetMne(GetMneRequest) returns (GetMneResponse) {
+    option (google.api.http) = {
+      get: "/pnds/{pid}/mne/{mneid}"
+    };
+  }
+  // Allows to add multiple Managed Network Elements to be managed by a
+  // specific Principal Network Domain.
+  rpc SetMneList(SetMneListRequest) returns (SetMneListResponse) {
+    option (google.api.http) = {
+      post: "/pnds/{pid}/mnes"
+      body: "*"
+    };
+  }
+  // Allows to request a specific Path of a Managed Network Element,
+  // managed by a specific Principal Network Domain.
+  rpc GetPath(GetPathRequest) returns (GetPathResponse) {
+    option (google.api.http) = {
+      get: "/pnds/{pid}/mnes/{mneid}/paths/{path}"
+    };
+  }
+  // Allows to set a specific Path of a Managed Network Element,
+  // managed by a specific Principal Network Domain.
+  rpc SetPathList(SetPathListRequest) returns (SetPathListResponse) {
+    option (google.api.http) = {
+      post: "/pnds/{pid}/mnes/paths"
+      body: "*"
+    };
+  }
+  // Allows to delete a specific Managed Network Element which is managed by a
+  // specific Principal Network Domain.
+  rpc DeleteMne(DeleteMneRequest) returns (DeleteMneResponse) {
+    option (google.api.http) = {
+      delete: "/pnds/{pid}/mnes/{mneid}"
+    };
+  }
+   // Allows to request all Changes registered for a specific Principal Network Domain.
+   rpc GetChangeList(GetChangeListRequest) returns (GetChangeListResponse) {
+    option (google.api.http) = {
+      get: "/pnds/{pid}/changes"
+    };
+  }
+  // Allows to request a specific Change registered for a specific Principal Network Domain.
+  rpc GetChange(GetChangeRequest) returns (GetChangeResponse) {
+    option (google.api.http) = {
+      get: "/pnds/{pid}/changes/{cuid}"
+    };
+  }
+  // Allows to operate on multiple Changes registered for a specific Principal Network Domain.
+  rpc SetChangeList(SetChangeListRequest) returns (SetChangeListResponse) {
+    option (google.api.http) = {
+      post: "/pnds/{pid}/changes"
+      body: "*"
+    };
+  }
+  // Allows to subscribe to multiple paths of a Managed Network Element which is
+  // managed by a specific Principal Network Domain and streams data depending on the subscribe
+  // method.
+  rpc SubscribePath(SubscribePathRequest) returns (stream SubscribePathResponse) {};
 }
 
 enum Status {
@@ -55,70 +99,257 @@ enum Status {
     STATUS_ERROR = 2;
 }
 
-message NetworkElement {
+// message NetworkElement {
+//     string id = 1;
+//     string name = 2;
+//     string model = 3;
+//     string transport_address = 4;
+//     conflict.Metadata metadata = 5;
+// }
+
+message ManagedNetworkElement {
     string id = 1;
     string name = 2;
-    string model = 3;
-    string transport_address = 4;
+    repeated gnmi.Notification mne_notification = 3;
+    .gosdn.southbound.SouthboundInterface sbi = 4;
     conflict.Metadata metadata = 5;
+ }
+
+message FlattenedManagedNetworkElement {
+    string id = 1;
+    string name = 2;
+    string sbi = 3;
+}
+
+// //TODO(PND): this is maybe only temporary, need to figure out how to include without cycle or duplication
+message PrincipalNetworkDomain {
+    string id = 1;
+    string name = 2;
+    string description = 3;
 }
 
-message AddNetworkElementConfiguration {
+message GetMneListRequest {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    string pid = 2;
+}
+
+message GetMneListResponse {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    // TODO: Check if this is really needed. Perhaps a reference to the PND's ID
+    // is also sufficient.
+    PrincipalNetworkDomain pnd = 2;
+    repeated ManagedNetworkElement mne = 3;
+}
+
+//TODO(PND): add request here
+message GetFlattenedMneListResponse {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    // TODO: Check if this is really needed. Perhaps a reference to the PND's ID
+    // is also sufficient.
+    PrincipalNetworkDomain pnd = 2;
+    repeated FlattenedManagedNetworkElement mne = 3;
+}
+
+message GetMneRequest {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    string mneid = 2;
+    string pid = 3;
+}
+
+message GetMneResponse {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    // TODO: Check if this is really needed. Perhaps a reference to the PND's ID
+    // is also sufficient.
+    PrincipalNetworkDomain pnd = 2;
+    ManagedNetworkElement mne = 3;
+}
+
+message SetMne {
     string address = 1;
     .gosdn.southbound.SouthboundInterface sbi = 2;
-    string network_element_name = 3;
+    string mne_name = 3;
     .gosdn.transport.TransportOption transport_option = 4;
 }
 
-message AddNetworkElementRequest {
-    int64 timestamp = 1;
-    AddNetworkElementConfiguration network_element = 2;
+message SetMneListRequest {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    repeated SetMne mne = 2;
     string pid = 3;
 }
 
-message AddNetworkElementResponse {
-    int64 timestamp = 1;
+message SetMneListResponse{
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
     Status status = 2;
-    string network_element_id = 3;
+    repeated SetResponse responses = 3;
+}
+
+message GetPathRequest {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    string mneid = 2;
+    string path = 3;
+    string pid = 4;
+}
+
+message GetPathResponse {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    // TODO: Check if this is really needed. Perhaps a reference to the PND's ID
+    // is also sufficient.
+    PrincipalNetworkDomain pnd = 2;
+    repeated gnmi.Notification mne_notification = 3;
+}
+
+message SetResponse{
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    string id = 2;
+    Status status = 3;
 }
 
-message GetNetworkElementRequest {
-    int64 timestamp = 1;
-    string network_element_id = 2;
+message SetPathListRequest {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    repeated ChangeRequest change_request = 2;
+    string pid = 3;
 }
 
-message GetNetworkElementResponse {
-    int64 timestamp = 1;
+message SetPathListResponse{
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
     Status status = 2;
-    NetworkElement network_element = 3;
+    repeated SetResponse responses = 3;
 }
 
-message GetAllNetworkElementRequest {
-    int64 timestamp = 1;
+message DeleteMneRequest {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    string pid = 2;
+    string mneid = 3;
 }
 
-message GetAllNetworkElementResponse {
-    int64 timestamp = 1;
+message DeleteMneResponse {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
     Status status = 2;
-    repeated NetworkElement network_element = 3;
 }
 
-message UpdateNetworkElementRequest {
-    int64 timestamp = 1;
-    NetworkElement network_element = 2;
+enum ChangeState {
+    CHANGE_STATE_UNSPECIFIED = 0;
+    CHANGE_STATE_PENDING = 1;
+    CHANGE_STATE_COMMITTED = 2;
+    CHANGE_STATE_CONFIRMED = 3;
+    CHANGE_STATE_INCONSISTENT = 4;
+}
+
+message Change {
+    string id = 1;
+    int64 age = 2;
+    ChangeState state = 3;
+    gnmi.Notification diff = 4;
+}
+
+//TODO: rename
+message ChangeRequest {
+    string mneid = 1;
+    string path = 2;
+    string value = 3;
+    ApiOperation api_op = 4;
 }
 
-message UpdateNetworkElementResponse {
-    int64 timestamp = 1;
+enum ApiOperation {
+    API_OPERATION_UNSPECIFIED = 0;
+    API_OPERATION_UPDATE = 1;
+    API_OPERATION_REPLACE = 2;
+    API_OPERATION_DELETE = 3;
+}
+
+enum Operation {
+    OPERATION_UNSPECIFIED = 0;
+    OPERATION_CREATE = 1;
+    OPERATION_COMMIT = 2;
+    OPERATION_CONFIRM = 3;
+}
+
+message SetChange {
+    string cuid = 1;
+    Operation op = 2;
+}
+
+message GetChangeListRequest {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    string pid = 2;
+}
+
+message GetChangeListResponse {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    // TODO: Check if this is really needed. Perhaps a reference to the PND's ID
+    // is also sufficient.
+    PrincipalNetworkDomain pnd = 2;
+    repeated Change change = 3;
+}
+
+message GetChangeRequest {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    repeated string cuid = 2;
+    string pid = 3;
+}
+
+message GetChangeResponse {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    // TODO: Check if this is really needed. Perhaps a reference to the PND's ID
+    // is also sufficient.
+    PrincipalNetworkDomain pnd = 2;
+    repeated Change change = 3;
+}
+
+message SetChangeListRequest {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    repeated SetChange change = 2;
+    string pid = 3;
+}
+
+message SetChangeListResponse{
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
     Status status = 2;
+    repeated SetResponse responses = 3;
+}
+
+// The mode determines how the target should trigger updates to be sent.
+// Reference: gNMI Specification Section 3.5.1.2
+message SubscriptionList {
+    repeated Subscription subscription = 1;
+    SubscriptionMode mode = 2;
+}
+
+enum SubscriptionMode {
+    SUBSCRIPTION_MODE_UNSPECIFIED = 0;
+    SUBSCRIPTION_MODE_ONCE = 1;
+    SUBSCRIPTION_MODE_STREAM = 2;
+    SUBSCRIPTION_MODE_POLL = 3;
+}
+
+message Subscription {
+    string path = 1;
+    StreamMode stream_mode = 2;
+    uint64 sample_interval = 3;       // time in ns between samples in SAMPLE mode.
+}
+
+enum StreamMode {
+    STREAM_MODE_UNSPECIFIED = 0;
+    STREAM_MODE_TARGET_DEFINED = 1;  // The target selects the relevant mode for each element.
+    STREAM_MODE_ON_CHANGE      = 2;  // The target sends an update on element value change.
+    STREAM_MODE_SAMPLE         = 3; // The target samples values according to the interval.
 }
 
-message DeleteNetworkElementRequest {
-    int64 timestamp = 1;
-    string network_element_id = 2;
+message SubscribePathRequest {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    string mneid = 2;
+    string pid = 3;
+    SubscriptionList sublist = 4;
 }
 
-message DeleteNetworkElementResponse {
-    int64 timestamp = 1;
+message SubscribePathResponse {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
     Status status = 2;
+    repeated gnmi.Notification mne_notification = 3;
 }
+
+
+
+
+
+
diff --git a/api/proto/gosdn/pnd/pnd.proto b/api/proto/gosdn/pnd/pnd.proto
index 8f8ae50b0d65f9b2f6dacaaf0f30537071c18433..5c843b395f42e5769e583b6a16e33b9a96994ff4 100644
--- a/api/proto/gosdn/pnd/pnd.proto
+++ b/api/proto/gosdn/pnd/pnd.proto
@@ -7,6 +7,7 @@ import "google/protobuf/descriptor.proto";
 import "github.com/openconfig/gnmi/proto/gnmi/gnmi.proto";
 import "gosdn/transport/transport.proto";
 import "gosdn/southbound/southbound.proto";
+import "gosdn/networkelement/networkelement.proto";
 import "protoc-gen-openapiv2/options/annotations.proto";
 
 option go_package = "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd";
@@ -29,36 +30,6 @@ option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = {
 };
 
 service PndService {
-  // Allows to request all Managed Network Elements (MNE) which are
-  // managed by a specific Principal Network Domain.
-  // Full MNEs are provided, which also includes the MNE config as gNMI
-  // notification.
-  rpc GetMneList(GetMneListRequest) returns (GetMneListResponse);
-
-  // Allows to request all Managed Network Elements (MNE) which are
-  // managed by a specific Principal Network Domain.
-  // Flattened MNEs are provided, which does not include the MNE config as gNMI
-  // notification.
-  rpc GetFlattenedMneList(GetMneListRequest) returns (GetFlattenedMneListResponse) {
-    option (google.api.http) = {
-      get: "/pnds/{pid}/mnes"
-    };
-  }
-  // Allows to request a specific Managed Network Element which is managed by a
-  // specific Principal Network Domain.
-  rpc GetMne(GetMneRequest) returns (GetMneResponse) {
-    option (google.api.http) = {
-      get: "/pnds/{pid}/mne/{mneid}"
-    };
-  }
-  // Allows to add multiple Managed Network Elements to be managed by a
-  // specific Principal Network Domain.
-  rpc SetMneList(SetMneListRequest) returns (SetMneListResponse) {
-    option (google.api.http) = {
-      post: "/pnds/{pid}/mnes"
-      body: "*"
-    };
-  }
   // Allows to request all Southbound Interfaces a specific Principal Network
   // Domain supports.
   rpc GetSbiList(GetSbiListRequest) returns (GetSbiListResponse) {
@@ -81,62 +52,12 @@ service PndService {
       body: "*"
     };
   }
-  // Allows to request all Changes registered for a specific Principal Network Domain.
-  rpc GetChangeList(GetChangeListRequest) returns (GetChangeListResponse) {
-    option (google.api.http) = {
-      get: "/pnds/{pid}/changes"
-    };
-  }
-  // Allows to request a specific Change registered for a specific Principal Network Domain.
-  rpc GetChange(GetChangeRequest) returns (GetChangeResponse) {
-    option (google.api.http) = {
-      get: "/pnds/{pid}/changes/{cuid}"
-    };
-  }
-  // Allows to operate on multiple Changes registered for a specific Principal Network Domain.
-  rpc SetChangeList(SetChangeListRequest) returns (SetChangeListResponse) {
-    option (google.api.http) = {
-      post: "/pnds/{pid}/changes"
-      body: "*"
-    };
-  }
-  // Allows to request a specific Path of a Managed Network Element,
-  // managed by a specific Principal Network Domain.
-  rpc GetPath(GetPathRequest) returns (GetPathResponse) {
-    option (google.api.http) = {
-      get: "/pnds/{pid}/mnes/{mneid}/paths/{path}"
-    };
-  }
-  // Allows to set a specific Path of a Managed Network Element,
-  // managed by a specific Principal Network Domain.
-  rpc SetPathList(SetPathListRequest) returns (SetPathListResponse) {
-    option (google.api.http) = {
-      post: "/pnds/{pid}/mnes/paths"
-      body: "*"
-    };
-  }
-  // Allows to delete a specific Managed Network Element which is managed by a
-  // specific Principal Network Domain.
-  rpc DeleteMne(DeleteMneRequest) returns (DeleteMneResponse) {
-    option (google.api.http) = {
-      delete: "/pnds/{pid}/mnes/{mneid}"
-    };
-  }
-  // Allows to subscribe to multiple paths of a Managed Network Element which is
-  // managed by a specific Principal Network Domain and streams data depending on the subscribe
-  // method.
-  rpc SubscribePath(SubscribePathRequest) returns (stream SubscribePathResponse) {};
-}
-
-message GetMneListRequest {
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  string pid = 2;
 }
 
-message GetMneRequest {
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  string mneid = 2;
-  string pid = 3;
+message PrincipalNetworkDomain {
+    string id = 1;
+    string name = 2;
+    string description = 3;
 }
 
 message GetSbiListRequest {
@@ -144,54 +65,20 @@ message GetSbiListRequest {
   string pid = 2;
 }
 
-message GetSbiRequest {
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  string sid = 2;
-  string pid = 3;
-}
-
-message GetChangeListRequest {
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  string pid = 2;
+message GetSbiListResponse {
+    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
+    // TODO: Check if this is really needed. Perhaps a reference to the PND's ID
+    // is also sufficient.
+    PrincipalNetworkDomain pnd = 2;
+    repeated .gosdn.southbound.SouthboundInterface sbi = 3;
 }
 
-message GetChangeRequest {
+message GetSbiRequest {
   int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  repeated string cuid = 2;
+  string sid = 2;
   string pid = 3;
 }
 
-message GetPathRequest {
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  string mneid = 2;
-  string path = 3;
-  string pid = 4;
-}
-
-message GetMneResponse {
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  // TODO: Check if this is really needed. Perhaps a reference to the PND's ID
-  // is also sufficient.
-  PrincipalNetworkDomain pnd = 2;
-  ManagedNetworkElement mne = 3;
-}
-
-message GetMneListResponse {
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  // TODO: Check if this is really needed. Perhaps a reference to the PND's ID
-  // is also sufficient.
-  PrincipalNetworkDomain pnd = 2;
-  repeated ManagedNetworkElement mne = 3;
-}
-
-message GetFlattenedMneListResponse {
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  // TODO: Check if this is really needed. Perhaps a reference to the PND's ID
-  // is also sufficient.
-  PrincipalNetworkDomain pnd = 2;
-  repeated FlattenedManagedNetworkElement mne = 3;
-}
-
 message GetSbiResponse {
   int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
   // TODO: Check if this is really needed. Perhaps a reference to the PND's ID
@@ -200,77 +87,6 @@ message GetSbiResponse {
   .gosdn.southbound.SouthboundInterface sbi = 3;
 }
 
-message GetSbiListResponse {
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  // TODO: Check if this is really needed. Perhaps a reference to the PND's ID
-  // is also sufficient.
-  PrincipalNetworkDomain pnd = 2;
-  repeated .gosdn.southbound.SouthboundInterface sbi = 3;
-}
-
-message GetPathResponse {
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  // TODO: Check if this is really needed. Perhaps a reference to the PND's ID
-  // is also sufficient.
-  PrincipalNetworkDomain pnd = 2;
-  repeated gnmi.Notification mne_notification = 3;
-}
-
-message GetChangeResponse {
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  // TODO: Check if this is really needed. Perhaps a reference to the PND's ID
-  // is also sufficient.
-  PrincipalNetworkDomain pnd = 2;
-  repeated Change change = 3;
-}
-
-message GetChangeListResponse {
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  // TODO: Check if this is really needed. Perhaps a reference to the PND's ID
-  // is also sufficient.
-  PrincipalNetworkDomain pnd = 2;
-  repeated Change change = 3;
-}
-
-message PrincipalNetworkDomain {
-  string id = 1;
-  string name = 2;
-  string description = 3;
-}
-
-message ManagedNetworkElement {
-  string id = 1;
-  string name = 2;
-  repeated gnmi.Notification mne_notification = 3;
-  .gosdn.southbound.SouthboundInterface sbi = 4;
-}
-
-message FlattenedManagedNetworkElement {
-  string id = 1;
-  string name = 2;
-  string sbi = 3;
-}
-
-enum ChangeState {
-  CHANGE_STATE_UNSPECIFIED = 0;
-  CHANGE_STATE_PENDING = 1;
-  CHANGE_STATE_COMMITTED = 2;
-  CHANGE_STATE_CONFIRMED = 3;
-  CHANGE_STATE_INCONSISTENT = 4;
-}
-
-message Change {
-  string id = 1;
-  int64 age = 2;
-  ChangeState state = 3;
-  gnmi.Notification diff = 4;
-}
-
-message SetMneListRequest {
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  repeated SetMne mne = 2;
-  string pid = 3;
-}
 
 message SetSbiListRequest {
   int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
@@ -278,40 +94,6 @@ message SetSbiListRequest {
   string pid = 3;
 }
 
-message SetChangeListRequest {
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  repeated SetChange change = 2;
-  string pid = 3;
-}
-
-message SetPathListRequest {
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  repeated ChangeRequest change_request = 2;
-  string pid = 3;
-}
-
-//TODO: rename
-message ChangeRequest {
-  string mneid = 1;
-  string path = 2;
-  string value = 3;
-  ApiOperation api_op = 4;
-}
-
-enum ApiOperation {
-  API_OPERATION_UNSPECIFIED = 0;
-  API_OPERATION_UPDATE = 1;
-  API_OPERATION_REPLACE = 2;
-  API_OPERATION_DELETE = 3;
-}
-
-message SetMne {
-  string address = 1;
-  .gosdn.southbound.SouthboundInterface sbi = 2;
-  string mne_name = 3;
-  .gosdn.transport.TransportOption transport_option = 4;
-}
-
 message SetSbi {
   SbiType sbi_type = 1;
 }
@@ -322,108 +104,20 @@ enum SbiType {
   SBI_TYPE_CONTAINERISED = 2;
   SBI_TYPE_PLUGIN = 3;
 }
-
-enum Operation {
-  OPERATION_UNSPECIFIED = 0;
-  OPERATION_CREATE = 1;
-  OPERATION_COMMIT = 2;
-  OPERATION_CONFIRM = 3;
-}
-
-message SetChange {
-  string cuid = 1;
-  Operation op = 2;
-}
-
-message SetResponse{
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  string id = 2;
-  Status status = 3;
-}
-
-message SetMneListResponse{
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  Status status = 2;
-  repeated SetResponse responses = 3;
-}
-
-message SetChangeListResponse{
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  Status status = 2;
-  repeated SetResponse responses = 3;
-}
-
-message SetChangeResponse{
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  Status status = 2;
-}
-
 message SetSbiListResponse{
   int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
   Status status = 2;
   repeated SetResponse responses = 3;
 }
 
-message SetPathListResponse{
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  Status status = 2;
-  repeated SetResponse responses = 3;
-}
-
-message DeleteMneRequest {
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  string pid = 2;
-  string mneid = 3;
-}
-
-message DeleteMneResponse {
-  int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  Status status = 2;
-}
-
 enum Status {
   STATUS_UNSPECIFIED = 0;
   STATUS_OK = 1;
   STATUS_ERROR = 2;
 }
 
-message SubscribePathRequest {
-    int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-    string mneid = 2;
-    string pid = 3;
-    SubscriptionList sublist = 4;
-}
-
-// The mode determines how the target should trigger updates to be sent.
-// Reference: gNMI Specification Section 3.5.1.2
-message SubscriptionList {
-    repeated Subscription subscription = 1;
-    SubscriptionMode mode = 2;
-}
-
-enum SubscriptionMode {
-    SUBSCRIPTION_MODE_UNSPECIFIED = 0;
-    SUBSCRIPTION_MODE_ONCE = 1;
-    SUBSCRIPTION_MODE_STREAM = 2;
-    SUBSCRIPTION_MODE_POLL = 3;
-}
-
-message Subscription {
-    string path = 1;
-    StreamMode stream_mode = 2;
-    uint64 sample_interval = 3;       // time in ns between samples in SAMPLE mode.
-}
-
-enum StreamMode {
-    STREAM_MODE_UNSPECIFIED = 0;
-    STREAM_MODE_TARGET_DEFINED = 1;  // The target selects the relevant mode for each element.
-    STREAM_MODE_ON_CHANGE      = 2;  // The target sends an update on element value change.
-    STREAM_MODE_SAMPLE         = 3; // The target samples values according to the interval.
-}
-
-
-message SubscribePathResponse {
+message SetResponse{
     int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-    Status status = 2;
-    repeated gnmi.Notification mne_notification = 3;
+    string id = 2;
+    Status status = 3;
 }
diff --git a/controller/api/apiIntegration_test.go b/controller/api/apiIntegration_test.go
index e9c98b20c036bfd611b4edc1288c03dfad5a4cee..999c3fe3c1d12892bbf2fc500d8b736a90363ad1 100644
--- a/controller/api/apiIntegration_test.go
+++ b/controller/api/apiIntegration_test.go
@@ -5,7 +5,7 @@ import (
 	"errors"
 	"testing"
 
-	"code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	tpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
 	"github.com/google/uuid"
 	guuid "github.com/google/uuid"
@@ -100,7 +100,7 @@ func TestApiIntegration(t *testing.T) {
 				cliPnd,
 				testPath,
 				hostname,
-				pnd.ApiOperation_API_OPERATION_UPDATE,
+				mnepb.ApiOperation_API_OPERATION_UPDATE,
 			)
 			if (err != nil) != tt.wantErr {
 				t.Errorf("gosdn cli set error = %v, wantErr %v", err, tt.wantErr)
diff --git a/controller/api/api_test.go b/controller/api/api_test.go
index 02a55df4be5e10f45213f6773d5de4ce3f90cede..b31494fe58f26f2f68dfae573da4af54b7455b90 100644
--- a/controller/api/api_test.go
+++ b/controller/api/api_test.go
@@ -6,7 +6,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
 	tpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus"
@@ -138,7 +138,7 @@ func Test_GetDevice(t *testing.T) {
 }
 
 func Test_Update(t *testing.T) {
-	resp, err := ChangeRequest(context.TODO(), bufnet, mneID, pndID, "", "", ppb.ApiOperation_API_OPERATION_UPDATE)
+	resp, err := ChangeRequest(context.TODO(), bufnet, mneID, pndID, "", "", mnepb.ApiOperation_API_OPERATION_UPDATE)
 	if err != nil {
 		t.Error(err)
 		return
@@ -147,7 +147,7 @@ func Test_Update(t *testing.T) {
 }
 
 func Test_Replace(t *testing.T) {
-	resp, err := ChangeRequest(context.TODO(), bufnet, mneID, pndID, "", "", ppb.ApiOperation_API_OPERATION_REPLACE)
+	resp, err := ChangeRequest(context.TODO(), bufnet, mneID, pndID, "", "", mnepb.ApiOperation_API_OPERATION_REPLACE)
 	if err != nil {
 		t.Error(err)
 		return
@@ -156,7 +156,7 @@ func Test_Replace(t *testing.T) {
 }
 
 func Test_Delete(t *testing.T) {
-	resp, err := ChangeRequest(context.TODO(), bufnet, mneID, pndID, "", "", ppb.ApiOperation_API_OPERATION_DELETE)
+	resp, err := ChangeRequest(context.TODO(), bufnet, mneID, pndID, "", "", mnepb.ApiOperation_API_OPERATION_DELETE)
 	if err != nil {
 		t.Error(err)
 		return
diff --git a/controller/api/change.go b/controller/api/change.go
index 570b0af3374e5ab402a7f17e8765c98997068a66..dfd3115581eb3ae87633d89cc3d3effcb1ec5bf3 100644
--- a/controller/api/change.go
+++ b/controller/api/change.go
@@ -5,17 +5,17 @@ import (
 	"errors"
 	"time"
 
-	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	nbi "code.fbi.h-da.de/danet/gosdn/controller/northbound/client"
 )
 
 // GetChanges requests all pending and unconfirmed changes from the controller.
-func GetChanges(ctx context.Context, addr, pnd string) (*ppb.GetChangeListResponse, error) {
+func GetChanges(ctx context.Context, addr, pnd string) (*mnepb.GetChangeListResponse, error) {
 	client, err := nbi.PndClient(addr, dialOptions...)
 	if err != nil {
 		return nil, err
 	}
-	req := &ppb.GetChangeListRequest{
+	req := &mnepb.GetChangeListRequest{
 		Timestamp: time.Now().UnixNano(),
 		Pid:       pnd,
 	}
@@ -23,7 +23,7 @@ func GetChanges(ctx context.Context, addr, pnd string) (*ppb.GetChangeListRespon
 }
 
 // GetChange requests one or more changes from the controller.
-func GetChange(ctx context.Context, addr string, pnd string, args ...string) (*ppb.GetChangeResponse, error) {
+func GetChange(ctx context.Context, addr string, pnd string, args ...string) (*mnepb.GetChangeResponse, error) {
 	client, err := nbi.PndClient(addr, dialOptions...)
 	if err != nil {
 		return nil, err
@@ -31,7 +31,7 @@ func GetChange(ctx context.Context, addr string, pnd string, args ...string) (*p
 	if len(args) <= 0 {
 		return nil, errors.New("not enough arguments")
 	}
-	req := &ppb.GetChangeRequest{
+	req := &mnepb.GetChangeRequest{
 		Timestamp: time.Now().UnixNano(),
 		Pid:       pnd,
 		Cuid:      args,
@@ -41,12 +41,12 @@ func GetChange(ctx context.Context, addr string, pnd string, args ...string) (*p
 
 // Commit sends a Commit request for one or multiple changes to the
 // controller.
-func Commit(ctx context.Context, addr, pnd string, cuids ...string) (*ppb.SetChangeListResponse, error) {
-	changes := make([]*ppb.SetChange, len(cuids))
+func Commit(ctx context.Context, addr, pnd string, cuids ...string) (*mnepb.SetChangeListResponse, error) {
+	changes := make([]*mnepb.SetChange, len(cuids))
 	for i, arg := range cuids {
-		changes[i] = &ppb.SetChange{
+		changes[i] = &mnepb.SetChange{
 			Cuid: arg,
-			Op:   ppb.Operation_OPERATION_COMMIT,
+			Op:   mnepb.Operation_OPERATION_COMMIT,
 		}
 	}
 	return CommitConfirm(ctx, addr, pnd, changes)
@@ -54,24 +54,24 @@ func Commit(ctx context.Context, addr, pnd string, cuids ...string) (*ppb.SetCha
 
 // Confirm sends a Confirm request for one or multiple changes to the
 // controller.
-func Confirm(ctx context.Context, addr, pnd string, cuids ...string) (*ppb.SetChangeListResponse, error) {
-	changes := make([]*ppb.SetChange, len(cuids))
+func Confirm(ctx context.Context, addr, pnd string, cuids ...string) (*mnepb.SetChangeListResponse, error) {
+	changes := make([]*mnepb.SetChange, len(cuids))
 	for i, arg := range cuids {
-		changes[i] = &ppb.SetChange{
+		changes[i] = &mnepb.SetChange{
 			Cuid: arg,
-			Op:   ppb.Operation_OPERATION_CONFIRM,
+			Op:   mnepb.Operation_OPERATION_CONFIRM,
 		}
 	}
 	return CommitConfirm(ctx, addr, pnd, changes)
 }
 
 // CommitConfirm confirms a commit.
-func CommitConfirm(ctx context.Context, addr, pnd string, changes []*ppb.SetChange) (*ppb.SetChangeListResponse, error) {
+func CommitConfirm(ctx context.Context, addr, pnd string, changes []*mnepb.SetChange) (*mnepb.SetChangeListResponse, error) {
 	client, err := nbi.PndClient(addr, dialOptions...)
 	if err != nil {
 		return nil, err
 	}
-	req := &ppb.SetChangeListRequest{
+	req := &mnepb.SetChangeListRequest{
 		Timestamp: time.Now().UnixNano(),
 		Change:    changes,
 		Pid:       pnd,
@@ -84,8 +84,8 @@ func CommitConfirm(ctx context.Context, addr, pnd string, changes []*ppb.SetChan
 // specified in
 // https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-specification.md#34-modifying-state)
 // For delete operations the value field needs to contain an empty string.
-func ChangeRequest(ctx context.Context, addr, mneid, pid, path, value string, op ppb.ApiOperation) (*ppb.SetPathListResponse, error) {
-	req := &ppb.ChangeRequest{
+func ChangeRequest(ctx context.Context, addr, mneid, pid, path, value string, op mnepb.ApiOperation) (*mnepb.SetPathListResponse, error) {
+	req := &mnepb.ChangeRequest{
 		Mneid: mneid,
 		Path:  path,
 		Value: value,
@@ -95,15 +95,15 @@ func ChangeRequest(ctx context.Context, addr, mneid, pid, path, value string, op
 }
 
 // SendChangeRequest sends a change request.
-func SendChangeRequest(ctx context.Context, addr, pid string, req *ppb.ChangeRequest) (*ppb.SetPathListResponse, error) {
+func SendChangeRequest(ctx context.Context, addr, pid string, req *mnepb.ChangeRequest) (*mnepb.SetPathListResponse, error) {
 	pndClient, err := nbi.PndClient(addr, dialOptions...)
 	if err != nil {
 		return nil, err
 	}
 
-	r := &ppb.SetPathListRequest{
+	r := &mnepb.SetPathListRequest{
 		Timestamp:     time.Now().UnixNano(),
-		ChangeRequest: []*ppb.ChangeRequest{req},
+		ChangeRequest: []*mnepb.ChangeRequest{req},
 		Pid:           pid,
 	}
 	return pndClient.SetPathList(ctx, r)
diff --git a/controller/api/initialise_test.go b/controller/api/initialise_test.go
index 9ec8959c03bd5a6feb7083a7ae6fb8b9c943c586..b0baf7dab8b8e147de75603b8a6b648428a55e67 100644
--- a/controller/api/initialise_test.go
+++ b/controller/api/initialise_test.go
@@ -10,6 +10,7 @@ import (
 
 	"code.fbi.h-da.de/danet/gosdn/api/go/gosdn/conflict"
 	cpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/core"
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
 	apb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/rbac"
 	tpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
@@ -105,7 +106,7 @@ func bootstrapUnitTest() {
 
 	mockChange := &mocks.Change{}
 	mockChange.On("Age").Return(time.Hour)
-	mockChange.On("State").Return(ppb.ChangeState_CHANGE_STATE_INCONSISTENT)
+	mockChange.On("State").Return(mnepb.ChangeState_CHANGE_STATE_INCONSISTENT)
 	mockChange.On("PreviousState").Return(&openconfig.Device{
 		System: &openconfig.OpenconfigSystem_System{
 			Config: &openconfig.OpenconfigSystem_System_Config{
diff --git a/controller/api/managedNetworkElement.go b/controller/api/managedNetworkElement.go
index 8ed8f4d62d9d0cf8bc4c8af75bc2eb54d3aaa8f8..5bd1bb8f1e9537296aae77fee9f3385e0f5045f0 100644
--- a/controller/api/managedNetworkElement.go
+++ b/controller/api/managedNetworkElement.go
@@ -6,7 +6,7 @@ import (
 	"io"
 	"time"
 
-	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
 	tpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
 	nbi "code.fbi.h-da.de/danet/gosdn/controller/northbound/client"
@@ -19,15 +19,15 @@ import (
 
 // AddNetworkElement adds a new network element to the controller. The network element name is optional.
 // If no name is provided a name will be generated upon network element creation.
-func AddNetworkElement(ctx context.Context, addr, mneName string, opt *tpb.TransportOption, sid, pid uuid.UUID) (*ppb.SetMneListResponse, error) {
+func AddNetworkElement(ctx context.Context, addr, mneName string, opt *tpb.TransportOption, sid, pid uuid.UUID) (*mnepb.SetMneListResponse, error) {
 	pndClient, err := nbi.PndClient(addr, dialOptions...)
 	if err != nil {
 		return nil, err
 	}
 
-	req := &ppb.SetMneListRequest{
+	req := &mnepb.SetMneListRequest{
 		Timestamp: time.Now().UnixNano(),
-		Mne: []*ppb.SetMne{
+		Mne: []*mnepb.SetMne{
 			{
 				Address: opt.GetAddress(),
 				Sbi: &spb.SouthboundInterface{
@@ -53,7 +53,7 @@ func AddNetworkElement(ctx context.Context, addr, mneName string, opt *tpb.Trans
 // GetNetworkElement requests one network element belonging to a given
 // PrincipalNetworkDomain from the controller. If no network element identifier
 // is provided, an error is thrown.
-func GetNetworkElement(ctx context.Context, addr, pid string, mneid string) (*ppb.GetMneResponse, error) {
+func GetNetworkElement(ctx context.Context, addr, pid string, mneid string) (*mnepb.GetMneResponse, error) {
 	pndClient, err := nbi.PndClient(addr, dialOptions...)
 	if err != nil {
 		return nil, err
@@ -63,7 +63,7 @@ func GetNetworkElement(ctx context.Context, addr, pid string, mneid string) (*pp
 		return nil, err
 	}
 
-	req := &ppb.GetMneRequest{
+	req := &mnepb.GetMneRequest{
 		Timestamp: time.Now().UnixNano(),
 		Mneid:     mneid,
 		Pid:       pid,
@@ -122,13 +122,13 @@ func GetSbiSchemaTree(ctx context.Context, addr string, pid, sid uuid.UUID) (map
 
 // GetFlattenedNetworkElements requests all network elements belonging to a given
 // PrincipalNetworkDomain from the controller.
-func GetFlattenedNetworkElements(ctx context.Context, addr, pid string) (*ppb.GetFlattenedMneListResponse, error) {
+func GetFlattenedNetworkElements(ctx context.Context, addr, pid string) (*mnepb.GetFlattenedMneListResponse, error) {
 	pndClient, err := nbi.PndClient(addr, dialOptions...)
 	if err != nil {
 		return nil, err
 	}
 
-	req := &ppb.GetMneListRequest{
+	req := &mnepb.GetMneListRequest{
 		Timestamp: time.Now().UnixNano(),
 		Pid:       pid,
 	}
@@ -137,13 +137,13 @@ func GetFlattenedNetworkElements(ctx context.Context, addr, pid string) (*ppb.Ge
 }
 
 // GetPath requests a specific path.
-func GetPath(ctx context.Context, addr, pid, mneid, path string) (*ppb.GetPathResponse, error) {
+func GetPath(ctx context.Context, addr, pid, mneid, path string) (*mnepb.GetPathResponse, error) {
 	pndClient, err := nbi.PndClient(addr, dialOptions...)
 	if err != nil {
 		return nil, err
 	}
 
-	req := &ppb.GetPathRequest{
+	req := &mnepb.GetPathRequest{
 		Timestamp: time.Now().UnixNano(),
 		Mneid:     mneid,
 		Pid:       pid,
@@ -154,14 +154,14 @@ func GetPath(ctx context.Context, addr, pid, mneid, path string) (*ppb.GetPathRe
 }
 
 // SubscribePath subscribes to paths on a network element.
-func SubscribePath(ctx context.Context, addr, pid, mneid string, slist *ppb.SubscriptionList) (ppb.PndService_SubscribePathClient, error) {
+func SubscribePath(ctx context.Context, addr, pid, mneid string, slist *mnepb.SubscriptionList) (mnepb.NetworkElementService_SubscribePathClient, error) {
 	log.Println("subscribePath called")
 	pndClient, err := nbi.PndClient(addr, dialOptions...)
 	if err != nil {
 		return nil, err
 	}
 
-	req := &ppb.SubscribePathRequest{
+	req := &mnepb.SubscribePathRequest{
 		Timestamp: time.Now().UnixNano(),
 		Mneid:     mneid,
 		Pid:       pid,
@@ -172,13 +172,13 @@ func SubscribePath(ctx context.Context, addr, pid, mneid string, slist *ppb.Subs
 }
 
 // DeleteNetworkElement deletes a network element.
-func DeleteNetworkElement(ctx context.Context, addr, pid, mneid string) (*ppb.DeleteMneResponse, error) {
+func DeleteNetworkElement(ctx context.Context, addr, pid, mneid string) (*mnepb.DeleteMneResponse, error) {
 	pndClient, err := nbi.PndClient(addr, dialOptions...)
 	if err != nil {
 		return nil, err
 	}
 
-	req := &ppb.DeleteMneRequest{
+	req := &mnepb.DeleteMneRequest{
 		Timestamp: time.Now().UnixNano(),
 		Mneid:     mneid,
 		Pid:       pid,
diff --git a/controller/interfaces/change/change.go b/controller/interfaces/change/change.go
index 92d0b0f4e58a2f2b35c9f1266ba3619c83090b68..fd6a4c6def57f5fc235664d2c14461d52ffb2998 100644
--- a/controller/interfaces/change/change.go
+++ b/controller/interfaces/change/change.go
@@ -3,7 +3,8 @@ package change
 import (
 	"time"
 
-	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
+
 	"github.com/google/uuid"
 	"github.com/openconfig/ygot/ygot"
 )
@@ -16,7 +17,7 @@ type Change interface {
 	ID() uuid.UUID
 	Commit() error
 	Confirm() error
-	State() ppb.ChangeState
+	State() mnepb.ChangeState
 	Age() time.Duration
 	PreviousState() ygot.GoStruct
 	IntendedState() ygot.GoStruct
diff --git a/controller/interfaces/networkdomain/pnd.go b/controller/interfaces/networkdomain/pnd.go
index 20abc1687b6609a1a7e185b0e79e114a59a2dc73..2431c445f960cfefbdb9ed016c51d7860be15a10 100644
--- a/controller/interfaces/networkdomain/pnd.go
+++ b/controller/interfaces/networkdomain/pnd.go
@@ -1,7 +1,7 @@
 package networkdomain
 
 import (
-	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	tpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/change"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkelement"
@@ -22,7 +22,7 @@ type NetworkDomain interface {
 	UpdateNetworkElement(uuid.UUID, string) error
 	NetworkElements() []networkelement.NetworkElement
 	FlattenedNetworkElements() []networkelement.LoadedNetworkElement
-	ChangeMNE(uuid uuid.UUID, operation ppb.ApiOperation, path string, value ...string) (uuid.UUID, error)
+	ChangeMNE(uuid uuid.UUID, operation mnepb.ApiOperation, path string, value ...string) (uuid.UUID, error)
 	Request(uuid.UUID, string) (proto.Message, error)
 	RequestAll(string) error
 	GetName() string
@@ -36,5 +36,5 @@ type NetworkDomain interface {
 	GetChange(uuid.UUID) (change.Change, error)
 	Commit(uuid.UUID) error
 	Confirm(uuid.UUID) error
-	SubscribePath(uuid.UUID, *ppb.SubscriptionList) error
+	SubscribePath(uuid.UUID, *mnepb.SubscriptionList) error
 }
diff --git a/controller/mocks/Change.go b/controller/mocks/Change.go
index 44907e267daabdf6c39bd7df6306ee63999e7260..5423aef279eb2b831aa4b77355d329e7c5277402 100644
--- a/controller/mocks/Change.go
+++ b/controller/mocks/Change.go
@@ -5,7 +5,7 @@ package mocks
 import (
 	time "time"
 
-	pnd "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	networkelement "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	mock "github.com/stretchr/testify/mock"
 
 	uuid "github.com/google/uuid"
@@ -109,14 +109,14 @@ func (_m *Change) PreviousState() ygot.GoStruct {
 }
 
 // State provides a mock function with given fields:
-func (_m *Change) State() pnd.ChangeState {
+func (_m *Change) State() networkelement.ChangeState {
 	ret := _m.Called()
 
-	var r0 pnd.ChangeState
-	if rf, ok := ret.Get(0).(func() pnd.ChangeState); ok {
+	var r0 networkelement.ChangeState
+	if rf, ok := ret.Get(0).(func() networkelement.ChangeState); ok {
 		r0 = rf()
 	} else {
-		r0 = ret.Get(0).(pnd.ChangeState)
+		r0 = ret.Get(0).(networkelement.ChangeState)
 	}
 
 	return r0
diff --git a/controller/mocks/NetworkDomain.go b/controller/mocks/NetworkDomain.go
index 7d396f5927c4287e969db4ce2f945ab1791a5e7f..6f742748d9aa98a4cfc2184c3130241bdc5c8daa 100644
--- a/controller/mocks/NetworkDomain.go
+++ b/controller/mocks/NetworkDomain.go
@@ -4,11 +4,11 @@ package mocks
 
 import (
 	change "code.fbi.h-da.de/danet/gosdn/controller/interfaces/change"
-	mock "github.com/stretchr/testify/mock"
+	interfacesnetworkelement "code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkelement"
 
-	networkelement "code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkelement"
+	mock "github.com/stretchr/testify/mock"
 
-	pnd "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	networkelement "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 
@@ -62,7 +62,7 @@ func (_m *NetworkDomain) AddSbi(s southbound.SouthboundInterface) error {
 }
 
 // ChangeMNE provides a mock function with given fields: _a0, operation, path, value
-func (_m *NetworkDomain) ChangeMNE(_a0 uuid.UUID, operation pnd.ApiOperation, path string, value ...string) (uuid.UUID, error) {
+func (_m *NetworkDomain) ChangeMNE(_a0 uuid.UUID, operation networkelement.ApiOperation, path string, value ...string) (uuid.UUID, error) {
 	_va := make([]interface{}, len(value))
 	for _i := range value {
 		_va[_i] = value[_i]
@@ -73,7 +73,7 @@ func (_m *NetworkDomain) ChangeMNE(_a0 uuid.UUID, operation pnd.ApiOperation, pa
 	ret := _m.Called(_ca...)
 
 	var r0 uuid.UUID
-	if rf, ok := ret.Get(0).(func(uuid.UUID, pnd.ApiOperation, string, ...string) uuid.UUID); ok {
+	if rf, ok := ret.Get(0).(func(uuid.UUID, networkelement.ApiOperation, string, ...string) uuid.UUID); ok {
 		r0 = rf(_a0, operation, path, value...)
 	} else {
 		if ret.Get(0) != nil {
@@ -82,7 +82,7 @@ func (_m *NetworkDomain) ChangeMNE(_a0 uuid.UUID, operation pnd.ApiOperation, pa
 	}
 
 	var r1 error
-	if rf, ok := ret.Get(1).(func(uuid.UUID, pnd.ApiOperation, string, ...string) error); ok {
+	if rf, ok := ret.Get(1).(func(uuid.UUID, networkelement.ApiOperation, string, ...string) error); ok {
 		r1 = rf(_a0, operation, path, value...)
 	} else {
 		r1 = ret.Error(1)
@@ -150,15 +150,15 @@ func (_m *NetworkDomain) Destroy() error {
 }
 
 // FlattenedNetworkElements provides a mock function with given fields:
-func (_m *NetworkDomain) FlattenedNetworkElements() []networkelement.LoadedNetworkElement {
+func (_m *NetworkDomain) FlattenedNetworkElements() []interfacesnetworkelement.LoadedNetworkElement {
 	ret := _m.Called()
 
-	var r0 []networkelement.LoadedNetworkElement
-	if rf, ok := ret.Get(0).(func() []networkelement.LoadedNetworkElement); ok {
+	var r0 []interfacesnetworkelement.LoadedNetworkElement
+	if rf, ok := ret.Get(0).(func() []interfacesnetworkelement.LoadedNetworkElement); ok {
 		r0 = rf()
 	} else {
 		if ret.Get(0) != nil {
-			r0 = ret.Get(0).([]networkelement.LoadedNetworkElement)
+			r0 = ret.Get(0).([]interfacesnetworkelement.LoadedNetworkElement)
 		}
 	}
 
@@ -217,15 +217,15 @@ func (_m *NetworkDomain) GetName() string {
 }
 
 // GetNetworkElement provides a mock function with given fields: identifier
-func (_m *NetworkDomain) GetNetworkElement(identifier string) (networkelement.NetworkElement, error) {
+func (_m *NetworkDomain) GetNetworkElement(identifier string) (interfacesnetworkelement.NetworkElement, error) {
 	ret := _m.Called(identifier)
 
-	var r0 networkelement.NetworkElement
-	if rf, ok := ret.Get(0).(func(string) networkelement.NetworkElement); ok {
+	var r0 interfacesnetworkelement.NetworkElement
+	if rf, ok := ret.Get(0).(func(string) interfacesnetworkelement.NetworkElement); ok {
 		r0 = rf(identifier)
 	} else {
 		if ret.Get(0) != nil {
-			r0 = ret.Get(0).(networkelement.NetworkElement)
+			r0 = ret.Get(0).(interfacesnetworkelement.NetworkElement)
 		}
 	}
 
@@ -323,15 +323,15 @@ func (_m *NetworkDomain) MarshalNetworkElement(_a0 string) (string, error) {
 }
 
 // NetworkElements provides a mock function with given fields:
-func (_m *NetworkDomain) NetworkElements() []networkelement.NetworkElement {
+func (_m *NetworkDomain) NetworkElements() []interfacesnetworkelement.NetworkElement {
 	ret := _m.Called()
 
-	var r0 []networkelement.NetworkElement
-	if rf, ok := ret.Get(0).(func() []networkelement.NetworkElement); ok {
+	var r0 []interfacesnetworkelement.NetworkElement
+	if rf, ok := ret.Get(0).(func() []interfacesnetworkelement.NetworkElement); ok {
 		r0 = rf()
 	} else {
 		if ret.Get(0) != nil {
-			r0 = ret.Get(0).([]networkelement.NetworkElement)
+			r0 = ret.Get(0).([]interfacesnetworkelement.NetworkElement)
 		}
 	}
 
@@ -420,11 +420,11 @@ func (_m *NetworkDomain) RequestAll(_a0 string) error {
 }
 
 // SubscribePath provides a mock function with given fields: _a0, _a1
-func (_m *NetworkDomain) SubscribePath(_a0 uuid.UUID, _a1 *pnd.SubscriptionList) error {
+func (_m *NetworkDomain) SubscribePath(_a0 uuid.UUID, _a1 *networkelement.SubscriptionList) error {
 	ret := _m.Called(_a0, _a1)
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(uuid.UUID, *pnd.SubscriptionList) error); ok {
+	if rf, ok := ret.Get(0).(func(uuid.UUID, *networkelement.SubscriptionList) error); ok {
 		r0 = rf(_a0, _a1)
 	} else {
 		r0 = ret.Error(0)
@@ -447,20 +447,6 @@ func (_m *NetworkDomain) UpdateNetworkElement(_a0 uuid.UUID, _a1 string) error {
 	return r0
 }
 
-// UpdateNetworkElementAfterSubscribeResponse provides a mock function with given fields: _a0
-func (_m *NetworkDomain) UpdateNetworkElementAfterSubscribeResponse(_a0 networkelement.NetworkElement) error {
-	ret := _m.Called(_a0)
-
-	var r0 error
-	if rf, ok := ret.Get(0).(func(networkelement.NetworkElement) error); ok {
-		r0 = rf(_a0)
-	} else {
-		r0 = ret.Error(0)
-	}
-
-	return r0
-}
-
 type mockConstructorTestingTNewNetworkDomain interface {
 	mock.TestingT
 	Cleanup(func())
diff --git a/controller/northbound/server/core_test.go b/controller/northbound/server/core_test.go
index 1b84b875fb2703ad07b31cee61046877db947819..432aa0d52da8b67a33b7bf274781cc2fd6234998 100644
--- a/controller/northbound/server/core_test.go
+++ b/controller/northbound/server/core_test.go
@@ -7,7 +7,7 @@ import (
 	"time"
 
 	pb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/core"
-	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
 	"code.fbi.h-da.de/danet/gosdn/controller/mocks"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus"
@@ -69,7 +69,7 @@ func getTestCoreServer(t *testing.T) *CoreServer {
 
 	mockChange := &mocks.Change{}
 	mockChange.On("Age").Return(time.Hour)
-	mockChange.On("State").Return(ppb.ChangeState_CHANGE_STATE_INCONSISTENT)
+	mockChange.On("State").Return(mnepb.ChangeState_CHANGE_STATE_INCONSISTENT)
 
 	mockPnd = &mocks.NetworkDomain{}
 	mockPnd.On("ID").Return(pndUUID)
diff --git a/controller/northbound/server/networkElement.go b/controller/northbound/server/networkElement.go
index 344aaacd42e82ee62c68f887e25dc64e9db7cff4..8014f79fb10f886429c8539c6e806bfe17f83dd4 100644
--- a/controller/northbound/server/networkElement.go
+++ b/controller/northbound/server/networkElement.go
@@ -1,15 +1,8 @@
 package server
 
 import (
-	"context"
-	"time"
-
 	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkdomain"
-	"github.com/google/uuid"
-	log "github.com/sirupsen/logrus"
-	"google.golang.org/grpc/codes"
-	"google.golang.org/grpc/status"
 )
 
 // NetworkElementServer represents a NetworkElementServer.
@@ -25,102 +18,102 @@ func NewNetworkElementServer(networkDomain networkdomain.NetworkDomain) *Network
 	}
 }
 
-// Add adds a new network element.
-func (s *NetworkElementServer) Add(ctx context.Context, request *mnepb.AddNetworkElementRequest) (*mnepb.AddNetworkElementResponse, error) {
-	sbiID, err := uuid.Parse(request.NetworkElement.Sbi.Id)
-	if err != nil {
-		return nil, status.Errorf(codes.Aborted, "%v", err)
-	}
-
-	id, err := s.networkDomain.AddNetworkElement(
-		request.NetworkElement.NetworkElementName,
-		request.NetworkElement.TransportOption,
-		sbiID,
-	)
-	if err != nil {
-		return nil, status.Errorf(codes.Aborted, "%v", err)
-	}
-
-	return &mnepb.AddNetworkElementResponse{
-		Timestamp:        time.Now().UnixNano(),
-		Status:           mnepb.Status_STATUS_OK,
-		NetworkElementId: id.String(),
-	}, nil
-}
-
-// GetAll returns all stored network elements.
-func (s *NetworkElementServer) GetAll(ctx context.Context, request *mnepb.GetAllNetworkElementRequest) (*mnepb.GetAllNetworkElementResponse, error) {
-	networkElements := s.networkDomain.NetworkElements()
-
-	mnes := []*mnepb.NetworkElement{}
-	for _, mne := range networkElements {
-		ygotStructAsJSON, err := mne.GetModelAsString()
-		if err != nil {
-			log.Error(err)
-			return nil, status.Errorf(codes.Aborted, "%v", err)
-		}
-
-		mnes = append(mnes, &mnepb.NetworkElement{
-			Id:    mne.ID().String(),
-			Name:  mne.Name(),
-			Model: ygotStructAsJSON,
-		})
-	}
-
-	return &mnepb.GetAllNetworkElementResponse{
-		Timestamp:      time.Now().UnixNano(),
-		Status:         mnepb.Status_STATUS_OK,
-		NetworkElement: mnes,
-	}, nil
-}
-
-// Get returns a network element.
-func (s *NetworkElementServer) Get(ctx context.Context, request *mnepb.GetNetworkElementRequest) (*mnepb.GetNetworkElementResponse, error) {
-	mne, err := s.networkDomain.GetNetworkElement(request.NetworkElementId)
-	if err != nil {
-		return nil, status.Errorf(codes.Aborted, "%v", err)
-	}
-
-	ygotStructAsJSON, err := mne.GetModelAsString()
-	if err != nil {
-		log.Error(err)
-		return nil, status.Errorf(codes.Aborted, "%v", err)
-	}
-
-	networkElement := &mnepb.NetworkElement{
-		Id:               mne.ID().String(),
-		Name:             mne.Name(),
-		Model:            ygotStructAsJSON,
-		TransportAddress: mne.TransportAddress(),
-	}
-
-	return &mnepb.GetNetworkElementResponse{
-		Timestamp:      time.Now().UnixNano(),
-		Status:         mnepb.Status_STATUS_OK,
-		NetworkElement: networkElement,
-	}, nil
-}
-
-// Update updates a network element.
-func (s *NetworkElementServer) Update(ctx context.Context, request *mnepb.UpdateNetworkElementRequest) (*mnepb.UpdateNetworkElementResponse, error) {
-	mneID, err := uuid.Parse(request.NetworkElement.Id)
-	if err != nil {
-		return &mnepb.UpdateNetworkElementResponse{
-			Timestamp: time.Now().UnixNano(),
-			Status:    mnepb.Status_STATUS_OK,
-		}, err
-	}
-
-	err = s.networkDomain.UpdateNetworkElement(mneID, request.NetworkElement.Model)
-	if err != nil {
-		return &mnepb.UpdateNetworkElementResponse{
-			Timestamp: time.Now().UnixNano(),
-			Status:    mnepb.Status_STATUS_OK,
-		}, err
-	}
-
-	return &mnepb.UpdateNetworkElementResponse{
-		Timestamp: time.Now().UnixNano(),
-		Status:    mnepb.Status_STATUS_OK,
-	}, nil
-}
+// // Add adds a new network element.
+// func (s *NetworkElementServer) Add(ctx context.Context, request *mnepb.AddNetworkElementRequest) (*mnepb.AddNetworkElementResponse, error) {
+// 	sbiID, err := uuid.Parse(request.NetworkElement.Sbi.Id)
+// 	if err != nil {
+// 		return nil, status.Errorf(codes.Aborted, "%v", err)
+// 	}
+
+// 	id, err := s.networkDomain.AddNetworkElement(
+// 		request.NetworkElement.NetworkElementName,
+// 		request.NetworkElement.TransportOption,
+// 		sbiID,
+// 	)
+// 	if err != nil {
+// 		return nil, status.Errorf(codes.Aborted, "%v", err)
+// 	}
+
+// 	return &mnepb.AddNetworkElementResponse{
+// 		Timestamp:        time.Now().UnixNano(),
+// 		Status:           mnepb.Status_STATUS_OK,
+// 		NetworkElementId: id.String(),
+// 	}, nil
+// }
+
+// // GetAll returns all stored network elements.
+// func (s *NetworkElementServer) GetAll(ctx context.Context, request *mnepb.GetAllNetworkElementRequest) (*mnepb.GetAllNetworkElementResponse, error) {
+// 	networkElements := s.networkDomain.NetworkElements()
+
+// 	mnes := []*mnepb.NetworkElement{}
+// 	for _, mne := range networkElements {
+// 		ygotStructAsJSON, err := mne.GetModelAsString()
+// 		if err != nil {
+// 			log.Error(err)
+// 			return nil, status.Errorf(codes.Aborted, "%v", err)
+// 		}
+
+// 		mnes = append(mnes, &mnepb.NetworkElement{
+// 			Id:    mne.ID().String(),
+// 			Name:  mne.Name(),
+// 			Model: ygotStructAsJSON,
+// 		})
+// 	}
+
+// 	return &mnepb.GetAllNetworkElementResponse{
+// 		Timestamp:      time.Now().UnixNano(),
+// 		Status:         mnepb.Status_STATUS_OK,
+// 		NetworkElement: mnes,
+// 	}, nil
+// }
+
+// // Get returns a network element.
+// func (s *NetworkElementServer) Get(ctx context.Context, request *mnepb.GetNetworkElementRequest) (*mnepb.GetNetworkElementResponse, error) {
+// 	mne, err := s.networkDomain.GetNetworkElement(request.NetworkElementId)
+// 	if err != nil {
+// 		return nil, status.Errorf(codes.Aborted, "%v", err)
+// 	}
+
+// 	ygotStructAsJSON, err := mne.GetModelAsString()
+// 	if err != nil {
+// 		log.Error(err)
+// 		return nil, status.Errorf(codes.Aborted, "%v", err)
+// 	}
+
+// 	networkElement := &mnepb.NetworkElement{
+// 		Id:               mne.ID().String(),
+// 		Name:             mne.Name(),
+// 		Model:            ygotStructAsJSON,
+// 		TransportAddress: mne.TransportAddress(),
+// 	}
+
+// 	return &mnepb.GetNetworkElementResponse{
+// 		Timestamp:      time.Now().UnixNano(),
+// 		Status:         mnepb.Status_STATUS_OK,
+// 		NetworkElement: networkElement,
+// 	}, nil
+// }
+
+// // Update updates a network element.
+// func (s *NetworkElementServer) Update(ctx context.Context, request *mnepb.UpdateNetworkElementRequest) (*mnepb.UpdateNetworkElementResponse, error) {
+// 	mneID, err := uuid.Parse(request.NetworkElement.Id)
+// 	if err != nil {
+// 		return &mnepb.UpdateNetworkElementResponse{
+// 			Timestamp: time.Now().UnixNano(),
+// 			Status:    mnepb.Status_STATUS_OK,
+// 		}, err
+// 	}
+
+// 	err = s.networkDomain.UpdateNetworkElement(mneID, request.NetworkElement.Model)
+// 	if err != nil {
+// 		return &mnepb.UpdateNetworkElementResponse{
+// 			Timestamp: time.Now().UnixNano(),
+// 			Status:    mnepb.Status_STATUS_OK,
+// 		}, err
+// 	}
+
+// 	return &mnepb.UpdateNetworkElementResponse{
+// 		Timestamp: time.Now().UnixNano(),
+// 		Status:    mnepb.Status_STATUS_OK,
+// 	}, nil
+// }
diff --git a/controller/northbound/server/pnd.go b/controller/northbound/server/pnd.go
index 64d3e163492f0926bef4e462898981f9ef9f9fcc..e1ba41b9410b5bc7f65e4ae55effe1c1a7b84226 100644
--- a/controller/northbound/server/pnd.go
+++ b/controller/northbound/server/pnd.go
@@ -5,6 +5,7 @@ import (
 	"strings"
 	"time"
 
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
 	spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
@@ -37,7 +38,7 @@ func NewPndServer(pndStore networkdomain.PndStore) *PndServer {
 }
 
 // GetMne gets a specific mne.
-func (p PndServer) GetMne(ctx context.Context, request *ppb.GetMneRequest) (*ppb.GetMneResponse, error) {
+func (p PndServer) GetMne(ctx context.Context, request *mnepb.GetMneRequest) (*mnepb.GetMneResponse, error) {
 	labels := prometheus.Labels{"service": "pnd", "rpc": "get"}
 	start := metrics.StartHook(labels, grpcRequestsTotal)
 	defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds)
@@ -66,9 +67,9 @@ func (p PndServer) GetMne(ctx context.Context, request *ppb.GetMneRequest) (*ppb
 		return nil, status.Errorf(codes.Aborted, "%v", err)
 	}
 
-	return &ppb.GetMneResponse{
+	return &mnepb.GetMneResponse{
 		Timestamp: time.Now().UnixNano(),
-		Pnd: &ppb.PrincipalNetworkDomain{
+		Pnd: &mnepb.PrincipalNetworkDomain{
 			Id:          pnd.ID().String(),
 			Name:        pnd.GetName(),
 			Description: pnd.GetDescription(),
@@ -78,7 +79,7 @@ func (p PndServer) GetMne(ctx context.Context, request *ppb.GetMneRequest) (*ppb
 }
 
 // GetMneList returns a list of existing mnes.
-func (p PndServer) GetMneList(ctx context.Context, request *ppb.GetMneListRequest) (*ppb.GetMneListResponse, error) {
+func (p PndServer) GetMneList(ctx context.Context, request *mnepb.GetMneListRequest) (*mnepb.GetMneListResponse, error) {
 	labels := prometheus.Labels{"service": "pnd", "rpc": "get"}
 	start := metrics.StartHook(labels, grpcRequestsTotal)
 	defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds)
@@ -93,7 +94,7 @@ func (p PndServer) GetMneList(ctx context.Context, request *ppb.GetMneListReques
 		return nil, status.Errorf(codes.Aborted, "%v", err)
 	}
 
-	mnes := make([]*ppb.ManagedNetworkElement, len(pnd.NetworkElements()))
+	mnes := make([]*mnepb.ManagedNetworkElement, len(pnd.NetworkElements()))
 	for i, networkElement := range pnd.NetworkElements() {
 		mne, err := fillMneBySpecificPath(networkElement, "/")
 		if err != nil {
@@ -103,9 +104,9 @@ func (p PndServer) GetMneList(ctx context.Context, request *ppb.GetMneListReques
 		mnes[i] = mne
 	}
 
-	return &ppb.GetMneListResponse{
+	return &mnepb.GetMneListResponse{
 		Timestamp: time.Now().UnixNano(),
-		Pnd: &ppb.PrincipalNetworkDomain{
+		Pnd: &mnepb.PrincipalNetworkDomain{
 			Id:          pnd.ID().String(),
 			Name:        pnd.GetName(),
 			Description: pnd.GetDescription(),
@@ -115,7 +116,7 @@ func (p PndServer) GetMneList(ctx context.Context, request *ppb.GetMneListReques
 }
 
 // GetFlattenedMneList returns a list of existing mnes.
-func (p PndServer) GetFlattenedMneList(ctx context.Context, request *ppb.GetMneListRequest) (*ppb.GetFlattenedMneListResponse, error) {
+func (p PndServer) GetFlattenedMneList(ctx context.Context, request *mnepb.GetMneListRequest) (*mnepb.GetFlattenedMneListResponse, error) {
 	labels := prometheus.Labels{"service": "pnd", "rpc": "get"}
 	start := metrics.StartHook(labels, grpcRequestsTotal)
 	defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds)
@@ -131,9 +132,9 @@ func (p PndServer) GetFlattenedMneList(ctx context.Context, request *ppb.GetMneL
 	}
 
 	mnes := pnd.FlattenedNetworkElements()
-	flattenedMnes := make([]*ppb.FlattenedManagedNetworkElement, len(mnes))
+	flattenedMnes := make([]*mnepb.FlattenedManagedNetworkElement, len(mnes))
 	for i, mne := range mnes {
-		mne := &ppb.FlattenedManagedNetworkElement{
+		mne := &mnepb.FlattenedManagedNetworkElement{
 
 			Id:   mne.ID,
 			Name: mne.Name,
@@ -142,9 +143,9 @@ func (p PndServer) GetFlattenedMneList(ctx context.Context, request *ppb.GetMneL
 		flattenedMnes[i] = mne
 	}
 
-	return &ppb.GetFlattenedMneListResponse{
+	return &mnepb.GetFlattenedMneListResponse{
 		Timestamp: time.Now().UnixNano(),
-		Pnd: &ppb.PrincipalNetworkDomain{
+		Pnd: &mnepb.PrincipalNetworkDomain{
 			Id:          pnd.ID().String(),
 			Name:        pnd.GetName(),
 			Description: pnd.GetDescription(),
@@ -153,7 +154,7 @@ func (p PndServer) GetFlattenedMneList(ctx context.Context, request *ppb.GetMneL
 	}, nil
 }
 
-func fillMneBySpecificPath(nme networkelement.NetworkElement, path string) (*ppb.ManagedNetworkElement, error) {
+func fillMneBySpecificPath(nme networkelement.NetworkElement, path string) (*mnepb.ManagedNetworkElement, error) {
 	gnmiPath, err := ygot.StringToStructuredPath(path)
 	if err != nil {
 		log.Error(err)
@@ -187,7 +188,7 @@ func fillMneBySpecificPath(nme networkelement.NetworkElement, path string) (*ppb
 		sbi.Type = nme.SBI().Type()
 	}
 
-	mne := &ppb.ManagedNetworkElement{
+	mne := &mnepb.ManagedNetworkElement{
 		Id:              nme.ID().String(),
 		Name:            nme.Name(),
 		MneNotification: notifications,
@@ -317,7 +318,7 @@ func stringArrayToUUIDs(sid []string) ([]uuid.UUID, error) {
 }
 
 // GetPath gets a path on a mne.
-func (p PndServer) GetPath(ctx context.Context, request *ppb.GetPathRequest) (*ppb.GetPathResponse, error) {
+func (p PndServer) GetPath(ctx context.Context, request *mnepb.GetPathRequest) (*mnepb.GetPathResponse, error) {
 	labels := prometheus.Labels{"service": "pnd", "rpc": "get"}
 	start := metrics.StartHook(labels, grpcRequestsTotal)
 	defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds)
@@ -347,9 +348,9 @@ func (p PndServer) GetPath(ctx context.Context, request *ppb.GetPathRequest) (*p
 		return nil, status.Errorf(codes.Aborted, "%v", err)
 	}
 
-	return &ppb.GetPathResponse{
+	return &mnepb.GetPathResponse{
 		Timestamp: time.Now().UnixNano(),
-		Pnd: &ppb.PrincipalNetworkDomain{
+		Pnd: &mnepb.PrincipalNetworkDomain{
 			Id:          pnd.ID().String(),
 			Name:        pnd.GetName(),
 			Description: pnd.GetDescription(),
@@ -359,7 +360,7 @@ func (p PndServer) GetPath(ctx context.Context, request *ppb.GetPathRequest) (*p
 }
 
 // GetChange gets a specific change of a mne.
-func (p PndServer) GetChange(ctx context.Context, request *ppb.GetChangeRequest) (*ppb.GetChangeResponse, error) {
+func (p PndServer) GetChange(ctx context.Context, request *mnepb.GetChangeRequest) (*mnepb.GetChangeResponse, error) {
 	labels := prometheus.Labels{"service": "pnd", "rpc": "get"}
 	start := metrics.StartHook(labels, grpcRequestsTotal)
 	defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds)
@@ -378,9 +379,9 @@ func (p PndServer) GetChange(ctx context.Context, request *ppb.GetChangeRequest)
 		log.Error(err)
 		return nil, status.Errorf(codes.Aborted, "%v", err)
 	}
-	return &ppb.GetChangeResponse{
+	return &mnepb.GetChangeResponse{
 		Timestamp: time.Now().UnixNano(),
-		Pnd: &ppb.PrincipalNetworkDomain{
+		Pnd: &mnepb.PrincipalNetworkDomain{
 			Id:          pnd.ID().String(),
 			Name:        pnd.GetName(),
 			Description: pnd.GetDescription(),
@@ -390,7 +391,7 @@ func (p PndServer) GetChange(ctx context.Context, request *ppb.GetChangeRequest)
 }
 
 // GetChangeList gets all existing changes.
-func (p PndServer) GetChangeList(ctx context.Context, request *ppb.GetChangeListRequest) (*ppb.GetChangeListResponse, error) {
+func (p PndServer) GetChangeList(ctx context.Context, request *mnepb.GetChangeListRequest) (*mnepb.GetChangeListResponse, error) {
 	labels := prometheus.Labels{"service": "pnd", "rpc": "get"}
 	start := metrics.StartHook(labels, grpcRequestsTotal)
 	defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds)
@@ -409,9 +410,9 @@ func (p PndServer) GetChangeList(ctx context.Context, request *ppb.GetChangeList
 		log.Error(err)
 		return nil, status.Errorf(codes.Aborted, "%v", err)
 	}
-	return &ppb.GetChangeListResponse{
+	return &mnepb.GetChangeListResponse{
 		Timestamp: time.Now().UnixNano(),
-		Pnd: &ppb.PrincipalNetworkDomain{
+		Pnd: &mnepb.PrincipalNetworkDomain{
 			Id:          pnd.ID().String(),
 			Name:        pnd.GetName(),
 			Description: pnd.GetDescription(),
@@ -420,7 +421,7 @@ func (p PndServer) GetChangeList(ctx context.Context, request *ppb.GetChangeList
 	}, nil
 }
 
-func fillChanges(pnd networkdomain.NetworkDomain, all bool, cuid ...string) ([]*ppb.Change, error) {
+func fillChanges(pnd networkdomain.NetworkDomain, all bool, cuid ...string) ([]*mnepb.Change, error) {
 	var changeList []uuid.UUID
 
 	switch all {
@@ -442,7 +443,7 @@ func fillChanges(pnd networkdomain.NetworkDomain, all bool, cuid ...string) ([]*
 		}
 	}
 
-	changes := make([]*ppb.Change, len(changeList))
+	changes := make([]*mnepb.Change, len(changeList))
 	for i, ch := range changeList {
 		c, err := pnd.GetChange(ch)
 		if err != nil {
@@ -456,7 +457,7 @@ func fillChanges(pnd networkdomain.NetworkDomain, all bool, cuid ...string) ([]*
 			return nil, status.Errorf(codes.Aborted, "%v", err)
 		}
 
-		changes[i] = &ppb.Change{
+		changes[i] = &mnepb.Change{
 			Id:    ch.String(),
 			Age:   c.Age().Microseconds(),
 			State: c.State(),
@@ -467,7 +468,7 @@ func fillChanges(pnd networkdomain.NetworkDomain, all bool, cuid ...string) ([]*
 }
 
 // SetMneList updates the list of mnes.
-func (p PndServer) SetMneList(ctx context.Context, request *ppb.SetMneListRequest) (*ppb.SetMneListResponse, error) {
+func (p PndServer) SetMneList(ctx context.Context, request *mnepb.SetMneListRequest) (*mnepb.SetMneListResponse, error) {
 	labels := prometheus.Labels{"service": "pnd", "rpc": "set"}
 	start := metrics.StartHook(labels, grpcRequestsTotal)
 	defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds)
@@ -496,20 +497,20 @@ func (p PndServer) SetMneList(ctx context.Context, request *ppb.SetMneListReques
 		networkElementIDs = append(networkElementIDs, mneID)
 	}
 
-	r := make([]*ppb.SetResponse, len(networkElementIDs))
+	r := make([]*mnepb.SetResponse, len(networkElementIDs))
 	for i, mneID := range networkElementIDs {
-		r[i] = &ppb.SetResponse{Id: mneID.String(), Status: ppb.Status_STATUS_OK}
+		r[i] = &mnepb.SetResponse{Id: mneID.String(), Status: mnepb.Status_STATUS_OK}
 	}
 
-	return &ppb.SetMneListResponse{
+	return &mnepb.SetMneListResponse{
 		Timestamp: time.Now().UnixNano(),
-		Status:    ppb.Status_STATUS_OK,
+		Status:    mnepb.Status_STATUS_OK,
 		Responses: r,
 	}, nil
 }
 
 // SetChangeList sets a list of changes.
-func (p PndServer) SetChangeList(ctx context.Context, request *ppb.SetChangeListRequest) (*ppb.SetChangeListResponse, error) {
+func (p PndServer) SetChangeList(ctx context.Context, request *mnepb.SetChangeListRequest) (*mnepb.SetChangeListResponse, error) {
 	labels := prometheus.Labels{"service": "pnd", "rpc": "set"}
 	start := metrics.StartHook(labels, grpcRequestsTotal)
 	defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds)
@@ -523,7 +524,7 @@ func (p PndServer) SetChangeList(ctx context.Context, request *ppb.SetChangeList
 		return nil, handleRPCError(labels, err)
 	}
 
-	responses := make([]*ppb.SetResponse, len(request.Change))
+	responses := make([]*mnepb.SetResponse, len(request.Change))
 
 	for i, r := range request.Change {
 		cuid, err := uuid.Parse(r.Cuid)
@@ -532,12 +533,12 @@ func (p PndServer) SetChangeList(ctx context.Context, request *ppb.SetChangeList
 			return nil, status.Errorf(codes.Aborted, "%v", err)
 		}
 		switch r.Op {
-		case ppb.Operation_OPERATION_COMMIT:
+		case mnepb.Operation_OPERATION_COMMIT:
 			if err := pnd.Commit(cuid); err != nil {
 				log.Error(err)
 				return nil, status.Errorf(codes.Aborted, "%v", err)
 			}
-		case ppb.Operation_OPERATION_CONFIRM:
+		case mnepb.Operation_OPERATION_CONFIRM:
 			if err := pnd.Confirm(cuid); err != nil {
 				log.Error(err)
 				return nil, status.Errorf(codes.Aborted, "%v", err)
@@ -548,20 +549,20 @@ func (p PndServer) SetChangeList(ctx context.Context, request *ppb.SetChangeList
 			}
 		}
 
-		responses[i] = &ppb.SetResponse{
+		responses[i] = &mnepb.SetResponse{
 			Id:     cuid.String(),
-			Status: ppb.Status_STATUS_OK,
+			Status: mnepb.Status_STATUS_OK,
 		}
 	}
-	return &ppb.SetChangeListResponse{
+	return &mnepb.SetChangeListResponse{
 		Timestamp: time.Now().UnixNano(),
-		Status:    ppb.Status_STATUS_OK,
+		Status:    mnepb.Status_STATUS_OK,
 		Responses: responses,
 	}, nil
 }
 
 // SetPathList sets a list of paths.
-func (p PndServer) SetPathList(ctx context.Context, request *ppb.SetPathListRequest) (*ppb.SetPathListResponse, error) {
+func (p PndServer) SetPathList(ctx context.Context, request *mnepb.SetPathListRequest) (*mnepb.SetPathListResponse, error) {
 	labels := prometheus.Labels{"service": "pnd", "rpc": "set"}
 	start := metrics.StartHook(labels, grpcRequestsTotal)
 	defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds)
@@ -575,7 +576,7 @@ func (p PndServer) SetPathList(ctx context.Context, request *ppb.SetPathListRequ
 		return nil, handleRPCError(labels, err)
 	}
 
-	responses := make([]*ppb.SetResponse, len(request.ChangeRequest))
+	responses := make([]*mnepb.SetResponse, len(request.ChangeRequest))
 
 	for i, r := range request.ChangeRequest {
 		mneID, err := uuid.Parse(r.Mneid)
@@ -589,14 +590,14 @@ func (p PndServer) SetPathList(ctx context.Context, request *ppb.SetPathListRequ
 			return nil, status.Errorf(codes.Aborted, "%v", err)
 		}
 
-		responses[i] = &ppb.SetResponse{
-			Status: ppb.Status_STATUS_OK,
+		responses[i] = &mnepb.SetResponse{
+			Status: mnepb.Status_STATUS_OK,
 			Id:     cid.String(),
 		}
 	}
-	return &ppb.SetPathListResponse{
+	return &mnepb.SetPathListResponse{
 		Timestamp: time.Now().UnixNano(),
-		Status:    ppb.Status_STATUS_OK,
+		Status:    mnepb.Status_STATUS_OK,
 		Responses: responses,
 	}, nil
 }
@@ -658,7 +659,7 @@ func filterSbiType(sbiType ppb.SbiType) spb.Type {
 }
 
 // DeleteMne deletes a mne.
-func (p PndServer) DeleteMne(ctx context.Context, request *ppb.DeleteMneRequest) (*ppb.DeleteMneResponse, error) {
+func (p PndServer) DeleteMne(ctx context.Context, request *mnepb.DeleteMneRequest) (*mnepb.DeleteMneResponse, error) {
 	pid, err := uuid.Parse(request.Pid)
 	if err != nil {
 		log.Error(err)
@@ -679,14 +680,14 @@ func (p PndServer) DeleteMne(ctx context.Context, request *ppb.DeleteMneRequest)
 		log.Error(err)
 		return nil, status.Errorf(codes.Aborted, "%v", err)
 	}
-	return &ppb.DeleteMneResponse{
+	return &mnepb.DeleteMneResponse{
 		Timestamp: time.Now().UnixNano(),
-		Status:    ppb.Status_STATUS_OK,
+		Status:    mnepb.Status_STATUS_OK,
 	}, nil
 }
 
 // SubscribePath subscribes to specifc paths of an mne.
-func (p PndServer) SubscribePath(request *ppb.SubscribePathRequest, stream ppb.PndService_SubscribePathServer) error {
+func (p PndServer) SubscribePath(request *mnepb.SubscribePathRequest, stream mnepb.NetworkElementService_SubscribePathServer) error {
 	pid, err := uuid.Parse(request.Pid)
 	if err != nil {
 		return err
diff --git a/controller/northbound/server/pnd_test.go b/controller/northbound/server/pnd_test.go
index 8bdc338bd8962ac012ee6cf3c4dd4ef06e763b3b..fbf20c00d7c046bab578469006270c1475e68188 100644
--- a/controller/northbound/server/pnd_test.go
+++ b/controller/northbound/server/pnd_test.go
@@ -5,7 +5,7 @@ import (
 	"testing"
 	"time"
 
-	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
 	"code.fbi.h-da.de/danet/gosdn/controller/mocks"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus"
@@ -68,7 +68,7 @@ func getTestPndServer(t *testing.T) *PndServer {
 
 	mockChange := &mocks.Change{}
 	mockChange.On("Age").Return(time.Hour)
-	mockChange.On("State").Return(ppb.ChangeState_CHANGE_STATE_INCONSISTENT)
+	mockChange.On("State").Return(mnepb.ChangeState_CHANGE_STATE_INCONSISTENT)
 
 	mockPnd = &mocks.NetworkDomain{}
 	mockPnd.On("ID").Return(pndUUID)
@@ -112,7 +112,7 @@ func Test_pnd_GetPath(t *testing.T) {
 
 	type args struct {
 		ctx     context.Context
-		request *ppb.GetPathRequest
+		request *mnepb.GetPathRequest
 	}
 	tests := []struct {
 		name    string
@@ -124,7 +124,7 @@ func Test_pnd_GetPath(t *testing.T) {
 			name: "get path: system/config/hostname",
 			args: args{
 				ctx: context.Background(),
-				request: &ppb.GetPathRequest{
+				request: &mnepb.GetPathRequest{
 					Timestamp: time.Now().UnixNano(),
 					Mneid:     mneUUID.String(),
 					Path:      "system/config/hostname",
@@ -162,7 +162,7 @@ func Test_pnd_GetPath(t *testing.T) {
 			name: "get path: system",
 			args: args{
 				ctx: context.Background(),
-				request: &ppb.GetPathRequest{
+				request: &mnepb.GetPathRequest{
 					Timestamp: time.Now().UnixNano(),
 					Mneid:     mneUUID.String(),
 					Path:      "system",
diff --git a/controller/nucleus/change.go b/controller/nucleus/change.go
index 40d09e694c20a99b39824d6bf4691659c9eef7b1..0d4deb75f081815970185735c2b0645a81f37fb1 100644
--- a/controller/nucleus/change.go
+++ b/controller/nucleus/change.go
@@ -7,7 +7,7 @@ import (
 	"sync"
 	"time"
 
-	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 
 	"github.com/google/uuid"
 	"github.com/openconfig/ygot/ygot"
@@ -38,7 +38,7 @@ func NewChange(mne uuid.UUID, currentState ygot.GoStruct, change ygot.GoStruct,
 	c := &Change{
 		cuid:          uuid.New(),
 		duid:          mne,
-		state:         ppb.ChangeState_CHANGE_STATE_PENDING,
+		state:         mnepb.ChangeState_CHANGE_STATE_PENDING,
 		timestamp:     time.Now(),
 		previousState: currentState,
 		intendedState: change,
@@ -60,15 +60,15 @@ func NewChange(mne uuid.UUID, currentState ygot.GoStruct, change ygot.GoStruct,
 type Change struct {
 	cuid               uuid.UUID
 	duid               uuid.UUID
-	state              ppb.ChangeState
+	state              mnepb.ChangeState
 	timestamp          time.Time
 	previousState      ygot.GoStruct
 	intendedState      ygot.GoStruct
 	callback           func(ygot.GoStruct, ygot.GoStruct) error
 	stateMu            sync.RWMutex
 	errChan            <-chan error
-	stateIn            chan<- ppb.ChangeState
-	stateOut           <-chan ppb.ChangeState
+	stateIn            chan<- mnepb.ChangeState
+	stateOut           <-chan mnepb.ChangeState
 	stateManagerCancel context.CancelFunc
 }
 
@@ -82,7 +82,7 @@ func (c *Change) ID() uuid.UUID {
 // the change is rolled back.
 func (c *Change) Commit() error {
 	//TODO: check if already committed
-	c.stateIn <- ppb.ChangeState_CHANGE_STATE_COMMITTED
+	c.stateIn <- mnepb.ChangeState_CHANGE_STATE_COMMITTED
 	select {
 	case err := <-c.errChan:
 		return err
@@ -94,7 +94,7 @@ func (c *Change) Commit() error {
 // Confirm confirms a committed Change and stops the rollback timer.
 func (c *Change) Confirm() error {
 	//TODO: check if already confirmed
-	c.stateIn <- ppb.ChangeState_CHANGE_STATE_CONFIRMED
+	c.stateIn <- mnepb.ChangeState_CHANGE_STATE_CONFIRMED
 	select {
 	case err := <-c.errChan:
 		return err
@@ -109,7 +109,7 @@ func (c *Change) Age() time.Duration {
 }
 
 // State returns the changes's state.
-func (c *Change) State() ppb.ChangeState {
+func (c *Change) State() mnepb.ChangeState {
 	c.stateMu.RLock()
 	state := c.state
 	c.stateMu.RUnlock()
@@ -128,9 +128,9 @@ func (c *Change) IntendedState() ygot.GoStruct {
 	return c.intendedState
 }
 
-func stateManager(ctx context.Context, ch *Change, timeout time.Duration) (chan<- ppb.ChangeState, <-chan ppb.ChangeState, <-chan error) {
-	stateIn := make(chan ppb.ChangeState)
-	stateOut := make(chan ppb.ChangeState)
+func stateManager(ctx context.Context, ch *Change, timeout time.Duration) (chan<- mnepb.ChangeState, <-chan mnepb.ChangeState, <-chan error) {
+	stateIn := make(chan mnepb.ChangeState)
+	stateOut := make(chan mnepb.ChangeState)
 	// A Goroutine, which is created while a new Change is initialized acts as
 	// the receiver for errorChan
 	errChan := make(chan error)
@@ -146,13 +146,13 @@ func stateManager(ctx context.Context, ch *Change, timeout time.Duration) (chan<
 			select {
 			case <-ticker.C:
 				state := ch.State()
-				if state == ppb.ChangeState_CHANGE_STATE_CONFIRMED {
+				if state == mnepb.ChangeState_CHANGE_STATE_CONFIRMED {
 					continue
 				}
 				err := ch.callback(ch.intendedState, ch.previousState)
 				if err != nil {
 					ch.stateMu.Lock()
-					ch.state = ppb.ChangeState_CHANGE_STATE_INCONSISTENT
+					ch.state = mnepb.ChangeState_CHANGE_STATE_INCONSISTENT
 					ch.stateMu.Unlock()
 					log.Errorf("change %v timed out", ch.cuid)
 					log.Error(err)
@@ -162,14 +162,14 @@ func stateManager(ctx context.Context, ch *Change, timeout time.Duration) (chan<
 				ticker.Stop()
 				// TODO: keep the Change as pending, or remove it?
 				ch.stateMu.Lock()
-				ch.state = ppb.ChangeState_CHANGE_STATE_PENDING
+				ch.state = mnepb.ChangeState_CHANGE_STATE_PENDING
 				ch.stateMu.Unlock()
 				log.Errorf("change %v timed out", ch.cuid)
 			case s := <-stateIn:
 				switch s {
-				case ppb.ChangeState_CHANGE_STATE_COMMITTED:
+				case mnepb.ChangeState_CHANGE_STATE_COMMITTED:
 					state := ch.State()
-					if state == ppb.ChangeState_CHANGE_STATE_COMMITTED || state == ppb.ChangeState_CHANGE_STATE_CONFIRMED {
+					if state == mnepb.ChangeState_CHANGE_STATE_COMMITTED || state == mnepb.ChangeState_CHANGE_STATE_CONFIRMED {
 						errChan <- fmt.Errorf("change %v already %s", ch.cuid, state.String())
 						continue
 					}
@@ -178,25 +178,25 @@ func stateManager(ctx context.Context, ch *Change, timeout time.Duration) (chan<
 					err := ch.callback(ch.previousState, ch.intendedState)
 					if err != nil {
 						ch.stateMu.Lock()
-						ch.state = ppb.ChangeState_CHANGE_STATE_INCONSISTENT
+						ch.state = mnepb.ChangeState_CHANGE_STATE_INCONSISTENT
 						ch.stateMu.Unlock()
 						errChan <- err
 						continue
 					}
 					ch.stateMu.Lock()
-					ch.state = ppb.ChangeState_CHANGE_STATE_COMMITTED
+					ch.state = mnepb.ChangeState_CHANGE_STATE_COMMITTED
 					ch.stateMu.Unlock()
 					stateOut <- state
-				case ppb.ChangeState_CHANGE_STATE_CONFIRMED:
+				case mnepb.ChangeState_CHANGE_STATE_CONFIRMED:
 					state := ch.State()
-					if state != ppb.ChangeState_CHANGE_STATE_COMMITTED {
+					if state != mnepb.ChangeState_CHANGE_STATE_COMMITTED {
 						errChan <- fmt.Errorf("cannot confirm uncommitted change %v", ch.cuid)
 						continue
 					}
 					// The change has been confirmed and the timer is stopped,
 					// since a rollback is not necessary anymore.
 					ch.stateMu.Lock()
-					ch.state = ppb.ChangeState_CHANGE_STATE_CONFIRMED
+					ch.state = mnepb.ChangeState_CHANGE_STATE_CONFIRMED
 					ch.stateMu.Unlock()
 					stateOut <- state
 					ch.stateManagerCancel()
diff --git a/controller/nucleus/change_test.go b/controller/nucleus/change_test.go
index cdfae361add283fd4257d12583299763d11cd41a..aef9458c6c172eefcabf64081df1adeefb6a6a12 100644
--- a/controller/nucleus/change_test.go
+++ b/controller/nucleus/change_test.go
@@ -8,7 +8,7 @@ import (
 	"testing"
 	"time"
 
-	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	"code.fbi.h-da.de/danet/gosdn/controller/config"
 	"github.com/google/uuid"
 	"github.com/openconfig/ygot/exampleoc"
@@ -120,7 +120,7 @@ func TestChange_CommitRollbackError(t *testing.T) {
 }
 
 func TestChange_CommitError(t *testing.T) {
-	want := ppb.ChangeState_CHANGE_STATE_INCONSISTENT
+	want := mnepb.ChangeState_CHANGE_STATE_INCONSISTENT
 	c := &Change{
 		cuid:          cuid,
 		duid:          mneid,
@@ -150,7 +150,7 @@ func TestChange_CommitError(t *testing.T) {
 }
 
 func TestChange_Commit(t *testing.T) {
-	want := ppb.ChangeState_CHANGE_STATE_COMMITTED
+	want := mnepb.ChangeState_CHANGE_STATE_COMMITTED
 	c := &Change{
 		cuid:          cuid,
 		duid:          mneid,
@@ -263,19 +263,19 @@ func TestChange_ID(t *testing.T) {
 func TestChange_State(t *testing.T) {
 	tests := []struct {
 		name string
-		want ppb.ChangeState
+		want mnepb.ChangeState
 	}{
 		{
 			name: "pending",
-			want: ppb.ChangeState_CHANGE_STATE_PENDING,
+			want: mnepb.ChangeState_CHANGE_STATE_PENDING,
 		},
 		{
 			name: "committed",
-			want: ppb.ChangeState_CHANGE_STATE_COMMITTED,
+			want: mnepb.ChangeState_CHANGE_STATE_COMMITTED,
 		},
 		{
 			name: "confirmed",
-			want: ppb.ChangeState_CHANGE_STATE_CONFIRMED,
+			want: mnepb.ChangeState_CHANGE_STATE_CONFIRMED,
 		},
 	}
 	for _, tt := range tests {
diff --git a/controller/nucleus/gnmi_transport.go b/controller/nucleus/gnmi_transport.go
index eb1ea0e2409808f3a169a62b58ddd292d5b1c3ee..0261411122091e44e6237d087eb4d4ac21c5e0de 100644
--- a/controller/nucleus/gnmi_transport.go
+++ b/controller/nucleus/gnmi_transport.go
@@ -9,7 +9,7 @@ import (
 
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/southbound"
 
-	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/types"
@@ -124,7 +124,7 @@ func (g *Gnmi) applyDiff(ctx context.Context, payload change.Payload, path *gpb.
 	}
 
 	var json []byte
-	if op := ctx.Value(types.CtxKeyOperation); op == ppb.ApiOperation_API_OPERATION_UPDATE || op == ppb.ApiOperation_API_OPERATION_REPLACE {
+	if op := ctx.Value(types.CtxKeyOperation); op == mnepb.ApiOperation_API_OPERATION_UPDATE || op == mnepb.ApiOperation_API_OPERATION_REPLACE {
 		rootCopy, err := ygot.DeepCopy(schema.Root)
 		if err != nil {
 			return err
@@ -172,14 +172,14 @@ func createSetRequest(ctx context.Context, diff *gpb.Notification, json []byte,
 	req := &gpb.SetRequest{}
 	if diff.Update != nil {
 		switch op {
-		case ppb.ApiOperation_API_OPERATION_UPDATE:
+		case mnepb.ApiOperation_API_OPERATION_UPDATE:
 			req.Update = []*gpb.Update{{
 				Path: path,
 				Val: &gpb.TypedValue{
 					Value: &gpb.TypedValue_JsonIetfVal{JsonIetfVal: json},
 				},
 			}}
-		case ppb.ApiOperation_API_OPERATION_REPLACE:
+		case mnepb.ApiOperation_API_OPERATION_REPLACE:
 			req.Replace = []*gpb.Update{{
 				Path: path,
 				Val: &gpb.TypedValue{
diff --git a/controller/nucleus/gnmi_transport_test.go b/controller/nucleus/gnmi_transport_test.go
index 146b1ce8b14ded564916e05f26d8a8822ec53732..279cc78fcad5c5ae380aebf261ddc216634aeebc 100644
--- a/controller/nucleus/gnmi_transport_test.go
+++ b/controller/nucleus/gnmi_transport_test.go
@@ -11,7 +11,7 @@ import (
 
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/southbound"
 
-	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
 	tpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
 
@@ -302,7 +302,7 @@ func TestGnmi_Set(t *testing.T) {
 			args: args{
 				payload: change.Payload{},
 				path:    "/",
-				ctx:     context.WithValue(context.Background(), types.CtxKeyOperation, ppb.ApiOperation_API_OPERATION_UPDATE), // nolint
+				ctx:     context.WithValue(context.Background(), types.CtxKeyOperation, mnepb.ApiOperation_API_OPERATION_UPDATE), // nolint
 			},
 			wantErr: true,
 		},
@@ -336,7 +336,7 @@ func TestGnmi_Set(t *testing.T) {
 					},
 				},
 				path: "/system/config/hostname",
-				ctx:  context.WithValue(context.Background(), types.CtxKeyOperation, ppb.ApiOperation_API_OPERATION_UPDATE), // nolint
+				ctx:  context.WithValue(context.Background(), types.CtxKeyOperation, mnepb.ApiOperation_API_OPERATION_UPDATE), // nolint
 			},
 			wantErr: false,
 		},
@@ -370,7 +370,7 @@ func TestGnmi_Set(t *testing.T) {
 					},
 				},
 				path: "/system/config/hostname",
-				ctx:  context.WithValue(context.Background(), types.CtxKeyOperation, ppb.ApiOperation_API_OPERATION_DELETE), // nolint
+				ctx:  context.WithValue(context.Background(), types.CtxKeyOperation, mnepb.ApiOperation_API_OPERATION_DELETE), // nolint
 			},
 			wantErr: false,
 		},
diff --git a/controller/nucleus/principalNetworkDomain.go b/controller/nucleus/principalNetworkDomain.go
index 4aaf2cfc3a263f65e84bf113a368d7cb83fe2108..9f7ff1a0c8eebcb2d33a6fd499c35fb0f84130ff 100644
--- a/controller/nucleus/principalNetworkDomain.go
+++ b/controller/nucleus/principalNetworkDomain.go
@@ -19,7 +19,7 @@ import (
 	"golang.org/x/sync/errgroup"
 
 	cpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/csbi"
-	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
 	tpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
 	eventservice "code.fbi.h-da.de/danet/gosdn/controller/eventService"
@@ -516,7 +516,7 @@ func (pnd *pndImplementation) ensureIntendedConfigurationIsAppliedOnNetworkEleme
 // The Change is Pending and times out after the specified timeout period.
 //
 // nolint:gocyclo
-func (pnd *pndImplementation) ChangeMNE(duid uuid.UUID, operation ppb.ApiOperation, path string, value ...string) (uuid.UUID, error) {
+func (pnd *pndImplementation) ChangeMNE(duid uuid.UUID, operation mnepb.ApiOperation, path string, value ...string) (uuid.UUID, error) {
 	//TODO: check if we can get cyclomatic complexity from 16 to at least 15
 	mne, err := pnd.networkElementService.Get(store.Query{
 		ID: duid,
@@ -535,14 +535,14 @@ func (pnd *pndImplementation) ChangeMNE(duid uuid.UUID, operation ppb.ApiOperati
 		return uuid.Nil, err
 	}
 
-	if operation != ppb.ApiOperation_API_OPERATION_DELETE && len(value) != 1 {
+	if operation != mnepb.ApiOperation_API_OPERATION_DELETE && len(value) != 1 {
 		return uuid.Nil, &customerrs.InvalidParametersError{
 			Func:  pnd.ChangeMNE,
 			Param: value,
 		}
 	}
 	switch operation {
-	case ppb.ApiOperation_API_OPERATION_UPDATE, ppb.ApiOperation_API_OPERATION_REPLACE:
+	case mnepb.ApiOperation_API_OPERATION_UPDATE, mnepb.ApiOperation_API_OPERATION_REPLACE:
 		_, entry, err := ytypes.GetOrCreateNode(mne.SBI().Schema().RootSchema(), validatedCpy, p)
 		if err != nil {
 			return uuid.Nil, err
@@ -563,7 +563,7 @@ func (pnd *pndImplementation) ChangeMNE(duid uuid.UUID, operation ppb.ApiOperati
 				return uuid.Nil, err
 			}
 		}
-	case ppb.ApiOperation_API_OPERATION_DELETE:
+	case mnepb.ApiOperation_API_OPERATION_DELETE:
 		if err := ytypes.DeleteNode(mne.SBI().Schema().RootSchema(), validatedCpy, p); err != nil {
 			return uuid.Nil, err
 		}
@@ -589,7 +589,7 @@ func (pnd *pndImplementation) ChangeMNE(duid uuid.UUID, operation ppb.ApiOperati
 	return ch.cuid, nil
 }
 
-func (pnd *pndImplementation) SubscribePath(uuid uuid.UUID, subList *ppb.SubscriptionList) error {
+func (pnd *pndImplementation) SubscribePath(uuid uuid.UUID, subList *mnepb.SubscriptionList) error {
 	mne, err := pnd.networkElementService.Get(store.Query{
 		ID: uuid,
 	})
@@ -630,26 +630,26 @@ func splitStringPath(s string) []string {
 	return strings.Split(s, "/")
 }
 
-func mapStreamModeToAristaFork(mode ppb.StreamMode) (string, error) {
+func mapStreamModeToAristaFork(mode mnepb.StreamMode) (string, error) {
 	switch mode {
-	case ppb.StreamMode_STREAM_MODE_TARGET_DEFINED:
+	case mnepb.StreamMode_STREAM_MODE_TARGET_DEFINED:
 		return "target_defined", nil
-	case ppb.StreamMode_STREAM_MODE_ON_CHANGE:
+	case mnepb.StreamMode_STREAM_MODE_ON_CHANGE:
 		return "on_change", nil
-	case ppb.StreamMode_STREAM_MODE_SAMPLE:
+	case mnepb.StreamMode_STREAM_MODE_SAMPLE:
 		return "sample", nil
 	default:
 		return "", fmt.Errorf("StreamMode of type: %T is not supported", mode)
 	}
 }
 
-func mapModeToAristaFork(mode ppb.SubscriptionMode) (string, error) {
+func mapModeToAristaFork(mode mnepb.SubscriptionMode) (string, error) {
 	switch mode {
-	case ppb.SubscriptionMode_SUBSCRIPTION_MODE_STREAM:
+	case mnepb.SubscriptionMode_SUBSCRIPTION_MODE_STREAM:
 		return "stream", nil
-	case ppb.SubscriptionMode_SUBSCRIPTION_MODE_ONCE:
+	case mnepb.SubscriptionMode_SUBSCRIPTION_MODE_ONCE:
 		return "once", nil
-	case ppb.SubscriptionMode_SUBSCRIPTION_MODE_POLL:
+	case mnepb.SubscriptionMode_SUBSCRIPTION_MODE_POLL:
 		return "poll", nil
 	default:
 		return "", fmt.Errorf("SubscriptionMode of type: %T is not supported", mode)
diff --git a/controller/nucleus/principalNetworkDomain_test.go b/controller/nucleus/principalNetworkDomain_test.go
index 38b704aac23a563aa6b703a2dd40965aa6bbeeff..7722edc5f3d20cdadb17ab26e9321238d7ee8fcf 100644
--- a/controller/nucleus/principalNetworkDomain_test.go
+++ b/controller/nucleus/principalNetworkDomain_test.go
@@ -9,9 +9,10 @@ import (
 
 	"code.fbi.h-da.de/danet/gosdn/api/go/gosdn/csbi"
 	cpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/csbi"
-	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
 	tpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
+
 	"code.fbi.h-da.de/danet/gosdn/controller/conflict"
 	eventservice "code.fbi.h-da.de/danet/gosdn/controller/eventService"
 	eventInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/event"
@@ -686,7 +687,7 @@ func Test_pndImplementation_ChangeMNE(t *testing.T) {
 		},
 	}
 	type args struct {
-		operation ppb.ApiOperation
+		operation mnepb.ApiOperation
 		path      string
 		value     []string
 	}
@@ -698,7 +699,7 @@ func Test_pndImplementation_ChangeMNE(t *testing.T) {
 		{
 			name: "update",
 			args: args{
-				operation: ppb.ApiOperation_API_OPERATION_UPDATE,
+				operation: mnepb.ApiOperation_API_OPERATION_UPDATE,
 				path:      "/system/config/hostname",
 				value:     []string{"ceos3000"},
 			},
@@ -707,7 +708,7 @@ func Test_pndImplementation_ChangeMNE(t *testing.T) {
 		{
 			name: "replace",
 			args: args{
-				operation: ppb.ApiOperation_API_OPERATION_REPLACE,
+				operation: mnepb.ApiOperation_API_OPERATION_REPLACE,
 				path:      "/system/config/hostname",
 				value:     []string{"ceos3000"},
 			},
@@ -716,7 +717,7 @@ func Test_pndImplementation_ChangeMNE(t *testing.T) {
 		{
 			name: "delete",
 			args: args{
-				operation: ppb.ApiOperation_API_OPERATION_DELETE,
+				operation: mnepb.ApiOperation_API_OPERATION_DELETE,
 				path:      "/system/config/hostname",
 			},
 			wantErr: false,
@@ -724,7 +725,7 @@ func Test_pndImplementation_ChangeMNE(t *testing.T) {
 		{
 			name: "delete w/args",
 			args: args{
-				operation: ppb.ApiOperation_API_OPERATION_DELETE,
+				operation: mnepb.ApiOperation_API_OPERATION_DELETE,
 				path:      "/system/config/hostname",
 				value:     []string{"ceos3000"},
 			},
@@ -742,7 +743,7 @@ func Test_pndImplementation_ChangeMNE(t *testing.T) {
 		{
 			name: "invalid arg count",
 			args: args{
-				operation: ppb.ApiOperation_API_OPERATION_UPDATE,
+				operation: mnepb.ApiOperation_API_OPERATION_UPDATE,
 				path:      "/system/config/hostname",
 				value:     []string{"ceos3000", "ceos3001"},
 			},
@@ -751,7 +752,7 @@ func Test_pndImplementation_ChangeMNE(t *testing.T) {
 		{
 			name: "invalid arg count - update, no args",
 			args: args{
-				operation: ppb.ApiOperation_API_OPERATION_UPDATE,
+				operation: mnepb.ApiOperation_API_OPERATION_UPDATE,
 				path:      "/system/config/hostname",
 			},
 			wantErr: true,
@@ -759,7 +760,7 @@ func Test_pndImplementation_ChangeMNE(t *testing.T) {
 		{
 			name: "invalid arg count - replace, no args",
 			args: args{
-				operation: ppb.ApiOperation_API_OPERATION_UPDATE,
+				operation: mnepb.ApiOperation_API_OPERATION_UPDATE,
 				path:      "/system/config/hostname",
 			},
 			wantErr: true,
@@ -767,7 +768,7 @@ func Test_pndImplementation_ChangeMNE(t *testing.T) {
 		{
 			name: "network element not found",
 			args: args{
-				operation: ppb.ApiOperation_API_OPERATION_UPDATE,
+				operation: mnepb.ApiOperation_API_OPERATION_UPDATE,
 			},
 			wantErr: true,
 		},
@@ -1000,7 +1001,7 @@ func Test_pndImplementation_Confirm(t *testing.T) {
 				t.Error(err)
 				return
 			}
-			_, err = pnd.ChangeMNE(mne.ID(), ppb.ApiOperation_API_OPERATION_UPDATE, "system/config/hostname", "ceos3000")
+			_, err = pnd.ChangeMNE(mne.ID(), mnepb.ApiOperation_API_OPERATION_UPDATE, "system/config/hostname", "ceos3000")
 			if err != nil {
 				t.Error(err)
 				return
@@ -1250,7 +1251,7 @@ func Test_pndImplementation_SubscribePath(t *testing.T) {
 	}
 	type args struct {
 		uuid    uuid.UUID
-		subList *ppb.SubscriptionList
+		subList *mnepb.SubscriptionList
 	}
 	tests := []struct {
 		name    string
diff --git a/controller/store/changeStores.go b/controller/store/changeStores.go
index b312753591aa67d924934c7c8af2a41c8ff52853..06db18452024e3dfd9b59e68732285a6d9897786 100644
--- a/controller/store/changeStores.go
+++ b/controller/store/changeStores.go
@@ -6,7 +6,7 @@ import (
 	"github.com/google/uuid"
 	log "github.com/sirupsen/logrus"
 
-	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 )
 
 // ChangeStore is used to store Changes.
@@ -41,20 +41,20 @@ func (s *ChangeStore) GetChange(id uuid.UUID) (change.Change, error) {
 
 // Pending returns the UUIDs of all pending changes.
 func (s *ChangeStore) Pending() []uuid.UUID {
-	return filterChanges(s, ppb.ChangeState_CHANGE_STATE_PENDING)
+	return filterChanges(s, mnepb.ChangeState_CHANGE_STATE_PENDING)
 }
 
 // Committed returns the UUIDs of all pending changes.
 func (s *ChangeStore) Committed() []uuid.UUID {
-	return filterChanges(s, ppb.ChangeState_CHANGE_STATE_COMMITTED)
+	return filterChanges(s, mnepb.ChangeState_CHANGE_STATE_COMMITTED)
 }
 
 // Confirmed returns the UUIDs of all pending changes.
 func (s *ChangeStore) Confirmed() []uuid.UUID {
-	return filterChanges(s, ppb.ChangeState_CHANGE_STATE_CONFIRMED)
+	return filterChanges(s, mnepb.ChangeState_CHANGE_STATE_CONFIRMED)
 }
 
-func filterChanges(store *ChangeStore, state ppb.ChangeState) []uuid.UUID {
+func filterChanges(store *ChangeStore, state mnepb.ChangeState) []uuid.UUID {
 	changes := make([]uuid.UUID, 0)
 	for _, ch := range store.Store {
 		switch c := ch.(type) {
diff --git a/controller/test/integration/nucleusIntegration_test.go b/controller/test/integration/nucleusIntegration_test.go
index 62c56e8afd9d4b1a358767777c2cad8383e038ea..05034a615c1a74dfff5ed6683d81d369beb99cd2 100644
--- a/controller/test/integration/nucleusIntegration_test.go
+++ b/controller/test/integration/nucleusIntegration_test.go
@@ -10,9 +10,10 @@ import (
 
 	"github.com/google/uuid"
 
-	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
 	tpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
+
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/change"
 	"code.fbi.h-da.de/danet/gosdn/models/generated/openconfig"
 
@@ -199,28 +200,28 @@ func TestGnmi_SetValidIntegration(t *testing.T) {
 
 	tests := []struct {
 		name  string
-		apiOp ppb.ApiOperation
+		apiOp mnepb.ApiOperation
 		path  string
 		value string
 		want  string
 	}{
 		{
 			name:  "update",
-			apiOp: ppb.ApiOperation_API_OPERATION_UPDATE,
+			apiOp: mnepb.ApiOperation_API_OPERATION_UPDATE,
 			path:  testPath,
 			value: modifiedHostname,
 			want:  modifiedHostname,
 		},
 		{
 			name:  "replace",
-			apiOp: ppb.ApiOperation_API_OPERATION_REPLACE,
+			apiOp: mnepb.ApiOperation_API_OPERATION_REPLACE,
 			path:  "/system/config/domain-name",
 			value: modifiedHostname,
 			want:  modifiedHostname,
 		},
 		{
 			name:  "delete",
-			apiOp: ppb.ApiOperation_API_OPERATION_DELETE,
+			apiOp: mnepb.ApiOperation_API_OPERATION_DELETE,
 			path:  testPath,
 		},
 	}