diff --git a/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionFieldsGetter.java b/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionFieldsGetter.java
new file mode 100644
index 0000000000000000000000000000000000000000..7ba1c1535283f292b4dbe0d5b7bffe9bf1149156
--- /dev/null
+++ b/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionFieldsGetter.java
@@ -0,0 +1,47 @@
+/*
+* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package eu.teraflow.policy;
+
+import eu.teraflow.policy.model.NumericalOperator;
+import eu.teraflow.policy.model.PolicyRuleCondition;
+import eu.teraflow.policy.monitoring.model.KpiValue;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.inject.Singleton;
+
+@Singleton
+public class PolicyRuleConditionFieldsGetter {
+
+    public List<String> getKpiIds(List<PolicyRuleCondition> policyRuleConditions) {
+        return policyRuleConditions.stream()
+                .map(PolicyRuleCondition::getKpiId)
+                .collect(Collectors.toList());
+    }
+
+    public List<KpiValue> getKpiValues(List<PolicyRuleCondition> policyRuleConditions) {
+        return policyRuleConditions.stream()
+                .map(PolicyRuleCondition::getKpiValue)
+                .collect(Collectors.toList());
+    }
+
+    public List<NumericalOperator> getNumericalOperators(
+            List<PolicyRuleCondition> policyRuleConditions) {
+        return policyRuleConditions.stream()
+                .map(PolicyRuleCondition::getNumericalOperator)
+                .collect(Collectors.toList());
+    }
+}
diff --git a/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionValidator.java b/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionValidator.java
new file mode 100644
index 0000000000000000000000000000000000000000..0ca242dbbb860354219c4c85bb367563672572ef
--- /dev/null
+++ b/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionValidator.java
@@ -0,0 +1,101 @@
+/*
+* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package eu.teraflow.policy;
+
+import eu.teraflow.policy.context.ContextService;
+import eu.teraflow.policy.context.model.Device;
+import eu.teraflow.policy.context.model.Service;
+import eu.teraflow.policy.context.model.ServiceId;
+import io.smallrye.mutiny.Uni;
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import org.jboss.logging.Logger;
+
+@ApplicationScoped
+public class PolicyRuleConditionValidator {
+
+    private static final Logger LOGGER = Logger.getLogger(PolicyRuleConditionValidator.class);
+    private static final String INVALID_MESSAGE = "%s is invalid.";
+    private static final String VALID_MESSAGE = "%s is valid.";
+
+    private final ContextService contextService;
+
+    @Inject
+    public PolicyRuleConditionValidator(ContextService contextService) {
+        this.contextService = contextService;
+    }
+
+    public Uni<Boolean> validateDeviceId(String deviceId) {
+        final var isDeviceIdValid = isDeviceIdValid(deviceId);
+
+        isDeviceIdValid
+                .subscribe()
+                .with(
+                        deviceIdIdBooleanValue -> {
+                            if (Boolean.FALSE.equals(deviceIdIdBooleanValue)) {
+                                LOGGER.errorf(INVALID_MESSAGE, deviceId);
+                            }
+                            LOGGER.infof(VALID_MESSAGE, deviceId);
+                        });
+
+        return isDeviceIdValid;
+    }
+
+    public Uni<Boolean> validateServiceId(ServiceId serviceId) {
+        final var isServiceIdValid = isServiceIdValid(serviceId);
+
+        isServiceIdValid
+                .subscribe()
+                .with(
+                        serviceIdBooleanValue -> {
+                            if (Boolean.FALSE.equals(serviceIdBooleanValue)) {
+                                LOGGER.errorf(INVALID_MESSAGE, serviceId);
+                            }
+                        });
+
+        return isServiceIdValid;
+    }
+
+    private Uni<Boolean> isDeviceIdValid(String deviceId) {
+        return contextService
+                .getDevice(deviceId)
+                .onItem()
+                .transform(device -> checkIfDeviceIdExists(device, deviceId));
+    }
+
+    private boolean checkIfDeviceIdExists(Device device, String deviceId) {
+        final var deviceDeviceId = device.getDeviceId();
+
+        return deviceDeviceId.equals(deviceId);
+    }
+
+    private Uni<Boolean> isServiceIdValid(ServiceId serviceId) {
+        return contextService
+                .getService(serviceId)
+                .onItem()
+                .transform(service -> checkIfServiceIdExists(service, serviceId));
+    }
+
+    private boolean checkIfServiceIdExists(Service service, ServiceId serviceId) {
+        final var serviceServiceIdServiceId = service.getServiceId();
+        final var serviceServiceIdContextId = serviceServiceIdServiceId.getContextId();
+        final var serviceServiceIdId = serviceServiceIdServiceId.getId();
+
+        return serviceServiceIdContextId.equals(serviceId.getContextId())
+                && serviceServiceIdId.equals(serviceId.getId());
+    }
+}
diff --git a/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java b/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java
index 66994625ddb2eb6a52e1d0a99acd52a2cd1cc2f2..7cb3935005c6762ee725fd474a2b03cc373f0194 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java
@@ -17,6 +17,7 @@
 package eu.teraflow.policy;
 
 import eu.teraflow.policy.context.ContextService;
+import eu.teraflow.policy.model.PolicyRuleBasic;
 import eu.teraflow.policy.model.PolicyRuleDevice;
 import eu.teraflow.policy.model.PolicyRuleService;
 import eu.teraflow.policy.model.PolicyRuleState;
@@ -24,6 +25,8 @@ import eu.teraflow.policy.model.RuleState;
 import eu.teraflow.policy.monitoring.MonitoringService;
 import eu.teraflow.policy.service.ServiceService;
 import io.smallrye.mutiny.Uni;
+import java.util.ArrayList;
+import java.util.List;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
 import org.jboss.logging.Logger;
@@ -32,23 +35,88 @@ import org.jboss.logging.Logger;
 public class PolicyServiceImpl implements PolicyService {
 
     private static final Logger LOGGER = Logger.getLogger(PolicyServiceImpl.class);
+    private static final String INVALID_MESSAGE = "%s is invalid.";
+    private static final String VALID_MESSAGE = "%s is valid.";
+    private static final PolicyRuleState INSERTED_POLICYRULE_STATE =
+            new PolicyRuleState(RuleState.POLICY_INSERTED);
+    private static final PolicyRuleState VALIDATED_POLICYRULE_STATE =
+            new PolicyRuleState(RuleState.POLICY_VALIDATED);
+    private static final PolicyRuleState FAILED_POLICYRULE_STATE =
+            new PolicyRuleState(RuleState.POLICY_FAILED);
 
     private final ContextService contextService;
     private final MonitoringService monitoringService;
     private final ServiceService serviceService;
+    private final PolicyRuleConditionValidator policyRuleConditionValidator;
+    private final PolicyRuleConditionFieldsGetter policyRuleConditionFieldsGetter;
 
     @Inject
     public PolicyServiceImpl(
             ContextService contextService,
             MonitoringService monitoringService,
-            ServiceService serviceService) {
+            ServiceService serviceService,
+            PolicyRuleConditionValidator policyRuleConditionValidator,
+            PolicyRuleConditionFieldsGetter policyRuleConditionFieldsGetter) {
         this.contextService = contextService;
         this.monitoringService = monitoringService;
         this.serviceService = serviceService;
+        this.policyRuleConditionValidator = policyRuleConditionValidator;
+        this.policyRuleConditionFieldsGetter = policyRuleConditionFieldsGetter;
     }
 
     @Override
     public Uni<PolicyRuleState> addPolicyService(PolicyRuleService policyRuleService) {
+        LOGGER.infof("Received %s", policyRuleService);
+
+        final var serviceId = policyRuleService.getServiceId();
+        final var deviceIds = policyRuleService.getDeviceIds();
+        final var policyRuleBasic = policyRuleService.getPolicyRuleBasic();
+
+        final var policyRuleConditions = policyRuleBasic.getPolicyRuleConditions();
+        final var kpiIds = policyRuleConditionFieldsGetter.getKpiIds(policyRuleConditions);
+        final var kpiValues = policyRuleConditionFieldsGetter.getKpiValues(policyRuleConditions);
+        final var numericalOperators =
+                policyRuleConditionFieldsGetter.getNumericalOperators(policyRuleConditions);
+
+        final var isServiceIdValid = policyRuleConditionValidator.validateServiceId(serviceId);
+
+        logAndSetPolicyRuleState(INSERTED_POLICYRULE_STATE, policyRuleBasic);
+        contextService.setPolicyRule(policyRuleBasic);
+
+        // VALIDATION PHASE
+        isServiceIdValid
+                .subscribe()
+                .with(
+                        serviceIdBooleanValue -> {
+                            if (Boolean.FALSE.equals(serviceIdBooleanValue)) {
+                                LOGGER.errorf(INVALID_MESSAGE, serviceId);
+                                final var invalidDeviceIds = returnInvalidDeviceIds(deviceIds);
+
+                                if (invalidDeviceIds.isEmpty()) {
+                                    LOGGER.info("All Device Ids are valid.");
+                                }
+
+                                logAndSetPolicyRuleState(FAILED_POLICYRULE_STATE, policyRuleBasic);
+                            } else {
+                                LOGGER.infof(VALID_MESSAGE, serviceId);
+
+                                final var invalidDeviceIds = returnInvalidDeviceIds(deviceIds);
+
+                                if (!invalidDeviceIds.isEmpty()) {
+                                    logAndSetPolicyRuleState(FAILED_POLICYRULE_STATE, policyRuleBasic);
+                                    contextService.setPolicyRule(policyRuleBasic);
+                                } else {
+                                    LOGGER.infof("All deviceIds are valid");
+                                }
+
+                                logAndSetPolicyRuleState(VALIDATED_POLICYRULE_STATE, policyRuleBasic);
+                            }
+
+                            contextService.setPolicyRule(policyRuleBasic);
+                        });
+
+        // PROVISION PHASE
+
         final var policyRuleState = new PolicyRuleState(RuleState.POLICY_VALIDATED);
 
         return Uni.createFrom().item(policyRuleState);
@@ -56,8 +124,80 @@ public class PolicyServiceImpl implements PolicyService {
 
     @Override
     public Uni<PolicyRuleState> addPolicyDevice(PolicyRuleDevice policyRuleDevice) {
+        LOGGER.infof("Received %s", policyRuleDevice);
+
+        final var policyRuleBasic = policyRuleDevice.getPolicyRuleBasic();
+        final var deviceIds = policyRuleDevice.getDeviceIds();
+
+        final var policyRuleConditions = policyRuleBasic.getPolicyRuleConditions();
+        final var kpiIds = policyRuleConditionFieldsGetter.getKpiIds(policyRuleConditions);
+        final var kpiValues = policyRuleConditionFieldsGetter.getKpiValues(policyRuleConditions);
+        final var numericalOperators =
+                policyRuleConditionFieldsGetter.getNumericalOperators(policyRuleConditions);
+
+        logAndSetPolicyRuleState(INSERTED_POLICYRULE_STATE, policyRuleBasic);
+        contextService.setPolicyRule(policyRuleBasic);
+
+        // VALIDATION PHASE
+        final var invalidDeviceIds = returnInvalidDeviceIds(deviceIds);
+
+        if (!invalidDeviceIds.isEmpty()) {
+            logAndSetPolicyRuleState(FAILED_POLICYRULE_STATE, policyRuleBasic);
+        } else {
+            LOGGER.infof("All deviceIds are valid");
+            logAndSetPolicyRuleState(VALIDATED_POLICYRULE_STATE, policyRuleBasic);
+        }
+        contextService.setPolicyRule(policyRuleBasic);
+
+        // PROVISION PHASE
+
         final var policyRuleState = new PolicyRuleState(RuleState.POLICY_VALIDATED);
 
         return Uni.createFrom().item(policyRuleState);
     }
+
+    private List<String> returnInvalidDeviceIds(List<String> deviceIds) {
+        var invalidDeviceIds = new ArrayList<String>();
+
+        if (!deviceIds.isEmpty()) {
+
+            for (String deviceId : deviceIds) {
+                final var validatedDeviceId = policyRuleConditionValidator.validateDeviceId(deviceId);
+
+                validatedDeviceId
+                        .subscribe()
+                        .with(
+                                deviceIdBoolean -> {
+                                    if (Boolean.FALSE.equals(deviceIdBoolean)) {
+                                        invalidDeviceIds.add(deviceId);
+                                    }
+                                });
+            }
+
+        } else {
+            LOGGER.warnf("No deviceIds found");
+        }
+
+        return invalidDeviceIds;
+    }
+
+    private void logAndSetPolicyRuleState(
+            PolicyRuleState policyRuleState, PolicyRuleBasic policyRuleBasic) {
+        final var POLICY_RULE_STATE_MESSAGE = "Setting Policy Rule state to [%s]";
+
+        if (policyRuleState.getRuleState() == RuleState.POLICY_INSERTED) {
+            LOGGER.infof(POLICY_RULE_STATE_MESSAGE, RuleState.POLICY_INSERTED.toString());
+            policyRuleBasic.setPolicyRuleState(policyRuleState);
+        }
+
+        if (policyRuleState.getRuleState() == RuleState.POLICY_VALIDATED) {
+            LOGGER.infof(POLICY_RULE_STATE_MESSAGE, RuleState.POLICY_VALIDATED.toString());
+            policyRuleBasic.setPolicyRuleState(policyRuleState);
+        }
+
+        if (policyRuleState.getRuleState() == RuleState.POLICY_FAILED) {
+            LOGGER.errorf(POLICY_RULE_STATE_MESSAGE, RuleState.POLICY_FAILED.toString());
+            policyRuleBasic.setPolicyRuleState(policyRuleState);
+        }
+    }
 }
diff --git a/src/policy/src/main/java/eu/teraflow/policy/Serializer.java b/src/policy/src/main/java/eu/teraflow/policy/Serializer.java
index 35b6e2fd8cebf544d3f4b0f56fffbf4572f1de2b..49882be71c471851460257d5d56db7fcaf193444 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/Serializer.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/Serializer.java
@@ -88,6 +88,7 @@ import eu.teraflow.policy.model.PolicyRuleState;
 import eu.teraflow.policy.model.RuleState;
 import eu.teraflow.policy.monitoring.model.AlarmDescriptor;
 import eu.teraflow.policy.monitoring.model.AlarmResponse;
+import eu.teraflow.policy.monitoring.model.AlarmSubscription;
 import eu.teraflow.policy.monitoring.model.BooleanKpiValue;
 import eu.teraflow.policy.monitoring.model.FloatKpiValue;
 import eu.teraflow.policy.monitoring.model.IntegerKpiValue;
@@ -1472,12 +1473,12 @@ public class Serializer {
     public Monitoring.KpiValue serializeIntegerKpiValue(KpiValue<Integer> kpiValue) {
         final var builder = Monitoring.KpiValue.newBuilder();
 
-        return builder.setIntVal(kpiValue.getValue()).build();
+        return builder.setInt32Val(kpiValue.getValue()).build();
     }
 
     public int deserializeIntegerKpiValue(Monitoring.KpiValue serializedKpiValue) {
 
-        return serializedKpiValue.getIntVal();
+        return serializedKpiValue.getInt32Val();
     }
 
     public Monitoring.KpiValue serialize(KpiValue<?> kpiValue) {
@@ -1485,7 +1486,7 @@ public class Serializer {
 
         if (kpiValue.getValue() instanceof Integer) {
             final var serializedIntegerKpiValue = serializeIntegerKpiValue((KpiValue<Integer>) kpiValue);
-            builder.setIntVal(serializedIntegerKpiValue.getIntVal());
+            builder.setInt32Val(serializedIntegerKpiValue.getInt32Val());
         }
         if (kpiValue.getValue() instanceof Float) {
             final var serializedFloatKpiValue = serializeFloatKpiValue((KpiValue<Float>) kpiValue);
@@ -1508,7 +1509,7 @@ public class Serializer {
         final var typeOfKpiValue = serializedKpiValue.getValueCase();
 
         switch (typeOfKpiValue) {
-            case INTVAL:
+            case INT32VAL:
                 final var intValue = deserializeIntegerKpiValue(serializedKpiValue);
                 return new IntegerKpiValue(intValue);
             case BOOLVAL:
@@ -1569,37 +1570,47 @@ public class Serializer {
     public Monitoring.AlarmDescriptor serialize(AlarmDescriptor alarmDescriptor) {
         final var builder = Monitoring.AlarmDescriptor.newBuilder();
 
+        final var alarmId = alarmDescriptor.getAlarmId();
         final var alarmDescription = alarmDescriptor.getAlarmDescription();
         final var name = alarmDescriptor.getName();
-        final var kpiId = alarmDescriptor.getKpiId();
-        final var kpiValueRange = alarmDescriptor.getKpiValueRange();
+        final var kpiIds = alarmDescriptor.getKpiIds();
+        final var kpiValueRanges = alarmDescriptor.getKpiValueRanges();
         final var timestamp = alarmDescriptor.getTimestamp();
 
-        final var serializedKpiIdUuid = serializeUuid(kpiId);
-        final var serializedKpiId = KpiId.newBuilder().setKpiId(serializedKpiIdUuid).build();
-        final var serializedKpiValueRange = serialize(kpiValueRange);
+        final var serializedAlarmId = serializeAlarmId(alarmId);
+        final var serializedKpiIds =
+                kpiIds.stream().map(this::serializeKpiId).collect(Collectors.toList());
+        final var serializedKpiValueRanges =
+                kpiValueRanges.stream().map(this::serialize).collect(Collectors.toList());
+        final var serializedTimestamp = serialize(timestamp);
 
+        builder.setAlarmId(serializedAlarmId);
         builder.setAlarmDescription(alarmDescription);
         builder.setName(name);
-        builder.setKpiId(serializedKpiId);
-        builder.setKpiValueRange(serializedKpiValueRange);
-        builder.setTimestamp(timestamp);
+        builder.addAllKpiId(serializedKpiIds);
+        builder.addAllKpiValueRange(serializedKpiValueRanges);
+        builder.setTimestamp(serializedTimestamp);
 
         return builder.build();
     }
 
     public AlarmDescriptor deserialize(Monitoring.AlarmDescriptor serializedAlarmDescriptor) {
 
+        final var serializedAlarmId = serializedAlarmDescriptor.getAlarmId();
         final var alarmDescription = serializedAlarmDescriptor.getAlarmDescription();
         final var name = serializedAlarmDescriptor.getName();
-        final var serializedKpiId = serializedAlarmDescriptor.getKpiId();
-        final var serializedKpiValueRange = serializedAlarmDescriptor.getKpiValueRange();
-        final var timestamp = serializedAlarmDescriptor.getTimestamp();
+        final var serializedKpiIds = serializedAlarmDescriptor.getKpiIdList();
+        final var serializedKpiValueRanges = serializedAlarmDescriptor.getKpiValueRangeList();
+        final var serializeTimestamp = serializedAlarmDescriptor.getTimestamp();
 
-        final var kpiId = deserialize(serializedKpiId);
-        final var kpiValueRange = deserialize(serializedKpiValueRange);
+        final var alarmId = deserialize(serializedAlarmId);
+        final var kpiIds =
+                serializedKpiIds.stream().map(this::deserialize).collect(Collectors.toList());
+        final var kpiValueRanges =
+                serializedKpiValueRanges.stream().map(this::deserialize).collect(Collectors.toList());
+        final var timestamp = deserialize(serializeTimestamp);
 
-        return new AlarmDescriptor(alarmDescription, name, kpiId, kpiValueRange, timestamp);
+        return new AlarmDescriptor(alarmId, alarmDescription, name, kpiIds, kpiValueRanges, timestamp);
     }
 
     public Monitoring.AlarmResponse serialize(AlarmResponse alarmResponse) {
@@ -1635,34 +1646,44 @@ public class Serializer {
     public Monitoring.SubsDescriptor serialize(SubsDescriptor subDescriptor) {
         final var builder = Monitoring.SubsDescriptor.newBuilder();
 
+        final var subscriptionId = subDescriptor.getSubscriptionId();
         final var kpiId = subDescriptor.getKpiId();
         final var samplingDurationS = subDescriptor.getSamplingDurationS();
         final var samplingIntervalS = subDescriptor.getSamplingIntervalS();
-        final var startDate = subDescriptor.getStartDate();
-        final var endDate = subDescriptor.getEndDate();
+        final var startTimestamp = subDescriptor.getStartTimestamp();
+        final var endTimestamp = subDescriptor.getEndTimestamp();
 
+        final var serializedSubscriptionIdUuid = serializeSubscriptionIdId(subscriptionId);
         final var serializedKpiIdUuid = serializeUuid(kpiId);
         final var serializedKpiId = Monitoring.KpiId.newBuilder().setKpiId(serializedKpiIdUuid).build();
+        final var serializedStartTimestamp = serialize(startTimestamp);
+        final var serializedEndTimestamp = serialize(endTimestamp);
 
+        builder.setSubsId(serializedSubscriptionIdUuid);
         builder.setKpiId(serializedKpiId);
         builder.setSamplingDurationS(samplingDurationS);
         builder.setSamplingIntervalS(samplingIntervalS);
-        builder.setStartDate(startDate);
-        builder.setEndDate(endDate);
+        builder.setStartTimestamp(serializedStartTimestamp);
+        builder.setEndTimestamp(serializedEndTimestamp);
 
         return builder.build();
     }
 
     public SubsDescriptor deserialize(Monitoring.SubsDescriptor serializedSubDescriptor) {
+        final var serializedSubscriptionId = serializedSubDescriptor.getSubsId();
         final var serializedKpiId = serializedSubDescriptor.getKpiId();
         final var samplingDurationS = serializedSubDescriptor.getSamplingDurationS();
         final var samplingIntervalS = serializedSubDescriptor.getSamplingIntervalS();
-        final var startDate = serializedSubDescriptor.getStartDate();
-        final var endDate = serializedSubDescriptor.getEndDate();
+        final var serializedStartTimestamp = serializedSubDescriptor.getStartTimestamp();
+        final var serializedEndTimestamp = serializedSubDescriptor.getEndTimestamp();
 
+        final var subscriptionId = deserialize(serializedSubscriptionId);
         final var kpiId = deserialize(serializedKpiId);
+        final var startTimestamp = deserialize(serializedStartTimestamp);
+        final var endTimestamp = deserialize(serializedEndTimestamp);
 
-        return new SubsDescriptor(kpiId, samplingDurationS, samplingIntervalS, startDate, endDate);
+        return new SubsDescriptor(
+                subscriptionId, kpiId, samplingDurationS, samplingIntervalS, startTimestamp, endTimestamp);
     }
 
     public SubscriptionID serializeSubscriptionIdId(String subscriptionId) {
@@ -1930,10 +1951,11 @@ public class Serializer {
         final var kpiValue = kpi.getKpiValue();
 
         final var serializedKpiId = serializeKpiId(kpiId);
+        final var serializedTimestamp = serialize(timestamp);
         final var serializedKpiValue = serialize(kpiValue);
 
         builder.setKpiId(serializedKpiId);
-        builder.setTimestamp(timestamp);
+        builder.setTimestamp(serializedTimestamp);
         builder.setKpiValue(serializedKpiValue);
 
         return builder.build();
@@ -1942,10 +1964,11 @@ public class Serializer {
     public Kpi deserialize(Monitoring.Kpi serializedKpi) {
 
         final var serializedKpiId = serializedKpi.getKpiId();
-        final var timestamp = serializedKpi.getTimestamp();
+        final var serializedTimestamp = serializedKpi.getTimestamp();
         final var serializedKpiValue = serializedKpi.getKpiValue();
 
         final var kpiId = deserialize(serializedKpiId);
+        final var timestamp = deserialize(serializedTimestamp);
         final var kpiValue = deserialize(serializedKpiValue);
 
         return new Kpi(kpiId, timestamp, kpiValue);
@@ -2149,6 +2172,33 @@ public class Serializer {
         return new EndPoint.EndPointBuilder(endPointId, endPointType, kpiSampleTypes).build();
     }
 
+    public Monitoring.AlarmSubscription serialize(AlarmSubscription alarmSubscription) {
+        final var builder = Monitoring.AlarmSubscription.newBuilder();
+
+        final var alarmId = alarmSubscription.getAlarmId();
+        final var subscriptionTimeoutS = alarmSubscription.getSubscriptionTimeoutS();
+        final var subscriptionFrequencyMs = alarmSubscription.getSubscriptionFrequencyMs();
+
+        final var serializedAlarmId = serializeAlarmId(alarmId);
+
+        builder.setAlarmID(serializedAlarmId);
+        builder.setSubscriptionTimeoutS(subscriptionTimeoutS);
+        builder.setSubscriptionFrequencyMs(subscriptionFrequencyMs);
+
+        return builder.build();
+    }
+
+    public AlarmSubscription deserialize(Monitoring.AlarmSubscription serializedAlarmSubscription) {
+
+        final var serializedAlarmId = serializedAlarmSubscription.getAlarmID();
+        final var subscriptionTimeoutS = serializedAlarmSubscription.getSubscriptionTimeoutS();
+        final var subscriptionFrequencyMs = serializedAlarmSubscription.getSubscriptionFrequencyMs();
+
+        final var alarmId = deserialize(serializedAlarmId);
+
+        return new AlarmSubscription(alarmId, subscriptionTimeoutS, subscriptionFrequencyMs);
+    }
+
     public ContextOuterClass.Device serialize(Device device) {
         final var builder = ContextOuterClass.Device.newBuilder();
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleBasic.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleBasic.java
index b32d3cf3008611ea67aee53f5234f1e45b98be8c..6f50dfca8cb43a3d825137e31a83c63855b5aebd 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleBasic.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleBasic.java
@@ -25,7 +25,7 @@ import java.util.List;
 public class PolicyRuleBasic {
 
     private final String policyRuleId;
-    private final PolicyRuleState policyRuleState;
+    private PolicyRuleState policyRuleState;
     private final int priority;
     private final List<PolicyRuleCondition> policyRuleConditions;
     private final BooleanOperator booleanOperator;
@@ -64,6 +64,10 @@ public class PolicyRuleBasic {
         return policyRuleState;
     }
 
+    public void setPolicyRuleState(PolicyRuleState state) {
+        this.policyRuleState = state;
+    }
+
     public int getPriority() {
         return priority;
     }
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGateway.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGateway.java
index 4b9849a7649894cb4109fb458dac611e834bd916..925c22aa62588de6d9a364a647f65e74f6b01740 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGateway.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGateway.java
@@ -16,9 +16,9 @@
 
 package eu.teraflow.policy.monitoring;
 
-import eu.teraflow.policy.context.model.Empty;
 import eu.teraflow.policy.monitoring.model.AlarmDescriptor;
 import eu.teraflow.policy.monitoring.model.AlarmResponse;
+import eu.teraflow.policy.monitoring.model.AlarmSubscription;
 import eu.teraflow.policy.monitoring.model.Kpi;
 import eu.teraflow.policy.monitoring.model.KpiDescriptor;
 import eu.teraflow.policy.monitoring.model.SubsDescriptor;
@@ -28,21 +28,17 @@ import java.util.List;
 
 public interface MonitoringGateway {
 
-    Uni<String> createKpi(KpiDescriptor kpiDescriptor);
+    Uni<String> setKpi(KpiDescriptor kpiDescriptor);
 
     Uni<KpiDescriptor> getKpiDescriptor(String kpiId);
 
-    Multi<List<Kpi>> subscribeKpi(SubsDescriptor subsDescriptor);
+    Multi<List<Kpi>> setKpiSubscription(SubsDescriptor subsDescriptor);
 
     Uni<SubsDescriptor> getSubsDescriptor(String subscriptionId);
 
-    Uni<Empty> editKpiSubscription(SubsDescriptor subsDescriptor);
-
-    Uni<String> createKpiAlarm(AlarmDescriptor alarmDescriptor);
-
-    Uni<Empty> editKpiAlarm(AlarmDescriptor alarmDescriptor);
+    Uni<String> setKpiAlarm(AlarmDescriptor alarmDescriptor);
 
     Uni<AlarmDescriptor> getAlarmDescriptor(String alarmId);
 
-    Multi<AlarmResponse> getAlarmResponseStream(String alarmId);
+    Multi<AlarmResponse> getAlarmResponseStream(AlarmSubscription alarmSubscription);
 }
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGatewayImpl.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGatewayImpl.java
index e0b4e088a9e23387f56d956bed5f6e104a68ea56..e500b78c508f8e5b22d78c98f7960ff8ca9e7c13 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGatewayImpl.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGatewayImpl.java
@@ -17,9 +17,9 @@
 package eu.teraflow.policy.monitoring;
 
 import eu.teraflow.policy.Serializer;
-import eu.teraflow.policy.context.model.Empty;
 import eu.teraflow.policy.monitoring.model.AlarmDescriptor;
 import eu.teraflow.policy.monitoring.model.AlarmResponse;
+import eu.teraflow.policy.monitoring.model.AlarmSubscription;
 import eu.teraflow.policy.monitoring.model.Kpi;
 import eu.teraflow.policy.monitoring.model.KpiDescriptor;
 import eu.teraflow.policy.monitoring.model.SubsDescriptor;
@@ -45,11 +45,11 @@ public class MonitoringGatewayImpl implements MonitoringGateway {
     }
 
     @Override
-    public Uni<String> createKpi(KpiDescriptor kpiDescriptor) {
+    public Uni<String> setKpi(KpiDescriptor kpiDescriptor) {
         final var serializedKpiDescriptor = serializer.serialize(kpiDescriptor);
 
         return streamingDelegateMonitoring
-                .createKpi(serializedKpiDescriptor)
+                .setKpi(serializedKpiDescriptor)
                 .onItem()
                 .transform(serializer::deserialize);
     }
@@ -65,11 +65,11 @@ public class MonitoringGatewayImpl implements MonitoringGateway {
     }
 
     @Override
-    public Multi<List<Kpi>> subscribeKpi(SubsDescriptor subsDescriptor) {
+    public Multi<List<Kpi>> setKpiSubscription(SubsDescriptor subsDescriptor) {
         final var serializedSubsDescriptor = serializer.serialize(subsDescriptor);
 
         return streamingDelegateMonitoring
-                .subscribeKpi(serializedSubsDescriptor)
+                .setKpiSubscription(serializedSubsDescriptor)
                 .onItem()
                 .transform(kpiList -> serializer.deserialize(kpiList.getKpiListList()));
     }
@@ -85,35 +85,15 @@ public class MonitoringGatewayImpl implements MonitoringGateway {
     }
 
     @Override
-    public Uni<Empty> editKpiSubscription(SubsDescriptor subsDescriptor) {
-        final var serializedSubsDescriptor = serializer.serialize(subsDescriptor);
-
-        return streamingDelegateMonitoring
-                .editKpiSubscription(serializedSubsDescriptor)
-                .onItem()
-                .transform(serializer::deserializeEmpty);
-    }
-
-    @Override
-    public Uni<String> createKpiAlarm(AlarmDescriptor alarmDescriptor) {
+    public Uni<String> setKpiAlarm(AlarmDescriptor alarmDescriptor) {
         final var serializedAlarmDescriptor = serializer.serialize(alarmDescriptor);
 
         return streamingDelegateMonitoring
-                .createKpiAlarm(serializedAlarmDescriptor)
+                .setKpiAlarm(serializedAlarmDescriptor)
                 .onItem()
                 .transform(serializer::deserialize);
     }
 
-    @Override
-    public Uni<Empty> editKpiAlarm(AlarmDescriptor alarmDescriptor) {
-        final var serializedAlarmDescriptor = serializer.serialize(alarmDescriptor);
-
-        return streamingDelegateMonitoring
-                .editKpiAlarm(serializedAlarmDescriptor)
-                .onItem()
-                .transform(serializer::deserializeEmpty);
-    }
-
     @Override
     public Uni<AlarmDescriptor> getAlarmDescriptor(String alarmId) {
         final var serializedAlarmId = serializer.serializeAlarmId(alarmId);
@@ -125,11 +105,11 @@ public class MonitoringGatewayImpl implements MonitoringGateway {
     }
 
     @Override
-    public Multi<AlarmResponse> getAlarmResponseStream(String alarmId) {
-        final var serializedAlarmId = serializer.serializeAlarmId(alarmId);
+    public Multi<AlarmResponse> getAlarmResponseStream(AlarmSubscription alarmSubscription) {
+        final var serializedAlarmSubscription = serializer.serialize(alarmSubscription);
 
         return streamingDelegateMonitoring
-                .getAlarmResponseStream(serializedAlarmId)
+                .getAlarmResponseStream(serializedAlarmSubscription)
                 .onItem()
                 .transform(serializer::deserialize);
     }
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringService.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringService.java
index 276a9d3632655cf684ae4dff0469d477ff15a88e..5022833ceed4896b1458a077125b4f822127cb6c 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringService.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringService.java
@@ -16,9 +16,9 @@
 
 package eu.teraflow.policy.monitoring;
 
-import eu.teraflow.policy.context.model.Empty;
 import eu.teraflow.policy.monitoring.model.AlarmDescriptor;
 import eu.teraflow.policy.monitoring.model.AlarmResponse;
+import eu.teraflow.policy.monitoring.model.AlarmSubscription;
 import eu.teraflow.policy.monitoring.model.Kpi;
 import eu.teraflow.policy.monitoring.model.KpiDescriptor;
 import eu.teraflow.policy.monitoring.model.SubsDescriptor;
@@ -28,21 +28,17 @@ import java.util.List;
 
 public interface MonitoringService {
 
-    Uni<String> createKpi(KpiDescriptor kpiDescriptor);
+    Uni<String> setKpi(KpiDescriptor kpiDescriptor);
 
     Uni<KpiDescriptor> getKpiDescriptor(String kpiId);
 
-    Multi<List<Kpi>> subscribeKpi(SubsDescriptor subsDescriptor);
+    Multi<List<Kpi>> setKpiSubscription(SubsDescriptor subsDescriptor);
 
     Uni<SubsDescriptor> getSubsDescriptor(String subscriptionId);
 
-    Uni<Empty> editKpiSubscription(SubsDescriptor subsDescriptor);
-
-    Uni<String> createKpiAlarm(AlarmDescriptor alarmDescriptor);
-
-    Uni<Empty> editKpiAlarm(AlarmDescriptor alarmDescriptor);
+    Uni<String> setKpiAlarm(AlarmDescriptor alarmDescriptor);
 
     Uni<AlarmDescriptor> getAlarmDescriptor(String alarmId);
 
-    Multi<AlarmResponse> getAlarmResponseStream(String alarmId);
+    Multi<AlarmResponse> getAlarmResponseStream(AlarmSubscription alarmSubscription);
 }
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringServiceImpl.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringServiceImpl.java
index e1e79af757b9866360040b785fd41dd1f0c70cd4..5cec6e989749ade8083f01be341d0a0fd0982c98 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringServiceImpl.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringServiceImpl.java
@@ -16,9 +16,9 @@
 
 package eu.teraflow.policy.monitoring;
 
-import eu.teraflow.policy.context.model.Empty;
 import eu.teraflow.policy.monitoring.model.AlarmDescriptor;
 import eu.teraflow.policy.monitoring.model.AlarmResponse;
+import eu.teraflow.policy.monitoring.model.AlarmSubscription;
 import eu.teraflow.policy.monitoring.model.Kpi;
 import eu.teraflow.policy.monitoring.model.KpiDescriptor;
 import eu.teraflow.policy.monitoring.model.SubsDescriptor;
@@ -39,8 +39,8 @@ public class MonitoringServiceImpl implements MonitoringService {
     }
 
     @Override
-    public Uni<String> createKpi(KpiDescriptor kpiDescriptor) {
-        return monitoringGateway.createKpi(kpiDescriptor);
+    public Uni<String> setKpi(KpiDescriptor kpiDescriptor) {
+        return monitoringGateway.setKpi(kpiDescriptor);
     }
 
     @Override
@@ -49,8 +49,8 @@ public class MonitoringServiceImpl implements MonitoringService {
     }
 
     @Override
-    public Multi<List<Kpi>> subscribeKpi(SubsDescriptor subsDescriptor) {
-        return monitoringGateway.subscribeKpi(subsDescriptor);
+    public Multi<List<Kpi>> setKpiSubscription(SubsDescriptor subsDescriptor) {
+        return monitoringGateway.setKpiSubscription(subsDescriptor);
     }
 
     @Override
@@ -59,18 +59,8 @@ public class MonitoringServiceImpl implements MonitoringService {
     }
 
     @Override
-    public Uni<Empty> editKpiSubscription(SubsDescriptor subsDescriptor) {
-        return monitoringGateway.editKpiSubscription(subsDescriptor);
-    }
-
-    @Override
-    public Uni<String> createKpiAlarm(AlarmDescriptor alarmDescriptor) {
-        return monitoringGateway.createKpiAlarm(alarmDescriptor);
-    }
-
-    @Override
-    public Uni<Empty> editKpiAlarm(AlarmDescriptor alarmDescriptor) {
-        return monitoringGateway.editKpiAlarm(alarmDescriptor);
+    public Uni<String> setKpiAlarm(AlarmDescriptor alarmDescriptor) {
+        return monitoringGateway.setKpiAlarm(alarmDescriptor);
     }
 
     @Override
@@ -79,7 +69,7 @@ public class MonitoringServiceImpl implements MonitoringService {
     }
 
     @Override
-    public Multi<AlarmResponse> getAlarmResponseStream(String alarmId) {
-        return monitoringGateway.getAlarmResponseStream(alarmId);
+    public Multi<AlarmResponse> getAlarmResponseStream(AlarmSubscription alarmSubscription) {
+        return monitoringGateway.getAlarmResponseStream(alarmSubscription);
     }
 }
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java
index ac216ee7cec55efbd7f169679b4e0eebad0f3950..85f0ce9e725845c86edf5bf265524db456076505 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java
@@ -16,26 +16,36 @@
 
 package eu.teraflow.policy.monitoring.model;
 
+import eu.teraflow.policy.common.Util;
+import java.util.List;
+
 public class AlarmDescriptor {
+    private final String alarmId;
     private final String alarmDescription;
     private final String name;
-    private final String kpiId;
-    private final KpiValueRange kpiValueRange;
-    private final String timestamp;
+    private final List<String> kpiIds;
+    private final List<KpiValueRange> kpiValueRanges;
+    private final double timestamp;
 
     public AlarmDescriptor(
+            String alarmId,
             String alarmDescription,
             String name,
-            String kpiId,
-            KpiValueRange kpiValueRange,
-            String timestamp) {
+            List<String> kpiIds,
+            List<KpiValueRange> kpiValueRanges,
+            double timestamp) {
+        this.alarmId = alarmId;
         this.alarmDescription = alarmDescription;
         this.name = name;
-        this.kpiId = kpiId;
-        this.kpiValueRange = kpiValueRange;
+        this.kpiIds = kpiIds;
+        this.kpiValueRanges = kpiValueRanges;
         this.timestamp = timestamp;
     }
 
+    public String getAlarmId() {
+        return alarmId;
+    }
+
     public String getAlarmDescription() {
         return alarmDescription;
     }
@@ -44,22 +54,28 @@ public class AlarmDescriptor {
         return name;
     }
 
-    public String getKpiId() {
-        return kpiId;
+    public List<String> getKpiIds() {
+        return kpiIds;
     }
 
-    public KpiValueRange getKpiValueRange() {
-        return kpiValueRange;
+    public List<KpiValueRange> getKpiValueRanges() {
+        return kpiValueRanges;
     }
 
-    public String getTimestamp() {
+    public double getTimestamp() {
         return timestamp;
     }
 
     @Override
     public String toString() {
         return String.format(
-                "%s:{alarmDescription:\"%s\", name:\"%s\", kpiId:\"%s\", %s, timestamp:\"%s\"}",
-                getClass().getSimpleName(), alarmDescription, name, kpiId, kpiValueRange, timestamp);
+                "%s:{alarmId:\"%s\", alarmDescription:\"%s\", name:\"%s\", [%s], [%s], timestamp:\"%f\"}",
+                getClass().getSimpleName(),
+                alarmId,
+                alarmDescription,
+                name,
+                Util.toString(kpiIds),
+                Util.toString(kpiValueRanges),
+                timestamp);
     }
 }
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmSubscription.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmSubscription.java
new file mode 100644
index 0000000000000000000000000000000000000000..166d791cc4628d64588e17b33da1baca48ef4810
--- /dev/null
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmSubscription.java
@@ -0,0 +1,50 @@
+/*
+* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package eu.teraflow.policy.monitoring.model;
+
+public class AlarmSubscription {
+
+    private final String alarmId;
+    private final float subscriptionTimeoutS;
+    private final float subscriptionFrequencyMs;
+
+    public AlarmSubscription(
+            String alarmId, float subscriptionTimeoutS, float subscriptionFrequencyMs) {
+        this.alarmId = alarmId;
+        this.subscriptionTimeoutS = subscriptionTimeoutS;
+        this.subscriptionFrequencyMs = subscriptionFrequencyMs;
+    }
+
+    public String getAlarmId() {
+        return alarmId;
+    }
+
+    public float getSubscriptionTimeoutS() {
+        return subscriptionTimeoutS;
+    }
+
+    public float getSubscriptionFrequencyMs() {
+        return subscriptionFrequencyMs;
+    }
+
+    @Override
+    public String toString() {
+        return String.format(
+                "%s:{alarmId:\"%s\", subscriptionTimeoutS:\"%f\", subscriptionFrequencyMs:\"%f\"}",
+                getClass().getSimpleName(), alarmId, subscriptionTimeoutS, subscriptionFrequencyMs);
+    }
+}
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java
index c042240298fdea49ca1509ac2563e849b16575c5..98b8c510d487ee2f873d84facac390cdcab4391f 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java
@@ -19,10 +19,10 @@ package eu.teraflow.policy.monitoring.model;
 public class Kpi {
 
     private final String kpiId;
-    private final String timestamp;
+    private final double timestamp;
     private final KpiValue<?> kpiValue;
 
-    public Kpi(String kpiId, String timestamp, KpiValue<?> kpiValue) {
+    public Kpi(String kpiId, double timestamp, KpiValue<?> kpiValue) {
         this.kpiId = kpiId;
         this.timestamp = timestamp;
         this.kpiValue = kpiValue;
@@ -32,7 +32,7 @@ public class Kpi {
         return kpiId;
     }
 
-    public String getTimestamp() {
+    public double getTimestamp() {
         return timestamp;
     }
 
@@ -43,7 +43,7 @@ public class Kpi {
     @Override
     public String toString() {
         return String.format(
-                "%s:{kpiId:\"%s\", timeStamp:\"%s\", %s}",
+                "%s:{kpiId:\"%s\", timeStamp:\"%f\", %s}",
                 getClass().getSimpleName(), kpiId, timestamp, kpiValue);
     }
 }
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java
index ced38b3f9f76239ee83687f14587da168dc7c320..101d784c3ba796bbaf2be9820263e595630f2578 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java
@@ -17,23 +17,30 @@
 package eu.teraflow.policy.monitoring.model;
 
 public class SubsDescriptor {
+    private final String subscriptionId;
     private final String kpiId;
     private final float samplingDurationS;
     private final float samplingIntervalS;
-    private final String startDate;
-    private final String endDate;
+    private final double startTimestamp;
+    private final double endTimestamp;
 
     public SubsDescriptor(
+            String subscriptionId,
             String kpiId,
             float samplingDurationS,
             float samplingIntervalS,
-            String startDate,
-            String endDate) {
+            double startTimestamp,
+            double endTimestamp) {
+        this.subscriptionId = subscriptionId;
         this.kpiId = kpiId;
         this.samplingDurationS = samplingDurationS;
         this.samplingIntervalS = samplingIntervalS;
-        this.startDate = startDate;
-        this.endDate = endDate;
+        this.startTimestamp = startTimestamp;
+        this.endTimestamp = endTimestamp;
+    }
+
+    public String getSubscriptionId() {
+        return subscriptionId;
     }
 
     public String getKpiId() {
@@ -48,23 +55,24 @@ public class SubsDescriptor {
         return samplingIntervalS;
     }
 
-    public String getStartDate() {
-        return startDate;
+    public double getStartTimestamp() {
+        return startTimestamp;
     }
 
-    public String getEndDate() {
-        return endDate;
+    public double getEndTimestamp() {
+        return endTimestamp;
     }
 
     @Override
     public String toString() {
         return String.format(
-                "%s:{kpiId:\"%s\", samplingDurationS:\"%f\", samplingIntervalS:\"%f\", startDate:\"%s\", endDate:\"%s\"}",
+                "%s:{subscriptionId:\"%s\", kpiId:\"%s\", samplingDurationS:\"%f\", samplingIntervalS:\"%f\", startTimestamp:\"%f\", endTimestamp:\"%f\"}",
                 getClass().getSimpleName(),
+                subscriptionId,
                 kpiId,
                 samplingDurationS,
                 samplingIntervalS,
-                startDate,
-                endDate);
+                startTimestamp,
+                endTimestamp);
     }
 }
diff --git a/src/policy/src/test/java/eu/teraflow/policy/SerializerTest.java b/src/policy/src/test/java/eu/teraflow/policy/SerializerTest.java
index 05f835d58f6552f3bd21f467b02026c9c509a67c..fa04952179478587dae40b4a4a39a67fdb2a29e1 100644
--- a/src/policy/src/test/java/eu/teraflow/policy/SerializerTest.java
+++ b/src/policy/src/test/java/eu/teraflow/policy/SerializerTest.java
@@ -2432,7 +2432,7 @@ class SerializerTest {
                 Arguments.of(
                         new BooleanKpiValue(true), Monitoring.KpiValue.newBuilder().setBoolVal(true).build()),
                 Arguments.of(
-                        new IntegerKpiValue(44), Monitoring.KpiValue.newBuilder().setIntVal(44).build()),
+                        new IntegerKpiValue(44), Monitoring.KpiValue.newBuilder().setInt32Val(44).build()),
                 Arguments.of(
                         new FloatKpiValue(12.3f), Monitoring.KpiValue.newBuilder().setFloatVal(12.3f).build()));
     }
@@ -2507,32 +2507,32 @@ class SerializerTest {
                 Arguments.of(
                         new KpiValueRange(new IntegerKpiValue(32), new IntegerKpiValue(42)),
                         Monitoring.KpiValueRange.newBuilder()
-                                .setKpiMinValue(Monitoring.KpiValue.newBuilder().setIntVal(32).build())
-                                .setKpiMaxValue(Monitoring.KpiValue.newBuilder().setIntVal(42).build())
+                                .setKpiMinValue(Monitoring.KpiValue.newBuilder().setInt32Val(32).build())
+                                .setKpiMaxValue(Monitoring.KpiValue.newBuilder().setInt32Val(42).build())
                                 .build()),
                 Arguments.of(
                         new KpiValueRange(new IntegerKpiValue(32), new FloatKpiValue(42.2f)),
                         Monitoring.KpiValueRange.newBuilder()
-                                .setKpiMinValue(Monitoring.KpiValue.newBuilder().setIntVal(32).build())
+                                .setKpiMinValue(Monitoring.KpiValue.newBuilder().setInt32Val(32).build())
                                 .setKpiMaxValue(Monitoring.KpiValue.newBuilder().setFloatVal(42.2f).build())
                                 .build()),
                 Arguments.of(
                         new KpiValueRange(new IntegerKpiValue(32), new BooleanKpiValue(true)),
                         Monitoring.KpiValueRange.newBuilder()
-                                .setKpiMinValue(Monitoring.KpiValue.newBuilder().setIntVal(32).build())
+                                .setKpiMinValue(Monitoring.KpiValue.newBuilder().setInt32Val(32).build())
                                 .setKpiMaxValue(Monitoring.KpiValue.newBuilder().setBoolVal(true).build())
                                 .build()),
                 Arguments.of(
                         new KpiValueRange(new IntegerKpiValue(32), new StringKpiValue("string")),
                         Monitoring.KpiValueRange.newBuilder()
-                                .setKpiMinValue(Monitoring.KpiValue.newBuilder().setIntVal(32).build())
+                                .setKpiMinValue(Monitoring.KpiValue.newBuilder().setInt32Val(32).build())
                                 .setKpiMaxValue(Monitoring.KpiValue.newBuilder().setStringVal("string").build())
                                 .build()),
                 Arguments.of(
                         new KpiValueRange(new FloatKpiValue(56.2f), new IntegerKpiValue(42)),
                         Monitoring.KpiValueRange.newBuilder()
                                 .setKpiMinValue(Monitoring.KpiValue.newBuilder().setFloatVal(56.2f).build())
-                                .setKpiMaxValue(Monitoring.KpiValue.newBuilder().setIntVal(42).build())
+                                .setKpiMaxValue(Monitoring.KpiValue.newBuilder().setInt32Val(42).build())
                                 .build()),
                 Arguments.of(
                         new KpiValueRange(new FloatKpiValue(56.2f), new FloatKpiValue(42.2f)),
@@ -2556,7 +2556,7 @@ class SerializerTest {
                         new KpiValueRange(new BooleanKpiValue(true), new IntegerKpiValue(42)),
                         Monitoring.KpiValueRange.newBuilder()
                                 .setKpiMinValue(Monitoring.KpiValue.newBuilder().setBoolVal(true).build())
-                                .setKpiMaxValue(Monitoring.KpiValue.newBuilder().setIntVal(42).build())
+                                .setKpiMaxValue(Monitoring.KpiValue.newBuilder().setInt32Val(42).build())
                                 .build()),
                 Arguments.of(
                         new KpiValueRange(new BooleanKpiValue(false), new FloatKpiValue(42.2f)),
@@ -2580,7 +2580,7 @@ class SerializerTest {
                         new KpiValueRange(new StringKpiValue("string"), new IntegerKpiValue(42)),
                         Monitoring.KpiValueRange.newBuilder()
                                 .setKpiMinValue(Monitoring.KpiValue.newBuilder().setStringVal("string").build())
-                                .setKpiMaxValue(Monitoring.KpiValue.newBuilder().setIntVal(42).build())
+                                .setKpiMaxValue(Monitoring.KpiValue.newBuilder().setInt32Val(42).build())
                                 .build()),
                 Arguments.of(
                         new KpiValueRange(new StringKpiValue("string"), new FloatKpiValue(42.2f)),
@@ -2656,26 +2656,38 @@ class SerializerTest {
 
     @Test
     void shouldSerializeAlarmDescriptor() {
+        final var alarmId = "alarmId";
         final var alarmDescription = "alarmDescription";
         final var name = "name";
         final var kpiId = "kpiId";
-        final var timestamp = "timestamp";
+        final double timestamp = 100.0;
+        final var kpiIds = List.of("kpiId1", "kpiId2");
 
         final var kpiValueRange = new KpiValueRange(new IntegerKpiValue(23), new IntegerKpiValue(1800));
+        final var kpiValueRanges = List.of(kpiValueRange);
+
         final var alarmDescriptor =
-                new AlarmDescriptor(alarmDescription, name, kpiId, kpiValueRange, timestamp);
+                new AlarmDescriptor(alarmId, alarmDescription, name, kpiIds, kpiValueRanges, timestamp);
 
-        final var serializedKpiIdUuid = serializer.serializeUuid(kpiId);
-        final var serializedKpiId = KpiId.newBuilder().setKpiId(serializedKpiIdUuid).build();
+        final var serializedalarmIdUuid = serializer.serializeUuid(alarmId);
+        final var serializedalarmId = AlarmID.newBuilder().setAlarmId(serializedalarmIdUuid).build();
+
+        final var serializedKpiIdUuid = serializer.serializeUuid("kpiId1");
+        final var serializedKpiId1 = KpiId.newBuilder().setKpiId(serializedKpiIdUuid).build();
+        final var serializedKpiId2 = KpiId.newBuilder().setKpiId(serializer.serializeUuid("kpiId2"));
         final var serializedKpiValueRange = serializer.serialize(kpiValueRange);
+        final var serializedTimeStamp =
+                context.ContextOuterClass.Timestamp.newBuilder().setTimestamp(timestamp);
 
         final var expectedAlarmDescriptor =
                 Monitoring.AlarmDescriptor.newBuilder()
+                        .setAlarmId(serializedalarmId)
                         .setAlarmDescription(alarmDescription)
                         .setName(name)
-                        .setKpiId(serializedKpiId)
-                        .setKpiValueRange(serializedKpiValueRange)
-                        .setTimestamp(timestamp)
+                        .addKpiId(serializedKpiId1)
+                        .addKpiId(serializedKpiId2)
+                        .addKpiValueRange(serializedKpiValueRange)
+                        .setTimestamp(serializedTimeStamp)
                         .build();
 
         final var serializedAlarmDescriptor = serializer.serialize(alarmDescriptor);
@@ -2685,26 +2697,39 @@ class SerializerTest {
 
     @Test
     void shouldDeserializeAlarmDescriptor() {
+        final var alarmId = "alarmId";
         final var alarmDescription = "alarmDescription";
         final var name = "name";
         final var kpiId = "kpiId";
-        final var timestamp = "timestamp";
+        final double timestamp = 100.0;
+        final var kpiIds = List.of("kpiId1", "kpiId2");
 
         final var kpiValueRange = new KpiValueRange(new IntegerKpiValue(23), new IntegerKpiValue(1800));
+        final var kpiValueRanges = List.of(kpiValueRange);
+
         final var expectedAlarmDescriptor =
-                new AlarmDescriptor(alarmDescription, name, kpiId, kpiValueRange, timestamp);
+                new AlarmDescriptor(alarmId, alarmDescription, name, kpiIds, kpiValueRanges, timestamp);
+
+        final var serializedalarmIdUuid = serializer.serializeUuid(alarmId);
+        final var serializedalarmId = AlarmID.newBuilder().setAlarmId(serializedalarmIdUuid).build();
+
+        final var serializedKpiIdUuid = serializer.serializeUuid("kpiId1");
+        final var serializedKpiId1 = KpiId.newBuilder().setKpiId(serializedKpiIdUuid).build();
+        final var serializedKpiId2 = KpiId.newBuilder().setKpiId(serializer.serializeUuid("kpiId2"));
 
-        final var serializedKpiIdUuid = serializer.serializeUuid(kpiId);
-        final var serializedKpiId = KpiId.newBuilder().setKpiId(serializedKpiIdUuid).build();
         final var serializedKpiValueRange = serializer.serialize(kpiValueRange);
+        final var serializedTimeStamp =
+                context.ContextOuterClass.Timestamp.newBuilder().setTimestamp(timestamp);
 
         final var serializedAlarmDescriptor =
                 Monitoring.AlarmDescriptor.newBuilder()
+                        .setAlarmId(serializedalarmId)
                         .setAlarmDescription(alarmDescription)
                         .setName(name)
-                        .setKpiId(serializedKpiId)
-                        .setKpiValueRange(serializedKpiValueRange)
-                        .setTimestamp(timestamp)
+                        .addKpiId(serializedKpiId1)
+                        .addKpiId(serializedKpiId2)
+                        .addKpiValueRange(serializedKpiValueRange)
+                        .setTimestamp(serializedTimeStamp)
                         .build();
 
         final var alarmDescriptor = serializer.deserialize(serializedAlarmDescriptor);
@@ -2762,25 +2787,42 @@ class SerializerTest {
 
     @Test
     void shouldSerializeSubDescriptor() {
+        final var subscriptionId = "subscriptionId";
         final var kpiId = "kpiId";
         final var samplingDurationS = 10f;
         final var samplingIntervalS = 45f;
-        final var startDate = "01/07/2022";
-        final var endDate = "02/07/2022";
+        final var startTimestamp = 1.0;
+        final var endTimestamp = 100.0;
 
         final var subDescriptor =
-                new SubsDescriptor(kpiId, samplingDurationS, samplingIntervalS, startDate, endDate);
-
+                new SubsDescriptor(
+                        subscriptionId,
+                        kpiId,
+                        samplingDurationS,
+                        samplingIntervalS,
+                        startTimestamp,
+                        endTimestamp);
+
+        final var serializedSubscriptionIdUuid = serializer.serializeUuid(subscriptionId);
+        final var serializedSubscriptionId =
+                monitoring.Monitoring.SubscriptionID.newBuilder()
+                        .setSubsId(serializedSubscriptionIdUuid)
+                        .build();
         final var serializedKpiIdUuid = serializer.serializeUuid(kpiId);
         final var serializedKpiId = KpiId.newBuilder().setKpiId(serializedKpiIdUuid).build();
+        final var serializedStartTimestamp =
+                ContextOuterClass.Timestamp.newBuilder().setTimestamp(startTimestamp);
+        final var serializedEndTimestamp =
+                ContextOuterClass.Timestamp.newBuilder().setTimestamp(endTimestamp);
 
         final var expectedSubDescriptor =
                 Monitoring.SubsDescriptor.newBuilder()
+                        .setSubsId(serializedSubscriptionId)
                         .setKpiId(serializedKpiId)
                         .setSamplingDurationS(samplingDurationS)
                         .setSamplingIntervalS(samplingIntervalS)
-                        .setStartDate(startDate)
-                        .setEndDate(endDate)
+                        .setStartTimestamp(serializedStartTimestamp)
+                        .setEndTimestamp(serializedEndTimestamp)
                         .build();
 
         final var serializedSubDescriptor = serializer.serialize(subDescriptor);
@@ -2790,25 +2832,42 @@ class SerializerTest {
 
     @Test
     void shouldDeserializeSubDescriptor() {
+        final var subscriptionId = "subscriptionId";
         final var kpiId = "kpiId";
         final var samplingDurationS = 10f;
         final var samplingIntervalS = 45f;
-        final var startDate = "01/07/2022";
-        final var endDate = "02/07/2022";
+        final var startTimestamp = 1.0;
+        final var endTimestamp = 100.0;
 
         final var expectedSubDescriptor =
-                new SubsDescriptor(kpiId, samplingDurationS, samplingIntervalS, startDate, endDate);
-
+                new SubsDescriptor(
+                        subscriptionId,
+                        kpiId,
+                        samplingDurationS,
+                        samplingIntervalS,
+                        startTimestamp,
+                        endTimestamp);
+
+        final var serializedSubscriptionIdUuid = serializer.serializeUuid(subscriptionId);
+        final var serializedSubscriptionId =
+                monitoring.Monitoring.SubscriptionID.newBuilder()
+                        .setSubsId(serializedSubscriptionIdUuid)
+                        .build();
         final var serializedKpiIdUuid = serializer.serializeUuid(kpiId);
         final var serializedKpiId = KpiId.newBuilder().setKpiId(serializedKpiIdUuid).build();
+        final var serializedStartTimestamp =
+                ContextOuterClass.Timestamp.newBuilder().setTimestamp(startTimestamp);
+        final var serializedEndTimestamp =
+                ContextOuterClass.Timestamp.newBuilder().setTimestamp(endTimestamp);
 
         final var serializedSubDescriptor =
                 Monitoring.SubsDescriptor.newBuilder()
+                        .setSubsId(serializedSubscriptionId)
                         .setKpiId(serializedKpiId)
                         .setSamplingDurationS(samplingDurationS)
                         .setSamplingIntervalS(samplingIntervalS)
-                        .setStartDate(startDate)
-                        .setEndDate(endDate)
+                        .setStartTimestamp(serializedStartTimestamp)
+                        .setEndTimestamp(serializedEndTimestamp)
                         .build();
 
         final var subDescriptor = serializer.deserialize(serializedSubDescriptor);
@@ -3155,18 +3214,20 @@ class SerializerTest {
     @Test
     void shouldSerializeKpi() {
         final var expectedKpiId = "expectedKpiId";
-        final var expectedTimestamp = "expectedTimestamp";
+        final var expectedTimestamp = 100.0;
         final var expectedKpiValue = new FloatKpiValue(643.45f);
 
         final var kpi = new Kpi(expectedKpiId, expectedTimestamp, expectedKpiValue);
 
         final var serializedKpiId = serializer.serializeKpiId(expectedKpiId);
         final var serializedKpiValue = serializer.serialize(expectedKpiValue);
+        final var serializedexpectedTimestamp =
+                context.ContextOuterClass.Timestamp.newBuilder().setTimestamp(expectedTimestamp);
 
         final var expectedKpi =
                 Monitoring.Kpi.newBuilder()
                         .setKpiId(serializedKpiId)
-                        .setTimestamp(expectedTimestamp)
+                        .setTimestamp(serializedexpectedTimestamp)
                         .setKpiValue(serializedKpiValue)
                         .build();
 
@@ -3178,7 +3239,7 @@ class SerializerTest {
     @Test
     void shouldDeserializeKpi() {
         final var expectedKpiId = "expectedKpiId";
-        final var expectedTimestamp = "expectedTimestamp";
+        final var expectedTimestamp = 100.0;
         final var expectedKpiValue = new BooleanKpiValue(true);
         final var expectedKpi = new Kpi(expectedKpiId, expectedTimestamp, expectedKpiValue);
 
@@ -3192,16 +3253,20 @@ class SerializerTest {
     @Test
     void shouldSerializeKpisList() {
         final var expectedKpiIdA = "expectedKpiIdA";
-        final var expectedTimestampA = "expectedTimestampA";
+        final var expectedTimestampA = 100.0;
         final var expectedKpiValueA = new FloatKpiValue(643.45f);
         final var serializedKpiIdA = serializer.serializeKpiId(expectedKpiIdA);
+        final var serializedexpectedTimestampA =
+                context.ContextOuterClass.Timestamp.newBuilder().setTimestamp(expectedTimestampA);
         final var serializedKpiValueA = serializer.serialize(expectedKpiValueA);
         final var kpiA = new Kpi(expectedKpiIdA, expectedTimestampA, expectedKpiValueA);
 
         final var expectedKpiIdB = "expectedKpiIdB";
-        final var expectedTimestampB = "expectedTimestampB";
+        final var expectedTimestampB = 100.0;
         final var expectedKpiValueB = new IntegerKpiValue(32);
         final var serializedKpiIdB = serializer.serializeKpiId(expectedKpiIdB);
+        final var serializedexpectedTimestampB =
+                context.ContextOuterClass.Timestamp.newBuilder().setTimestamp(expectedTimestampB);
         final var serializedKpiValueB = serializer.serialize(expectedKpiValueB);
         final var kpiB = new Kpi(expectedKpiIdB, expectedTimestampB, expectedKpiValueB);
 
@@ -3210,14 +3275,14 @@ class SerializerTest {
         final var expectedKpiA =
                 Monitoring.Kpi.newBuilder()
                         .setKpiId(serializedKpiIdA)
-                        .setTimestamp(expectedTimestampA)
+                        .setTimestamp(serializedexpectedTimestampA)
                         .setKpiValue(serializedKpiValueA)
                         .build();
 
         final var expectedKpiB =
                 Monitoring.Kpi.newBuilder()
                         .setKpiId(serializedKpiIdB)
-                        .setTimestamp(expectedTimestampB)
+                        .setTimestamp(serializedexpectedTimestampB)
                         .setKpiValue(serializedKpiValueB)
                         .build();
 
@@ -3231,16 +3296,20 @@ class SerializerTest {
     @Test
     void shouldDeserializeKpisList() {
         final var expectedKpiIdA = "expectedKpiIdA";
-        final var expectedTimestampA = "expectedTimestampA";
+        final var expectedTimestampA = 100.0;
         final var expectedKpiValueA = new FloatKpiValue(643.45f);
         final var serializedKpiIdA = serializer.serializeKpiId(expectedKpiIdA);
+        final var serializedexpectedTimestampA =
+                context.ContextOuterClass.Timestamp.newBuilder().setTimestamp(expectedTimestampA);
         final var serializedKpiValueA = serializer.serialize(expectedKpiValueA);
         final var expectedKpiA = new Kpi(expectedKpiIdA, expectedTimestampA, expectedKpiValueA);
 
         final var expectedKpiIdB = "expectedKpiIdB";
-        final var expectedTimestampB = "expectedTimestampB";
+        final var expectedTimestampB = 200.0;
         final var expectedKpiValueB = new IntegerKpiValue(32);
         final var serializedKpiIdB = serializer.serializeKpiId(expectedKpiIdB);
+        final var serializedexpectedTimestampB =
+                context.ContextOuterClass.Timestamp.newBuilder().setTimestamp(expectedTimestampB);
         final var serializedKpiValueB = serializer.serialize(expectedKpiValueB);
         final var expectedKpiB = new Kpi(expectedKpiIdB, expectedTimestampB, expectedKpiValueB);
 
@@ -3249,14 +3318,14 @@ class SerializerTest {
         final var serializedKpiA =
                 Monitoring.Kpi.newBuilder()
                         .setKpiId(serializedKpiIdA)
-                        .setTimestamp(expectedTimestampA)
+                        .setTimestamp(serializedexpectedTimestampA)
                         .setKpiValue(serializedKpiValueA)
                         .build();
 
         final var serializedKpiB =
                 Monitoring.Kpi.newBuilder()
                         .setKpiId(serializedKpiIdB)
-                        .setTimestamp(expectedTimestampB)
+                        .setTimestamp(serializedexpectedTimestampB)
                         .setKpiValue(serializedKpiValueB)
                         .build();
 
diff --git a/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java b/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java
index 5d63d4aa45e578957a7a3414c33491cebe98acbe..9d05f3da8a831e74922e65473206539680c8d78b 100644
--- a/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java
+++ b/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java
@@ -19,85 +19,124 @@ public final class Monitoring {
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>string kpi_description = 1;</code>
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
+     * @return Whether the kpiId field is set.
+     */
+    boolean hasKpiId();
+    /**
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
+     * @return The kpiId.
+     */
+    monitoring.Monitoring.KpiId getKpiId();
+    /**
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
+     */
+    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
+
+    /**
+     * <code>string kpi_description = 2;</code>
      * @return The kpiDescription.
      */
     java.lang.String getKpiDescription();
     /**
-     * <code>string kpi_description = 1;</code>
+     * <code>string kpi_description = 2;</code>
      * @return The bytes for kpiDescription.
      */
     com.google.protobuf.ByteString
         getKpiDescriptionBytes();
 
     /**
-     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 2;</code>
+     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+     */
+    java.util.List<monitoring.Monitoring.KpiId> 
+        getKpiIdListList();
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+     */
+    monitoring.Monitoring.KpiId getKpiIdList(int index);
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+     */
+    int getKpiIdListCount();
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+     */
+    java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
+        getKpiIdListOrBuilderList();
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+     */
+    monitoring.Monitoring.KpiIdOrBuilder getKpiIdListOrBuilder(
+        int index);
+
+    /**
+     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
      * @return The enum numeric value on the wire for kpiSampleType.
      */
     int getKpiSampleTypeValue();
     /**
-     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 2;</code>
+     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
      * @return The kpiSampleType.
      */
     kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType();
 
     /**
-     * <code>.context.DeviceId device_id = 3;</code>
+     * <code>.context.DeviceId device_id = 5;</code>
      * @return Whether the deviceId field is set.
      */
     boolean hasDeviceId();
     /**
-     * <code>.context.DeviceId device_id = 3;</code>
+     * <code>.context.DeviceId device_id = 5;</code>
      * @return The deviceId.
      */
     context.ContextOuterClass.DeviceId getDeviceId();
     /**
-     * <code>.context.DeviceId device_id = 3;</code>
+     * <code>.context.DeviceId device_id = 5;</code>
      */
     context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();
 
     /**
-     * <code>.context.EndPointId endpoint_id = 4;</code>
+     * <code>.context.EndPointId endpoint_id = 6;</code>
      * @return Whether the endpointId field is set.
      */
     boolean hasEndpointId();
     /**
-     * <code>.context.EndPointId endpoint_id = 4;</code>
+     * <code>.context.EndPointId endpoint_id = 6;</code>
      * @return The endpointId.
      */
     context.ContextOuterClass.EndPointId getEndpointId();
     /**
-     * <code>.context.EndPointId endpoint_id = 4;</code>
+     * <code>.context.EndPointId endpoint_id = 6;</code>
      */
     context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();
 
     /**
-     * <code>.context.ServiceId service_id = 5;</code>
+     * <code>.context.ServiceId service_id = 7;</code>
      * @return Whether the serviceId field is set.
      */
     boolean hasServiceId();
     /**
-     * <code>.context.ServiceId service_id = 5;</code>
+     * <code>.context.ServiceId service_id = 7;</code>
      * @return The serviceId.
      */
     context.ContextOuterClass.ServiceId getServiceId();
     /**
-     * <code>.context.ServiceId service_id = 5;</code>
+     * <code>.context.ServiceId service_id = 7;</code>
      */
     context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();
 
     /**
-     * <code>.context.SliceId slice_id = 6;</code>
+     * <code>.context.SliceId slice_id = 8;</code>
      * @return Whether the sliceId field is set.
      */
     boolean hasSliceId();
     /**
-     * <code>.context.SliceId slice_id = 6;</code>
+     * <code>.context.SliceId slice_id = 8;</code>
      * @return The sliceId.
      */
     context.ContextOuterClass.SliceId getSliceId();
     /**
-     * <code>.context.SliceId slice_id = 6;</code>
+     * <code>.context.SliceId slice_id = 8;</code>
      */
     context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder();
   }
@@ -115,6 +154,7 @@ public final class Monitoring {
     }
     private KpiDescriptor() {
       kpiDescription_ = "";
+      kpiIdList_ = java.util.Collections.emptyList();
       kpiSampleType_ = 0;
     }
 
@@ -138,6 +178,7 @@ public final class Monitoring {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
+      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -149,18 +190,40 @@ public final class Monitoring {
               done = true;
               break;
             case 10: {
+              monitoring.Monitoring.KpiId.Builder subBuilder = null;
+              if (kpiId_ != null) {
+                subBuilder = kpiId_.toBuilder();
+              }
+              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(kpiId_);
+                kpiId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 18: {
               java.lang.String s = input.readStringRequireUtf8();
 
               kpiDescription_ = s;
               break;
             }
-            case 16: {
+            case 26: {
+              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                kpiIdList_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              kpiIdList_.add(
+                  input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry));
+              break;
+            }
+            case 32: {
               int rawValue = input.readEnum();
 
               kpiSampleType_ = rawValue;
               break;
             }
-            case 26: {
+            case 42: {
               context.ContextOuterClass.DeviceId.Builder subBuilder = null;
               if (deviceId_ != null) {
                 subBuilder = deviceId_.toBuilder();
@@ -173,7 +236,7 @@ public final class Monitoring {
 
               break;
             }
-            case 34: {
+            case 50: {
               context.ContextOuterClass.EndPointId.Builder subBuilder = null;
               if (endpointId_ != null) {
                 subBuilder = endpointId_.toBuilder();
@@ -186,7 +249,7 @@ public final class Monitoring {
 
               break;
             }
-            case 42: {
+            case 58: {
               context.ContextOuterClass.ServiceId.Builder subBuilder = null;
               if (serviceId_ != null) {
                 subBuilder = serviceId_.toBuilder();
@@ -199,7 +262,7 @@ public final class Monitoring {
 
               break;
             }
-            case 50: {
+            case 66: {
               context.ContextOuterClass.SliceId.Builder subBuilder = null;
               if (sliceId_ != null) {
                 subBuilder = sliceId_.toBuilder();
@@ -227,6 +290,9 @@ public final class Monitoring {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          kpiIdList_ = java.util.Collections.unmodifiableList(kpiIdList_);
+        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
@@ -244,10 +310,36 @@ public final class Monitoring {
               monitoring.Monitoring.KpiDescriptor.class, monitoring.Monitoring.KpiDescriptor.Builder.class);
     }
 
-    public static final int KPI_DESCRIPTION_FIELD_NUMBER = 1;
+    public static final int KPI_ID_FIELD_NUMBER = 1;
+    private monitoring.Monitoring.KpiId kpiId_;
+    /**
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
+     * @return Whether the kpiId field is set.
+     */
+    @java.lang.Override
+    public boolean hasKpiId() {
+      return kpiId_ != null;
+    }
+    /**
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
+     * @return The kpiId.
+     */
+    @java.lang.Override
+    public monitoring.Monitoring.KpiId getKpiId() {
+      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+    }
+    /**
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
+     */
+    @java.lang.Override
+    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+      return getKpiId();
+    }
+
+    public static final int KPI_DESCRIPTION_FIELD_NUMBER = 2;
     private volatile java.lang.Object kpiDescription_;
     /**
-     * <code>string kpi_description = 1;</code>
+     * <code>string kpi_description = 2;</code>
      * @return The kpiDescription.
      */
     @java.lang.Override
@@ -264,7 +356,7 @@ public final class Monitoring {
       }
     }
     /**
-     * <code>string kpi_description = 1;</code>
+     * <code>string kpi_description = 2;</code>
      * @return The bytes for kpiDescription.
      */
     @java.lang.Override
@@ -282,17 +374,57 @@ public final class Monitoring {
       }
     }
 
-    public static final int KPI_SAMPLE_TYPE_FIELD_NUMBER = 2;
+    public static final int KPI_ID_LIST_FIELD_NUMBER = 3;
+    private java.util.List<monitoring.Monitoring.KpiId> kpiIdList_;
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+     */
+    @java.lang.Override
+    public java.util.List<monitoring.Monitoring.KpiId> getKpiIdListList() {
+      return kpiIdList_;
+    }
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+     */
+    @java.lang.Override
+    public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
+        getKpiIdListOrBuilderList() {
+      return kpiIdList_;
+    }
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+     */
+    @java.lang.Override
+    public int getKpiIdListCount() {
+      return kpiIdList_.size();
+    }
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+     */
+    @java.lang.Override
+    public monitoring.Monitoring.KpiId getKpiIdList(int index) {
+      return kpiIdList_.get(index);
+    }
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+     */
+    @java.lang.Override
+    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdListOrBuilder(
+        int index) {
+      return kpiIdList_.get(index);
+    }
+
+    public static final int KPI_SAMPLE_TYPE_FIELD_NUMBER = 4;
     private int kpiSampleType_;
     /**
-     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 2;</code>
+     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
      * @return The enum numeric value on the wire for kpiSampleType.
      */
     @java.lang.Override public int getKpiSampleTypeValue() {
       return kpiSampleType_;
     }
     /**
-     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 2;</code>
+     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
      * @return The kpiSampleType.
      */
     @java.lang.Override public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() {
@@ -301,10 +433,10 @@ public final class Monitoring {
       return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
     }
 
-    public static final int DEVICE_ID_FIELD_NUMBER = 3;
+    public static final int DEVICE_ID_FIELD_NUMBER = 5;
     private context.ContextOuterClass.DeviceId deviceId_;
     /**
-     * <code>.context.DeviceId device_id = 3;</code>
+     * <code>.context.DeviceId device_id = 5;</code>
      * @return Whether the deviceId field is set.
      */
     @java.lang.Override
@@ -312,7 +444,7 @@ public final class Monitoring {
       return deviceId_ != null;
     }
     /**
-     * <code>.context.DeviceId device_id = 3;</code>
+     * <code>.context.DeviceId device_id = 5;</code>
      * @return The deviceId.
      */
     @java.lang.Override
@@ -320,17 +452,17 @@ public final class Monitoring {
       return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
     }
     /**
-     * <code>.context.DeviceId device_id = 3;</code>
+     * <code>.context.DeviceId device_id = 5;</code>
      */
     @java.lang.Override
     public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
       return getDeviceId();
     }
 
-    public static final int ENDPOINT_ID_FIELD_NUMBER = 4;
+    public static final int ENDPOINT_ID_FIELD_NUMBER = 6;
     private context.ContextOuterClass.EndPointId endpointId_;
     /**
-     * <code>.context.EndPointId endpoint_id = 4;</code>
+     * <code>.context.EndPointId endpoint_id = 6;</code>
      * @return Whether the endpointId field is set.
      */
     @java.lang.Override
@@ -338,7 +470,7 @@ public final class Monitoring {
       return endpointId_ != null;
     }
     /**
-     * <code>.context.EndPointId endpoint_id = 4;</code>
+     * <code>.context.EndPointId endpoint_id = 6;</code>
      * @return The endpointId.
      */
     @java.lang.Override
@@ -346,17 +478,17 @@ public final class Monitoring {
       return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
     }
     /**
-     * <code>.context.EndPointId endpoint_id = 4;</code>
+     * <code>.context.EndPointId endpoint_id = 6;</code>
      */
     @java.lang.Override
     public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
       return getEndpointId();
     }
 
-    public static final int SERVICE_ID_FIELD_NUMBER = 5;
+    public static final int SERVICE_ID_FIELD_NUMBER = 7;
     private context.ContextOuterClass.ServiceId serviceId_;
     /**
-     * <code>.context.ServiceId service_id = 5;</code>
+     * <code>.context.ServiceId service_id = 7;</code>
      * @return Whether the serviceId field is set.
      */
     @java.lang.Override
@@ -364,7 +496,7 @@ public final class Monitoring {
       return serviceId_ != null;
     }
     /**
-     * <code>.context.ServiceId service_id = 5;</code>
+     * <code>.context.ServiceId service_id = 7;</code>
      * @return The serviceId.
      */
     @java.lang.Override
@@ -372,17 +504,17 @@ public final class Monitoring {
       return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
     }
     /**
-     * <code>.context.ServiceId service_id = 5;</code>
+     * <code>.context.ServiceId service_id = 7;</code>
      */
     @java.lang.Override
     public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
       return getServiceId();
     }
 
-    public static final int SLICE_ID_FIELD_NUMBER = 6;
+    public static final int SLICE_ID_FIELD_NUMBER = 8;
     private context.ContextOuterClass.SliceId sliceId_;
     /**
-     * <code>.context.SliceId slice_id = 6;</code>
+     * <code>.context.SliceId slice_id = 8;</code>
      * @return Whether the sliceId field is set.
      */
     @java.lang.Override
@@ -390,7 +522,7 @@ public final class Monitoring {
       return sliceId_ != null;
     }
     /**
-     * <code>.context.SliceId slice_id = 6;</code>
+     * <code>.context.SliceId slice_id = 8;</code>
      * @return The sliceId.
      */
     @java.lang.Override
@@ -398,7 +530,7 @@ public final class Monitoring {
       return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
     }
     /**
-     * <code>.context.SliceId slice_id = 6;</code>
+     * <code>.context.SliceId slice_id = 8;</code>
      */
     @java.lang.Override
     public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
@@ -419,23 +551,29 @@ public final class Monitoring {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      if (kpiId_ != null) {
+        output.writeMessage(1, getKpiId());
+      }
       if (!getKpiDescriptionBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, kpiDescription_);
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, kpiDescription_);
+      }
+      for (int i = 0; i < kpiIdList_.size(); i++) {
+        output.writeMessage(3, kpiIdList_.get(i));
       }
       if (kpiSampleType_ != kpi_sample_types.KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_UNKNOWN.getNumber()) {
-        output.writeEnum(2, kpiSampleType_);
+        output.writeEnum(4, kpiSampleType_);
       }
       if (deviceId_ != null) {
-        output.writeMessage(3, getDeviceId());
+        output.writeMessage(5, getDeviceId());
       }
       if (endpointId_ != null) {
-        output.writeMessage(4, getEndpointId());
+        output.writeMessage(6, getEndpointId());
       }
       if (serviceId_ != null) {
-        output.writeMessage(5, getServiceId());
+        output.writeMessage(7, getServiceId());
       }
       if (sliceId_ != null) {
-        output.writeMessage(6, getSliceId());
+        output.writeMessage(8, getSliceId());
       }
       unknownFields.writeTo(output);
     }
@@ -446,28 +584,36 @@ public final class Monitoring {
       if (size != -1) return size;
 
       size = 0;
+      if (kpiId_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, getKpiId());
+      }
       if (!getKpiDescriptionBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, kpiDescription_);
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, kpiDescription_);
+      }
+      for (int i = 0; i < kpiIdList_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, kpiIdList_.get(i));
       }
       if (kpiSampleType_ != kpi_sample_types.KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_UNKNOWN.getNumber()) {
         size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(2, kpiSampleType_);
+          .computeEnumSize(4, kpiSampleType_);
       }
       if (deviceId_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, getDeviceId());
+          .computeMessageSize(5, getDeviceId());
       }
       if (endpointId_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, getEndpointId());
+          .computeMessageSize(6, getEndpointId());
       }
       if (serviceId_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, getServiceId());
+          .computeMessageSize(7, getServiceId());
       }
       if (sliceId_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(6, getSliceId());
+          .computeMessageSize(8, getSliceId());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -484,8 +630,15 @@ public final class Monitoring {
       }
       monitoring.Monitoring.KpiDescriptor other = (monitoring.Monitoring.KpiDescriptor) obj;
 
+      if (hasKpiId() != other.hasKpiId()) return false;
+      if (hasKpiId()) {
+        if (!getKpiId()
+            .equals(other.getKpiId())) return false;
+      }
       if (!getKpiDescription()
           .equals(other.getKpiDescription())) return false;
+      if (!getKpiIdListList()
+          .equals(other.getKpiIdListList())) return false;
       if (kpiSampleType_ != other.kpiSampleType_) return false;
       if (hasDeviceId() != other.hasDeviceId()) return false;
       if (hasDeviceId()) {
@@ -518,8 +671,16 @@ public final class Monitoring {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasKpiId()) {
+        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getKpiId().hashCode();
+      }
       hash = (37 * hash) + KPI_DESCRIPTION_FIELD_NUMBER;
       hash = (53 * hash) + getKpiDescription().hashCode();
+      if (getKpiIdListCount() > 0) {
+        hash = (37 * hash) + KPI_ID_LIST_FIELD_NUMBER;
+        hash = (53 * hash) + getKpiIdListList().hashCode();
+      }
       hash = (37 * hash) + KPI_SAMPLE_TYPE_FIELD_NUMBER;
       hash = (53 * hash) + kpiSampleType_;
       if (hasDeviceId()) {
@@ -666,13 +827,26 @@ public final class Monitoring {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
+          getKpiIdListFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = null;
+        } else {
+          kpiId_ = null;
+          kpiIdBuilder_ = null;
+        }
         kpiDescription_ = "";
 
+        if (kpiIdListBuilder_ == null) {
+          kpiIdList_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          kpiIdListBuilder_.clear();
+        }
         kpiSampleType_ = 0;
 
         if (deviceIdBuilder_ == null) {
@@ -725,7 +899,22 @@ public final class Monitoring {
       @java.lang.Override
       public monitoring.Monitoring.KpiDescriptor buildPartial() {
         monitoring.Monitoring.KpiDescriptor result = new monitoring.Monitoring.KpiDescriptor(this);
+        int from_bitField0_ = bitField0_;
+        if (kpiIdBuilder_ == null) {
+          result.kpiId_ = kpiId_;
+        } else {
+          result.kpiId_ = kpiIdBuilder_.build();
+        }
         result.kpiDescription_ = kpiDescription_;
+        if (kpiIdListBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            kpiIdList_ = java.util.Collections.unmodifiableList(kpiIdList_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.kpiIdList_ = kpiIdList_;
+        } else {
+          result.kpiIdList_ = kpiIdListBuilder_.build();
+        }
         result.kpiSampleType_ = kpiSampleType_;
         if (deviceIdBuilder_ == null) {
           result.deviceId_ = deviceId_;
@@ -795,14 +984,43 @@ public final class Monitoring {
 
       public Builder mergeFrom(monitoring.Monitoring.KpiDescriptor other) {
         if (other == monitoring.Monitoring.KpiDescriptor.getDefaultInstance()) return this;
+        if (other.hasKpiId()) {
+          mergeKpiId(other.getKpiId());
+        }
         if (!other.getKpiDescription().isEmpty()) {
           kpiDescription_ = other.kpiDescription_;
           onChanged();
         }
-        if (other.kpiSampleType_ != 0) {
-          setKpiSampleTypeValue(other.getKpiSampleTypeValue());
-        }
-        if (other.hasDeviceId()) {
+        if (kpiIdListBuilder_ == null) {
+          if (!other.kpiIdList_.isEmpty()) {
+            if (kpiIdList_.isEmpty()) {
+              kpiIdList_ = other.kpiIdList_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureKpiIdListIsMutable();
+              kpiIdList_.addAll(other.kpiIdList_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.kpiIdList_.isEmpty()) {
+            if (kpiIdListBuilder_.isEmpty()) {
+              kpiIdListBuilder_.dispose();
+              kpiIdListBuilder_ = null;
+              kpiIdList_ = other.kpiIdList_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              kpiIdListBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                   getKpiIdListFieldBuilder() : null;
+            } else {
+              kpiIdListBuilder_.addAllMessages(other.kpiIdList_);
+            }
+          }
+        }
+        if (other.kpiSampleType_ != 0) {
+          setKpiSampleTypeValue(other.getKpiSampleTypeValue());
+        }
+        if (other.hasDeviceId()) {
           mergeDeviceId(other.getDeviceId());
         }
         if (other.hasEndpointId()) {
@@ -842,10 +1060,130 @@ public final class Monitoring {
         }
         return this;
       }
+      private int bitField0_;
+
+      private monitoring.Monitoring.KpiId kpiId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
+      /**
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       * @return Whether the kpiId field is set.
+       */
+      public boolean hasKpiId() {
+        return kpiIdBuilder_ != null || kpiId_ != null;
+      }
+      /**
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       * @return The kpiId.
+       */
+      public monitoring.Monitoring.KpiId getKpiId() {
+        if (kpiIdBuilder_ == null) {
+          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+        } else {
+          return kpiIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       */
+      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
+        if (kpiIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          kpiId_ = value;
+          onChanged();
+        } else {
+          kpiIdBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       */
+      public Builder setKpiId(
+          monitoring.Monitoring.KpiId.Builder builderForValue) {
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = builderForValue.build();
+          onChanged();
+        } else {
+          kpiIdBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       */
+      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
+        if (kpiIdBuilder_ == null) {
+          if (kpiId_ != null) {
+            kpiId_ =
+              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+          } else {
+            kpiId_ = value;
+          }
+          onChanged();
+        } else {
+          kpiIdBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       */
+      public Builder clearKpiId() {
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = null;
+          onChanged();
+        } else {
+          kpiId_ = null;
+          kpiIdBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       */
+      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+        
+        onChanged();
+        return getKpiIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       */
+      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+        if (kpiIdBuilder_ != null) {
+          return kpiIdBuilder_.getMessageOrBuilder();
+        } else {
+          return kpiId_ == null ?
+              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+        }
+      }
+      /**
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
+          getKpiIdFieldBuilder() {
+        if (kpiIdBuilder_ == null) {
+          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
+                  getKpiId(),
+                  getParentForChildren(),
+                  isClean());
+          kpiId_ = null;
+        }
+        return kpiIdBuilder_;
+      }
 
       private java.lang.Object kpiDescription_ = "";
       /**
-       * <code>string kpi_description = 1;</code>
+       * <code>string kpi_description = 2;</code>
        * @return The kpiDescription.
        */
       public java.lang.String getKpiDescription() {
@@ -861,7 +1199,7 @@ public final class Monitoring {
         }
       }
       /**
-       * <code>string kpi_description = 1;</code>
+       * <code>string kpi_description = 2;</code>
        * @return The bytes for kpiDescription.
        */
       public com.google.protobuf.ByteString
@@ -878,7 +1216,7 @@ public final class Monitoring {
         }
       }
       /**
-       * <code>string kpi_description = 1;</code>
+       * <code>string kpi_description = 2;</code>
        * @param value The kpiDescription to set.
        * @return This builder for chaining.
        */
@@ -893,7 +1231,7 @@ public final class Monitoring {
         return this;
       }
       /**
-       * <code>string kpi_description = 1;</code>
+       * <code>string kpi_description = 2;</code>
        * @return This builder for chaining.
        */
       public Builder clearKpiDescription() {
@@ -903,7 +1241,7 @@ public final class Monitoring {
         return this;
       }
       /**
-       * <code>string kpi_description = 1;</code>
+       * <code>string kpi_description = 2;</code>
        * @param value The bytes for kpiDescription to set.
        * @return This builder for chaining.
        */
@@ -919,548 +1257,788 @@ public final class Monitoring {
         return this;
       }
 
-      private int kpiSampleType_ = 0;
-      /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 2;</code>
-       * @return The enum numeric value on the wire for kpiSampleType.
-       */
-      @java.lang.Override public int getKpiSampleTypeValue() {
-        return kpiSampleType_;
-      }
-      /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 2;</code>
-       * @param value The enum numeric value on the wire for kpiSampleType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setKpiSampleTypeValue(int value) {
-        
-        kpiSampleType_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 2;</code>
-       * @return The kpiSampleType.
-       */
-      @java.lang.Override
-      public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() {
-        @SuppressWarnings("deprecation")
-        kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(kpiSampleType_);
-        return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
+      private java.util.List<monitoring.Monitoring.KpiId> kpiIdList_ =
+        java.util.Collections.emptyList();
+      private void ensureKpiIdListIsMutable() {
+        if (!((bitField0_ & 0x00000001) != 0)) {
+          kpiIdList_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>(kpiIdList_);
+          bitField0_ |= 0x00000001;
+         }
       }
+
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdListBuilder_;
+
       /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 2;</code>
-       * @param value The kpiSampleType to set.
-       * @return This builder for chaining.
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
        */
-      public Builder setKpiSampleType(kpi_sample_types.KpiSampleTypes.KpiSampleType value) {
-        if (value == null) {
-          throw new NullPointerException();
+      public java.util.List<monitoring.Monitoring.KpiId> getKpiIdListList() {
+        if (kpiIdListBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(kpiIdList_);
+        } else {
+          return kpiIdListBuilder_.getMessageList();
         }
-        
-        kpiSampleType_ = value.getNumber();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearKpiSampleType() {
-        
-        kpiSampleType_ = 0;
-        onChanged();
-        return this;
       }
-
-      private context.ContextOuterClass.DeviceId deviceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;
       /**
-       * <code>.context.DeviceId device_id = 3;</code>
-       * @return Whether the deviceId field is set.
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
        */
-      public boolean hasDeviceId() {
-        return deviceIdBuilder_ != null || deviceId_ != null;
+      public int getKpiIdListCount() {
+        if (kpiIdListBuilder_ == null) {
+          return kpiIdList_.size();
+        } else {
+          return kpiIdListBuilder_.getCount();
+        }
       }
       /**
-       * <code>.context.DeviceId device_id = 3;</code>
-       * @return The deviceId.
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
        */
-      public context.ContextOuterClass.DeviceId getDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+      public monitoring.Monitoring.KpiId getKpiIdList(int index) {
+        if (kpiIdListBuilder_ == null) {
+          return kpiIdList_.get(index);
         } else {
-          return deviceIdBuilder_.getMessage();
+          return kpiIdListBuilder_.getMessage(index);
         }
       }
       /**
-       * <code>.context.DeviceId device_id = 3;</code>
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
        */
-      public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
+      public Builder setKpiIdList(
+          int index, monitoring.Monitoring.KpiId value) {
+        if (kpiIdListBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          deviceId_ = value;
+          ensureKpiIdListIsMutable();
+          kpiIdList_.set(index, value);
           onChanged();
         } else {
-          deviceIdBuilder_.setMessage(value);
+          kpiIdListBuilder_.setMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.DeviceId device_id = 3;</code>
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
        */
-      public Builder setDeviceId(
-          context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = builderForValue.build();
+      public Builder setKpiIdList(
+          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
+        if (kpiIdListBuilder_ == null) {
+          ensureKpiIdListIsMutable();
+          kpiIdList_.set(index, builderForValue.build());
           onChanged();
         } else {
-          deviceIdBuilder_.setMessage(builderForValue.build());
+          kpiIdListBuilder_.setMessage(index, builderForValue.build());
         }
-
         return this;
       }
       /**
-       * <code>.context.DeviceId device_id = 3;</code>
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
        */
-      public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
-          if (deviceId_ != null) {
-            deviceId_ =
-              context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
-          } else {
-            deviceId_ = value;
+      public Builder addKpiIdList(monitoring.Monitoring.KpiId value) {
+        if (kpiIdListBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
           }
+          ensureKpiIdListIsMutable();
+          kpiIdList_.add(value);
           onChanged();
         } else {
-          deviceIdBuilder_.mergeFrom(value);
+          kpiIdListBuilder_.addMessage(value);
         }
-
         return this;
       }
       /**
-       * <code>.context.DeviceId device_id = 3;</code>
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
        */
-      public Builder clearDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
+      public Builder addKpiIdList(
+          int index, monitoring.Monitoring.KpiId value) {
+        if (kpiIdListBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureKpiIdListIsMutable();
+          kpiIdList_.add(index, value);
           onChanged();
         } else {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
+          kpiIdListBuilder_.addMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.DeviceId device_id = 3;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-        
-        onChanged();
-        return getDeviceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.DeviceId device_id = 3;</code>
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
        */
-      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-        if (deviceIdBuilder_ != null) {
-          return deviceIdBuilder_.getMessageOrBuilder();
+      public Builder addKpiIdList(
+          monitoring.Monitoring.KpiId.Builder builderForValue) {
+        if (kpiIdListBuilder_ == null) {
+          ensureKpiIdListIsMutable();
+          kpiIdList_.add(builderForValue.build());
+          onChanged();
         } else {
-          return deviceId_ == null ?
-              context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+          kpiIdListBuilder_.addMessage(builderForValue.build());
         }
+        return this;
       }
       /**
-       * <code>.context.DeviceId device_id = 3;</code>
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
        */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
-          getDeviceIdFieldBuilder() {
-        if (deviceIdBuilder_ == null) {
-          deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
-                  getDeviceId(),
-                  getParentForChildren(),
-                  isClean());
-          deviceId_ = null;
+      public Builder addKpiIdList(
+          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
+        if (kpiIdListBuilder_ == null) {
+          ensureKpiIdListIsMutable();
+          kpiIdList_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          kpiIdListBuilder_.addMessage(index, builderForValue.build());
         }
-        return deviceIdBuilder_;
-      }
-
-      private context.ContextOuterClass.EndPointId endpointId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
-      /**
-       * <code>.context.EndPointId endpoint_id = 4;</code>
-       * @return Whether the endpointId field is set.
-       */
-      public boolean hasEndpointId() {
-        return endpointIdBuilder_ != null || endpointId_ != null;
+        return this;
       }
       /**
-       * <code>.context.EndPointId endpoint_id = 4;</code>
-       * @return The endpointId.
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
        */
-      public context.ContextOuterClass.EndPointId getEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+      public Builder addAllKpiIdList(
+          java.lang.Iterable<? extends monitoring.Monitoring.KpiId> values) {
+        if (kpiIdListBuilder_ == null) {
+          ensureKpiIdListIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, kpiIdList_);
+          onChanged();
         } else {
-          return endpointIdBuilder_.getMessage();
+          kpiIdListBuilder_.addAllMessages(values);
         }
+        return this;
       }
       /**
-       * <code>.context.EndPointId endpoint_id = 4;</code>
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
        */
-      public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          endpointId_ = value;
+      public Builder clearKpiIdList() {
+        if (kpiIdListBuilder_ == null) {
+          kpiIdList_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
           onChanged();
         } else {
-          endpointIdBuilder_.setMessage(value);
+          kpiIdListBuilder_.clear();
         }
-
         return this;
       }
       /**
-       * <code>.context.EndPointId endpoint_id = 4;</code>
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
        */
-      public Builder setEndpointId(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = builderForValue.build();
+      public Builder removeKpiIdList(int index) {
+        if (kpiIdListBuilder_ == null) {
+          ensureKpiIdListIsMutable();
+          kpiIdList_.remove(index);
           onChanged();
         } else {
-          endpointIdBuilder_.setMessage(builderForValue.build());
+          kpiIdListBuilder_.remove(index);
         }
-
         return this;
       }
       /**
-       * <code>.context.EndPointId endpoint_id = 4;</code>
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
        */
-      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (endpointId_ != null) {
-            endpointId_ =
-              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
-          } else {
-            endpointId_ = value;
-          }
-          onChanged();
-        } else {
-          endpointIdBuilder_.mergeFrom(value);
+      public monitoring.Monitoring.KpiId.Builder getKpiIdListBuilder(
+          int index) {
+        return getKpiIdListFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+       */
+      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdListOrBuilder(
+          int index) {
+        if (kpiIdListBuilder_ == null) {
+          return kpiIdList_.get(index);  } else {
+          return kpiIdListBuilder_.getMessageOrBuilder(index);
         }
-
-        return this;
       }
       /**
-       * <code>.context.EndPointId endpoint_id = 4;</code>
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
        */
-      public Builder clearEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-          onChanged();
+      public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
+           getKpiIdListOrBuilderList() {
+        if (kpiIdListBuilder_ != null) {
+          return kpiIdListBuilder_.getMessageOrBuilderList();
         } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
+          return java.util.Collections.unmodifiableList(kpiIdList_);
         }
-
-        return this;
       }
       /**
-       * <code>.context.EndPointId endpoint_id = 4;</code>
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
        */
-      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-        
-        onChanged();
-        return getEndpointIdFieldBuilder().getBuilder();
+      public monitoring.Monitoring.KpiId.Builder addKpiIdListBuilder() {
+        return getKpiIdListFieldBuilder().addBuilder(
+            monitoring.Monitoring.KpiId.getDefaultInstance());
       }
       /**
-       * <code>.context.EndPointId endpoint_id = 4;</code>
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
        */
-      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-        if (endpointIdBuilder_ != null) {
-          return endpointIdBuilder_.getMessageOrBuilder();
-        } else {
-          return endpointId_ == null ?
-              context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-        }
+      public monitoring.Monitoring.KpiId.Builder addKpiIdListBuilder(
+          int index) {
+        return getKpiIdListFieldBuilder().addBuilder(
+            index, monitoring.Monitoring.KpiId.getDefaultInstance());
       }
       /**
-       * <code>.context.EndPointId endpoint_id = 4;</code>
+       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
        */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
-          getEndpointIdFieldBuilder() {
-        if (endpointIdBuilder_ == null) {
-          endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
-                  getEndpointId(),
+      public java.util.List<monitoring.Monitoring.KpiId.Builder> 
+           getKpiIdListBuilderList() {
+        return getKpiIdListFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
+          getKpiIdListFieldBuilder() {
+        if (kpiIdListBuilder_ == null) {
+          kpiIdListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
+                  kpiIdList_,
+                  ((bitField0_ & 0x00000001) != 0),
                   getParentForChildren(),
                   isClean());
-          endpointId_ = null;
+          kpiIdList_ = null;
         }
-        return endpointIdBuilder_;
+        return kpiIdListBuilder_;
       }
 
-      private context.ContextOuterClass.ServiceId serviceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
+      private int kpiSampleType_ = 0;
       /**
-       * <code>.context.ServiceId service_id = 5;</code>
-       * @return Whether the serviceId field is set.
+       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
+       * @return The enum numeric value on the wire for kpiSampleType.
        */
-      public boolean hasServiceId() {
-        return serviceIdBuilder_ != null || serviceId_ != null;
+      @java.lang.Override public int getKpiSampleTypeValue() {
+        return kpiSampleType_;
       }
       /**
-       * <code>.context.ServiceId service_id = 5;</code>
-       * @return The serviceId.
+       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
+       * @param value The enum numeric value on the wire for kpiSampleType to set.
+       * @return This builder for chaining.
        */
-      public context.ContextOuterClass.ServiceId getServiceId() {
-        if (serviceIdBuilder_ == null) {
-          return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-        } else {
-          return serviceIdBuilder_.getMessage();
-        }
+      public Builder setKpiSampleTypeValue(int value) {
+        
+        kpiSampleType_ = value;
+        onChanged();
+        return this;
       }
       /**
-       * <code>.context.ServiceId service_id = 5;</code>
+       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
+       * @return The kpiSampleType.
        */
-      public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          serviceId_ = value;
-          onChanged();
-        } else {
-          serviceIdBuilder_.setMessage(value);
-        }
+      @java.lang.Override
+      public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() {
+        @SuppressWarnings("deprecation")
+        kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(kpiSampleType_);
+        return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
+      }
+      /**
+       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
+       * @param value The kpiSampleType to set.
+       * @return This builder for chaining.
+       */
+      public Builder setKpiSampleType(kpi_sample_types.KpiSampleTypes.KpiSampleType value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        
+        kpiSampleType_ = value.getNumber();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearKpiSampleType() {
+        
+        kpiSampleType_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private context.ContextOuterClass.DeviceId deviceId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;
+      /**
+       * <code>.context.DeviceId device_id = 5;</code>
+       * @return Whether the deviceId field is set.
+       */
+      public boolean hasDeviceId() {
+        return deviceIdBuilder_ != null || deviceId_ != null;
+      }
+      /**
+       * <code>.context.DeviceId device_id = 5;</code>
+       * @return The deviceId.
+       */
+      public context.ContextOuterClass.DeviceId getDeviceId() {
+        if (deviceIdBuilder_ == null) {
+          return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+        } else {
+          return deviceIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>.context.DeviceId device_id = 5;</code>
+       */
+      public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
+        if (deviceIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          deviceId_ = value;
+          onChanged();
+        } else {
+          deviceIdBuilder_.setMessage(value);
+        }
 
         return this;
       }
       /**
-       * <code>.context.ServiceId service_id = 5;</code>
+       * <code>.context.DeviceId device_id = 5;</code>
        */
-      public Builder setServiceId(
-          context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = builderForValue.build();
+      public Builder setDeviceId(
+          context.ContextOuterClass.DeviceId.Builder builderForValue) {
+        if (deviceIdBuilder_ == null) {
+          deviceId_ = builderForValue.build();
           onChanged();
         } else {
-          serviceIdBuilder_.setMessage(builderForValue.build());
+          deviceIdBuilder_.setMessage(builderForValue.build());
         }
 
         return this;
       }
       /**
-       * <code>.context.ServiceId service_id = 5;</code>
+       * <code>.context.DeviceId device_id = 5;</code>
        */
-      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (serviceId_ != null) {
-            serviceId_ =
-              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
+      public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
+        if (deviceIdBuilder_ == null) {
+          if (deviceId_ != null) {
+            deviceId_ =
+              context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
           } else {
-            serviceId_ = value;
+            deviceId_ = value;
           }
           onChanged();
         } else {
-          serviceIdBuilder_.mergeFrom(value);
+          deviceIdBuilder_.mergeFrom(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.ServiceId service_id = 5;</code>
+       * <code>.context.DeviceId device_id = 5;</code>
        */
-      public Builder clearServiceId() {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
+      public Builder clearDeviceId() {
+        if (deviceIdBuilder_ == null) {
+          deviceId_ = null;
           onChanged();
         } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
+          deviceId_ = null;
+          deviceIdBuilder_ = null;
         }
 
         return this;
       }
       /**
-       * <code>.context.ServiceId service_id = 5;</code>
+       * <code>.context.DeviceId device_id = 5;</code>
        */
-      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
+      public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
         
         onChanged();
-        return getServiceIdFieldBuilder().getBuilder();
+        return getDeviceIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.ServiceId service_id = 5;</code>
+       * <code>.context.DeviceId device_id = 5;</code>
        */
-      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-        if (serviceIdBuilder_ != null) {
-          return serviceIdBuilder_.getMessageOrBuilder();
+      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
+        if (deviceIdBuilder_ != null) {
+          return deviceIdBuilder_.getMessageOrBuilder();
         } else {
-          return serviceId_ == null ?
-              context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+          return deviceId_ == null ?
+              context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
         }
       }
       /**
-       * <code>.context.ServiceId service_id = 5;</code>
+       * <code>.context.DeviceId device_id = 5;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
-          getServiceIdFieldBuilder() {
-        if (serviceIdBuilder_ == null) {
-          serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
-                  getServiceId(),
+          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
+          getDeviceIdFieldBuilder() {
+        if (deviceIdBuilder_ == null) {
+          deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
+                  getDeviceId(),
                   getParentForChildren(),
                   isClean());
-          serviceId_ = null;
+          deviceId_ = null;
         }
-        return serviceIdBuilder_;
+        return deviceIdBuilder_;
       }
 
-      private context.ContextOuterClass.SliceId sliceId_;
+      private context.ContextOuterClass.EndPointId endpointId_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdBuilder_;
+          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
       /**
-       * <code>.context.SliceId slice_id = 6;</code>
-       * @return Whether the sliceId field is set.
+       * <code>.context.EndPointId endpoint_id = 6;</code>
+       * @return Whether the endpointId field is set.
        */
-      public boolean hasSliceId() {
-        return sliceIdBuilder_ != null || sliceId_ != null;
+      public boolean hasEndpointId() {
+        return endpointIdBuilder_ != null || endpointId_ != null;
       }
       /**
-       * <code>.context.SliceId slice_id = 6;</code>
-       * @return The sliceId.
+       * <code>.context.EndPointId endpoint_id = 6;</code>
+       * @return The endpointId.
        */
-      public context.ContextOuterClass.SliceId getSliceId() {
-        if (sliceIdBuilder_ == null) {
-          return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+      public context.ContextOuterClass.EndPointId getEndpointId() {
+        if (endpointIdBuilder_ == null) {
+          return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
         } else {
-          return sliceIdBuilder_.getMessage();
+          return endpointIdBuilder_.getMessage();
         }
       }
       /**
-       * <code>.context.SliceId slice_id = 6;</code>
+       * <code>.context.EndPointId endpoint_id = 6;</code>
        */
-      public Builder setSliceId(context.ContextOuterClass.SliceId value) {
-        if (sliceIdBuilder_ == null) {
+      public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
+        if (endpointIdBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          sliceId_ = value;
+          endpointId_ = value;
           onChanged();
         } else {
-          sliceIdBuilder_.setMessage(value);
+          endpointIdBuilder_.setMessage(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.SliceId slice_id = 6;</code>
+       * <code>.context.EndPointId endpoint_id = 6;</code>
        */
-      public Builder setSliceId(
-          context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = builderForValue.build();
+      public Builder setEndpointId(
+          context.ContextOuterClass.EndPointId.Builder builderForValue) {
+        if (endpointIdBuilder_ == null) {
+          endpointId_ = builderForValue.build();
           onChanged();
         } else {
-          sliceIdBuilder_.setMessage(builderForValue.build());
+          endpointIdBuilder_.setMessage(builderForValue.build());
         }
 
         return this;
       }
       /**
-       * <code>.context.SliceId slice_id = 6;</code>
+       * <code>.context.EndPointId endpoint_id = 6;</code>
        */
-      public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
-        if (sliceIdBuilder_ == null) {
-          if (sliceId_ != null) {
-            sliceId_ =
-              context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
+      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
+        if (endpointIdBuilder_ == null) {
+          if (endpointId_ != null) {
+            endpointId_ =
+              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
           } else {
-            sliceId_ = value;
+            endpointId_ = value;
           }
           onChanged();
         } else {
-          sliceIdBuilder_.mergeFrom(value);
+          endpointIdBuilder_.mergeFrom(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.SliceId slice_id = 6;</code>
+       * <code>.context.EndPointId endpoint_id = 6;</code>
        */
-      public Builder clearSliceId() {
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = null;
+      public Builder clearEndpointId() {
+        if (endpointIdBuilder_ == null) {
+          endpointId_ = null;
           onChanged();
         } else {
-          sliceId_ = null;
-          sliceIdBuilder_ = null;
+          endpointId_ = null;
+          endpointIdBuilder_ = null;
         }
 
         return this;
       }
       /**
-       * <code>.context.SliceId slice_id = 6;</code>
+       * <code>.context.EndPointId endpoint_id = 6;</code>
        */
-      public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
+      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
         
         onChanged();
-        return getSliceIdFieldBuilder().getBuilder();
+        return getEndpointIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.SliceId slice_id = 6;</code>
+       * <code>.context.EndPointId endpoint_id = 6;</code>
        */
-      public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-        if (sliceIdBuilder_ != null) {
-          return sliceIdBuilder_.getMessageOrBuilder();
+      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
+        if (endpointIdBuilder_ != null) {
+          return endpointIdBuilder_.getMessageOrBuilder();
         } else {
-          return sliceId_ == null ?
-              context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+          return endpointId_ == null ?
+              context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
         }
       }
       /**
-       * <code>.context.SliceId slice_id = 6;</code>
+       * <code>.context.EndPointId endpoint_id = 6;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> 
-          getSliceIdFieldBuilder() {
-        if (sliceIdBuilder_ == null) {
-          sliceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(
-                  getSliceId(),
+          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
+          getEndpointIdFieldBuilder() {
+        if (endpointIdBuilder_ == null) {
+          endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
+                  getEndpointId(),
                   getParentForChildren(),
                   isClean());
-          sliceId_ = null;
+          endpointId_ = null;
         }
-        return sliceIdBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return endpointIdBuilder_;
       }
 
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+      private context.ContextOuterClass.ServiceId serviceId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
+      /**
+       * <code>.context.ServiceId service_id = 7;</code>
+       * @return Whether the serviceId field is set.
+       */
+      public boolean hasServiceId() {
+        return serviceIdBuilder_ != null || serviceId_ != null;
       }
-
-
+      /**
+       * <code>.context.ServiceId service_id = 7;</code>
+       * @return The serviceId.
+       */
+      public context.ContextOuterClass.ServiceId getServiceId() {
+        if (serviceIdBuilder_ == null) {
+          return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+        } else {
+          return serviceIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>.context.ServiceId service_id = 7;</code>
+       */
+      public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
+        if (serviceIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          serviceId_ = value;
+          onChanged();
+        } else {
+          serviceIdBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ServiceId service_id = 7;</code>
+       */
+      public Builder setServiceId(
+          context.ContextOuterClass.ServiceId.Builder builderForValue) {
+        if (serviceIdBuilder_ == null) {
+          serviceId_ = builderForValue.build();
+          onChanged();
+        } else {
+          serviceIdBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ServiceId service_id = 7;</code>
+       */
+      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
+        if (serviceIdBuilder_ == null) {
+          if (serviceId_ != null) {
+            serviceId_ =
+              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
+          } else {
+            serviceId_ = value;
+          }
+          onChanged();
+        } else {
+          serviceIdBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ServiceId service_id = 7;</code>
+       */
+      public Builder clearServiceId() {
+        if (serviceIdBuilder_ == null) {
+          serviceId_ = null;
+          onChanged();
+        } else {
+          serviceId_ = null;
+          serviceIdBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ServiceId service_id = 7;</code>
+       */
+      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
+        
+        onChanged();
+        return getServiceIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.ServiceId service_id = 7;</code>
+       */
+      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
+        if (serviceIdBuilder_ != null) {
+          return serviceIdBuilder_.getMessageOrBuilder();
+        } else {
+          return serviceId_ == null ?
+              context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+        }
+      }
+      /**
+       * <code>.context.ServiceId service_id = 7;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
+          getServiceIdFieldBuilder() {
+        if (serviceIdBuilder_ == null) {
+          serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
+                  getServiceId(),
+                  getParentForChildren(),
+                  isClean());
+          serviceId_ = null;
+        }
+        return serviceIdBuilder_;
+      }
+
+      private context.ContextOuterClass.SliceId sliceId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdBuilder_;
+      /**
+       * <code>.context.SliceId slice_id = 8;</code>
+       * @return Whether the sliceId field is set.
+       */
+      public boolean hasSliceId() {
+        return sliceIdBuilder_ != null || sliceId_ != null;
+      }
+      /**
+       * <code>.context.SliceId slice_id = 8;</code>
+       * @return The sliceId.
+       */
+      public context.ContextOuterClass.SliceId getSliceId() {
+        if (sliceIdBuilder_ == null) {
+          return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+        } else {
+          return sliceIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>.context.SliceId slice_id = 8;</code>
+       */
+      public Builder setSliceId(context.ContextOuterClass.SliceId value) {
+        if (sliceIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          sliceId_ = value;
+          onChanged();
+        } else {
+          sliceIdBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.SliceId slice_id = 8;</code>
+       */
+      public Builder setSliceId(
+          context.ContextOuterClass.SliceId.Builder builderForValue) {
+        if (sliceIdBuilder_ == null) {
+          sliceId_ = builderForValue.build();
+          onChanged();
+        } else {
+          sliceIdBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.SliceId slice_id = 8;</code>
+       */
+      public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
+        if (sliceIdBuilder_ == null) {
+          if (sliceId_ != null) {
+            sliceId_ =
+              context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
+          } else {
+            sliceId_ = value;
+          }
+          onChanged();
+        } else {
+          sliceIdBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.SliceId slice_id = 8;</code>
+       */
+      public Builder clearSliceId() {
+        if (sliceIdBuilder_ == null) {
+          sliceId_ = null;
+          onChanged();
+        } else {
+          sliceId_ = null;
+          sliceIdBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.SliceId slice_id = 8;</code>
+       */
+      public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
+        
+        onChanged();
+        return getSliceIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.SliceId slice_id = 8;</code>
+       */
+      public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
+        if (sliceIdBuilder_ != null) {
+          return sliceIdBuilder_.getMessageOrBuilder();
+        } else {
+          return sliceId_ == null ?
+              context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+        }
+      }
+      /**
+       * <code>.context.SliceId slice_id = 8;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> 
+          getSliceIdFieldBuilder() {
+        if (sliceIdBuilder_ == null) {
+          sliceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(
+                  getSliceId(),
+                  getParentForChildren(),
+                  isClean());
+          sliceId_ = null;
+        }
+        return sliceIdBuilder_;
+      }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
       // @@protoc_insertion_point(builder_scope:monitoring.KpiDescriptor)
     }
 
@@ -1501,140 +2079,61 @@ public final class Monitoring {
 
   }
 
-  public interface BundleKpiDescriptorOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.BundleKpiDescriptor)
+  public interface MonitorKpiRequestOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:monitoring.MonitorKpiRequest)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>string kpi_description = 1;</code>
-     * @return The kpiDescription.
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
+     * @return Whether the kpiId field is set.
      */
-    java.lang.String getKpiDescription();
+    boolean hasKpiId();
     /**
-     * <code>string kpi_description = 1;</code>
-     * @return The bytes for kpiDescription.
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
+     * @return The kpiId.
      */
-    com.google.protobuf.ByteString
-        getKpiDescriptionBytes();
-
+    monitoring.Monitoring.KpiId getKpiId();
     /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
      */
-    java.util.List<monitoring.Monitoring.KpiId> 
-        getKpiIdListList();
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-     */
-    monitoring.Monitoring.KpiId getKpiIdList(int index);
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-     */
-    int getKpiIdListCount();
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-     */
-    java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-        getKpiIdListOrBuilderList();
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-     */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdListOrBuilder(
-        int index);
-
-    /**
-     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 3;</code>
-     * @return The enum numeric value on the wire for kpiSampleType.
-     */
-    int getKpiSampleTypeValue();
-    /**
-     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 3;</code>
-     * @return The kpiSampleType.
-     */
-    kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType();
-
-    /**
-     * <code>.context.DeviceId device_id = 4;</code>
-     * @return Whether the deviceId field is set.
-     */
-    boolean hasDeviceId();
-    /**
-     * <code>.context.DeviceId device_id = 4;</code>
-     * @return The deviceId.
-     */
-    context.ContextOuterClass.DeviceId getDeviceId();
-    /**
-     * <code>.context.DeviceId device_id = 4;</code>
-     */
-    context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();
-
-    /**
-     * <code>.context.EndPointId endpoint_id = 5;</code>
-     * @return Whether the endpointId field is set.
-     */
-    boolean hasEndpointId();
-    /**
-     * <code>.context.EndPointId endpoint_id = 5;</code>
-     * @return The endpointId.
-     */
-    context.ContextOuterClass.EndPointId getEndpointId();
-    /**
-     * <code>.context.EndPointId endpoint_id = 5;</code>
-     */
-    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();
+    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
 
     /**
-     * <code>.context.ServiceId service_id = 6;</code>
-     * @return Whether the serviceId field is set.
-     */
-    boolean hasServiceId();
-    /**
-     * <code>.context.ServiceId service_id = 6;</code>
-     * @return The serviceId.
-     */
-    context.ContextOuterClass.ServiceId getServiceId();
-    /**
-     * <code>.context.ServiceId service_id = 6;</code>
+     * <code>float monitoring_window_s = 2;</code>
+     * @return The monitoringWindowS.
      */
-    context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();
+    float getMonitoringWindowS();
 
     /**
-     * <code>.context.SliceId slice_id = 7;</code>
-     * @return Whether the sliceId field is set.
-     */
-    boolean hasSliceId();
-    /**
-     * <code>.context.SliceId slice_id = 7;</code>
-     * @return The sliceId.
-     */
-    context.ContextOuterClass.SliceId getSliceId();
-    /**
-     * <code>.context.SliceId slice_id = 7;</code>
+     * <pre>
+     * Pending add field to reflect Available Device Protocols
+     * </pre>
+     *
+     * <code>float sampling_rate_s = 3;</code>
+     * @return The samplingRateS.
      */
-    context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder();
+    float getSamplingRateS();
   }
   /**
-   * Protobuf type {@code monitoring.BundleKpiDescriptor}
+   * Protobuf type {@code monitoring.MonitorKpiRequest}
    */
-  public static final class BundleKpiDescriptor extends
+  public static final class MonitorKpiRequest extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.BundleKpiDescriptor)
-      BundleKpiDescriptorOrBuilder {
+      // @@protoc_insertion_point(message_implements:monitoring.MonitorKpiRequest)
+      MonitorKpiRequestOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use BundleKpiDescriptor.newBuilder() to construct.
-    private BundleKpiDescriptor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use MonitorKpiRequest.newBuilder() to construct.
+    private MonitorKpiRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private BundleKpiDescriptor() {
-      kpiDescription_ = "";
-      kpiIdList_ = java.util.Collections.emptyList();
-      kpiSampleType_ = 0;
+    private MonitorKpiRequest() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new BundleKpiDescriptor();
+      return new MonitorKpiRequest();
     }
 
     @java.lang.Override
@@ -1642,7 +2141,7 @@ public final class Monitoring {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private BundleKpiDescriptor(
+    private MonitorKpiRequest(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -1650,7 +2149,6 @@ public final class Monitoring {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -1662,76 +2160,26 @@ public final class Monitoring {
               done = true;
               break;
             case 10: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              kpiDescription_ = s;
-              break;
-            }
-            case 18: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                kpiIdList_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              kpiIdList_.add(
-                  input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry));
-              break;
-            }
-            case 24: {
-              int rawValue = input.readEnum();
-
-              kpiSampleType_ = rawValue;
-              break;
-            }
-            case 34: {
-              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
-              if (deviceId_ != null) {
-                subBuilder = deviceId_.toBuilder();
-              }
-              deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(deviceId_);
-                deviceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 42: {
-              context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-              if (endpointId_ != null) {
-                subBuilder = endpointId_.toBuilder();
+              monitoring.Monitoring.KpiId.Builder subBuilder = null;
+              if (kpiId_ != null) {
+                subBuilder = kpiId_.toBuilder();
               }
-              endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
               if (subBuilder != null) {
-                subBuilder.mergeFrom(endpointId_);
-                endpointId_ = subBuilder.buildPartial();
+                subBuilder.mergeFrom(kpiId_);
+                kpiId_ = subBuilder.buildPartial();
               }
 
               break;
             }
-            case 50: {
-              context.ContextOuterClass.ServiceId.Builder subBuilder = null;
-              if (serviceId_ != null) {
-                subBuilder = serviceId_.toBuilder();
-              }
-              serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(serviceId_);
-                serviceId_ = subBuilder.buildPartial();
-              }
+            case 21: {
 
+              monitoringWindowS_ = input.readFloat();
               break;
             }
-            case 58: {
-              context.ContextOuterClass.SliceId.Builder subBuilder = null;
-              if (sliceId_ != null) {
-                subBuilder = sliceId_.toBuilder();
-              }
-              sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(sliceId_);
-                sliceId_ = subBuilder.buildPartial();
-              }
+            case 29: {
 
+              samplingRateS_ = input.readFloat();
               break;
             }
             default: {
@@ -1749,261 +2197,97 @@ public final class Monitoring {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          kpiIdList_ = java.util.Collections.unmodifiableList(kpiIdList_);
-        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_BundleKpiDescriptor_descriptor;
+      return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_BundleKpiDescriptor_fieldAccessorTable
+      return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.BundleKpiDescriptor.class, monitoring.Monitoring.BundleKpiDescriptor.Builder.class);
+              monitoring.Monitoring.MonitorKpiRequest.class, monitoring.Monitoring.MonitorKpiRequest.Builder.class);
     }
 
-    public static final int KPI_DESCRIPTION_FIELD_NUMBER = 1;
-    private volatile java.lang.Object kpiDescription_;
-    /**
-     * <code>string kpi_description = 1;</code>
-     * @return The kpiDescription.
-     */
-    @java.lang.Override
-    public java.lang.String getKpiDescription() {
-      java.lang.Object ref = kpiDescription_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        kpiDescription_ = s;
-        return s;
-      }
-    }
+    public static final int KPI_ID_FIELD_NUMBER = 1;
+    private monitoring.Monitoring.KpiId kpiId_;
     /**
-     * <code>string kpi_description = 1;</code>
-     * @return The bytes for kpiDescription.
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
+     * @return Whether the kpiId field is set.
      */
     @java.lang.Override
-    public com.google.protobuf.ByteString
-        getKpiDescriptionBytes() {
-      java.lang.Object ref = kpiDescription_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        kpiDescription_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
+    public boolean hasKpiId() {
+      return kpiId_ != null;
     }
-
-    public static final int KPI_ID_LIST_FIELD_NUMBER = 2;
-    private java.util.List<monitoring.Monitoring.KpiId> kpiIdList_;
     /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
+     * @return The kpiId.
      */
     @java.lang.Override
-    public java.util.List<monitoring.Monitoring.KpiId> getKpiIdListList() {
-      return kpiIdList_;
+    public monitoring.Monitoring.KpiId getKpiId() {
+      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
     }
     /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-        getKpiIdListOrBuilderList() {
-      return kpiIdList_;
+    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+      return getKpiId();
     }
+
+    public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2;
+    private float monitoringWindowS_;
     /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
+     * <code>float monitoring_window_s = 2;</code>
+     * @return The monitoringWindowS.
      */
     @java.lang.Override
-    public int getKpiIdListCount() {
-      return kpiIdList_.size();
+    public float getMonitoringWindowS() {
+      return monitoringWindowS_;
     }
+
+    public static final int SAMPLING_RATE_S_FIELD_NUMBER = 3;
+    private float samplingRateS_;
     /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
+     * <pre>
+     * Pending add field to reflect Available Device Protocols
+     * </pre>
+     *
+     * <code>float sampling_rate_s = 3;</code>
+     * @return The samplingRateS.
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiIdList(int index) {
-      return kpiIdList_.get(index);
+    public float getSamplingRateS() {
+      return samplingRateS_;
     }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-     */
+
+    private byte memoizedIsInitialized = -1;
     @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdListOrBuilder(
-        int index) {
-      return kpiIdList_.get(index);
-    }
-
-    public static final int KPI_SAMPLE_TYPE_FIELD_NUMBER = 3;
-    private int kpiSampleType_;
-    /**
-     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 3;</code>
-     * @return The enum numeric value on the wire for kpiSampleType.
-     */
-    @java.lang.Override public int getKpiSampleTypeValue() {
-      return kpiSampleType_;
-    }
-    /**
-     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 3;</code>
-     * @return The kpiSampleType.
-     */
-    @java.lang.Override public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() {
-      @SuppressWarnings("deprecation")
-      kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(kpiSampleType_);
-      return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
-    }
-
-    public static final int DEVICE_ID_FIELD_NUMBER = 4;
-    private context.ContextOuterClass.DeviceId deviceId_;
-    /**
-     * <code>.context.DeviceId device_id = 4;</code>
-     * @return Whether the deviceId field is set.
-     */
-    @java.lang.Override
-    public boolean hasDeviceId() {
-      return deviceId_ != null;
-    }
-    /**
-     * <code>.context.DeviceId device_id = 4;</code>
-     * @return The deviceId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceId getDeviceId() {
-      return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-    }
-    /**
-     * <code>.context.DeviceId device_id = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-      return getDeviceId();
-    }
-
-    public static final int ENDPOINT_ID_FIELD_NUMBER = 5;
-    private context.ContextOuterClass.EndPointId endpointId_;
-    /**
-     * <code>.context.EndPointId endpoint_id = 5;</code>
-     * @return Whether the endpointId field is set.
-     */
-    @java.lang.Override
-    public boolean hasEndpointId() {
-      return endpointId_ != null;
-    }
-    /**
-     * <code>.context.EndPointId endpoint_id = 5;</code>
-     * @return The endpointId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointId getEndpointId() {
-      return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-    }
-    /**
-     * <code>.context.EndPointId endpoint_id = 5;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-      return getEndpointId();
-    }
-
-    public static final int SERVICE_ID_FIELD_NUMBER = 6;
-    private context.ContextOuterClass.ServiceId serviceId_;
-    /**
-     * <code>.context.ServiceId service_id = 6;</code>
-     * @return Whether the serviceId field is set.
-     */
-    @java.lang.Override
-    public boolean hasServiceId() {
-      return serviceId_ != null;
-    }
-    /**
-     * <code>.context.ServiceId service_id = 6;</code>
-     * @return The serviceId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceId getServiceId() {
-      return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-    }
-    /**
-     * <code>.context.ServiceId service_id = 6;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-      return getServiceId();
-    }
-
-    public static final int SLICE_ID_FIELD_NUMBER = 7;
-    private context.ContextOuterClass.SliceId sliceId_;
-    /**
-     * <code>.context.SliceId slice_id = 7;</code>
-     * @return Whether the sliceId field is set.
-     */
-    @java.lang.Override
-    public boolean hasSliceId() {
-      return sliceId_ != null;
-    }
-    /**
-     * <code>.context.SliceId slice_id = 7;</code>
-     * @return The sliceId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceId getSliceId() {
-      return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
-    }
-    /**
-     * <code>.context.SliceId slice_id = 7;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-      return getSliceId();
-    }
-
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      memoizedIsInitialized = 1;
-      return true;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      memoizedIsInitialized = 1;
+      return true;
     }
 
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!getKpiDescriptionBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, kpiDescription_);
-      }
-      for (int i = 0; i < kpiIdList_.size(); i++) {
-        output.writeMessage(2, kpiIdList_.get(i));
-      }
-      if (kpiSampleType_ != kpi_sample_types.KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_UNKNOWN.getNumber()) {
-        output.writeEnum(3, kpiSampleType_);
-      }
-      if (deviceId_ != null) {
-        output.writeMessage(4, getDeviceId());
-      }
-      if (endpointId_ != null) {
-        output.writeMessage(5, getEndpointId());
+      if (kpiId_ != null) {
+        output.writeMessage(1, getKpiId());
       }
-      if (serviceId_ != null) {
-        output.writeMessage(6, getServiceId());
+      if (monitoringWindowS_ != 0F) {
+        output.writeFloat(2, monitoringWindowS_);
       }
-      if (sliceId_ != null) {
-        output.writeMessage(7, getSliceId());
+      if (samplingRateS_ != 0F) {
+        output.writeFloat(3, samplingRateS_);
       }
       unknownFields.writeTo(output);
     }
@@ -2014,32 +2298,17 @@ public final class Monitoring {
       if (size != -1) return size;
 
       size = 0;
-      if (!getKpiDescriptionBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, kpiDescription_);
-      }
-      for (int i = 0; i < kpiIdList_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, kpiIdList_.get(i));
-      }
-      if (kpiSampleType_ != kpi_sample_types.KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_UNKNOWN.getNumber()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(3, kpiSampleType_);
-      }
-      if (deviceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, getDeviceId());
-      }
-      if (endpointId_ != null) {
+      if (kpiId_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, getEndpointId());
+          .computeMessageSize(1, getKpiId());
       }
-      if (serviceId_ != null) {
+      if (monitoringWindowS_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(6, getServiceId());
+          .computeFloatSize(2, monitoringWindowS_);
       }
-      if (sliceId_ != null) {
+      if (samplingRateS_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(7, getSliceId());
+          .computeFloatSize(3, samplingRateS_);
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -2051,36 +2320,22 @@ public final class Monitoring {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof monitoring.Monitoring.BundleKpiDescriptor)) {
+      if (!(obj instanceof monitoring.Monitoring.MonitorKpiRequest)) {
         return super.equals(obj);
       }
-      monitoring.Monitoring.BundleKpiDescriptor other = (monitoring.Monitoring.BundleKpiDescriptor) obj;
+      monitoring.Monitoring.MonitorKpiRequest other = (monitoring.Monitoring.MonitorKpiRequest) obj;
 
-      if (!getKpiDescription()
-          .equals(other.getKpiDescription())) return false;
-      if (!getKpiIdListList()
-          .equals(other.getKpiIdListList())) return false;
-      if (kpiSampleType_ != other.kpiSampleType_) return false;
-      if (hasDeviceId() != other.hasDeviceId()) return false;
-      if (hasDeviceId()) {
-        if (!getDeviceId()
-            .equals(other.getDeviceId())) return false;
-      }
-      if (hasEndpointId() != other.hasEndpointId()) return false;
-      if (hasEndpointId()) {
-        if (!getEndpointId()
-            .equals(other.getEndpointId())) return false;
-      }
-      if (hasServiceId() != other.hasServiceId()) return false;
-      if (hasServiceId()) {
-        if (!getServiceId()
-            .equals(other.getServiceId())) return false;
-      }
-      if (hasSliceId() != other.hasSliceId()) return false;
-      if (hasSliceId()) {
-        if (!getSliceId()
-            .equals(other.getSliceId())) return false;
+      if (hasKpiId() != other.hasKpiId()) return false;
+      if (hasKpiId()) {
+        if (!getKpiId()
+            .equals(other.getKpiId())) return false;
       }
+      if (java.lang.Float.floatToIntBits(getMonitoringWindowS())
+          != java.lang.Float.floatToIntBits(
+              other.getMonitoringWindowS())) return false;
+      if (java.lang.Float.floatToIntBits(getSamplingRateS())
+          != java.lang.Float.floatToIntBits(
+              other.getSamplingRateS())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -2092,98 +2347,84 @@ public final class Monitoring {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + KPI_DESCRIPTION_FIELD_NUMBER;
-      hash = (53 * hash) + getKpiDescription().hashCode();
-      if (getKpiIdListCount() > 0) {
-        hash = (37 * hash) + KPI_ID_LIST_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiIdListList().hashCode();
-      }
-      hash = (37 * hash) + KPI_SAMPLE_TYPE_FIELD_NUMBER;
-      hash = (53 * hash) + kpiSampleType_;
-      if (hasDeviceId()) {
-        hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getDeviceId().hashCode();
-      }
-      if (hasEndpointId()) {
-        hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getEndpointId().hashCode();
-      }
-      if (hasServiceId()) {
-        hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getServiceId().hashCode();
-      }
-      if (hasSliceId()) {
-        hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getSliceId().hashCode();
+      if (hasKpiId()) {
+        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getKpiId().hashCode();
       }
+      hash = (37 * hash) + MONITORING_WINDOW_S_FIELD_NUMBER;
+      hash = (53 * hash) + java.lang.Float.floatToIntBits(
+          getMonitoringWindowS());
+      hash = (37 * hash) + SAMPLING_RATE_S_FIELD_NUMBER;
+      hash = (53 * hash) + java.lang.Float.floatToIntBits(
+          getSamplingRateS());
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static monitoring.Monitoring.BundleKpiDescriptor parseFrom(
+    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.BundleKpiDescriptor parseFrom(
+    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.BundleKpiDescriptor parseFrom(
+    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.BundleKpiDescriptor parseFrom(
+    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.BundleKpiDescriptor parseFrom(byte[] data)
+    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.BundleKpiDescriptor parseFrom(
+    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.BundleKpiDescriptor parseFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.BundleKpiDescriptor parseFrom(
+    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.BundleKpiDescriptor parseDelimitedFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.MonitorKpiRequest parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.BundleKpiDescriptor parseDelimitedFrom(
+    public static monitoring.Monitoring.MonitorKpiRequest parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.BundleKpiDescriptor parseFrom(
+    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.BundleKpiDescriptor parseFrom(
+    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -2196,7 +2437,7 @@ public final class Monitoring {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(monitoring.Monitoring.BundleKpiDescriptor prototype) {
+    public static Builder newBuilder(monitoring.Monitoring.MonitorKpiRequest prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -2212,26 +2453,26 @@ public final class Monitoring {
       return builder;
     }
     /**
-     * Protobuf type {@code monitoring.BundleKpiDescriptor}
+     * Protobuf type {@code monitoring.MonitorKpiRequest}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.BundleKpiDescriptor)
-        monitoring.Monitoring.BundleKpiDescriptorOrBuilder {
+        // @@protoc_insertion_point(builder_implements:monitoring.MonitorKpiRequest)
+        monitoring.Monitoring.MonitorKpiRequestOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_BundleKpiDescriptor_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_BundleKpiDescriptor_fieldAccessorTable
+        return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.BundleKpiDescriptor.class, monitoring.Monitoring.BundleKpiDescriptor.Builder.class);
+                monitoring.Monitoring.MonitorKpiRequest.class, monitoring.Monitoring.MonitorKpiRequest.Builder.class);
       }
 
-      // Construct using monitoring.Monitoring.BundleKpiDescriptor.newBuilder()
+      // Construct using monitoring.Monitoring.MonitorKpiRequest.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -2244,63 +2485,38 @@ public final class Monitoring {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getKpiIdListFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        kpiDescription_ = "";
-
-        if (kpiIdListBuilder_ == null) {
-          kpiIdList_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = null;
         } else {
-          kpiIdListBuilder_.clear();
+          kpiId_ = null;
+          kpiIdBuilder_ = null;
         }
-        kpiSampleType_ = 0;
+        monitoringWindowS_ = 0F;
+
+        samplingRateS_ = 0F;
 
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
-        } else {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
-        }
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
-        } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
-        }
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = null;
-        } else {
-          sliceId_ = null;
-          sliceIdBuilder_ = null;
-        }
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_BundleKpiDescriptor_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor;
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.BundleKpiDescriptor getDefaultInstanceForType() {
-        return monitoring.Monitoring.BundleKpiDescriptor.getDefaultInstance();
+      public monitoring.Monitoring.MonitorKpiRequest getDefaultInstanceForType() {
+        return monitoring.Monitoring.MonitorKpiRequest.getDefaultInstance();
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.BundleKpiDescriptor build() {
-        monitoring.Monitoring.BundleKpiDescriptor result = buildPartial();
+      public monitoring.Monitoring.MonitorKpiRequest build() {
+        monitoring.Monitoring.MonitorKpiRequest result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -2308,40 +2524,15 @@ public final class Monitoring {
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.BundleKpiDescriptor buildPartial() {
-        monitoring.Monitoring.BundleKpiDescriptor result = new monitoring.Monitoring.BundleKpiDescriptor(this);
-        int from_bitField0_ = bitField0_;
-        result.kpiDescription_ = kpiDescription_;
-        if (kpiIdListBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            kpiIdList_ = java.util.Collections.unmodifiableList(kpiIdList_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.kpiIdList_ = kpiIdList_;
-        } else {
-          result.kpiIdList_ = kpiIdListBuilder_.build();
-        }
-        result.kpiSampleType_ = kpiSampleType_;
-        if (deviceIdBuilder_ == null) {
-          result.deviceId_ = deviceId_;
-        } else {
-          result.deviceId_ = deviceIdBuilder_.build();
-        }
-        if (endpointIdBuilder_ == null) {
-          result.endpointId_ = endpointId_;
-        } else {
-          result.endpointId_ = endpointIdBuilder_.build();
-        }
-        if (serviceIdBuilder_ == null) {
-          result.serviceId_ = serviceId_;
-        } else {
-          result.serviceId_ = serviceIdBuilder_.build();
-        }
-        if (sliceIdBuilder_ == null) {
-          result.sliceId_ = sliceId_;
+      public monitoring.Monitoring.MonitorKpiRequest buildPartial() {
+        monitoring.Monitoring.MonitorKpiRequest result = new monitoring.Monitoring.MonitorKpiRequest(this);
+        if (kpiIdBuilder_ == null) {
+          result.kpiId_ = kpiId_;
         } else {
-          result.sliceId_ = sliceIdBuilder_.build();
+          result.kpiId_ = kpiIdBuilder_.build();
         }
+        result.monitoringWindowS_ = monitoringWindowS_;
+        result.samplingRateS_ = samplingRateS_;
         onBuilt();
         return result;
       }
@@ -2380,60 +2571,24 @@ public final class Monitoring {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.BundleKpiDescriptor) {
-          return mergeFrom((monitoring.Monitoring.BundleKpiDescriptor)other);
+        if (other instanceof monitoring.Monitoring.MonitorKpiRequest) {
+          return mergeFrom((monitoring.Monitoring.MonitorKpiRequest)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(monitoring.Monitoring.BundleKpiDescriptor other) {
-        if (other == monitoring.Monitoring.BundleKpiDescriptor.getDefaultInstance()) return this;
-        if (!other.getKpiDescription().isEmpty()) {
-          kpiDescription_ = other.kpiDescription_;
-          onChanged();
-        }
-        if (kpiIdListBuilder_ == null) {
-          if (!other.kpiIdList_.isEmpty()) {
-            if (kpiIdList_.isEmpty()) {
-              kpiIdList_ = other.kpiIdList_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureKpiIdListIsMutable();
-              kpiIdList_.addAll(other.kpiIdList_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.kpiIdList_.isEmpty()) {
-            if (kpiIdListBuilder_.isEmpty()) {
-              kpiIdListBuilder_.dispose();
-              kpiIdListBuilder_ = null;
-              kpiIdList_ = other.kpiIdList_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              kpiIdListBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getKpiIdListFieldBuilder() : null;
-            } else {
-              kpiIdListBuilder_.addAllMessages(other.kpiIdList_);
-            }
-          }
-        }
-        if (other.kpiSampleType_ != 0) {
-          setKpiSampleTypeValue(other.getKpiSampleTypeValue());
-        }
-        if (other.hasDeviceId()) {
-          mergeDeviceId(other.getDeviceId());
-        }
-        if (other.hasEndpointId()) {
-          mergeEndpointId(other.getEndpointId());
+      public Builder mergeFrom(monitoring.Monitoring.MonitorKpiRequest other) {
+        if (other == monitoring.Monitoring.MonitorKpiRequest.getDefaultInstance()) return this;
+        if (other.hasKpiId()) {
+          mergeKpiId(other.getKpiId());
         }
-        if (other.hasServiceId()) {
-          mergeServiceId(other.getServiceId());
+        if (other.getMonitoringWindowS() != 0F) {
+          setMonitoringWindowS(other.getMonitoringWindowS());
         }
-        if (other.hasSliceId()) {
-          mergeSliceId(other.getSliceId());
+        if (other.getSamplingRateS() != 0F) {
+          setSamplingRateS(other.getSamplingRateS());
         }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
@@ -2450,11 +2605,11 @@ public final class Monitoring {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        monitoring.Monitoring.BundleKpiDescriptor parsedMessage = null;
+        monitoring.Monitoring.MonitorKpiRequest parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.BundleKpiDescriptor) e.getUnfinishedMessage();
+          parsedMessage = (monitoring.Monitoring.MonitorKpiRequest) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -2463,1055 +2618,377 @@ public final class Monitoring {
         }
         return this;
       }
-      private int bitField0_;
 
-      private java.lang.Object kpiDescription_ = "";
+      private monitoring.Monitoring.KpiId kpiId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
       /**
-       * <code>string kpi_description = 1;</code>
-       * @return The kpiDescription.
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       * @return Whether the kpiId field is set.
        */
-      public java.lang.String getKpiDescription() {
-        java.lang.Object ref = kpiDescription_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          kpiDescription_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
+      public boolean hasKpiId() {
+        return kpiIdBuilder_ != null || kpiId_ != null;
       }
       /**
-       * <code>string kpi_description = 1;</code>
-       * @return The bytes for kpiDescription.
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       * @return The kpiId.
        */
-      public com.google.protobuf.ByteString
-          getKpiDescriptionBytes() {
-        java.lang.Object ref = kpiDescription_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          kpiDescription_ = b;
-          return b;
+      public monitoring.Monitoring.KpiId getKpiId() {
+        if (kpiIdBuilder_ == null) {
+          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         } else {
-          return (com.google.protobuf.ByteString) ref;
+          return kpiIdBuilder_.getMessage();
         }
       }
       /**
-       * <code>string kpi_description = 1;</code>
-       * @param value The kpiDescription to set.
-       * @return This builder for chaining.
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public Builder setKpiDescription(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        kpiDescription_ = value;
-        onChanged();
+      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
+        if (kpiIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          kpiId_ = value;
+          onChanged();
+        } else {
+          kpiIdBuilder_.setMessage(value);
+        }
+
         return this;
       }
       /**
-       * <code>string kpi_description = 1;</code>
-       * @return This builder for chaining.
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public Builder clearKpiDescription() {
-        
-        kpiDescription_ = getDefaultInstance().getKpiDescription();
-        onChanged();
+      public Builder setKpiId(
+          monitoring.Monitoring.KpiId.Builder builderForValue) {
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = builderForValue.build();
+          onChanged();
+        } else {
+          kpiIdBuilder_.setMessage(builderForValue.build());
+        }
+
         return this;
       }
       /**
-       * <code>string kpi_description = 1;</code>
-       * @param value The bytes for kpiDescription to set.
-       * @return This builder for chaining.
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public Builder setKpiDescriptionBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        kpiDescription_ = value;
-        onChanged();
-        return this;
-      }
+      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
+        if (kpiIdBuilder_ == null) {
+          if (kpiId_ != null) {
+            kpiId_ =
+              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+          } else {
+            kpiId_ = value;
+          }
+          onChanged();
+        } else {
+          kpiIdBuilder_.mergeFrom(value);
+        }
 
-      private java.util.List<monitoring.Monitoring.KpiId> kpiIdList_ =
-        java.util.Collections.emptyList();
-      private void ensureKpiIdListIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          kpiIdList_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>(kpiIdList_);
-          bitField0_ |= 0x00000001;
-         }
+        return this;
       }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdListBuilder_;
-
       /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public java.util.List<monitoring.Monitoring.KpiId> getKpiIdListList() {
-        if (kpiIdListBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(kpiIdList_);
+      public Builder clearKpiId() {
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = null;
+          onChanged();
         } else {
-          return kpiIdListBuilder_.getMessageList();
+          kpiId_ = null;
+          kpiIdBuilder_ = null;
         }
+
+        return this;
       }
       /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public int getKpiIdListCount() {
-        if (kpiIdListBuilder_ == null) {
-          return kpiIdList_.size();
-        } else {
-          return kpiIdListBuilder_.getCount();
-        }
+      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+        
+        onChanged();
+        return getKpiIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public monitoring.Monitoring.KpiId getKpiIdList(int index) {
-        if (kpiIdListBuilder_ == null) {
-          return kpiIdList_.get(index);
-        } else {
-          return kpiIdListBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-       */
-      public Builder setKpiIdList(
-          int index, monitoring.Monitoring.KpiId value) {
-        if (kpiIdListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIdListIsMutable();
-          kpiIdList_.set(index, value);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-       */
-      public Builder setKpiIdList(
-          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdListBuilder_ == null) {
-          ensureKpiIdListIsMutable();
-          kpiIdList_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdListBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-       */
-      public Builder addKpiIdList(monitoring.Monitoring.KpiId value) {
-        if (kpiIdListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIdListIsMutable();
-          kpiIdList_.add(value);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-       */
-      public Builder addKpiIdList(
-          int index, monitoring.Monitoring.KpiId value) {
-        if (kpiIdListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIdListIsMutable();
-          kpiIdList_.add(index, value);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-       */
-      public Builder addKpiIdList(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdListBuilder_ == null) {
-          ensureKpiIdListIsMutable();
-          kpiIdList_.add(builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdListBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-       */
-      public Builder addKpiIdList(
-          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdListBuilder_ == null) {
-          ensureKpiIdListIsMutable();
-          kpiIdList_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdListBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-       */
-      public Builder addAllKpiIdList(
-          java.lang.Iterable<? extends monitoring.Monitoring.KpiId> values) {
-        if (kpiIdListBuilder_ == null) {
-          ensureKpiIdListIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, kpiIdList_);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-       */
-      public Builder clearKpiIdList() {
-        if (kpiIdListBuilder_ == null) {
-          kpiIdList_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-       */
-      public Builder removeKpiIdList(int index) {
-        if (kpiIdListBuilder_ == null) {
-          ensureKpiIdListIsMutable();
-          kpiIdList_.remove(index);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdListBuilder(
-          int index) {
-        return getKpiIdListFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdListOrBuilder(
-          int index) {
-        if (kpiIdListBuilder_ == null) {
-          return kpiIdList_.get(index);  } else {
-          return kpiIdListBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-       */
-      public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-           getKpiIdListOrBuilderList() {
-        if (kpiIdListBuilder_ != null) {
-          return kpiIdListBuilder_.getMessageOrBuilderList();
+      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+        if (kpiIdBuilder_ != null) {
+          return kpiIdBuilder_.getMessageOrBuilder();
         } else {
-          return java.util.Collections.unmodifiableList(kpiIdList_);
+          return kpiId_ == null ?
+              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         }
       }
       /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder addKpiIdListBuilder() {
-        return getKpiIdListFieldBuilder().addBuilder(
-            monitoring.Monitoring.KpiId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder addKpiIdListBuilder(
-          int index) {
-        return getKpiIdListFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.KpiId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 2;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public java.util.List<monitoring.Monitoring.KpiId.Builder> 
-           getKpiIdListBuilderList() {
-        return getKpiIdListFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
+      private com.google.protobuf.SingleFieldBuilderV3<
           monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdListFieldBuilder() {
-        if (kpiIdListBuilder_ == null) {
-          kpiIdListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+          getKpiIdFieldBuilder() {
+        if (kpiIdBuilder_ == null) {
+          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  kpiIdList_,
-                  ((bitField0_ & 0x00000001) != 0),
+                  getKpiId(),
                   getParentForChildren(),
                   isClean());
-          kpiIdList_ = null;
+          kpiId_ = null;
         }
-        return kpiIdListBuilder_;
+        return kpiIdBuilder_;
       }
 
-      private int kpiSampleType_ = 0;
+      private float monitoringWindowS_ ;
       /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 3;</code>
-       * @return The enum numeric value on the wire for kpiSampleType.
+       * <code>float monitoring_window_s = 2;</code>
+       * @return The monitoringWindowS.
        */
-      @java.lang.Override public int getKpiSampleTypeValue() {
-        return kpiSampleType_;
+      @java.lang.Override
+      public float getMonitoringWindowS() {
+        return monitoringWindowS_;
       }
       /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 3;</code>
-       * @param value The enum numeric value on the wire for kpiSampleType to set.
+       * <code>float monitoring_window_s = 2;</code>
+       * @param value The monitoringWindowS to set.
        * @return This builder for chaining.
        */
-      public Builder setKpiSampleTypeValue(int value) {
+      public Builder setMonitoringWindowS(float value) {
         
-        kpiSampleType_ = value;
+        monitoringWindowS_ = value;
         onChanged();
         return this;
       }
       /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 3;</code>
-       * @return The kpiSampleType.
+       * <code>float monitoring_window_s = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearMonitoringWindowS() {
+        
+        monitoringWindowS_ = 0F;
+        onChanged();
+        return this;
+      }
+
+      private float samplingRateS_ ;
+      /**
+       * <pre>
+       * Pending add field to reflect Available Device Protocols
+       * </pre>
+       *
+       * <code>float sampling_rate_s = 3;</code>
+       * @return The samplingRateS.
        */
       @java.lang.Override
-      public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() {
-        @SuppressWarnings("deprecation")
-        kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(kpiSampleType_);
-        return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
+      public float getSamplingRateS() {
+        return samplingRateS_;
       }
       /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 3;</code>
-       * @param value The kpiSampleType to set.
+       * <pre>
+       * Pending add field to reflect Available Device Protocols
+       * </pre>
+       *
+       * <code>float sampling_rate_s = 3;</code>
+       * @param value The samplingRateS to set.
        * @return This builder for chaining.
        */
-      public Builder setKpiSampleType(kpi_sample_types.KpiSampleTypes.KpiSampleType value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
+      public Builder setSamplingRateS(float value) {
         
-        kpiSampleType_ = value.getNumber();
+        samplingRateS_ = value;
         onChanged();
         return this;
       }
       /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 3;</code>
+       * <pre>
+       * Pending add field to reflect Available Device Protocols
+       * </pre>
+       *
+       * <code>float sampling_rate_s = 3;</code>
        * @return This builder for chaining.
        */
-      public Builder clearKpiSampleType() {
+      public Builder clearSamplingRateS() {
         
-        kpiSampleType_ = 0;
+        samplingRateS_ = 0F;
         onChanged();
         return this;
       }
-
-      private context.ContextOuterClass.DeviceId deviceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;
-      /**
-       * <code>.context.DeviceId device_id = 4;</code>
-       * @return Whether the deviceId field is set.
-       */
-      public boolean hasDeviceId() {
-        return deviceIdBuilder_ != null || deviceId_ != null;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 4;</code>
-       * @return The deviceId.
-       */
-      public context.ContextOuterClass.DeviceId getDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-        } else {
-          return deviceIdBuilder_.getMessage();
-        }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
       }
-      /**
-       * <code>.context.DeviceId device_id = 4;</code>
-       */
-      public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          deviceId_ = value;
-          onChanged();
-        } else {
-          deviceIdBuilder_.setMessage(value);
-        }
 
-        return this;
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
       }
-      /**
-       * <code>.context.DeviceId device_id = 4;</code>
-       */
-      public Builder setDeviceId(
-          context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          deviceIdBuilder_.setMessage(builderForValue.build());
-        }
 
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 4;</code>
-       */
-      public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
-          if (deviceId_ != null) {
-            deviceId_ =
-              context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
-          } else {
-            deviceId_ = value;
-          }
-          onChanged();
-        } else {
-          deviceIdBuilder_.mergeFrom(value);
-        }
 
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 4;</code>
-       */
-      public Builder clearDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
-          onChanged();
-        } else {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
-        }
+      // @@protoc_insertion_point(builder_scope:monitoring.MonitorKpiRequest)
+    }
 
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 4;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-        
-        onChanged();
-        return getDeviceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.DeviceId device_id = 4;</code>
-       */
-      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-        if (deviceIdBuilder_ != null) {
-          return deviceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return deviceId_ == null ?
-              context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-        }
-      }
-      /**
-       * <code>.context.DeviceId device_id = 4;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
-          getDeviceIdFieldBuilder() {
-        if (deviceIdBuilder_ == null) {
-          deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
-                  getDeviceId(),
-                  getParentForChildren(),
-                  isClean());
-          deviceId_ = null;
-        }
-        return deviceIdBuilder_;
-      }
+    // @@protoc_insertion_point(class_scope:monitoring.MonitorKpiRequest)
+    private static final monitoring.Monitoring.MonitorKpiRequest DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new monitoring.Monitoring.MonitorKpiRequest();
+    }
 
-      private context.ContextOuterClass.EndPointId endpointId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
-      /**
-       * <code>.context.EndPointId endpoint_id = 5;</code>
-       * @return Whether the endpointId field is set.
-       */
-      public boolean hasEndpointId() {
-        return endpointIdBuilder_ != null || endpointId_ != null;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 5;</code>
-       * @return The endpointId.
-       */
-      public context.ContextOuterClass.EndPointId getEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-        } else {
-          return endpointIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 5;</code>
-       */
-      public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          endpointId_ = value;
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(value);
-        }
+    public static monitoring.Monitoring.MonitorKpiRequest getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
 
-        return this;
+    private static final com.google.protobuf.Parser<MonitorKpiRequest>
+        PARSER = new com.google.protobuf.AbstractParser<MonitorKpiRequest>() {
+      @java.lang.Override
+      public MonitorKpiRequest parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new MonitorKpiRequest(input, extensionRegistry);
       }
-      /**
-       * <code>.context.EndPointId endpoint_id = 5;</code>
-       */
-      public Builder setEndpointId(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = builderForValue.build();
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(builderForValue.build());
-        }
+    };
 
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 5;</code>
-       */
-      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (endpointId_ != null) {
-            endpointId_ =
-              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
-          } else {
-            endpointId_ = value;
-          }
-          onChanged();
-        } else {
-          endpointIdBuilder_.mergeFrom(value);
-        }
+    public static com.google.protobuf.Parser<MonitorKpiRequest> parser() {
+      return PARSER;
+    }
 
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 5;</code>
-       */
-      public Builder clearEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-          onChanged();
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
+    @java.lang.Override
+    public com.google.protobuf.Parser<MonitorKpiRequest> getParserForType() {
+      return PARSER;
+    }
 
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 5;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-        
-        onChanged();
-        return getEndpointIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 5;</code>
-       */
-      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-        if (endpointIdBuilder_ != null) {
-          return endpointIdBuilder_.getMessageOrBuilder();
-        } else {
-          return endpointId_ == null ?
-              context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-        }
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 5;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
-          getEndpointIdFieldBuilder() {
-        if (endpointIdBuilder_ == null) {
-          endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
-                  getEndpointId(),
-                  getParentForChildren(),
-                  isClean());
-          endpointId_ = null;
-        }
-        return endpointIdBuilder_;
-      }
-
-      private context.ContextOuterClass.ServiceId serviceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
-      /**
-       * <code>.context.ServiceId service_id = 6;</code>
-       * @return Whether the serviceId field is set.
-       */
-      public boolean hasServiceId() {
-        return serviceIdBuilder_ != null || serviceId_ != null;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 6;</code>
-       * @return The serviceId.
-       */
-      public context.ContextOuterClass.ServiceId getServiceId() {
-        if (serviceIdBuilder_ == null) {
-          return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-        } else {
-          return serviceIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ServiceId service_id = 6;</code>
-       */
-      public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          serviceId_ = value;
-          onChanged();
-        } else {
-          serviceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 6;</code>
-       */
-      public Builder setServiceId(
-          context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          serviceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 6;</code>
-       */
-      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (serviceId_ != null) {
-            serviceId_ =
-              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
-          } else {
-            serviceId_ = value;
-          }
-          onChanged();
-        } else {
-          serviceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 6;</code>
-       */
-      public Builder clearServiceId() {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
-          onChanged();
-        } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 6;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
-        
-        onChanged();
-        return getServiceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ServiceId service_id = 6;</code>
-       */
-      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-        if (serviceIdBuilder_ != null) {
-          return serviceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return serviceId_ == null ?
-              context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-        }
-      }
-      /**
-       * <code>.context.ServiceId service_id = 6;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
-          getServiceIdFieldBuilder() {
-        if (serviceIdBuilder_ == null) {
-          serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
-                  getServiceId(),
-                  getParentForChildren(),
-                  isClean());
-          serviceId_ = null;
-        }
-        return serviceIdBuilder_;
-      }
-
-      private context.ContextOuterClass.SliceId sliceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdBuilder_;
-      /**
-       * <code>.context.SliceId slice_id = 7;</code>
-       * @return Whether the sliceId field is set.
-       */
-      public boolean hasSliceId() {
-        return sliceIdBuilder_ != null || sliceId_ != null;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 7;</code>
-       * @return The sliceId.
-       */
-      public context.ContextOuterClass.SliceId getSliceId() {
-        if (sliceIdBuilder_ == null) {
-          return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
-        } else {
-          return sliceIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.SliceId slice_id = 7;</code>
-       */
-      public Builder setSliceId(context.ContextOuterClass.SliceId value) {
-        if (sliceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          sliceId_ = value;
-          onChanged();
-        } else {
-          sliceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 7;</code>
-       */
-      public Builder setSliceId(
-          context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          sliceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 7;</code>
-       */
-      public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
-        if (sliceIdBuilder_ == null) {
-          if (sliceId_ != null) {
-            sliceId_ =
-              context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
-          } else {
-            sliceId_ = value;
-          }
-          onChanged();
-        } else {
-          sliceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 7;</code>
-       */
-      public Builder clearSliceId() {
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = null;
-          onChanged();
-        } else {
-          sliceId_ = null;
-          sliceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 7;</code>
-       */
-      public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
-        
-        onChanged();
-        return getSliceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.SliceId slice_id = 7;</code>
-       */
-      public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-        if (sliceIdBuilder_ != null) {
-          return sliceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return sliceId_ == null ?
-              context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
-        }
-      }
-      /**
-       * <code>.context.SliceId slice_id = 7;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> 
-          getSliceIdFieldBuilder() {
-        if (sliceIdBuilder_ == null) {
-          sliceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(
-                  getSliceId(),
-                  getParentForChildren(),
-                  isClean());
-          sliceId_ = null;
-        }
-        return sliceIdBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.BundleKpiDescriptor)
-    }
-
-    // @@protoc_insertion_point(class_scope:monitoring.BundleKpiDescriptor)
-    private static final monitoring.Monitoring.BundleKpiDescriptor DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.BundleKpiDescriptor();
-    }
-
-    public static monitoring.Monitoring.BundleKpiDescriptor getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
-
-    private static final com.google.protobuf.Parser<BundleKpiDescriptor>
-        PARSER = new com.google.protobuf.AbstractParser<BundleKpiDescriptor>() {
-      @java.lang.Override
-      public BundleKpiDescriptor parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new BundleKpiDescriptor(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<BundleKpiDescriptor> parser() {
-      return PARSER;
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<BundleKpiDescriptor> getParserForType() {
-      return PARSER;
-    }
-
-    @java.lang.Override
-    public monitoring.Monitoring.BundleKpiDescriptor getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+    @java.lang.Override
+    public monitoring.Monitoring.MonitorKpiRequest getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
 
   }
 
-  public interface EditedKpiDescriptorOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.EditedKpiDescriptor)
+  public interface KpiQueryOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:monitoring.KpiQuery)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
+     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
      */
-    boolean hasKpiId();
+    java.util.List<monitoring.Monitoring.KpiId> 
+        getKpiIdList();
     /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
+     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
      */
-    monitoring.Monitoring.KpiId getKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
-
-    /**
-     * <code>string kpi_description = 2;</code>
-     * @return The kpiDescription.
-     */
-    java.lang.String getKpiDescription();
-    /**
-     * <code>string kpi_description = 2;</code>
-     * @return The bytes for kpiDescription.
-     */
-    com.google.protobuf.ByteString
-        getKpiDescriptionBytes();
-
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-     */
-    java.util.List<monitoring.Monitoring.KpiId> 
-        getKpiIdListList();
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-     */
-    monitoring.Monitoring.KpiId getKpiIdList(int index);
+    monitoring.Monitoring.KpiId getKpiId(int index);
     /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
      */
-    int getKpiIdListCount();
+    int getKpiIdCount();
     /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
      */
     java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-        getKpiIdListOrBuilderList();
+        getKpiIdOrBuilderList();
     /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
      */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdListOrBuilder(
+    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder(
         int index);
 
     /**
-     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-     * @return The enum numeric value on the wire for kpiSampleType.
-     */
-    int getKpiSampleTypeValue();
-    /**
-     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-     * @return The kpiSampleType.
+     * <code>float monitoring_window_s = 2;</code>
+     * @return The monitoringWindowS.
      */
-    kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType();
+    float getMonitoringWindowS();
 
     /**
-     * <code>.context.DeviceId device_id = 5;</code>
-     * @return Whether the deviceId field is set.
-     */
-    boolean hasDeviceId();
-    /**
-     * <code>.context.DeviceId device_id = 5;</code>
-     * @return The deviceId.
-     */
-    context.ContextOuterClass.DeviceId getDeviceId();
-    /**
-     * <code>.context.DeviceId device_id = 5;</code>
+     * <code>float sampling_rate_s = 3;</code>
+     * @return The samplingRateS.
      */
-    context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();
+    float getSamplingRateS();
 
     /**
-     * <code>.context.EndPointId endpoint_id = 6;</code>
-     * @return Whether the endpointId field is set.
-     */
-    boolean hasEndpointId();
-    /**
-     * <code>.context.EndPointId endpoint_id = 6;</code>
-     * @return The endpointId.
-     */
-    context.ContextOuterClass.EndPointId getEndpointId();
-    /**
-     * <code>.context.EndPointId endpoint_id = 6;</code>
+     * <pre>
+     * used when you want something like "get the last N many samples
+     * </pre>
+     *
+     * <code>uint32 last_n_samples = 4;</code>
+     * @return The lastNSamples.
      */
-    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();
+    int getLastNSamples();
 
     /**
-     * <code>.context.ServiceId service_id = 7;</code>
-     * @return Whether the serviceId field is set.
+     * <pre>
+     * used when you want something like "get the samples since X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp start_timestamp = 5;</code>
+     * @return Whether the startTimestamp field is set.
      */
-    boolean hasServiceId();
+    boolean hasStartTimestamp();
     /**
-     * <code>.context.ServiceId service_id = 7;</code>
-     * @return The serviceId.
+     * <pre>
+     * used when you want something like "get the samples since X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp start_timestamp = 5;</code>
+     * @return The startTimestamp.
      */
-    context.ContextOuterClass.ServiceId getServiceId();
+    context.ContextOuterClass.Timestamp getStartTimestamp();
     /**
-     * <code>.context.ServiceId service_id = 7;</code>
+     * <pre>
+     * used when you want something like "get the samples since X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp start_timestamp = 5;</code>
      */
-    context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();
+    context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder();
 
     /**
-     * <code>.context.SliceId slice_id = 8;</code>
-     * @return Whether the sliceId field is set.
+     * <pre>
+     * used when you want something like "get the samples until X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp end_timestamp = 6;</code>
+     * @return Whether the endTimestamp field is set.
      */
-    boolean hasSliceId();
+    boolean hasEndTimestamp();
     /**
-     * <code>.context.SliceId slice_id = 8;</code>
-     * @return The sliceId.
+     * <pre>
+     * used when you want something like "get the samples until X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp end_timestamp = 6;</code>
+     * @return The endTimestamp.
      */
-    context.ContextOuterClass.SliceId getSliceId();
+    context.ContextOuterClass.Timestamp getEndTimestamp();
     /**
-     * <code>.context.SliceId slice_id = 8;</code>
+     * <pre>
+     * used when you want something like "get the samples until X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp end_timestamp = 6;</code>
      */
-    context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder();
+    context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder();
   }
   /**
-   * Protobuf type {@code monitoring.EditedKpiDescriptor}
+   * Protobuf type {@code monitoring.KpiQuery}
    */
-  public static final class EditedKpiDescriptor extends
+  public static final class KpiQuery extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.EditedKpiDescriptor)
-      EditedKpiDescriptorOrBuilder {
+      // @@protoc_insertion_point(message_implements:monitoring.KpiQuery)
+      KpiQueryOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use EditedKpiDescriptor.newBuilder() to construct.
-    private EditedKpiDescriptor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use KpiQuery.newBuilder() to construct.
+    private KpiQuery(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private EditedKpiDescriptor() {
-      kpiDescription_ = "";
-      kpiIdList_ = java.util.Collections.emptyList();
-      kpiSampleType_ = 0;
+    private KpiQuery() {
+      kpiId_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new EditedKpiDescriptor();
+      return new KpiQuery();
     }
 
     @java.lang.Override
@@ -3519,7 +2996,7 @@ public final class Monitoring {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private EditedKpiDescriptor(
+    private KpiQuery(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -3539,87 +3016,51 @@ public final class Monitoring {
               done = true;
               break;
             case 10: {
-              monitoring.Monitoring.KpiId.Builder subBuilder = null;
-              if (kpiId_ != null) {
-                subBuilder = kpiId_.toBuilder();
-              }
-              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiId_);
-                kpiId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              kpiDescription_ = s;
-              break;
-            }
-            case 26: {
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                kpiIdList_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>();
+                kpiId_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>();
                 mutable_bitField0_ |= 0x00000001;
               }
-              kpiIdList_.add(
+              kpiId_.add(
                   input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry));
               break;
             }
-            case 32: {
-              int rawValue = input.readEnum();
+            case 21: {
 
-              kpiSampleType_ = rawValue;
+              monitoringWindowS_ = input.readFloat();
               break;
             }
-            case 42: {
-              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
-              if (deviceId_ != null) {
-                subBuilder = deviceId_.toBuilder();
-              }
-              deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(deviceId_);
-                deviceId_ = subBuilder.buildPartial();
-              }
+            case 29: {
 
+              samplingRateS_ = input.readFloat();
               break;
             }
-            case 50: {
-              context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-              if (endpointId_ != null) {
-                subBuilder = endpointId_.toBuilder();
-              }
-              endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(endpointId_);
-                endpointId_ = subBuilder.buildPartial();
-              }
+            case 32: {
 
+              lastNSamples_ = input.readUInt32();
               break;
             }
-            case 58: {
-              context.ContextOuterClass.ServiceId.Builder subBuilder = null;
-              if (serviceId_ != null) {
-                subBuilder = serviceId_.toBuilder();
+            case 42: {
+              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+              if (startTimestamp_ != null) {
+                subBuilder = startTimestamp_.toBuilder();
               }
-              serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+              startTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
               if (subBuilder != null) {
-                subBuilder.mergeFrom(serviceId_);
-                serviceId_ = subBuilder.buildPartial();
+                subBuilder.mergeFrom(startTimestamp_);
+                startTimestamp_ = subBuilder.buildPartial();
               }
 
               break;
             }
-            case 66: {
-              context.ContextOuterClass.SliceId.Builder subBuilder = null;
-              if (sliceId_ != null) {
-                subBuilder = sliceId_.toBuilder();
+            case 50: {
+              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+              if (endTimestamp_ != null) {
+                subBuilder = endTimestamp_.toBuilder();
               }
-              sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
+              endTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
               if (subBuilder != null) {
-                subBuilder.mergeFrom(sliceId_);
-                sliceId_ = subBuilder.buildPartial();
+                subBuilder.mergeFrom(endTimestamp_);
+                endTimestamp_ = subBuilder.buildPartial();
               }
 
               break;
@@ -3640,7 +3081,7 @@ public final class Monitoring {
             e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          kpiIdList_ = java.util.Collections.unmodifiableList(kpiIdList_);
+          kpiId_ = java.util.Collections.unmodifiableList(kpiId_);
         }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -3648,242 +3089,168 @@ public final class Monitoring {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_EditedKpiDescriptor_descriptor;
+      return monitoring.Monitoring.internal_static_monitoring_KpiQuery_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_EditedKpiDescriptor_fieldAccessorTable
+      return monitoring.Monitoring.internal_static_monitoring_KpiQuery_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.EditedKpiDescriptor.class, monitoring.Monitoring.EditedKpiDescriptor.Builder.class);
+              monitoring.Monitoring.KpiQuery.class, monitoring.Monitoring.KpiQuery.Builder.class);
     }
 
     public static final int KPI_ID_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.KpiId kpiId_;
+    private java.util.List<monitoring.Monitoring.KpiId> kpiId_;
     /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
+     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
      */
     @java.lang.Override
-    public boolean hasKpiId() {
-      return kpiId_ != null;
+    public java.util.List<monitoring.Monitoring.KpiId> getKpiIdList() {
+      return kpiId_;
     }
     /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
+     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiId() {
-      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+    public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
+        getKpiIdOrBuilderList() {
+      return kpiId_;
     }
     /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
+     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-      return getKpiId();
+    public int getKpiIdCount() {
+      return kpiId_.size();
     }
-
-    public static final int KPI_DESCRIPTION_FIELD_NUMBER = 2;
-    private volatile java.lang.Object kpiDescription_;
     /**
-     * <code>string kpi_description = 2;</code>
-     * @return The kpiDescription.
+     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
      */
     @java.lang.Override
-    public java.lang.String getKpiDescription() {
-      java.lang.Object ref = kpiDescription_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        kpiDescription_ = s;
-        return s;
-      }
+    public monitoring.Monitoring.KpiId getKpiId(int index) {
+      return kpiId_.get(index);
     }
     /**
-     * <code>string kpi_description = 2;</code>
-     * @return The bytes for kpiDescription.
+     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
      */
     @java.lang.Override
-    public com.google.protobuf.ByteString
-        getKpiDescriptionBytes() {
-      java.lang.Object ref = kpiDescription_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        kpiDescription_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int KPI_ID_LIST_FIELD_NUMBER = 3;
-    private java.util.List<monitoring.Monitoring.KpiId> kpiIdList_;
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<monitoring.Monitoring.KpiId> getKpiIdListList() {
-      return kpiIdList_;
-    }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-        getKpiIdListOrBuilderList() {
-      return kpiIdList_;
-    }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-     */
-    @java.lang.Override
-    public int getKpiIdListCount() {
-      return kpiIdList_.size();
-    }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiIdList(int index) {
-      return kpiIdList_.get(index);
-    }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdListOrBuilder(
+    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder(
         int index) {
-      return kpiIdList_.get(index);
-    }
-
-    public static final int KPI_SAMPLE_TYPE_FIELD_NUMBER = 4;
-    private int kpiSampleType_;
-    /**
-     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-     * @return The enum numeric value on the wire for kpiSampleType.
-     */
-    @java.lang.Override public int getKpiSampleTypeValue() {
-      return kpiSampleType_;
-    }
-    /**
-     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-     * @return The kpiSampleType.
-     */
-    @java.lang.Override public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() {
-      @SuppressWarnings("deprecation")
-      kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(kpiSampleType_);
-      return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
+      return kpiId_.get(index);
     }
 
-    public static final int DEVICE_ID_FIELD_NUMBER = 5;
-    private context.ContextOuterClass.DeviceId deviceId_;
-    /**
-     * <code>.context.DeviceId device_id = 5;</code>
-     * @return Whether the deviceId field is set.
-     */
-    @java.lang.Override
-    public boolean hasDeviceId() {
-      return deviceId_ != null;
-    }
-    /**
-     * <code>.context.DeviceId device_id = 5;</code>
-     * @return The deviceId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceId getDeviceId() {
-      return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-    }
+    public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2;
+    private float monitoringWindowS_;
     /**
-     * <code>.context.DeviceId device_id = 5;</code>
+     * <code>float monitoring_window_s = 2;</code>
+     * @return The monitoringWindowS.
      */
     @java.lang.Override
-    public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-      return getDeviceId();
+    public float getMonitoringWindowS() {
+      return monitoringWindowS_;
     }
 
-    public static final int ENDPOINT_ID_FIELD_NUMBER = 6;
-    private context.ContextOuterClass.EndPointId endpointId_;
-    /**
-     * <code>.context.EndPointId endpoint_id = 6;</code>
-     * @return Whether the endpointId field is set.
-     */
-    @java.lang.Override
-    public boolean hasEndpointId() {
-      return endpointId_ != null;
-    }
+    public static final int SAMPLING_RATE_S_FIELD_NUMBER = 3;
+    private float samplingRateS_;
     /**
-     * <code>.context.EndPointId endpoint_id = 6;</code>
-     * @return The endpointId.
+     * <code>float sampling_rate_s = 3;</code>
+     * @return The samplingRateS.
      */
     @java.lang.Override
-    public context.ContextOuterClass.EndPointId getEndpointId() {
-      return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+    public float getSamplingRateS() {
+      return samplingRateS_;
     }
+
+    public static final int LAST_N_SAMPLES_FIELD_NUMBER = 4;
+    private int lastNSamples_;
     /**
-     * <code>.context.EndPointId endpoint_id = 6;</code>
+     * <pre>
+     * used when you want something like "get the last N many samples
+     * </pre>
+     *
+     * <code>uint32 last_n_samples = 4;</code>
+     * @return The lastNSamples.
      */
     @java.lang.Override
-    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-      return getEndpointId();
+    public int getLastNSamples() {
+      return lastNSamples_;
     }
 
-    public static final int SERVICE_ID_FIELD_NUMBER = 7;
-    private context.ContextOuterClass.ServiceId serviceId_;
+    public static final int START_TIMESTAMP_FIELD_NUMBER = 5;
+    private context.ContextOuterClass.Timestamp startTimestamp_;
     /**
-     * <code>.context.ServiceId service_id = 7;</code>
-     * @return Whether the serviceId field is set.
+     * <pre>
+     * used when you want something like "get the samples since X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp start_timestamp = 5;</code>
+     * @return Whether the startTimestamp field is set.
      */
     @java.lang.Override
-    public boolean hasServiceId() {
-      return serviceId_ != null;
+    public boolean hasStartTimestamp() {
+      return startTimestamp_ != null;
     }
     /**
-     * <code>.context.ServiceId service_id = 7;</code>
-     * @return The serviceId.
+     * <pre>
+     * used when you want something like "get the samples since X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp start_timestamp = 5;</code>
+     * @return The startTimestamp.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ServiceId getServiceId() {
-      return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+    public context.ContextOuterClass.Timestamp getStartTimestamp() {
+      return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
     }
     /**
-     * <code>.context.ServiceId service_id = 7;</code>
+     * <pre>
+     * used when you want something like "get the samples since X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp start_timestamp = 5;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-      return getServiceId();
+    public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
+      return getStartTimestamp();
     }
 
-    public static final int SLICE_ID_FIELD_NUMBER = 8;
-    private context.ContextOuterClass.SliceId sliceId_;
+    public static final int END_TIMESTAMP_FIELD_NUMBER = 6;
+    private context.ContextOuterClass.Timestamp endTimestamp_;
     /**
-     * <code>.context.SliceId slice_id = 8;</code>
-     * @return Whether the sliceId field is set.
+     * <pre>
+     * used when you want something like "get the samples until X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp end_timestamp = 6;</code>
+     * @return Whether the endTimestamp field is set.
      */
     @java.lang.Override
-    public boolean hasSliceId() {
-      return sliceId_ != null;
+    public boolean hasEndTimestamp() {
+      return endTimestamp_ != null;
     }
     /**
-     * <code>.context.SliceId slice_id = 8;</code>
-     * @return The sliceId.
+     * <pre>
+     * used when you want something like "get the samples until X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp end_timestamp = 6;</code>
+     * @return The endTimestamp.
      */
     @java.lang.Override
-    public context.ContextOuterClass.SliceId getSliceId() {
-      return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+    public context.ContextOuterClass.Timestamp getEndTimestamp() {
+      return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
     }
     /**
-     * <code>.context.SliceId slice_id = 8;</code>
+     * <pre>
+     * used when you want something like "get the samples until X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp end_timestamp = 6;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-      return getSliceId();
+    public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
+      return getEndTimestamp();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -3894,3670 +3261,1729 @@ public final class Monitoring {
       if (isInitialized == 0) return false;
 
       memoizedIsInitialized = 1;
-      return true;
-    }
-
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (kpiId_ != null) {
-        output.writeMessage(1, getKpiId());
-      }
-      if (!getKpiDescriptionBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, kpiDescription_);
-      }
-      for (int i = 0; i < kpiIdList_.size(); i++) {
-        output.writeMessage(3, kpiIdList_.get(i));
-      }
-      if (kpiSampleType_ != kpi_sample_types.KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_UNKNOWN.getNumber()) {
-        output.writeEnum(4, kpiSampleType_);
-      }
-      if (deviceId_ != null) {
-        output.writeMessage(5, getDeviceId());
-      }
-      if (endpointId_ != null) {
-        output.writeMessage(6, getEndpointId());
-      }
-      if (serviceId_ != null) {
-        output.writeMessage(7, getServiceId());
-      }
-      if (sliceId_ != null) {
-        output.writeMessage(8, getSliceId());
-      }
-      unknownFields.writeTo(output);
-    }
-
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (kpiId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getKpiId());
-      }
-      if (!getKpiDescriptionBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, kpiDescription_);
-      }
-      for (int i = 0; i < kpiIdList_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, kpiIdList_.get(i));
-      }
-      if (kpiSampleType_ != kpi_sample_types.KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_UNKNOWN.getNumber()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(4, kpiSampleType_);
-      }
-      if (deviceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, getDeviceId());
-      }
-      if (endpointId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(6, getEndpointId());
-      }
-      if (serviceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(7, getServiceId());
-      }
-      if (sliceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(8, getSliceId());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
-
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.EditedKpiDescriptor)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.EditedKpiDescriptor other = (monitoring.Monitoring.EditedKpiDescriptor) obj;
-
-      if (hasKpiId() != other.hasKpiId()) return false;
-      if (hasKpiId()) {
-        if (!getKpiId()
-            .equals(other.getKpiId())) return false;
-      }
-      if (!getKpiDescription()
-          .equals(other.getKpiDescription())) return false;
-      if (!getKpiIdListList()
-          .equals(other.getKpiIdListList())) return false;
-      if (kpiSampleType_ != other.kpiSampleType_) return false;
-      if (hasDeviceId() != other.hasDeviceId()) return false;
-      if (hasDeviceId()) {
-        if (!getDeviceId()
-            .equals(other.getDeviceId())) return false;
-      }
-      if (hasEndpointId() != other.hasEndpointId()) return false;
-      if (hasEndpointId()) {
-        if (!getEndpointId()
-            .equals(other.getEndpointId())) return false;
-      }
-      if (hasServiceId() != other.hasServiceId()) return false;
-      if (hasServiceId()) {
-        if (!getServiceId()
-            .equals(other.getServiceId())) return false;
-      }
-      if (hasSliceId() != other.hasSliceId()) return false;
-      if (hasSliceId()) {
-        if (!getSliceId()
-            .equals(other.getSliceId())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
-
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasKpiId()) {
-        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiId().hashCode();
-      }
-      hash = (37 * hash) + KPI_DESCRIPTION_FIELD_NUMBER;
-      hash = (53 * hash) + getKpiDescription().hashCode();
-      if (getKpiIdListCount() > 0) {
-        hash = (37 * hash) + KPI_ID_LIST_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiIdListList().hashCode();
-      }
-      hash = (37 * hash) + KPI_SAMPLE_TYPE_FIELD_NUMBER;
-      hash = (53 * hash) + kpiSampleType_;
-      if (hasDeviceId()) {
-        hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getDeviceId().hashCode();
-      }
-      if (hasEndpointId()) {
-        hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getEndpointId().hashCode();
-      }
-      if (hasServiceId()) {
-        hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getServiceId().hashCode();
-      }
-      if (hasSliceId()) {
-        hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getSliceId().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
-
-    public static monitoring.Monitoring.EditedKpiDescriptor parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.EditedKpiDescriptor parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.EditedKpiDescriptor parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.EditedKpiDescriptor parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.EditedKpiDescriptor parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.EditedKpiDescriptor parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.EditedKpiDescriptor parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.EditedKpiDescriptor parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.EditedKpiDescriptor parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.EditedKpiDescriptor parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.EditedKpiDescriptor parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.EditedKpiDescriptor parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.EditedKpiDescriptor prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
-
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.EditedKpiDescriptor}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.EditedKpiDescriptor)
-        monitoring.Monitoring.EditedKpiDescriptorOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_EditedKpiDescriptor_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_EditedKpiDescriptor_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.EditedKpiDescriptor.class, monitoring.Monitoring.EditedKpiDescriptor.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.EditedKpiDescriptor.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getKpiIdListFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-        kpiDescription_ = "";
-
-        if (kpiIdListBuilder_ == null) {
-          kpiIdList_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          kpiIdListBuilder_.clear();
-        }
-        kpiSampleType_ = 0;
-
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
-        } else {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
-        }
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
-        } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
-        }
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = null;
-        } else {
-          sliceId_ = null;
-          sliceIdBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_EditedKpiDescriptor_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.EditedKpiDescriptor getDefaultInstanceForType() {
-        return monitoring.Monitoring.EditedKpiDescriptor.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.EditedKpiDescriptor build() {
-        monitoring.Monitoring.EditedKpiDescriptor result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.EditedKpiDescriptor buildPartial() {
-        monitoring.Monitoring.EditedKpiDescriptor result = new monitoring.Monitoring.EditedKpiDescriptor(this);
-        int from_bitField0_ = bitField0_;
-        if (kpiIdBuilder_ == null) {
-          result.kpiId_ = kpiId_;
-        } else {
-          result.kpiId_ = kpiIdBuilder_.build();
-        }
-        result.kpiDescription_ = kpiDescription_;
-        if (kpiIdListBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            kpiIdList_ = java.util.Collections.unmodifiableList(kpiIdList_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.kpiIdList_ = kpiIdList_;
-        } else {
-          result.kpiIdList_ = kpiIdListBuilder_.build();
-        }
-        result.kpiSampleType_ = kpiSampleType_;
-        if (deviceIdBuilder_ == null) {
-          result.deviceId_ = deviceId_;
-        } else {
-          result.deviceId_ = deviceIdBuilder_.build();
-        }
-        if (endpointIdBuilder_ == null) {
-          result.endpointId_ = endpointId_;
-        } else {
-          result.endpointId_ = endpointIdBuilder_.build();
-        }
-        if (serviceIdBuilder_ == null) {
-          result.serviceId_ = serviceId_;
-        } else {
-          result.serviceId_ = serviceIdBuilder_.build();
-        }
-        if (sliceIdBuilder_ == null) {
-          result.sliceId_ = sliceId_;
-        } else {
-          result.sliceId_ = sliceIdBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.EditedKpiDescriptor) {
-          return mergeFrom((monitoring.Monitoring.EditedKpiDescriptor)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.EditedKpiDescriptor other) {
-        if (other == monitoring.Monitoring.EditedKpiDescriptor.getDefaultInstance()) return this;
-        if (other.hasKpiId()) {
-          mergeKpiId(other.getKpiId());
-        }
-        if (!other.getKpiDescription().isEmpty()) {
-          kpiDescription_ = other.kpiDescription_;
-          onChanged();
-        }
-        if (kpiIdListBuilder_ == null) {
-          if (!other.kpiIdList_.isEmpty()) {
-            if (kpiIdList_.isEmpty()) {
-              kpiIdList_ = other.kpiIdList_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureKpiIdListIsMutable();
-              kpiIdList_.addAll(other.kpiIdList_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.kpiIdList_.isEmpty()) {
-            if (kpiIdListBuilder_.isEmpty()) {
-              kpiIdListBuilder_.dispose();
-              kpiIdListBuilder_ = null;
-              kpiIdList_ = other.kpiIdList_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              kpiIdListBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getKpiIdListFieldBuilder() : null;
-            } else {
-              kpiIdListBuilder_.addAllMessages(other.kpiIdList_);
-            }
-          }
-        }
-        if (other.kpiSampleType_ != 0) {
-          setKpiSampleTypeValue(other.getKpiSampleTypeValue());
-        }
-        if (other.hasDeviceId()) {
-          mergeDeviceId(other.getDeviceId());
-        }
-        if (other.hasEndpointId()) {
-          mergeEndpointId(other.getEndpointId());
-        }
-        if (other.hasServiceId()) {
-          mergeServiceId(other.getServiceId());
-        }
-        if (other.hasSliceId()) {
-          mergeSliceId(other.getSliceId());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.EditedKpiDescriptor parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.EditedKpiDescriptor) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private monitoring.Monitoring.KpiId kpiId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return Whether the kpiId field is set.
-       */
-      public boolean hasKpiId() {
-        return kpiIdBuilder_ != null || kpiId_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return The kpiId.
-       */
-      public monitoring.Monitoring.KpiId getKpiId() {
-        if (kpiIdBuilder_ == null) {
-          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        } else {
-          return kpiIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiId_ = value;
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (kpiId_ != null) {
-            kpiId_ =
-              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
-          } else {
-            kpiId_ = value;
-          }
-          onChanged();
-        } else {
-          kpiIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder clearKpiId() {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-          onChanged();
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-        
-        onChanged();
-        return getKpiIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-        if (kpiIdBuilder_ != null) {
-          return kpiIdBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiId_ == null ?
-              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdFieldBuilder() {
-        if (kpiIdBuilder_ == null) {
-          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  getKpiId(),
-                  getParentForChildren(),
-                  isClean());
-          kpiId_ = null;
-        }
-        return kpiIdBuilder_;
-      }
-
-      private java.lang.Object kpiDescription_ = "";
-      /**
-       * <code>string kpi_description = 2;</code>
-       * @return The kpiDescription.
-       */
-      public java.lang.String getKpiDescription() {
-        java.lang.Object ref = kpiDescription_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          kpiDescription_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string kpi_description = 2;</code>
-       * @return The bytes for kpiDescription.
-       */
-      public com.google.protobuf.ByteString
-          getKpiDescriptionBytes() {
-        java.lang.Object ref = kpiDescription_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          kpiDescription_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string kpi_description = 2;</code>
-       * @param value The kpiDescription to set.
-       * @return This builder for chaining.
-       */
-      public Builder setKpiDescription(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        kpiDescription_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string kpi_description = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearKpiDescription() {
-        
-        kpiDescription_ = getDefaultInstance().getKpiDescription();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string kpi_description = 2;</code>
-       * @param value The bytes for kpiDescription to set.
-       * @return This builder for chaining.
-       */
-      public Builder setKpiDescriptionBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        kpiDescription_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<monitoring.Monitoring.KpiId> kpiIdList_ =
-        java.util.Collections.emptyList();
-      private void ensureKpiIdListIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          kpiIdList_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>(kpiIdList_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdListBuilder_;
-
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public java.util.List<monitoring.Monitoring.KpiId> getKpiIdListList() {
-        if (kpiIdListBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(kpiIdList_);
-        } else {
-          return kpiIdListBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public int getKpiIdListCount() {
-        if (kpiIdListBuilder_ == null) {
-          return kpiIdList_.size();
-        } else {
-          return kpiIdListBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public monitoring.Monitoring.KpiId getKpiIdList(int index) {
-        if (kpiIdListBuilder_ == null) {
-          return kpiIdList_.get(index);
-        } else {
-          return kpiIdListBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder setKpiIdList(
-          int index, monitoring.Monitoring.KpiId value) {
-        if (kpiIdListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIdListIsMutable();
-          kpiIdList_.set(index, value);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder setKpiIdList(
-          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdListBuilder_ == null) {
-          ensureKpiIdListIsMutable();
-          kpiIdList_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdListBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder addKpiIdList(monitoring.Monitoring.KpiId value) {
-        if (kpiIdListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIdListIsMutable();
-          kpiIdList_.add(value);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder addKpiIdList(
-          int index, monitoring.Monitoring.KpiId value) {
-        if (kpiIdListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIdListIsMutable();
-          kpiIdList_.add(index, value);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder addKpiIdList(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdListBuilder_ == null) {
-          ensureKpiIdListIsMutable();
-          kpiIdList_.add(builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdListBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder addKpiIdList(
-          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdListBuilder_ == null) {
-          ensureKpiIdListIsMutable();
-          kpiIdList_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdListBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder addAllKpiIdList(
-          java.lang.Iterable<? extends monitoring.Monitoring.KpiId> values) {
-        if (kpiIdListBuilder_ == null) {
-          ensureKpiIdListIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, kpiIdList_);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder clearKpiIdList() {
-        if (kpiIdListBuilder_ == null) {
-          kpiIdList_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder removeKpiIdList(int index) {
-        if (kpiIdListBuilder_ == null) {
-          ensureKpiIdListIsMutable();
-          kpiIdList_.remove(index);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdListBuilder(
-          int index) {
-        return getKpiIdListFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdListOrBuilder(
-          int index) {
-        if (kpiIdListBuilder_ == null) {
-          return kpiIdList_.get(index);  } else {
-          return kpiIdListBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-           getKpiIdListOrBuilderList() {
-        if (kpiIdListBuilder_ != null) {
-          return kpiIdListBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(kpiIdList_);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder addKpiIdListBuilder() {
-        return getKpiIdListFieldBuilder().addBuilder(
-            monitoring.Monitoring.KpiId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder addKpiIdListBuilder(
-          int index) {
-        return getKpiIdListFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.KpiId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public java.util.List<monitoring.Monitoring.KpiId.Builder> 
-           getKpiIdListBuilderList() {
-        return getKpiIdListFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdListFieldBuilder() {
-        if (kpiIdListBuilder_ == null) {
-          kpiIdListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  kpiIdList_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          kpiIdList_ = null;
-        }
-        return kpiIdListBuilder_;
-      }
-
-      private int kpiSampleType_ = 0;
-      /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-       * @return The enum numeric value on the wire for kpiSampleType.
-       */
-      @java.lang.Override public int getKpiSampleTypeValue() {
-        return kpiSampleType_;
-      }
-      /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-       * @param value The enum numeric value on the wire for kpiSampleType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setKpiSampleTypeValue(int value) {
-        
-        kpiSampleType_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-       * @return The kpiSampleType.
-       */
-      @java.lang.Override
-      public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() {
-        @SuppressWarnings("deprecation")
-        kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(kpiSampleType_);
-        return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
-      }
-      /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-       * @param value The kpiSampleType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setKpiSampleType(kpi_sample_types.KpiSampleTypes.KpiSampleType value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        
-        kpiSampleType_ = value.getNumber();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearKpiSampleType() {
-        
-        kpiSampleType_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private context.ContextOuterClass.DeviceId deviceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       * @return Whether the deviceId field is set.
-       */
-      public boolean hasDeviceId() {
-        return deviceIdBuilder_ != null || deviceId_ != null;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       * @return The deviceId.
-       */
-      public context.ContextOuterClass.DeviceId getDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-        } else {
-          return deviceIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       */
-      public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          deviceId_ = value;
-          onChanged();
-        } else {
-          deviceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       */
-      public Builder setDeviceId(
-          context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          deviceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       */
-      public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
-          if (deviceId_ != null) {
-            deviceId_ =
-              context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
-          } else {
-            deviceId_ = value;
-          }
-          onChanged();
-        } else {
-          deviceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       */
-      public Builder clearDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
-          onChanged();
-        } else {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-        
-        onChanged();
-        return getDeviceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       */
-      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-        if (deviceIdBuilder_ != null) {
-          return deviceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return deviceId_ == null ?
-              context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-        }
-      }
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
-          getDeviceIdFieldBuilder() {
-        if (deviceIdBuilder_ == null) {
-          deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
-                  getDeviceId(),
-                  getParentForChildren(),
-                  isClean());
-          deviceId_ = null;
-        }
-        return deviceIdBuilder_;
-      }
-
-      private context.ContextOuterClass.EndPointId endpointId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       * @return Whether the endpointId field is set.
-       */
-      public boolean hasEndpointId() {
-        return endpointIdBuilder_ != null || endpointId_ != null;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       * @return The endpointId.
-       */
-      public context.ContextOuterClass.EndPointId getEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-        } else {
-          return endpointIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       */
-      public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          endpointId_ = value;
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       */
-      public Builder setEndpointId(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = builderForValue.build();
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       */
-      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (endpointId_ != null) {
-            endpointId_ =
-              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
-          } else {
-            endpointId_ = value;
-          }
-          onChanged();
-        } else {
-          endpointIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       */
-      public Builder clearEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-          onChanged();
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-        
-        onChanged();
-        return getEndpointIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       */
-      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-        if (endpointIdBuilder_ != null) {
-          return endpointIdBuilder_.getMessageOrBuilder();
-        } else {
-          return endpointId_ == null ?
-              context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-        }
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
-          getEndpointIdFieldBuilder() {
-        if (endpointIdBuilder_ == null) {
-          endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
-                  getEndpointId(),
-                  getParentForChildren(),
-                  isClean());
-          endpointId_ = null;
-        }
-        return endpointIdBuilder_;
-      }
-
-      private context.ContextOuterClass.ServiceId serviceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       * @return Whether the serviceId field is set.
-       */
-      public boolean hasServiceId() {
-        return serviceIdBuilder_ != null || serviceId_ != null;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       * @return The serviceId.
-       */
-      public context.ContextOuterClass.ServiceId getServiceId() {
-        if (serviceIdBuilder_ == null) {
-          return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-        } else {
-          return serviceIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       */
-      public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          serviceId_ = value;
-          onChanged();
-        } else {
-          serviceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       */
-      public Builder setServiceId(
-          context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          serviceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       */
-      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (serviceId_ != null) {
-            serviceId_ =
-              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
-          } else {
-            serviceId_ = value;
-          }
-          onChanged();
-        } else {
-          serviceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       */
-      public Builder clearServiceId() {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
-          onChanged();
-        } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
-        
-        onChanged();
-        return getServiceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       */
-      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-        if (serviceIdBuilder_ != null) {
-          return serviceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return serviceId_ == null ?
-              context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-        }
-      }
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
-          getServiceIdFieldBuilder() {
-        if (serviceIdBuilder_ == null) {
-          serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
-                  getServiceId(),
-                  getParentForChildren(),
-                  isClean());
-          serviceId_ = null;
-        }
-        return serviceIdBuilder_;
-      }
-
-      private context.ContextOuterClass.SliceId sliceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdBuilder_;
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       * @return Whether the sliceId field is set.
-       */
-      public boolean hasSliceId() {
-        return sliceIdBuilder_ != null || sliceId_ != null;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       * @return The sliceId.
-       */
-      public context.ContextOuterClass.SliceId getSliceId() {
-        if (sliceIdBuilder_ == null) {
-          return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
-        } else {
-          return sliceIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       */
-      public Builder setSliceId(context.ContextOuterClass.SliceId value) {
-        if (sliceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          sliceId_ = value;
-          onChanged();
-        } else {
-          sliceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       */
-      public Builder setSliceId(
-          context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          sliceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       */
-      public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
-        if (sliceIdBuilder_ == null) {
-          if (sliceId_ != null) {
-            sliceId_ =
-              context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
-          } else {
-            sliceId_ = value;
-          }
-          onChanged();
-        } else {
-          sliceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       */
-      public Builder clearSliceId() {
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = null;
-          onChanged();
-        } else {
-          sliceId_ = null;
-          sliceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       */
-      public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
-        
-        onChanged();
-        return getSliceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       */
-      public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-        if (sliceIdBuilder_ != null) {
-          return sliceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return sliceId_ == null ?
-              context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
-        }
-      }
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> 
-          getSliceIdFieldBuilder() {
-        if (sliceIdBuilder_ == null) {
-          sliceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(
-                  getSliceId(),
-                  getParentForChildren(),
-                  isClean());
-          sliceId_ = null;
-        }
-        return sliceIdBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.EditedKpiDescriptor)
-    }
-
-    // @@protoc_insertion_point(class_scope:monitoring.EditedKpiDescriptor)
-    private static final monitoring.Monitoring.EditedKpiDescriptor DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.EditedKpiDescriptor();
-    }
-
-    public static monitoring.Monitoring.EditedKpiDescriptor getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
-
-    private static final com.google.protobuf.Parser<EditedKpiDescriptor>
-        PARSER = new com.google.protobuf.AbstractParser<EditedKpiDescriptor>() {
-      @java.lang.Override
-      public EditedKpiDescriptor parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new EditedKpiDescriptor(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<EditedKpiDescriptor> parser() {
-      return PARSER;
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<EditedKpiDescriptor> getParserForType() {
-      return PARSER;
-    }
-
-    @java.lang.Override
-    public monitoring.Monitoring.EditedKpiDescriptor getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
-
-  }
-
-  public interface MonitorKpiRequestOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.MonitorKpiRequest)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    boolean hasKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    monitoring.Monitoring.KpiId getKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
-
-    /**
-     * <code>float monitoring_window_s = 2;</code>
-     * @return The monitoringWindowS.
-     */
-    float getMonitoringWindowS();
-
-    /**
-     * <pre>
-     * Pending add field to reflect Available Device Protocols
-     * </pre>
-     *
-     * <code>float sampling_rate_s = 3;</code>
-     * @return The samplingRateS.
-     */
-    float getSamplingRateS();
-  }
-  /**
-   * Protobuf type {@code monitoring.MonitorKpiRequest}
-   */
-  public static final class MonitorKpiRequest extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.MonitorKpiRequest)
-      MonitorKpiRequestOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use MonitorKpiRequest.newBuilder() to construct.
-    private MonitorKpiRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private MonitorKpiRequest() {
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new MonitorKpiRequest();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private MonitorKpiRequest(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              monitoring.Monitoring.KpiId.Builder subBuilder = null;
-              if (kpiId_ != null) {
-                subBuilder = kpiId_.toBuilder();
-              }
-              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiId_);
-                kpiId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 21: {
-
-              monitoringWindowS_ = input.readFloat();
-              break;
-            }
-            case 29: {
-
-              samplingRateS_ = input.readFloat();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor;
-    }
-
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.MonitorKpiRequest.class, monitoring.Monitoring.MonitorKpiRequest.Builder.class);
-    }
-
-    public static final int KPI_ID_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.KpiId kpiId_;
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiId() {
-      return kpiId_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiId() {
-      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-      return getKpiId();
-    }
-
-    public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2;
-    private float monitoringWindowS_;
-    /**
-     * <code>float monitoring_window_s = 2;</code>
-     * @return The monitoringWindowS.
-     */
-    @java.lang.Override
-    public float getMonitoringWindowS() {
-      return monitoringWindowS_;
-    }
-
-    public static final int SAMPLING_RATE_S_FIELD_NUMBER = 3;
-    private float samplingRateS_;
-    /**
-     * <pre>
-     * Pending add field to reflect Available Device Protocols
-     * </pre>
-     *
-     * <code>float sampling_rate_s = 3;</code>
-     * @return The samplingRateS.
-     */
-    @java.lang.Override
-    public float getSamplingRateS() {
-      return samplingRateS_;
-    }
-
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (kpiId_ != null) {
-        output.writeMessage(1, getKpiId());
-      }
-      if (monitoringWindowS_ != 0F) {
-        output.writeFloat(2, monitoringWindowS_);
-      }
-      if (samplingRateS_ != 0F) {
-        output.writeFloat(3, samplingRateS_);
-      }
-      unknownFields.writeTo(output);
-    }
-
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (kpiId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getKpiId());
-      }
-      if (monitoringWindowS_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(2, monitoringWindowS_);
-      }
-      if (samplingRateS_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(3, samplingRateS_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
-
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.MonitorKpiRequest)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.MonitorKpiRequest other = (monitoring.Monitoring.MonitorKpiRequest) obj;
-
-      if (hasKpiId() != other.hasKpiId()) return false;
-      if (hasKpiId()) {
-        if (!getKpiId()
-            .equals(other.getKpiId())) return false;
-      }
-      if (java.lang.Float.floatToIntBits(getMonitoringWindowS())
-          != java.lang.Float.floatToIntBits(
-              other.getMonitoringWindowS())) return false;
-      if (java.lang.Float.floatToIntBits(getSamplingRateS())
-          != java.lang.Float.floatToIntBits(
-              other.getSamplingRateS())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
-
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasKpiId()) {
-        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiId().hashCode();
-      }
-      hash = (37 * hash) + MONITORING_WINDOW_S_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getMonitoringWindowS());
-      hash = (37 * hash) + SAMPLING_RATE_S_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getSamplingRateS());
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
-
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.MonitorKpiRequest prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
-
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.MonitorKpiRequest}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.MonitorKpiRequest)
-        monitoring.Monitoring.MonitorKpiRequestOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.MonitorKpiRequest.class, monitoring.Monitoring.MonitorKpiRequest.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.MonitorKpiRequest.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-        monitoringWindowS_ = 0F;
-
-        samplingRateS_ = 0F;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.MonitorKpiRequest getDefaultInstanceForType() {
-        return monitoring.Monitoring.MonitorKpiRequest.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.MonitorKpiRequest build() {
-        monitoring.Monitoring.MonitorKpiRequest result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.MonitorKpiRequest buildPartial() {
-        monitoring.Monitoring.MonitorKpiRequest result = new monitoring.Monitoring.MonitorKpiRequest(this);
-        if (kpiIdBuilder_ == null) {
-          result.kpiId_ = kpiId_;
-        } else {
-          result.kpiId_ = kpiIdBuilder_.build();
-        }
-        result.monitoringWindowS_ = monitoringWindowS_;
-        result.samplingRateS_ = samplingRateS_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.MonitorKpiRequest) {
-          return mergeFrom((monitoring.Monitoring.MonitorKpiRequest)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.MonitorKpiRequest other) {
-        if (other == monitoring.Monitoring.MonitorKpiRequest.getDefaultInstance()) return this;
-        if (other.hasKpiId()) {
-          mergeKpiId(other.getKpiId());
-        }
-        if (other.getMonitoringWindowS() != 0F) {
-          setMonitoringWindowS(other.getMonitoringWindowS());
-        }
-        if (other.getSamplingRateS() != 0F) {
-          setSamplingRateS(other.getSamplingRateS());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.MonitorKpiRequest parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.MonitorKpiRequest) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private monitoring.Monitoring.KpiId kpiId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return Whether the kpiId field is set.
-       */
-      public boolean hasKpiId() {
-        return kpiIdBuilder_ != null || kpiId_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return The kpiId.
-       */
-      public monitoring.Monitoring.KpiId getKpiId() {
-        if (kpiIdBuilder_ == null) {
-          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        } else {
-          return kpiIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiId_ = value;
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (kpiId_ != null) {
-            kpiId_ =
-              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
-          } else {
-            kpiId_ = value;
-          }
-          onChanged();
-        } else {
-          kpiIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder clearKpiId() {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-          onChanged();
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-        
-        onChanged();
-        return getKpiIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-        if (kpiIdBuilder_ != null) {
-          return kpiIdBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiId_ == null ?
-              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdFieldBuilder() {
-        if (kpiIdBuilder_ == null) {
-          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  getKpiId(),
-                  getParentForChildren(),
-                  isClean());
-          kpiId_ = null;
-        }
-        return kpiIdBuilder_;
-      }
+      return true;
+    }
 
-      private float monitoringWindowS_ ;
-      /**
-       * <code>float monitoring_window_s = 2;</code>
-       * @return The monitoringWindowS.
-       */
-      @java.lang.Override
-      public float getMonitoringWindowS() {
-        return monitoringWindowS_;
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      for (int i = 0; i < kpiId_.size(); i++) {
+        output.writeMessage(1, kpiId_.get(i));
       }
-      /**
-       * <code>float monitoring_window_s = 2;</code>
-       * @param value The monitoringWindowS to set.
-       * @return This builder for chaining.
-       */
-      public Builder setMonitoringWindowS(float value) {
-        
-        monitoringWindowS_ = value;
-        onChanged();
-        return this;
+      if (monitoringWindowS_ != 0F) {
+        output.writeFloat(2, monitoringWindowS_);
       }
-      /**
-       * <code>float monitoring_window_s = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearMonitoringWindowS() {
-        
-        monitoringWindowS_ = 0F;
-        onChanged();
-        return this;
+      if (samplingRateS_ != 0F) {
+        output.writeFloat(3, samplingRateS_);
+      }
+      if (lastNSamples_ != 0) {
+        output.writeUInt32(4, lastNSamples_);
+      }
+      if (startTimestamp_ != null) {
+        output.writeMessage(5, getStartTimestamp());
       }
+      if (endTimestamp_ != null) {
+        output.writeMessage(6, getEndTimestamp());
+      }
+      unknownFields.writeTo(output);
+    }
 
-      private float samplingRateS_ ;
-      /**
-       * <pre>
-       * Pending add field to reflect Available Device Protocols
-       * </pre>
-       *
-       * <code>float sampling_rate_s = 3;</code>
-       * @return The samplingRateS.
-       */
-      @java.lang.Override
-      public float getSamplingRateS() {
-        return samplingRateS_;
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < kpiId_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, kpiId_.get(i));
       }
-      /**
-       * <pre>
-       * Pending add field to reflect Available Device Protocols
-       * </pre>
-       *
-       * <code>float sampling_rate_s = 3;</code>
-       * @param value The samplingRateS to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSamplingRateS(float value) {
-        
-        samplingRateS_ = value;
-        onChanged();
-        return this;
+      if (monitoringWindowS_ != 0F) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeFloatSize(2, monitoringWindowS_);
       }
-      /**
-       * <pre>
-       * Pending add field to reflect Available Device Protocols
-       * </pre>
-       *
-       * <code>float sampling_rate_s = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSamplingRateS() {
-        
-        samplingRateS_ = 0F;
-        onChanged();
-        return this;
+      if (samplingRateS_ != 0F) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeFloatSize(3, samplingRateS_);
       }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+      if (lastNSamples_ != 0) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(4, lastNSamples_);
       }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+      if (startTimestamp_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, getStartTimestamp());
       }
+      if (endTimestamp_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, getEndTimestamp());
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
 
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof monitoring.Monitoring.KpiQuery)) {
+        return super.equals(obj);
+      }
+      monitoring.Monitoring.KpiQuery other = (monitoring.Monitoring.KpiQuery) obj;
 
-      // @@protoc_insertion_point(builder_scope:monitoring.MonitorKpiRequest)
+      if (!getKpiIdList()
+          .equals(other.getKpiIdList())) return false;
+      if (java.lang.Float.floatToIntBits(getMonitoringWindowS())
+          != java.lang.Float.floatToIntBits(
+              other.getMonitoringWindowS())) return false;
+      if (java.lang.Float.floatToIntBits(getSamplingRateS())
+          != java.lang.Float.floatToIntBits(
+              other.getSamplingRateS())) return false;
+      if (getLastNSamples()
+          != other.getLastNSamples()) return false;
+      if (hasStartTimestamp() != other.hasStartTimestamp()) return false;
+      if (hasStartTimestamp()) {
+        if (!getStartTimestamp()
+            .equals(other.getStartTimestamp())) return false;
+      }
+      if (hasEndTimestamp() != other.hasEndTimestamp()) return false;
+      if (hasEndTimestamp()) {
+        if (!getEndTimestamp()
+            .equals(other.getEndTimestamp())) return false;
+      }
+      if (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
     }
 
-    // @@protoc_insertion_point(class_scope:monitoring.MonitorKpiRequest)
-    private static final monitoring.Monitoring.MonitorKpiRequest DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.MonitorKpiRequest();
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (getKpiIdCount() > 0) {
+        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getKpiIdList().hashCode();
+      }
+      hash = (37 * hash) + MONITORING_WINDOW_S_FIELD_NUMBER;
+      hash = (53 * hash) + java.lang.Float.floatToIntBits(
+          getMonitoringWindowS());
+      hash = (37 * hash) + SAMPLING_RATE_S_FIELD_NUMBER;
+      hash = (53 * hash) + java.lang.Float.floatToIntBits(
+          getSamplingRateS());
+      hash = (37 * hash) + LAST_N_SAMPLES_FIELD_NUMBER;
+      hash = (53 * hash) + getLastNSamples();
+      if (hasStartTimestamp()) {
+        hash = (37 * hash) + START_TIMESTAMP_FIELD_NUMBER;
+        hash = (53 * hash) + getStartTimestamp().hashCode();
+      }
+      if (hasEndTimestamp()) {
+        hash = (37 * hash) + END_TIMESTAMP_FIELD_NUMBER;
+        hash = (53 * hash) + getEndTimestamp().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
     }
 
-    public static monitoring.Monitoring.MonitorKpiRequest getDefaultInstance() {
-      return DEFAULT_INSTANCE;
+    public static monitoring.Monitoring.KpiQuery parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static monitoring.Monitoring.KpiQuery parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static monitoring.Monitoring.KpiQuery parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static monitoring.Monitoring.KpiQuery parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static monitoring.Monitoring.KpiQuery parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static monitoring.Monitoring.KpiQuery parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static monitoring.Monitoring.KpiQuery parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static monitoring.Monitoring.KpiQuery parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static monitoring.Monitoring.KpiQuery parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static monitoring.Monitoring.KpiQuery parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static monitoring.Monitoring.KpiQuery parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static monitoring.Monitoring.KpiQuery parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    private static final com.google.protobuf.Parser<MonitorKpiRequest>
-        PARSER = new com.google.protobuf.AbstractParser<MonitorKpiRequest>() {
-      @java.lang.Override
-      public MonitorKpiRequest parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new MonitorKpiRequest(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<MonitorKpiRequest> parser() {
-      return PARSER;
+    @java.lang.Override
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(monitoring.Monitoring.KpiQuery prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-
     @java.lang.Override
-    public com.google.protobuf.Parser<MonitorKpiRequest> getParserForType() {
-      return PARSER;
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
     }
 
     @java.lang.Override
-    public monitoring.Monitoring.MonitorKpiRequest getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
     }
-
-  }
-
-  public interface KpiQueryOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.KpiQuery)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-     */
-    java.util.List<monitoring.Monitoring.KpiId> 
-        getKpiIdList();
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-     */
-    monitoring.Monitoring.KpiId getKpiId(int index);
     /**
-     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-     */
-    int getKpiIdCount();
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-     */
-    java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-        getKpiIdOrBuilderList();
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+     * Protobuf type {@code monitoring.KpiQuery}
      */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder(
-        int index);
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:monitoring.KpiQuery)
+        monitoring.Monitoring.KpiQueryOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return monitoring.Monitoring.internal_static_monitoring_KpiQuery_descriptor;
+      }
 
-    /**
-     * <code>float monitoring_window_s = 2;</code>
-     * @return The monitoringWindowS.
-     */
-    float getMonitoringWindowS();
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return monitoring.Monitoring.internal_static_monitoring_KpiQuery_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                monitoring.Monitoring.KpiQuery.class, monitoring.Monitoring.KpiQuery.Builder.class);
+      }
 
-    /**
-     * <code>float sampling_rate_s = 3;</code>
-     * @return The samplingRateS.
-     */
-    float getSamplingRateS();
+      // Construct using monitoring.Monitoring.KpiQuery.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
 
-    /**
-     * <pre>
-     * used when you want something like "get the last N many samples
-     * </pre>
-     *
-     * <code>uint32 last_n_samples = 4;</code>
-     * @return The lastNSamples.
-     */
-    int getLastNSamples();
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+          getKpiIdFieldBuilder();
+        }
+      }
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          kpiIdBuilder_.clear();
+        }
+        monitoringWindowS_ = 0F;
 
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>string start_date = 5;</code>
-     * @return The startDate.
-     */
-    java.lang.String getStartDate();
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>string start_date = 5;</code>
-     * @return The bytes for startDate.
-     */
-    com.google.protobuf.ByteString
-        getStartDateBytes();
+        samplingRateS_ = 0F;
 
-    /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>string end_date = 6;</code>
-     * @return The endDate.
-     */
-    java.lang.String getEndDate();
-    /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>string end_date = 6;</code>
-     * @return The bytes for endDate.
-     */
-    com.google.protobuf.ByteString
-        getEndDateBytes();
-  }
-  /**
-   * Protobuf type {@code monitoring.KpiQuery}
-   */
-  public static final class KpiQuery extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.KpiQuery)
-      KpiQueryOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use KpiQuery.newBuilder() to construct.
-    private KpiQuery(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private KpiQuery() {
-      kpiId_ = java.util.Collections.emptyList();
-      startDate_ = "";
-      endDate_ = "";
-    }
+        lastNSamples_ = 0;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new KpiQuery();
-    }
+        if (startTimestampBuilder_ == null) {
+          startTimestamp_ = null;
+        } else {
+          startTimestamp_ = null;
+          startTimestampBuilder_ = null;
+        }
+        if (endTimestampBuilder_ == null) {
+          endTimestamp_ = null;
+        } else {
+          endTimestamp_ = null;
+          endTimestampBuilder_ = null;
+        }
+        return this;
+      }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private KpiQuery(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return monitoring.Monitoring.internal_static_monitoring_KpiQuery_descriptor;
       }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                kpiId_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              kpiId_.add(
-                  input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry));
-              break;
-            }
-            case 21: {
 
-              monitoringWindowS_ = input.readFloat();
-              break;
-            }
-            case 29: {
+      @java.lang.Override
+      public monitoring.Monitoring.KpiQuery getDefaultInstanceForType() {
+        return monitoring.Monitoring.KpiQuery.getDefaultInstance();
+      }
 
-              samplingRateS_ = input.readFloat();
-              break;
-            }
-            case 32: {
+      @java.lang.Override
+      public monitoring.Monitoring.KpiQuery build() {
+        monitoring.Monitoring.KpiQuery result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
 
-              lastNSamples_ = input.readUInt32();
-              break;
-            }
-            case 42: {
-              java.lang.String s = input.readStringRequireUtf8();
+      @java.lang.Override
+      public monitoring.Monitoring.KpiQuery buildPartial() {
+        monitoring.Monitoring.KpiQuery result = new monitoring.Monitoring.KpiQuery(this);
+        int from_bitField0_ = bitField0_;
+        if (kpiIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            kpiId_ = java.util.Collections.unmodifiableList(kpiId_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.kpiId_ = kpiId_;
+        } else {
+          result.kpiId_ = kpiIdBuilder_.build();
+        }
+        result.monitoringWindowS_ = monitoringWindowS_;
+        result.samplingRateS_ = samplingRateS_;
+        result.lastNSamples_ = lastNSamples_;
+        if (startTimestampBuilder_ == null) {
+          result.startTimestamp_ = startTimestamp_;
+        } else {
+          result.startTimestamp_ = startTimestampBuilder_.build();
+        }
+        if (endTimestampBuilder_ == null) {
+          result.endTimestamp_ = endTimestamp_;
+        } else {
+          result.endTimestamp_ = endTimestampBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
 
-              startDate_ = s;
-              break;
-            }
-            case 50: {
-              java.lang.String s = input.readStringRequireUtf8();
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof monitoring.Monitoring.KpiQuery) {
+          return mergeFrom((monitoring.Monitoring.KpiQuery)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
 
-              endDate_ = s;
-              break;
+      public Builder mergeFrom(monitoring.Monitoring.KpiQuery other) {
+        if (other == monitoring.Monitoring.KpiQuery.getDefaultInstance()) return this;
+        if (kpiIdBuilder_ == null) {
+          if (!other.kpiId_.isEmpty()) {
+            if (kpiId_.isEmpty()) {
+              kpiId_ = other.kpiId_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureKpiIdIsMutable();
+              kpiId_.addAll(other.kpiId_);
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
+            onChanged();
+          }
+        } else {
+          if (!other.kpiId_.isEmpty()) {
+            if (kpiIdBuilder_.isEmpty()) {
+              kpiIdBuilder_.dispose();
+              kpiIdBuilder_ = null;
+              kpiId_ = other.kpiId_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              kpiIdBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                   getKpiIdFieldBuilder() : null;
+            } else {
+              kpiIdBuilder_.addAllMessages(other.kpiId_);
             }
           }
         }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          kpiId_ = java.util.Collections.unmodifiableList(kpiId_);
+        if (other.getMonitoringWindowS() != 0F) {
+          setMonitoringWindowS(other.getMonitoringWindowS());
         }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
+        if (other.getSamplingRateS() != 0F) {
+          setSamplingRateS(other.getSamplingRateS());
+        }
+        if (other.getLastNSamples() != 0) {
+          setLastNSamples(other.getLastNSamples());
+        }
+        if (other.hasStartTimestamp()) {
+          mergeStartTimestamp(other.getStartTimestamp());
+        }
+        if (other.hasEndTimestamp()) {
+          mergeEndTimestamp(other.getEndTimestamp());
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
       }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiQuery_descriptor;
-    }
-
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiQuery_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.KpiQuery.class, monitoring.Monitoring.KpiQuery.Builder.class);
-    }
-
-    public static final int KPI_ID_FIELD_NUMBER = 1;
-    private java.util.List<monitoring.Monitoring.KpiId> kpiId_;
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<monitoring.Monitoring.KpiId> getKpiIdList() {
-      return kpiId_;
-    }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-        getKpiIdOrBuilderList() {
-      return kpiId_;
-    }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-     */
-    @java.lang.Override
-    public int getKpiIdCount() {
-      return kpiId_.size();
-    }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiId(int index) {
-      return kpiId_.get(index);
-    }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder(
-        int index) {
-      return kpiId_.get(index);
-    }
-
-    public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2;
-    private float monitoringWindowS_;
-    /**
-     * <code>float monitoring_window_s = 2;</code>
-     * @return The monitoringWindowS.
-     */
-    @java.lang.Override
-    public float getMonitoringWindowS() {
-      return monitoringWindowS_;
-    }
-
-    public static final int SAMPLING_RATE_S_FIELD_NUMBER = 3;
-    private float samplingRateS_;
-    /**
-     * <code>float sampling_rate_s = 3;</code>
-     * @return The samplingRateS.
-     */
-    @java.lang.Override
-    public float getSamplingRateS() {
-      return samplingRateS_;
-    }
-
-    public static final int LAST_N_SAMPLES_FIELD_NUMBER = 4;
-    private int lastNSamples_;
-    /**
-     * <pre>
-     * used when you want something like "get the last N many samples
-     * </pre>
-     *
-     * <code>uint32 last_n_samples = 4;</code>
-     * @return The lastNSamples.
-     */
-    @java.lang.Override
-    public int getLastNSamples() {
-      return lastNSamples_;
-    }
 
-    public static final int START_DATE_FIELD_NUMBER = 5;
-    private volatile java.lang.Object startDate_;
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>string start_date = 5;</code>
-     * @return The startDate.
-     */
-    @java.lang.Override
-    public java.lang.String getStartDate() {
-      java.lang.Object ref = startDate_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        startDate_ = s;
-        return s;
-      }
-    }
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>string start_date = 5;</code>
-     * @return The bytes for startDate.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getStartDateBytes() {
-      java.lang.Object ref = startDate_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        startDate_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
       }
-    }
 
-    public static final int END_DATE_FIELD_NUMBER = 6;
-    private volatile java.lang.Object endDate_;
-    /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>string end_date = 6;</code>
-     * @return The endDate.
-     */
-    @java.lang.Override
-    public java.lang.String getEndDate() {
-      java.lang.Object ref = endDate_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        endDate_ = s;
-        return s;
-      }
-    }
-    /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>string end_date = 6;</code>
-     * @return The bytes for endDate.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getEndDateBytes() {
-      java.lang.Object ref = endDate_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        endDate_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        monitoring.Monitoring.KpiQuery parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (monitoring.Monitoring.KpiQuery) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
       }
-    }
+      private int bitField0_;
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+      private java.util.List<monitoring.Monitoring.KpiId> kpiId_ =
+        java.util.Collections.emptyList();
+      private void ensureKpiIdIsMutable() {
+        if (!((bitField0_ & 0x00000001) != 0)) {
+          kpiId_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>(kpiId_);
+          bitField0_ |= 0x00000001;
+         }
+      }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < kpiId_.size(); i++) {
-        output.writeMessage(1, kpiId_.get(i));
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public java.util.List<monitoring.Monitoring.KpiId> getKpiIdList() {
+        if (kpiIdBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(kpiId_);
+        } else {
+          return kpiIdBuilder_.getMessageList();
+        }
       }
-      if (monitoringWindowS_ != 0F) {
-        output.writeFloat(2, monitoringWindowS_);
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public int getKpiIdCount() {
+        if (kpiIdBuilder_ == null) {
+          return kpiId_.size();
+        } else {
+          return kpiIdBuilder_.getCount();
+        }
       }
-      if (samplingRateS_ != 0F) {
-        output.writeFloat(3, samplingRateS_);
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public monitoring.Monitoring.KpiId getKpiId(int index) {
+        if (kpiIdBuilder_ == null) {
+          return kpiId_.get(index);
+        } else {
+          return kpiIdBuilder_.getMessage(index);
+        }
       }
-      if (lastNSamples_ != 0) {
-        output.writeUInt32(4, lastNSamples_);
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public Builder setKpiId(
+          int index, monitoring.Monitoring.KpiId value) {
+        if (kpiIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureKpiIdIsMutable();
+          kpiId_.set(index, value);
+          onChanged();
+        } else {
+          kpiIdBuilder_.setMessage(index, value);
+        }
+        return this;
       }
-      if (!getStartDateBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, startDate_);
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public Builder setKpiId(
+          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
+        if (kpiIdBuilder_ == null) {
+          ensureKpiIdIsMutable();
+          kpiId_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          kpiIdBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
       }
-      if (!getEndDateBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, endDate_);
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public Builder addKpiId(monitoring.Monitoring.KpiId value) {
+        if (kpiIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureKpiIdIsMutable();
+          kpiId_.add(value);
+          onChanged();
+        } else {
+          kpiIdBuilder_.addMessage(value);
+        }
+        return this;
       }
-      unknownFields.writeTo(output);
-    }
-
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < kpiId_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, kpiId_.get(i));
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public Builder addKpiId(
+          int index, monitoring.Monitoring.KpiId value) {
+        if (kpiIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureKpiIdIsMutable();
+          kpiId_.add(index, value);
+          onChanged();
+        } else {
+          kpiIdBuilder_.addMessage(index, value);
+        }
+        return this;
       }
-      if (monitoringWindowS_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(2, monitoringWindowS_);
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public Builder addKpiId(
+          monitoring.Monitoring.KpiId.Builder builderForValue) {
+        if (kpiIdBuilder_ == null) {
+          ensureKpiIdIsMutable();
+          kpiId_.add(builderForValue.build());
+          onChanged();
+        } else {
+          kpiIdBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
       }
-      if (samplingRateS_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(3, samplingRateS_);
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public Builder addKpiId(
+          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
+        if (kpiIdBuilder_ == null) {
+          ensureKpiIdIsMutable();
+          kpiId_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          kpiIdBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
       }
-      if (lastNSamples_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(4, lastNSamples_);
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public Builder addAllKpiId(
+          java.lang.Iterable<? extends monitoring.Monitoring.KpiId> values) {
+        if (kpiIdBuilder_ == null) {
+          ensureKpiIdIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, kpiId_);
+          onChanged();
+        } else {
+          kpiIdBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public Builder clearKpiId() {
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          kpiIdBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public Builder removeKpiId(int index) {
+        if (kpiIdBuilder_ == null) {
+          ensureKpiIdIsMutable();
+          kpiId_.remove(index);
+          onChanged();
+        } else {
+          kpiIdBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder(
+          int index) {
+        return getKpiIdFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder(
+          int index) {
+        if (kpiIdBuilder_ == null) {
+          return kpiId_.get(index);  } else {
+          return kpiIdBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
+           getKpiIdOrBuilderList() {
+        if (kpiIdBuilder_ != null) {
+          return kpiIdBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(kpiId_);
+        }
+      }
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public monitoring.Monitoring.KpiId.Builder addKpiIdBuilder() {
+        return getKpiIdFieldBuilder().addBuilder(
+            monitoring.Monitoring.KpiId.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public monitoring.Monitoring.KpiId.Builder addKpiIdBuilder(
+          int index) {
+        return getKpiIdFieldBuilder().addBuilder(
+            index, monitoring.Monitoring.KpiId.getDefaultInstance());
       }
-      if (!getStartDateBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, startDate_);
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
+       */
+      public java.util.List<monitoring.Monitoring.KpiId.Builder> 
+           getKpiIdBuilderList() {
+        return getKpiIdFieldBuilder().getBuilderList();
       }
-      if (!getEndDateBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, endDate_);
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
+          getKpiIdFieldBuilder() {
+        if (kpiIdBuilder_ == null) {
+          kpiIdBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
+                  kpiId_,
+                  ((bitField0_ & 0x00000001) != 0),
+                  getParentForChildren(),
+                  isClean());
+          kpiId_ = null;
+        }
+        return kpiIdBuilder_;
       }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
+      private float monitoringWindowS_ ;
+      /**
+       * <code>float monitoring_window_s = 2;</code>
+       * @return The monitoringWindowS.
+       */
+      @java.lang.Override
+      public float getMonitoringWindowS() {
+        return monitoringWindowS_;
       }
-      if (!(obj instanceof monitoring.Monitoring.KpiQuery)) {
-        return super.equals(obj);
+      /**
+       * <code>float monitoring_window_s = 2;</code>
+       * @param value The monitoringWindowS to set.
+       * @return This builder for chaining.
+       */
+      public Builder setMonitoringWindowS(float value) {
+        
+        monitoringWindowS_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>float monitoring_window_s = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearMonitoringWindowS() {
+        
+        monitoringWindowS_ = 0F;
+        onChanged();
+        return this;
       }
-      monitoring.Monitoring.KpiQuery other = (monitoring.Monitoring.KpiQuery) obj;
-
-      if (!getKpiIdList()
-          .equals(other.getKpiIdList())) return false;
-      if (java.lang.Float.floatToIntBits(getMonitoringWindowS())
-          != java.lang.Float.floatToIntBits(
-              other.getMonitoringWindowS())) return false;
-      if (java.lang.Float.floatToIntBits(getSamplingRateS())
-          != java.lang.Float.floatToIntBits(
-              other.getSamplingRateS())) return false;
-      if (getLastNSamples()
-          != other.getLastNSamples()) return false;
-      if (!getStartDate()
-          .equals(other.getStartDate())) return false;
-      if (!getEndDate()
-          .equals(other.getEndDate())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
+      private float samplingRateS_ ;
+      /**
+       * <code>float sampling_rate_s = 3;</code>
+       * @return The samplingRateS.
+       */
+      @java.lang.Override
+      public float getSamplingRateS() {
+        return samplingRateS_;
       }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getKpiIdCount() > 0) {
-        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiIdList().hashCode();
+      /**
+       * <code>float sampling_rate_s = 3;</code>
+       * @param value The samplingRateS to set.
+       * @return This builder for chaining.
+       */
+      public Builder setSamplingRateS(float value) {
+        
+        samplingRateS_ = value;
+        onChanged();
+        return this;
       }
-      hash = (37 * hash) + MONITORING_WINDOW_S_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getMonitoringWindowS());
-      hash = (37 * hash) + SAMPLING_RATE_S_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getSamplingRateS());
-      hash = (37 * hash) + LAST_N_SAMPLES_FIELD_NUMBER;
-      hash = (53 * hash) + getLastNSamples();
-      hash = (37 * hash) + START_DATE_FIELD_NUMBER;
-      hash = (53 * hash) + getStartDate().hashCode();
-      hash = (37 * hash) + END_DATE_FIELD_NUMBER;
-      hash = (53 * hash) + getEndDate().hashCode();
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
-
-    public static monitoring.Monitoring.KpiQuery parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiQuery parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiQuery parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.KpiQuery prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
-
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.KpiQuery}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.KpiQuery)
-        monitoring.Monitoring.KpiQueryOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiQuery_descriptor;
+      /**
+       * <code>float sampling_rate_s = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearSamplingRateS() {
+        
+        samplingRateS_ = 0F;
+        onChanged();
+        return this;
       }
 
+      private int lastNSamples_ ;
+      /**
+       * <pre>
+       * used when you want something like "get the last N many samples
+       * </pre>
+       *
+       * <code>uint32 last_n_samples = 4;</code>
+       * @return The lastNSamples.
+       */
       @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiQuery_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.KpiQuery.class, monitoring.Monitoring.KpiQuery.Builder.class);
+      public int getLastNSamples() {
+        return lastNSamples_;
       }
-
-      // Construct using monitoring.Monitoring.KpiQuery.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
+      /**
+       * <pre>
+       * used when you want something like "get the last N many samples
+       * </pre>
+       *
+       * <code>uint32 last_n_samples = 4;</code>
+       * @param value The lastNSamples to set.
+       * @return This builder for chaining.
+       */
+      public Builder setLastNSamples(int value) {
+        
+        lastNSamples_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * used when you want something like "get the last N many samples
+       * </pre>
+       *
+       * <code>uint32 last_n_samples = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearLastNSamples() {
+        
+        lastNSamples_ = 0;
+        onChanged();
+        return this;
       }
 
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
+      private context.ContextOuterClass.Timestamp startTimestamp_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> startTimestampBuilder_;
+      /**
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
+       * @return Whether the startTimestamp field is set.
+       */
+      public boolean hasStartTimestamp() {
+        return startTimestampBuilder_ != null || startTimestamp_ != null;
       }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getKpiIdFieldBuilder();
+      /**
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
+       * @return The startTimestamp.
+       */
+      public context.ContextOuterClass.Timestamp getStartTimestamp() {
+        if (startTimestampBuilder_ == null) {
+          return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
+        } else {
+          return startTimestampBuilder_.getMessage();
         }
       }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+      /**
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
+       */
+      public Builder setStartTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (startTimestampBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          startTimestamp_ = value;
+          onChanged();
         } else {
-          kpiIdBuilder_.clear();
+          startTimestampBuilder_.setMessage(value);
         }
-        monitoringWindowS_ = 0F;
-
-        samplingRateS_ = 0F;
-
-        lastNSamples_ = 0;
-
-        startDate_ = "";
-
-        endDate_ = "";
 
         return this;
       }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiQuery_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiQuery getDefaultInstanceForType() {
-        return monitoring.Monitoring.KpiQuery.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiQuery build() {
-        monitoring.Monitoring.KpiQuery result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
+      /**
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
+       */
+      public Builder setStartTimestamp(
+          context.ContextOuterClass.Timestamp.Builder builderForValue) {
+        if (startTimestampBuilder_ == null) {
+          startTimestamp_ = builderForValue.build();
+          onChanged();
+        } else {
+          startTimestampBuilder_.setMessage(builderForValue.build());
         }
-        return result;
-      }
 
-      @java.lang.Override
-      public monitoring.Monitoring.KpiQuery buildPartial() {
-        monitoring.Monitoring.KpiQuery result = new monitoring.Monitoring.KpiQuery(this);
-        int from_bitField0_ = bitField0_;
-        if (kpiIdBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            kpiId_ = java.util.Collections.unmodifiableList(kpiId_);
-            bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
+       */
+      public Builder mergeStartTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (startTimestampBuilder_ == null) {
+          if (startTimestamp_ != null) {
+            startTimestamp_ =
+              context.ContextOuterClass.Timestamp.newBuilder(startTimestamp_).mergeFrom(value).buildPartial();
+          } else {
+            startTimestamp_ = value;
           }
-          result.kpiId_ = kpiId_;
+          onChanged();
         } else {
-          result.kpiId_ = kpiIdBuilder_.build();
+          startTimestampBuilder_.mergeFrom(value);
         }
-        result.monitoringWindowS_ = monitoringWindowS_;
-        result.samplingRateS_ = samplingRateS_;
-        result.lastNSamples_ = lastNSamples_;
-        result.startDate_ = startDate_;
-        result.endDate_ = endDate_;
-        onBuilt();
-        return result;
-      }
 
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
+        return this;
       }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+      /**
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
+       */
+      public Builder clearStartTimestamp() {
+        if (startTimestampBuilder_ == null) {
+          startTimestamp_ = null;
+          onChanged();
+        } else {
+          startTimestamp_ = null;
+          startTimestampBuilder_ = null;
+        }
+
+        return this;
       }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+      /**
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
+       */
+      public context.ContextOuterClass.Timestamp.Builder getStartTimestampBuilder() {
+        
+        onChanged();
+        return getStartTimestampFieldBuilder().getBuilder();
       }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+      /**
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
+       */
+      public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
+        if (startTimestampBuilder_ != null) {
+          return startTimestampBuilder_.getMessageOrBuilder();
+        } else {
+          return startTimestamp_ == null ?
+              context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
+        }
       }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+      /**
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
+          getStartTimestampFieldBuilder() {
+        if (startTimestampBuilder_ == null) {
+          startTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
+                  getStartTimestamp(),
+                  getParentForChildren(),
+                  isClean());
+          startTimestamp_ = null;
+        }
+        return startTimestampBuilder_;
       }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+
+      private context.ContextOuterClass.Timestamp endTimestamp_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> endTimestampBuilder_;
+      /**
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
+       * @return Whether the endTimestamp field is set.
+       */
+      public boolean hasEndTimestamp() {
+        return endTimestampBuilder_ != null || endTimestamp_ != null;
       }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.KpiQuery) {
-          return mergeFrom((monitoring.Monitoring.KpiQuery)other);
+      /**
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
+       * @return The endTimestamp.
+       */
+      public context.ContextOuterClass.Timestamp getEndTimestamp() {
+        if (endTimestampBuilder_ == null) {
+          return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
         } else {
-          super.mergeFrom(other);
-          return this;
+          return endTimestampBuilder_.getMessage();
         }
       }
-
-      public Builder mergeFrom(monitoring.Monitoring.KpiQuery other) {
-        if (other == monitoring.Monitoring.KpiQuery.getDefaultInstance()) return this;
-        if (kpiIdBuilder_ == null) {
-          if (!other.kpiId_.isEmpty()) {
-            if (kpiId_.isEmpty()) {
-              kpiId_ = other.kpiId_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureKpiIdIsMutable();
-              kpiId_.addAll(other.kpiId_);
-            }
-            onChanged();
+      /**
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
+       */
+      public Builder setEndTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (endTimestampBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
           }
+          endTimestamp_ = value;
+          onChanged();
         } else {
-          if (!other.kpiId_.isEmpty()) {
-            if (kpiIdBuilder_.isEmpty()) {
-              kpiIdBuilder_.dispose();
-              kpiIdBuilder_ = null;
-              kpiId_ = other.kpiId_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              kpiIdBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getKpiIdFieldBuilder() : null;
-            } else {
-              kpiIdBuilder_.addAllMessages(other.kpiId_);
-            }
-          }
-        }
-        if (other.getMonitoringWindowS() != 0F) {
-          setMonitoringWindowS(other.getMonitoringWindowS());
+          endTimestampBuilder_.setMessage(value);
         }
-        if (other.getSamplingRateS() != 0F) {
-          setSamplingRateS(other.getSamplingRateS());
-        }
-        if (other.getLastNSamples() != 0) {
-          setLastNSamples(other.getLastNSamples());
+
+        return this;
+      }
+      /**
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
+       */
+      public Builder setEndTimestamp(
+          context.ContextOuterClass.Timestamp.Builder builderForValue) {
+        if (endTimestampBuilder_ == null) {
+          endTimestamp_ = builderForValue.build();
+          onChanged();
+        } else {
+          endTimestampBuilder_.setMessage(builderForValue.build());
         }
-        if (!other.getStartDate().isEmpty()) {
-          startDate_ = other.startDate_;
+
+        return this;
+      }
+      /**
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
+       */
+      public Builder mergeEndTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (endTimestampBuilder_ == null) {
+          if (endTimestamp_ != null) {
+            endTimestamp_ =
+              context.ContextOuterClass.Timestamp.newBuilder(endTimestamp_).mergeFrom(value).buildPartial();
+          } else {
+            endTimestamp_ = value;
+          }
           onChanged();
+        } else {
+          endTimestampBuilder_.mergeFrom(value);
         }
-        if (!other.getEndDate().isEmpty()) {
-          endDate_ = other.endDate_;
+
+        return this;
+      }
+      /**
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
+       */
+      public Builder clearEndTimestamp() {
+        if (endTimestampBuilder_ == null) {
+          endTimestamp_ = null;
           onChanged();
+        } else {
+          endTimestamp_ = null;
+          endTimestampBuilder_ = null;
         }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
+
         return this;
       }
+      /**
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
+       */
+      public context.ContextOuterClass.Timestamp.Builder getEndTimestampBuilder() {
+        
+        onChanged();
+        return getEndTimestampFieldBuilder().getBuilder();
+      }
+      /**
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
+       */
+      public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
+        if (endTimestampBuilder_ != null) {
+          return endTimestampBuilder_.getMessageOrBuilder();
+        } else {
+          return endTimestamp_ == null ?
+              context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
+        }
+      }
+      /**
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
+          getEndTimestampFieldBuilder() {
+        if (endTimestampBuilder_ == null) {
+          endTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
+                  getEndTimestamp(),
+                  getParentForChildren(),
+                  isClean());
+          endTimestamp_ = null;
+        }
+        return endTimestampBuilder_;
+      }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
 
       @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
       }
 
+
+      // @@protoc_insertion_point(builder_scope:monitoring.KpiQuery)
+    }
+
+    // @@protoc_insertion_point(class_scope:monitoring.KpiQuery)
+    private static final monitoring.Monitoring.KpiQuery DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiQuery();
+    }
+
+    public static monitoring.Monitoring.KpiQuery getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static final com.google.protobuf.Parser<KpiQuery>
+        PARSER = new com.google.protobuf.AbstractParser<KpiQuery>() {
       @java.lang.Override
-      public Builder mergeFrom(
+      public KpiQuery parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.KpiQuery parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.KpiQuery) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new KpiQuery(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<KpiQuery> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<KpiQuery> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public monitoring.Monitoring.KpiQuery getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface KpiIdOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:monitoring.KpiId)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>.context.Uuid kpi_id = 1;</code>
+     * @return Whether the kpiId field is set.
+     */
+    boolean hasKpiId();
+    /**
+     * <code>.context.Uuid kpi_id = 1;</code>
+     * @return The kpiId.
+     */
+    context.ContextOuterClass.Uuid getKpiId();
+    /**
+     * <code>.context.Uuid kpi_id = 1;</code>
+     */
+    context.ContextOuterClass.UuidOrBuilder getKpiIdOrBuilder();
+  }
+  /**
+   * Protobuf type {@code monitoring.KpiId}
+   */
+  public static final class KpiId extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:monitoring.KpiId)
+      KpiIdOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use KpiId.newBuilder() to construct.
+    private KpiId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private KpiId() {
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new KpiId();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private KpiId(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 10: {
+              context.ContextOuterClass.Uuid.Builder subBuilder = null;
+              if (kpiId_ != null) {
+                subBuilder = kpiId_.toBuilder();
+              }
+              kpiId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(kpiId_);
+                kpiId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
           }
         }
-        return this;
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
       }
-      private int bitField0_;
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return monitoring.Monitoring.internal_static_monitoring_KpiId_descriptor;
+    }
 
-      private java.util.List<monitoring.Monitoring.KpiId> kpiId_ =
-        java.util.Collections.emptyList();
-      private void ensureKpiIdIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          kpiId_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>(kpiId_);
-          bitField0_ |= 0x00000001;
-         }
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return monitoring.Monitoring.internal_static_monitoring_KpiId_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              monitoring.Monitoring.KpiId.class, monitoring.Monitoring.KpiId.Builder.class);
+    }
+
+    public static final int KPI_ID_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.Uuid kpiId_;
+    /**
+     * <code>.context.Uuid kpi_id = 1;</code>
+     * @return Whether the kpiId field is set.
+     */
+    @java.lang.Override
+    public boolean hasKpiId() {
+      return kpiId_ != null;
+    }
+    /**
+     * <code>.context.Uuid kpi_id = 1;</code>
+     * @return The kpiId.
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.Uuid getKpiId() {
+      return kpiId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : kpiId_;
+    }
+    /**
+     * <code>.context.Uuid kpi_id = 1;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.UuidOrBuilder getKpiIdOrBuilder() {
+      return getKpiId();
+    }
+
+    private byte memoizedIsInitialized = -1;
+    @java.lang.Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      if (kpiId_ != null) {
+        output.writeMessage(1, getKpiId());
       }
+      unknownFields.writeTo(output);
+    }
 
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
 
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public java.util.List<monitoring.Monitoring.KpiId> getKpiIdList() {
-        if (kpiIdBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(kpiId_);
-        } else {
-          return kpiIdBuilder_.getMessageList();
-        }
+      size = 0;
+      if (kpiId_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, getKpiId());
       }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public int getKpiIdCount() {
-        if (kpiIdBuilder_ == null) {
-          return kpiId_.size();
-        } else {
-          return kpiIdBuilder_.getCount();
-        }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
       }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId getKpiId(int index) {
-        if (kpiIdBuilder_ == null) {
-          return kpiId_.get(index);
-        } else {
-          return kpiIdBuilder_.getMessage(index);
-        }
+      if (!(obj instanceof monitoring.Monitoring.KpiId)) {
+        return super.equals(obj);
       }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(
-          int index, monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIdIsMutable();
-          kpiId_.set(index, value);
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(index, value);
-        }
-        return this;
+      monitoring.Monitoring.KpiId other = (monitoring.Monitoring.KpiId) obj;
+
+      if (hasKpiId() != other.hasKpiId()) return false;
+      if (hasKpiId()) {
+        if (!getKpiId()
+            .equals(other.getKpiId())) return false;
       }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(
-          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdBuilder_ == null) {
-          ensureKpiIdIsMutable();
-          kpiId_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
+      if (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
       }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder addKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIdIsMutable();
-          kpiId_.add(value);
-          onChanged();
-        } else {
-          kpiIdBuilder_.addMessage(value);
-        }
-        return this;
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasKpiId()) {
+        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getKpiId().hashCode();
       }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder addKpiId(
-          int index, monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIdIsMutable();
-          kpiId_.add(index, value);
-          onChanged();
-        } else {
-          kpiIdBuilder_.addMessage(index, value);
-        }
-        return this;
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static monitoring.Monitoring.KpiId parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static monitoring.Monitoring.KpiId parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static monitoring.Monitoring.KpiId parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static monitoring.Monitoring.KpiId parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static monitoring.Monitoring.KpiId parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static monitoring.Monitoring.KpiId parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static monitoring.Monitoring.KpiId parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static monitoring.Monitoring.KpiId parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static monitoring.Monitoring.KpiId parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static monitoring.Monitoring.KpiId parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static monitoring.Monitoring.KpiId parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static monitoring.Monitoring.KpiId parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    @java.lang.Override
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(monitoring.Monitoring.KpiId prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    @java.lang.Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code monitoring.KpiId}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:monitoring.KpiId)
+        monitoring.Monitoring.KpiIdOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return monitoring.Monitoring.internal_static_monitoring_KpiId_descriptor;
       }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder addKpiId(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdBuilder_ == null) {
-          ensureKpiIdIsMutable();
-          kpiId_.add(builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return monitoring.Monitoring.internal_static_monitoring_KpiId_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                monitoring.Monitoring.KpiId.class, monitoring.Monitoring.KpiId.Builder.class);
       }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder addKpiId(
-          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdBuilder_ == null) {
-          ensureKpiIdIsMutable();
-          kpiId_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
+
+      // Construct using monitoring.Monitoring.KpiId.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
       }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder addAllKpiId(
-          java.lang.Iterable<? extends monitoring.Monitoring.KpiId> values) {
-        if (kpiIdBuilder_ == null) {
-          ensureKpiIdIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, kpiId_);
-          onChanged();
-        } else {
-          kpiIdBuilder_.addAllMessages(values);
-        }
-        return this;
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
       }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder clearKpiId() {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          kpiIdBuilder_.clear();
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
         }
-        return this;
       }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder removeKpiId(int index) {
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
         if (kpiIdBuilder_ == null) {
-          ensureKpiIdIsMutable();
-          kpiId_.remove(index);
-          onChanged();
+          kpiId_ = null;
         } else {
-          kpiIdBuilder_.remove(index);
+          kpiId_ = null;
+          kpiIdBuilder_ = null;
         }
         return this;
       }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder(
-          int index) {
-        return getKpiIdFieldBuilder().getBuilder(index);
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return monitoring.Monitoring.internal_static_monitoring_KpiId_descriptor;
       }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder(
-          int index) {
-        if (kpiIdBuilder_ == null) {
-          return kpiId_.get(index);  } else {
-          return kpiIdBuilder_.getMessageOrBuilder(index);
-        }
+
+      @java.lang.Override
+      public monitoring.Monitoring.KpiId getDefaultInstanceForType() {
+        return monitoring.Monitoring.KpiId.getDefaultInstance();
       }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-           getKpiIdOrBuilderList() {
-        if (kpiIdBuilder_ != null) {
-          return kpiIdBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(kpiId_);
+
+      @java.lang.Override
+      public monitoring.Monitoring.KpiId build() {
+        monitoring.Monitoring.KpiId result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
         }
+        return result;
       }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder addKpiIdBuilder() {
-        return getKpiIdFieldBuilder().addBuilder(
-            monitoring.Monitoring.KpiId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder addKpiIdBuilder(
-          int index) {
-        return getKpiIdFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.KpiId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id = 1;</code>
-       */
-      public java.util.List<monitoring.Monitoring.KpiId.Builder> 
-           getKpiIdBuilderList() {
-        return getKpiIdFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdFieldBuilder() {
+
+      @java.lang.Override
+      public monitoring.Monitoring.KpiId buildPartial() {
+        monitoring.Monitoring.KpiId result = new monitoring.Monitoring.KpiId(this);
         if (kpiIdBuilder_ == null) {
-          kpiIdBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  kpiId_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          kpiId_ = null;
+          result.kpiId_ = kpiId_;
+        } else {
+          result.kpiId_ = kpiIdBuilder_.build();
         }
-        return kpiIdBuilder_;
+        onBuilt();
+        return result;
       }
 
-      private float monitoringWindowS_ ;
-      /**
-       * <code>float monitoring_window_s = 2;</code>
-       * @return The monitoringWindowS.
-       */
       @java.lang.Override
-      public float getMonitoringWindowS() {
-        return monitoringWindowS_;
-      }
-      /**
-       * <code>float monitoring_window_s = 2;</code>
-       * @param value The monitoringWindowS to set.
-       * @return This builder for chaining.
-       */
-      public Builder setMonitoringWindowS(float value) {
-        
-        monitoringWindowS_ = value;
-        onChanged();
-        return this;
+      public Builder clone() {
+        return super.clone();
       }
-      /**
-       * <code>float monitoring_window_s = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearMonitoringWindowS() {
-        
-        monitoringWindowS_ = 0F;
-        onChanged();
-        return this;
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
       }
-
-      private float samplingRateS_ ;
-      /**
-       * <code>float sampling_rate_s = 3;</code>
-       * @return The samplingRateS.
-       */
       @java.lang.Override
-      public float getSamplingRateS() {
-        return samplingRateS_;
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
       }
-      /**
-       * <code>float sampling_rate_s = 3;</code>
-       * @param value The samplingRateS to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSamplingRateS(float value) {
-        
-        samplingRateS_ = value;
-        onChanged();
-        return this;
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
       }
-      /**
-       * <code>float sampling_rate_s = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSamplingRateS() {
-        
-        samplingRateS_ = 0F;
-        onChanged();
-        return this;
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
       }
-
-      private int lastNSamples_ ;
-      /**
-       * <pre>
-       * used when you want something like "get the last N many samples
-       * </pre>
-       *
-       * <code>uint32 last_n_samples = 4;</code>
-       * @return The lastNSamples.
-       */
       @java.lang.Override
-      public int getLastNSamples() {
-        return lastNSamples_;
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
       }
-      /**
-       * <pre>
-       * used when you want something like "get the last N many samples
-       * </pre>
-       *
-       * <code>uint32 last_n_samples = 4;</code>
-       * @param value The lastNSamples to set.
-       * @return This builder for chaining.
-       */
-      public Builder setLastNSamples(int value) {
-        
-        lastNSamples_ = value;
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof monitoring.Monitoring.KpiId) {
+          return mergeFrom((monitoring.Monitoring.KpiId)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(monitoring.Monitoring.KpiId other) {
+        if (other == monitoring.Monitoring.KpiId.getDefaultInstance()) return this;
+        if (other.hasKpiId()) {
+          mergeKpiId(other.getKpiId());
+        }
+        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
-      /**
-       * <pre>
-       * used when you want something like "get the last N many samples
-       * </pre>
-       *
-       * <code>uint32 last_n_samples = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearLastNSamples() {
-        
-        lastNSamples_ = 0;
-        onChanged();
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        monitoring.Monitoring.KpiId parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (monitoring.Monitoring.KpiId) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
         return this;
       }
 
-      private java.lang.Object startDate_ = "";
+      private context.ContextOuterClass.Uuid kpiId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> kpiIdBuilder_;
       /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>string start_date = 5;</code>
-       * @return The startDate.
+       * <code>.context.Uuid kpi_id = 1;</code>
+       * @return Whether the kpiId field is set.
        */
-      public java.lang.String getStartDate() {
-        java.lang.Object ref = startDate_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          startDate_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
+      public boolean hasKpiId() {
+        return kpiIdBuilder_ != null || kpiId_ != null;
       }
       /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>string start_date = 5;</code>
-       * @return The bytes for startDate.
+       * <code>.context.Uuid kpi_id = 1;</code>
+       * @return The kpiId.
        */
-      public com.google.protobuf.ByteString
-          getStartDateBytes() {
-        java.lang.Object ref = startDate_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          startDate_ = b;
-          return b;
+      public context.ContextOuterClass.Uuid getKpiId() {
+        if (kpiIdBuilder_ == null) {
+          return kpiId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : kpiId_;
         } else {
-          return (com.google.protobuf.ByteString) ref;
+          return kpiIdBuilder_.getMessage();
         }
       }
       /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>string start_date = 5;</code>
-       * @param value The startDate to set.
-       * @return This builder for chaining.
-       */
-      public Builder setStartDate(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        startDate_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>string start_date = 5;</code>
-       * @return This builder for chaining.
+       * <code>.context.Uuid kpi_id = 1;</code>
        */
-      public Builder clearStartDate() {
-        
-        startDate_ = getDefaultInstance().getStartDate();
-        onChanged();
+      public Builder setKpiId(context.ContextOuterClass.Uuid value) {
+        if (kpiIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          kpiId_ = value;
+          onChanged();
+        } else {
+          kpiIdBuilder_.setMessage(value);
+        }
+
         return this;
       }
       /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>string start_date = 5;</code>
-       * @param value The bytes for startDate to set.
-       * @return This builder for chaining.
+       * <code>.context.Uuid kpi_id = 1;</code>
        */
-      public Builder setStartDateBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        startDate_ = value;
-        onChanged();
+      public Builder setKpiId(
+          context.ContextOuterClass.Uuid.Builder builderForValue) {
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = builderForValue.build();
+          onChanged();
+        } else {
+          kpiIdBuilder_.setMessage(builderForValue.build());
+        }
+
         return this;
       }
-
-      private java.lang.Object endDate_ = "";
       /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>string end_date = 6;</code>
-       * @return The endDate.
+       * <code>.context.Uuid kpi_id = 1;</code>
        */
-      public java.lang.String getEndDate() {
-        java.lang.Object ref = endDate_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          endDate_ = s;
-          return s;
+      public Builder mergeKpiId(context.ContextOuterClass.Uuid value) {
+        if (kpiIdBuilder_ == null) {
+          if (kpiId_ != null) {
+            kpiId_ =
+              context.ContextOuterClass.Uuid.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+          } else {
+            kpiId_ = value;
+          }
+          onChanged();
         } else {
-          return (java.lang.String) ref;
+          kpiIdBuilder_.mergeFrom(value);
         }
+
+        return this;
       }
       /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>string end_date = 6;</code>
-       * @return The bytes for endDate.
+       * <code>.context.Uuid kpi_id = 1;</code>
        */
-      public com.google.protobuf.ByteString
-          getEndDateBytes() {
-        java.lang.Object ref = endDate_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          endDate_ = b;
-          return b;
+      public Builder clearKpiId() {
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = null;
+          onChanged();
         } else {
-          return (com.google.protobuf.ByteString) ref;
+          kpiId_ = null;
+          kpiIdBuilder_ = null;
         }
+
+        return this;
       }
       /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>string end_date = 6;</code>
-       * @param value The endDate to set.
-       * @return This builder for chaining.
+       * <code>.context.Uuid kpi_id = 1;</code>
        */
-      public Builder setEndDate(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        endDate_ = value;
+      public context.ContextOuterClass.Uuid.Builder getKpiIdBuilder() {
+        
         onChanged();
-        return this;
+        return getKpiIdFieldBuilder().getBuilder();
       }
       /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>string end_date = 6;</code>
-       * @return This builder for chaining.
+       * <code>.context.Uuid kpi_id = 1;</code>
        */
-      public Builder clearEndDate() {
-        
-        endDate_ = getDefaultInstance().getEndDate();
-        onChanged();
-        return this;
+      public context.ContextOuterClass.UuidOrBuilder getKpiIdOrBuilder() {
+        if (kpiIdBuilder_ != null) {
+          return kpiIdBuilder_.getMessageOrBuilder();
+        } else {
+          return kpiId_ == null ?
+              context.ContextOuterClass.Uuid.getDefaultInstance() : kpiId_;
+        }
       }
       /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>string end_date = 6;</code>
-       * @param value The bytes for endDate to set.
-       * @return This builder for chaining.
+       * <code>.context.Uuid kpi_id = 1;</code>
        */
-      public Builder setEndDateBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        endDate_ = value;
-        onChanged();
-        return this;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
+          getKpiIdFieldBuilder() {
+        if (kpiIdBuilder_ == null) {
+          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
+                  getKpiId(),
+                  getParentForChildren(),
+                  isClean());
+          kpiId_ = null;
+        }
+        return kpiIdBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -7572,85 +4998,115 @@ public final class Monitoring {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:monitoring.KpiQuery)
+      // @@protoc_insertion_point(builder_scope:monitoring.KpiId)
     }
 
-    // @@protoc_insertion_point(class_scope:monitoring.KpiQuery)
-    private static final monitoring.Monitoring.KpiQuery DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:monitoring.KpiId)
+    private static final monitoring.Monitoring.KpiId DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiQuery();
+      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiId();
     }
 
-    public static monitoring.Monitoring.KpiQuery getDefaultInstance() {
+    public static monitoring.Monitoring.KpiId getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<KpiQuery>
-        PARSER = new com.google.protobuf.AbstractParser<KpiQuery>() {
+    private static final com.google.protobuf.Parser<KpiId>
+        PARSER = new com.google.protobuf.AbstractParser<KpiId>() {
       @java.lang.Override
-      public KpiQuery parsePartialFrom(
+      public KpiId parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new KpiQuery(input, extensionRegistry);
+        return new KpiId(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<KpiQuery> parser() {
+    public static com.google.protobuf.Parser<KpiId> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<KpiQuery> getParserForType() {
+    public com.google.protobuf.Parser<KpiId> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public monitoring.Monitoring.KpiQuery getDefaultInstanceForType() {
+    public monitoring.Monitoring.KpiId getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface KpiIdOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.KpiId)
+  public interface KpiOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:monitoring.Kpi)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>.context.Uuid kpi_id = 1;</code>
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
      * @return Whether the kpiId field is set.
      */
     boolean hasKpiId();
     /**
-     * <code>.context.Uuid kpi_id = 1;</code>
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
      * @return The kpiId.
      */
-    context.ContextOuterClass.Uuid getKpiId();
+    monitoring.Monitoring.KpiId getKpiId();
     /**
-     * <code>.context.Uuid kpi_id = 1;</code>
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
      */
-    context.ContextOuterClass.UuidOrBuilder getKpiIdOrBuilder();
+    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
+
+    /**
+     * <code>.context.Timestamp timestamp = 2;</code>
+     * @return Whether the timestamp field is set.
+     */
+    boolean hasTimestamp();
+    /**
+     * <code>.context.Timestamp timestamp = 2;</code>
+     * @return The timestamp.
+     */
+    context.ContextOuterClass.Timestamp getTimestamp();
+    /**
+     * <code>.context.Timestamp timestamp = 2;</code>
+     */
+    context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
+
+    /**
+     * <code>.monitoring.KpiValue kpi_value = 3;</code>
+     * @return Whether the kpiValue field is set.
+     */
+    boolean hasKpiValue();
+    /**
+     * <code>.monitoring.KpiValue kpi_value = 3;</code>
+     * @return The kpiValue.
+     */
+    monitoring.Monitoring.KpiValue getKpiValue();
+    /**
+     * <code>.monitoring.KpiValue kpi_value = 3;</code>
+     */
+    monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder();
   }
   /**
-   * Protobuf type {@code monitoring.KpiId}
+   * Protobuf type {@code monitoring.Kpi}
    */
-  public static final class KpiId extends
+  public static final class Kpi extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.KpiId)
-      KpiIdOrBuilder {
+      // @@protoc_insertion_point(message_implements:monitoring.Kpi)
+      KpiOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use KpiId.newBuilder() to construct.
-    private KpiId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use Kpi.newBuilder() to construct.
+    private Kpi(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private KpiId() {
+    private Kpi() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new KpiId();
+      return new Kpi();
     }
 
     @java.lang.Override
@@ -7658,7 +5114,7 @@ public final class Monitoring {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private KpiId(
+    private Kpi(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -7677,11 +5133,11 @@ public final class Monitoring {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
+              monitoring.Monitoring.KpiId.Builder subBuilder = null;
               if (kpiId_ != null) {
                 subBuilder = kpiId_.toBuilder();
               }
-              kpiId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
               if (subBuilder != null) {
                 subBuilder.mergeFrom(kpiId_);
                 kpiId_ = subBuilder.buildPartial();
@@ -7689,6 +5145,32 @@ public final class Monitoring {
 
               break;
             }
+            case 18: {
+              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+              if (timestamp_ != null) {
+                subBuilder = timestamp_.toBuilder();
+              }
+              timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(timestamp_);
+                timestamp_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 26: {
+              monitoring.Monitoring.KpiValue.Builder subBuilder = null;
+              if (kpiValue_ != null) {
+                subBuilder = kpiValue_.toBuilder();
+              }
+              kpiValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(kpiValue_);
+                kpiValue_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -7710,21 +5192,21 @@ public final class Monitoring {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiId_descriptor;
+      return monitoring.Monitoring.internal_static_monitoring_Kpi_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiId_fieldAccessorTable
+      return monitoring.Monitoring.internal_static_monitoring_Kpi_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.KpiId.class, monitoring.Monitoring.KpiId.Builder.class);
+              monitoring.Monitoring.Kpi.class, monitoring.Monitoring.Kpi.Builder.class);
     }
 
     public static final int KPI_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Uuid kpiId_;
+    private monitoring.Monitoring.KpiId kpiId_;
     /**
-     * <code>.context.Uuid kpi_id = 1;</code>
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
      * @return Whether the kpiId field is set.
      */
     @java.lang.Override
@@ -7732,21 +5214,73 @@ public final class Monitoring {
       return kpiId_ != null;
     }
     /**
-     * <code>.context.Uuid kpi_id = 1;</code>
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
      * @return The kpiId.
      */
     @java.lang.Override
-    public context.ContextOuterClass.Uuid getKpiId() {
-      return kpiId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : kpiId_;
+    public monitoring.Monitoring.KpiId getKpiId() {
+      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
     }
     /**
-     * <code>.context.Uuid kpi_id = 1;</code>
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getKpiIdOrBuilder() {
+    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
       return getKpiId();
     }
 
+    public static final int TIMESTAMP_FIELD_NUMBER = 2;
+    private context.ContextOuterClass.Timestamp timestamp_;
+    /**
+     * <code>.context.Timestamp timestamp = 2;</code>
+     * @return Whether the timestamp field is set.
+     */
+    @java.lang.Override
+    public boolean hasTimestamp() {
+      return timestamp_ != null;
+    }
+    /**
+     * <code>.context.Timestamp timestamp = 2;</code>
+     * @return The timestamp.
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.Timestamp getTimestamp() {
+      return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+    }
+    /**
+     * <code>.context.Timestamp timestamp = 2;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+      return getTimestamp();
+    }
+
+    public static final int KPI_VALUE_FIELD_NUMBER = 3;
+    private monitoring.Monitoring.KpiValue kpiValue_;
+    /**
+     * <code>.monitoring.KpiValue kpi_value = 3;</code>
+     * @return Whether the kpiValue field is set.
+     */
+    @java.lang.Override
+    public boolean hasKpiValue() {
+      return kpiValue_ != null;
+    }
+    /**
+     * <code>.monitoring.KpiValue kpi_value = 3;</code>
+     * @return The kpiValue.
+     */
+    @java.lang.Override
+    public monitoring.Monitoring.KpiValue getKpiValue() {
+      return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+    }
+    /**
+     * <code>.monitoring.KpiValue kpi_value = 3;</code>
+     */
+    @java.lang.Override
+    public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
+      return getKpiValue();
+    }
+
     private byte memoizedIsInitialized = -1;
     @java.lang.Override
     public final boolean isInitialized() {
@@ -7764,6 +5298,12 @@ public final class Monitoring {
       if (kpiId_ != null) {
         output.writeMessage(1, getKpiId());
       }
+      if (timestamp_ != null) {
+        output.writeMessage(2, getTimestamp());
+      }
+      if (kpiValue_ != null) {
+        output.writeMessage(3, getKpiValue());
+      }
       unknownFields.writeTo(output);
     }
 
@@ -7777,6 +5317,14 @@ public final class Monitoring {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(1, getKpiId());
       }
+      if (timestamp_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, getTimestamp());
+      }
+      if (kpiValue_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, getKpiValue());
+      }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
@@ -7787,16 +5335,26 @@ public final class Monitoring {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof monitoring.Monitoring.KpiId)) {
+      if (!(obj instanceof monitoring.Monitoring.Kpi)) {
         return super.equals(obj);
       }
-      monitoring.Monitoring.KpiId other = (monitoring.Monitoring.KpiId) obj;
+      monitoring.Monitoring.Kpi other = (monitoring.Monitoring.Kpi) obj;
 
       if (hasKpiId() != other.hasKpiId()) return false;
       if (hasKpiId()) {
         if (!getKpiId()
             .equals(other.getKpiId())) return false;
       }
+      if (hasTimestamp() != other.hasTimestamp()) return false;
+      if (hasTimestamp()) {
+        if (!getTimestamp()
+            .equals(other.getTimestamp())) return false;
+      }
+      if (hasKpiValue() != other.hasKpiValue()) return false;
+      if (hasKpiValue()) {
+        if (!getKpiValue()
+            .equals(other.getKpiValue())) return false;
+      }
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -7812,74 +5370,82 @@ public final class Monitoring {
         hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
         hash = (53 * hash) + getKpiId().hashCode();
       }
+      if (hasTimestamp()) {
+        hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
+        hash = (53 * hash) + getTimestamp().hashCode();
+      }
+      if (hasKpiValue()) {
+        hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER;
+        hash = (53 * hash) + getKpiValue().hashCode();
+      }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static monitoring.Monitoring.KpiId parseFrom(
+    public static monitoring.Monitoring.Kpi parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.KpiId parseFrom(
+    public static monitoring.Monitoring.Kpi parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiId parseFrom(
+    public static monitoring.Monitoring.Kpi parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.KpiId parseFrom(
+    public static monitoring.Monitoring.Kpi parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiId parseFrom(byte[] data)
+    public static monitoring.Monitoring.Kpi parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.KpiId parseFrom(
+    public static monitoring.Monitoring.Kpi parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiId parseFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.Kpi parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.KpiId parseFrom(
+    public static monitoring.Monitoring.Kpi parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiId parseDelimitedFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.Kpi parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.KpiId parseDelimitedFrom(
+    public static monitoring.Monitoring.Kpi parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiId parseFrom(
+    public static monitoring.Monitoring.Kpi parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.KpiId parseFrom(
+    public static monitoring.Monitoring.Kpi parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -7892,7 +5458,7 @@ public final class Monitoring {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(monitoring.Monitoring.KpiId prototype) {
+    public static Builder newBuilder(monitoring.Monitoring.Kpi prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -7908,26 +5474,26 @@ public final class Monitoring {
       return builder;
     }
     /**
-     * Protobuf type {@code monitoring.KpiId}
+     * Protobuf type {@code monitoring.Kpi}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.KpiId)
-        monitoring.Monitoring.KpiIdOrBuilder {
+        // @@protoc_insertion_point(builder_implements:monitoring.Kpi)
+        monitoring.Monitoring.KpiOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiId_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_Kpi_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiId_fieldAccessorTable
+        return monitoring.Monitoring.internal_static_monitoring_Kpi_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.KpiId.class, monitoring.Monitoring.KpiId.Builder.class);
+                monitoring.Monitoring.Kpi.class, monitoring.Monitoring.Kpi.Builder.class);
       }
 
-      // Construct using monitoring.Monitoring.KpiId.newBuilder()
+      // Construct using monitoring.Monitoring.Kpi.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -7951,23 +5517,35 @@ public final class Monitoring {
           kpiId_ = null;
           kpiIdBuilder_ = null;
         }
+        if (timestampBuilder_ == null) {
+          timestamp_ = null;
+        } else {
+          timestamp_ = null;
+          timestampBuilder_ = null;
+        }
+        if (kpiValueBuilder_ == null) {
+          kpiValue_ = null;
+        } else {
+          kpiValue_ = null;
+          kpiValueBuilder_ = null;
+        }
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiId_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_Kpi_descriptor;
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.KpiId getDefaultInstanceForType() {
-        return monitoring.Monitoring.KpiId.getDefaultInstance();
+      public monitoring.Monitoring.Kpi getDefaultInstanceForType() {
+        return monitoring.Monitoring.Kpi.getDefaultInstance();
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.KpiId build() {
-        monitoring.Monitoring.KpiId result = buildPartial();
+      public monitoring.Monitoring.Kpi build() {
+        monitoring.Monitoring.Kpi result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -7975,13 +5553,23 @@ public final class Monitoring {
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.KpiId buildPartial() {
-        monitoring.Monitoring.KpiId result = new monitoring.Monitoring.KpiId(this);
+      public monitoring.Monitoring.Kpi buildPartial() {
+        monitoring.Monitoring.Kpi result = new monitoring.Monitoring.Kpi(this);
         if (kpiIdBuilder_ == null) {
           result.kpiId_ = kpiId_;
         } else {
           result.kpiId_ = kpiIdBuilder_.build();
         }
+        if (timestampBuilder_ == null) {
+          result.timestamp_ = timestamp_;
+        } else {
+          result.timestamp_ = timestampBuilder_.build();
+        }
+        if (kpiValueBuilder_ == null) {
+          result.kpiValue_ = kpiValue_;
+        } else {
+          result.kpiValue_ = kpiValueBuilder_.build();
+        }
         onBuilt();
         return result;
       }
@@ -8020,19 +5608,25 @@ public final class Monitoring {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.KpiId) {
-          return mergeFrom((monitoring.Monitoring.KpiId)other);
+        if (other instanceof monitoring.Monitoring.Kpi) {
+          return mergeFrom((monitoring.Monitoring.Kpi)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(monitoring.Monitoring.KpiId other) {
-        if (other == monitoring.Monitoring.KpiId.getDefaultInstance()) return this;
+      public Builder mergeFrom(monitoring.Monitoring.Kpi other) {
+        if (other == monitoring.Monitoring.Kpi.getDefaultInstance()) return this;
         if (other.hasKpiId()) {
           mergeKpiId(other.getKpiId());
         }
+        if (other.hasTimestamp()) {
+          mergeTimestamp(other.getTimestamp());
+        }
+        if (other.hasKpiValue()) {
+          mergeKpiValue(other.getKpiValue());
+        }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
@@ -8048,11 +5642,11 @@ public final class Monitoring {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        monitoring.Monitoring.KpiId parsedMessage = null;
+        monitoring.Monitoring.Kpi parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.KpiId) e.getUnfinishedMessage();
+          parsedMessage = (monitoring.Monitoring.Kpi) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -8062,31 +5656,31 @@ public final class Monitoring {
         return this;
       }
 
-      private context.ContextOuterClass.Uuid kpiId_;
+      private monitoring.Monitoring.KpiId kpiId_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> kpiIdBuilder_;
+          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
       /**
-       * <code>.context.Uuid kpi_id = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        * @return Whether the kpiId field is set.
        */
       public boolean hasKpiId() {
         return kpiIdBuilder_ != null || kpiId_ != null;
       }
       /**
-       * <code>.context.Uuid kpi_id = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        * @return The kpiId.
        */
-      public context.ContextOuterClass.Uuid getKpiId() {
+      public monitoring.Monitoring.KpiId getKpiId() {
         if (kpiIdBuilder_ == null) {
-          return kpiId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : kpiId_;
+          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         } else {
           return kpiIdBuilder_.getMessage();
         }
       }
       /**
-       * <code>.context.Uuid kpi_id = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public Builder setKpiId(context.ContextOuterClass.Uuid value) {
+      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
         if (kpiIdBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8100,10 +5694,10 @@ public final class Monitoring {
         return this;
       }
       /**
-       * <code>.context.Uuid kpi_id = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
       public Builder setKpiId(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
+          monitoring.Monitoring.KpiId.Builder builderForValue) {
         if (kpiIdBuilder_ == null) {
           kpiId_ = builderForValue.build();
           onChanged();
@@ -8114,13 +5708,13 @@ public final class Monitoring {
         return this;
       }
       /**
-       * <code>.context.Uuid kpi_id = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public Builder mergeKpiId(context.ContextOuterClass.Uuid value) {
+      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
         if (kpiIdBuilder_ == null) {
           if (kpiId_ != null) {
             kpiId_ =
-              context.ContextOuterClass.Uuid.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
           } else {
             kpiId_ = value;
           }
@@ -8132,7 +5726,7 @@ public final class Monitoring {
         return this;
       }
       /**
-       * <code>.context.Uuid kpi_id = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
       public Builder clearKpiId() {
         if (kpiIdBuilder_ == null) {
@@ -8146,33 +5740,33 @@ public final class Monitoring {
         return this;
       }
       /**
-       * <code>.context.Uuid kpi_id = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public context.ContextOuterClass.Uuid.Builder getKpiIdBuilder() {
+      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
         
         onChanged();
         return getKpiIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.Uuid kpi_id = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public context.ContextOuterClass.UuidOrBuilder getKpiIdOrBuilder() {
+      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
         if (kpiIdBuilder_ != null) {
           return kpiIdBuilder_.getMessageOrBuilder();
         } else {
           return kpiId_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : kpiId_;
+              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         }
       }
       /**
-       * <code>.context.Uuid kpi_id = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
+          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
           getKpiIdFieldBuilder() {
         if (kpiIdBuilder_ == null) {
           kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
+              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
                   getKpiId(),
                   getParentForChildren(),
                   isClean());
@@ -8180,6 +5774,244 @@ public final class Monitoring {
         }
         return kpiIdBuilder_;
       }
+
+      private context.ContextOuterClass.Timestamp timestamp_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
+      /**
+       * <code>.context.Timestamp timestamp = 2;</code>
+       * @return Whether the timestamp field is set.
+       */
+      public boolean hasTimestamp() {
+        return timestampBuilder_ != null || timestamp_ != null;
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 2;</code>
+       * @return The timestamp.
+       */
+      public context.ContextOuterClass.Timestamp getTimestamp() {
+        if (timestampBuilder_ == null) {
+          return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        } else {
+          return timestampBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 2;</code>
+       */
+      public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (timestampBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          timestamp_ = value;
+          onChanged();
+        } else {
+          timestampBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 2;</code>
+       */
+      public Builder setTimestamp(
+          context.ContextOuterClass.Timestamp.Builder builderForValue) {
+        if (timestampBuilder_ == null) {
+          timestamp_ = builderForValue.build();
+          onChanged();
+        } else {
+          timestampBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 2;</code>
+       */
+      public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (timestampBuilder_ == null) {
+          if (timestamp_ != null) {
+            timestamp_ =
+              context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
+          } else {
+            timestamp_ = value;
+          }
+          onChanged();
+        } else {
+          timestampBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 2;</code>
+       */
+      public Builder clearTimestamp() {
+        if (timestampBuilder_ == null) {
+          timestamp_ = null;
+          onChanged();
+        } else {
+          timestamp_ = null;
+          timestampBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 2;</code>
+       */
+      public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+        
+        onChanged();
+        return getTimestampFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 2;</code>
+       */
+      public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+        if (timestampBuilder_ != null) {
+          return timestampBuilder_.getMessageOrBuilder();
+        } else {
+          return timestamp_ == null ?
+              context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        }
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
+          getTimestampFieldBuilder() {
+        if (timestampBuilder_ == null) {
+          timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
+                  getTimestamp(),
+                  getParentForChildren(),
+                  isClean());
+          timestamp_ = null;
+        }
+        return timestampBuilder_;
+      }
+
+      private monitoring.Monitoring.KpiValue kpiValue_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiValueBuilder_;
+      /**
+       * <code>.monitoring.KpiValue kpi_value = 3;</code>
+       * @return Whether the kpiValue field is set.
+       */
+      public boolean hasKpiValue() {
+        return kpiValueBuilder_ != null || kpiValue_ != null;
+      }
+      /**
+       * <code>.monitoring.KpiValue kpi_value = 3;</code>
+       * @return The kpiValue.
+       */
+      public monitoring.Monitoring.KpiValue getKpiValue() {
+        if (kpiValueBuilder_ == null) {
+          return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+        } else {
+          return kpiValueBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>.monitoring.KpiValue kpi_value = 3;</code>
+       */
+      public Builder setKpiValue(monitoring.Monitoring.KpiValue value) {
+        if (kpiValueBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          kpiValue_ = value;
+          onChanged();
+        } else {
+          kpiValueBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.monitoring.KpiValue kpi_value = 3;</code>
+       */
+      public Builder setKpiValue(
+          monitoring.Monitoring.KpiValue.Builder builderForValue) {
+        if (kpiValueBuilder_ == null) {
+          kpiValue_ = builderForValue.build();
+          onChanged();
+        } else {
+          kpiValueBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.monitoring.KpiValue kpi_value = 3;</code>
+       */
+      public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) {
+        if (kpiValueBuilder_ == null) {
+          if (kpiValue_ != null) {
+            kpiValue_ =
+              monitoring.Monitoring.KpiValue.newBuilder(kpiValue_).mergeFrom(value).buildPartial();
+          } else {
+            kpiValue_ = value;
+          }
+          onChanged();
+        } else {
+          kpiValueBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.monitoring.KpiValue kpi_value = 3;</code>
+       */
+      public Builder clearKpiValue() {
+        if (kpiValueBuilder_ == null) {
+          kpiValue_ = null;
+          onChanged();
+        } else {
+          kpiValue_ = null;
+          kpiValueBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.monitoring.KpiValue kpi_value = 3;</code>
+       */
+      public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() {
+        
+        onChanged();
+        return getKpiValueFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.monitoring.KpiValue kpi_value = 3;</code>
+       */
+      public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
+        if (kpiValueBuilder_ != null) {
+          return kpiValueBuilder_.getMessageOrBuilder();
+        } else {
+          return kpiValue_ == null ?
+              monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+        }
+      }
+      /**
+       * <code>.monitoring.KpiValue kpi_value = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> 
+          getKpiValueFieldBuilder() {
+        if (kpiValueBuilder_ == null) {
+          kpiValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder>(
+                  getKpiValue(),
+                  getParentForChildren(),
+                  isClean());
+          kpiValue_ = null;
+        }
+        return kpiValueBuilder_;
+      }
       @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
@@ -8193,113 +6025,130 @@ public final class Monitoring {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:monitoring.KpiId)
+      // @@protoc_insertion_point(builder_scope:monitoring.Kpi)
     }
 
-    // @@protoc_insertion_point(class_scope:monitoring.KpiId)
-    private static final monitoring.Monitoring.KpiId DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:monitoring.Kpi)
+    private static final monitoring.Monitoring.Kpi DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiId();
+      DEFAULT_INSTANCE = new monitoring.Monitoring.Kpi();
     }
 
-    public static monitoring.Monitoring.KpiId getDefaultInstance() {
+    public static monitoring.Monitoring.Kpi getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<KpiId>
-        PARSER = new com.google.protobuf.AbstractParser<KpiId>() {
+    private static final com.google.protobuf.Parser<Kpi>
+        PARSER = new com.google.protobuf.AbstractParser<Kpi>() {
       @java.lang.Override
-      public KpiId parsePartialFrom(
+      public Kpi parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new KpiId(input, extensionRegistry);
+        return new Kpi(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<KpiId> parser() {
+    public static com.google.protobuf.Parser<Kpi> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<KpiId> getParserForType() {
+    public com.google.protobuf.Parser<Kpi> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public monitoring.Monitoring.KpiId getDefaultInstanceForType() {
+    public monitoring.Monitoring.Kpi getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface KpiOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.Kpi)
+  public interface KpiValueRangeOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:monitoring.KpiValueRange)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
+     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+     * @return Whether the kpiMinValue field is set.
      */
-    boolean hasKpiId();
+    boolean hasKpiMinValue();
     /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
+     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+     * @return The kpiMinValue.
      */
-    monitoring.Monitoring.KpiId getKpiId();
+    monitoring.Monitoring.KpiValue getKpiMinValue();
     /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
+     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
      */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
+    monitoring.Monitoring.KpiValueOrBuilder getKpiMinValueOrBuilder();
 
     /**
-     * <code>string timestamp = 2;</code>
-     * @return The timestamp.
+     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+     * @return Whether the kpiMaxValue field is set.
      */
-    java.lang.String getTimestamp();
+    boolean hasKpiMaxValue();
     /**
-     * <code>string timestamp = 2;</code>
-     * @return The bytes for timestamp.
+     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+     * @return The kpiMaxValue.
      */
-    com.google.protobuf.ByteString
-        getTimestampBytes();
+    monitoring.Monitoring.KpiValue getKpiMaxValue();
+    /**
+     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+     */
+    monitoring.Monitoring.KpiValueOrBuilder getKpiMaxValueOrBuilder();
 
     /**
-     * <code>.monitoring.KpiValue kpi_value = 3;</code>
-     * @return Whether the kpiValue field is set.
+     * <pre>
+     * by default True
+     * </pre>
+     *
+     * <code>bool inRange = 3;</code>
+     * @return The inRange.
      */
-    boolean hasKpiValue();
+    boolean getInRange();
+
     /**
-     * <code>.monitoring.KpiValue kpi_value = 3;</code>
-     * @return The kpiValue.
+     * <pre>
+     * False is outside the interval
+     * </pre>
+     *
+     * <code>bool includeMinValue = 4;</code>
+     * @return The includeMinValue.
      */
-    monitoring.Monitoring.KpiValue getKpiValue();
+    boolean getIncludeMinValue();
+
     /**
-     * <code>.monitoring.KpiValue kpi_value = 3;</code>
+     * <pre>
+     * False is outside the interval
+     * </pre>
+     *
+     * <code>bool includeMaxValue = 5;</code>
+     * @return The includeMaxValue.
      */
-    monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder();
+    boolean getIncludeMaxValue();
   }
   /**
-   * Protobuf type {@code monitoring.Kpi}
+   * Protobuf type {@code monitoring.KpiValueRange}
    */
-  public static final class Kpi extends
+  public static final class KpiValueRange extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.Kpi)
-      KpiOrBuilder {
+      // @@protoc_insertion_point(message_implements:monitoring.KpiValueRange)
+      KpiValueRangeOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use Kpi.newBuilder() to construct.
-    private Kpi(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use KpiValueRange.newBuilder() to construct.
+    private KpiValueRange(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private Kpi() {
-      timestamp_ = "";
+    private KpiValueRange() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new Kpi();
+      return new KpiValueRange();
     }
 
     @java.lang.Override
@@ -8307,7 +6156,7 @@ public final class Monitoring {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private Kpi(
+    private KpiValueRange(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -8326,37 +6175,46 @@ public final class Monitoring {
               done = true;
               break;
             case 10: {
-              monitoring.Monitoring.KpiId.Builder subBuilder = null;
-              if (kpiId_ != null) {
-                subBuilder = kpiId_.toBuilder();
+              monitoring.Monitoring.KpiValue.Builder subBuilder = null;
+              if (kpiMinValue_ != null) {
+                subBuilder = kpiMinValue_.toBuilder();
               }
-              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+              kpiMinValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
               if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiId_);
-                kpiId_ = subBuilder.buildPartial();
+                subBuilder.mergeFrom(kpiMinValue_);
+                kpiMinValue_ = subBuilder.buildPartial();
               }
 
               break;
             }
             case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              timestamp_ = s;
-              break;
-            }
-            case 26: {
               monitoring.Monitoring.KpiValue.Builder subBuilder = null;
-              if (kpiValue_ != null) {
-                subBuilder = kpiValue_.toBuilder();
+              if (kpiMaxValue_ != null) {
+                subBuilder = kpiMaxValue_.toBuilder();
               }
-              kpiValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
+              kpiMaxValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
               if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiValue_);
-                kpiValue_ = subBuilder.buildPartial();
+                subBuilder.mergeFrom(kpiMaxValue_);
+                kpiMaxValue_ = subBuilder.buildPartial();
               }
 
               break;
             }
+            case 24: {
+
+              inRange_ = input.readBool();
+              break;
+            }
+            case 32: {
+
+              includeMinValue_ = input.readBool();
+              break;
+            }
+            case 40: {
+
+              includeMaxValue_ = input.readBool();
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -8378,105 +6236,112 @@ public final class Monitoring {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_Kpi_descriptor;
+      return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_Kpi_fieldAccessorTable
+      return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.Kpi.class, monitoring.Monitoring.Kpi.Builder.class);
+              monitoring.Monitoring.KpiValueRange.class, monitoring.Monitoring.KpiValueRange.Builder.class);
     }
 
-    public static final int KPI_ID_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.KpiId kpiId_;
+    public static final int KPIMINVALUE_FIELD_NUMBER = 1;
+    private monitoring.Monitoring.KpiValue kpiMinValue_;
     /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
+     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+     * @return Whether the kpiMinValue field is set.
      */
     @java.lang.Override
-    public boolean hasKpiId() {
-      return kpiId_ != null;
+    public boolean hasKpiMinValue() {
+      return kpiMinValue_ != null;
     }
     /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
+     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+     * @return The kpiMinValue.
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiId() {
-      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+    public monitoring.Monitoring.KpiValue getKpiMinValue() {
+      return kpiMinValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMinValue_;
     }
     /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
+     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-      return getKpiId();
+    public monitoring.Monitoring.KpiValueOrBuilder getKpiMinValueOrBuilder() {
+      return getKpiMinValue();
     }
 
-    public static final int TIMESTAMP_FIELD_NUMBER = 2;
-    private volatile java.lang.Object timestamp_;
+    public static final int KPIMAXVALUE_FIELD_NUMBER = 2;
+    private monitoring.Monitoring.KpiValue kpiMaxValue_;
     /**
-     * <code>string timestamp = 2;</code>
-     * @return The timestamp.
+     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+     * @return Whether the kpiMaxValue field is set.
      */
     @java.lang.Override
-    public java.lang.String getTimestamp() {
-      java.lang.Object ref = timestamp_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        timestamp_ = s;
-        return s;
-      }
+    public boolean hasKpiMaxValue() {
+      return kpiMaxValue_ != null;
     }
     /**
-     * <code>string timestamp = 2;</code>
-     * @return The bytes for timestamp.
+     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+     * @return The kpiMaxValue.
      */
     @java.lang.Override
-    public com.google.protobuf.ByteString
-        getTimestampBytes() {
-      java.lang.Object ref = timestamp_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        timestamp_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
+    public monitoring.Monitoring.KpiValue getKpiMaxValue() {
+      return kpiMaxValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMaxValue_;
+    }
+    /**
+     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+     */
+    @java.lang.Override
+    public monitoring.Monitoring.KpiValueOrBuilder getKpiMaxValueOrBuilder() {
+      return getKpiMaxValue();
     }
 
-    public static final int KPI_VALUE_FIELD_NUMBER = 3;
-    private monitoring.Monitoring.KpiValue kpiValue_;
+    public static final int INRANGE_FIELD_NUMBER = 3;
+    private boolean inRange_;
     /**
-     * <code>.monitoring.KpiValue kpi_value = 3;</code>
-     * @return Whether the kpiValue field is set.
+     * <pre>
+     * by default True
+     * </pre>
+     *
+     * <code>bool inRange = 3;</code>
+     * @return The inRange.
      */
     @java.lang.Override
-    public boolean hasKpiValue() {
-      return kpiValue_ != null;
+    public boolean getInRange() {
+      return inRange_;
     }
+
+    public static final int INCLUDEMINVALUE_FIELD_NUMBER = 4;
+    private boolean includeMinValue_;
     /**
-     * <code>.monitoring.KpiValue kpi_value = 3;</code>
-     * @return The kpiValue.
+     * <pre>
+     * False is outside the interval
+     * </pre>
+     *
+     * <code>bool includeMinValue = 4;</code>
+     * @return The includeMinValue.
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiValue getKpiValue() {
-      return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+    public boolean getIncludeMinValue() {
+      return includeMinValue_;
     }
+
+    public static final int INCLUDEMAXVALUE_FIELD_NUMBER = 5;
+    private boolean includeMaxValue_;
     /**
-     * <code>.monitoring.KpiValue kpi_value = 3;</code>
+     * <pre>
+     * False is outside the interval
+     * </pre>
+     *
+     * <code>bool includeMaxValue = 5;</code>
+     * @return The includeMaxValue.
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
-      return getKpiValue();
+    public boolean getIncludeMaxValue() {
+      return includeMaxValue_;
     }
 
     private byte memoizedIsInitialized = -1;
@@ -8493,14 +6358,20 @@ public final class Monitoring {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (kpiId_ != null) {
-        output.writeMessage(1, getKpiId());
+      if (kpiMinValue_ != null) {
+        output.writeMessage(1, getKpiMinValue());
       }
-      if (!getTimestampBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, timestamp_);
+      if (kpiMaxValue_ != null) {
+        output.writeMessage(2, getKpiMaxValue());
       }
-      if (kpiValue_ != null) {
-        output.writeMessage(3, getKpiValue());
+      if (inRange_ != false) {
+        output.writeBool(3, inRange_);
+      }
+      if (includeMinValue_ != false) {
+        output.writeBool(4, includeMinValue_);
+      }
+      if (includeMaxValue_ != false) {
+        output.writeBool(5, includeMaxValue_);
       }
       unknownFields.writeTo(output);
     }
@@ -8511,16 +6382,25 @@ public final class Monitoring {
       if (size != -1) return size;
 
       size = 0;
-      if (kpiId_ != null) {
+      if (kpiMinValue_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getKpiId());
+          .computeMessageSize(1, getKpiMinValue());
       }
-      if (!getTimestampBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, timestamp_);
+      if (kpiMaxValue_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, getKpiMaxValue());
       }
-      if (kpiValue_ != null) {
+      if (inRange_ != false) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, getKpiValue());
+          .computeBoolSize(3, inRange_);
+      }
+      if (includeMinValue_ != false) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(4, includeMinValue_);
+      }
+      if (includeMaxValue_ != false) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(5, includeMaxValue_);
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -8532,23 +6412,27 @@ public final class Monitoring {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof monitoring.Monitoring.Kpi)) {
+      if (!(obj instanceof monitoring.Monitoring.KpiValueRange)) {
         return super.equals(obj);
       }
-      monitoring.Monitoring.Kpi other = (monitoring.Monitoring.Kpi) obj;
+      monitoring.Monitoring.KpiValueRange other = (monitoring.Monitoring.KpiValueRange) obj;
 
-      if (hasKpiId() != other.hasKpiId()) return false;
-      if (hasKpiId()) {
-        if (!getKpiId()
-            .equals(other.getKpiId())) return false;
+      if (hasKpiMinValue() != other.hasKpiMinValue()) return false;
+      if (hasKpiMinValue()) {
+        if (!getKpiMinValue()
+            .equals(other.getKpiMinValue())) return false;
       }
-      if (!getTimestamp()
-          .equals(other.getTimestamp())) return false;
-      if (hasKpiValue() != other.hasKpiValue()) return false;
-      if (hasKpiValue()) {
-        if (!getKpiValue()
-            .equals(other.getKpiValue())) return false;
+      if (hasKpiMaxValue() != other.hasKpiMaxValue()) return false;
+      if (hasKpiMaxValue()) {
+        if (!getKpiMaxValue()
+            .equals(other.getKpiMaxValue())) return false;
       }
+      if (getInRange()
+          != other.getInRange()) return false;
+      if (getIncludeMinValue()
+          != other.getIncludeMinValue()) return false;
+      if (getIncludeMaxValue()
+          != other.getIncludeMaxValue()) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -8560,84 +6444,91 @@ public final class Monitoring {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasKpiId()) {
-        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiId().hashCode();
+      if (hasKpiMinValue()) {
+        hash = (37 * hash) + KPIMINVALUE_FIELD_NUMBER;
+        hash = (53 * hash) + getKpiMinValue().hashCode();
       }
-      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
-      hash = (53 * hash) + getTimestamp().hashCode();
-      if (hasKpiValue()) {
-        hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiValue().hashCode();
+      if (hasKpiMaxValue()) {
+        hash = (37 * hash) + KPIMAXVALUE_FIELD_NUMBER;
+        hash = (53 * hash) + getKpiMaxValue().hashCode();
       }
+      hash = (37 * hash) + INRANGE_FIELD_NUMBER;
+      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+          getInRange());
+      hash = (37 * hash) + INCLUDEMINVALUE_FIELD_NUMBER;
+      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+          getIncludeMinValue());
+      hash = (37 * hash) + INCLUDEMAXVALUE_FIELD_NUMBER;
+      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+          getIncludeMaxValue());
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static monitoring.Monitoring.Kpi parseFrom(
+    public static monitoring.Monitoring.KpiValueRange parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.Kpi parseFrom(
+    public static monitoring.Monitoring.KpiValueRange parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.Kpi parseFrom(
+    public static monitoring.Monitoring.KpiValueRange parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.Kpi parseFrom(
+    public static monitoring.Monitoring.KpiValueRange parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.Kpi parseFrom(byte[] data)
+    public static monitoring.Monitoring.KpiValueRange parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.Kpi parseFrom(
+    public static monitoring.Monitoring.KpiValueRange parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.Kpi parseFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.KpiValueRange parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.Kpi parseFrom(
+    public static monitoring.Monitoring.KpiValueRange parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.Kpi parseDelimitedFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.KpiValueRange parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.Kpi parseDelimitedFrom(
+    public static monitoring.Monitoring.KpiValueRange parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.Kpi parseFrom(
+    public static monitoring.Monitoring.KpiValueRange parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.Kpi parseFrom(
+    public static monitoring.Monitoring.KpiValueRange parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -8650,7 +6541,7 @@ public final class Monitoring {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(monitoring.Monitoring.Kpi prototype) {
+    public static Builder newBuilder(monitoring.Monitoring.KpiValueRange prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -8666,26 +6557,26 @@ public final class Monitoring {
       return builder;
     }
     /**
-     * Protobuf type {@code monitoring.Kpi}
+     * Protobuf type {@code monitoring.KpiValueRange}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.Kpi)
-        monitoring.Monitoring.KpiOrBuilder {
+        // @@protoc_insertion_point(builder_implements:monitoring.KpiValueRange)
+        monitoring.Monitoring.KpiValueRangeOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_Kpi_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_Kpi_fieldAccessorTable
+        return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.Kpi.class, monitoring.Monitoring.Kpi.Builder.class);
+                monitoring.Monitoring.KpiValueRange.class, monitoring.Monitoring.KpiValueRange.Builder.class);
       }
 
-      // Construct using monitoring.Monitoring.Kpi.newBuilder()
+      // Construct using monitoring.Monitoring.KpiValueRange.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -8703,37 +6594,41 @@ public final class Monitoring {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
+        if (kpiMinValueBuilder_ == null) {
+          kpiMinValue_ = null;
         } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
+          kpiMinValue_ = null;
+          kpiMinValueBuilder_ = null;
         }
-        timestamp_ = "";
-
-        if (kpiValueBuilder_ == null) {
-          kpiValue_ = null;
+        if (kpiMaxValueBuilder_ == null) {
+          kpiMaxValue_ = null;
         } else {
-          kpiValue_ = null;
-          kpiValueBuilder_ = null;
+          kpiMaxValue_ = null;
+          kpiMaxValueBuilder_ = null;
         }
+        inRange_ = false;
+
+        includeMinValue_ = false;
+
+        includeMaxValue_ = false;
+
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_Kpi_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_descriptor;
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.Kpi getDefaultInstanceForType() {
-        return monitoring.Monitoring.Kpi.getDefaultInstance();
+      public monitoring.Monitoring.KpiValueRange getDefaultInstanceForType() {
+        return monitoring.Monitoring.KpiValueRange.getDefaultInstance();
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.Kpi build() {
-        monitoring.Monitoring.Kpi result = buildPartial();
+      public monitoring.Monitoring.KpiValueRange build() {
+        monitoring.Monitoring.KpiValueRange result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -8741,19 +6636,21 @@ public final class Monitoring {
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.Kpi buildPartial() {
-        monitoring.Monitoring.Kpi result = new monitoring.Monitoring.Kpi(this);
-        if (kpiIdBuilder_ == null) {
-          result.kpiId_ = kpiId_;
+      public monitoring.Monitoring.KpiValueRange buildPartial() {
+        monitoring.Monitoring.KpiValueRange result = new monitoring.Monitoring.KpiValueRange(this);
+        if (kpiMinValueBuilder_ == null) {
+          result.kpiMinValue_ = kpiMinValue_;
         } else {
-          result.kpiId_ = kpiIdBuilder_.build();
+          result.kpiMinValue_ = kpiMinValueBuilder_.build();
         }
-        result.timestamp_ = timestamp_;
-        if (kpiValueBuilder_ == null) {
-          result.kpiValue_ = kpiValue_;
+        if (kpiMaxValueBuilder_ == null) {
+          result.kpiMaxValue_ = kpiMaxValue_;
         } else {
-          result.kpiValue_ = kpiValueBuilder_.build();
+          result.kpiMaxValue_ = kpiMaxValueBuilder_.build();
         }
+        result.inRange_ = inRange_;
+        result.includeMinValue_ = includeMinValue_;
+        result.includeMaxValue_ = includeMaxValue_;
         onBuilt();
         return result;
       }
@@ -8792,25 +6689,30 @@ public final class Monitoring {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.Kpi) {
-          return mergeFrom((monitoring.Monitoring.Kpi)other);
+        if (other instanceof monitoring.Monitoring.KpiValueRange) {
+          return mergeFrom((monitoring.Monitoring.KpiValueRange)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(monitoring.Monitoring.Kpi other) {
-        if (other == monitoring.Monitoring.Kpi.getDefaultInstance()) return this;
-        if (other.hasKpiId()) {
-          mergeKpiId(other.getKpiId());
+      public Builder mergeFrom(monitoring.Monitoring.KpiValueRange other) {
+        if (other == monitoring.Monitoring.KpiValueRange.getDefaultInstance()) return this;
+        if (other.hasKpiMinValue()) {
+          mergeKpiMinValue(other.getKpiMinValue());
         }
-        if (!other.getTimestamp().isEmpty()) {
-          timestamp_ = other.timestamp_;
-          onChanged();
+        if (other.hasKpiMaxValue()) {
+          mergeKpiMaxValue(other.getKpiMaxValue());
         }
-        if (other.hasKpiValue()) {
-          mergeKpiValue(other.getKpiValue());
+        if (other.getInRange() != false) {
+          setInRange(other.getInRange());
+        }
+        if (other.getIncludeMinValue() != false) {
+          setIncludeMinValue(other.getIncludeMinValue());
+        }
+        if (other.getIncludeMaxValue() != false) {
+          setIncludeMaxValue(other.getIncludeMaxValue());
         }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
@@ -8827,11 +6729,11 @@ public final class Monitoring {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        monitoring.Monitoring.Kpi parsedMessage = null;
+        monitoring.Monitoring.KpiValueRange parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.Kpi) e.getUnfinishedMessage();
+          parsedMessage = (monitoring.Monitoring.KpiValueRange) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -8841,318 +6743,371 @@ public final class Monitoring {
         return this;
       }
 
-      private monitoring.Monitoring.KpiId kpiId_;
+      private monitoring.Monitoring.KpiValue kpiMinValue_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
+          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiMinValueBuilder_;
       /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return Whether the kpiId field is set.
+       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+       * @return Whether the kpiMinValue field is set.
        */
-      public boolean hasKpiId() {
-        return kpiIdBuilder_ != null || kpiId_ != null;
+      public boolean hasKpiMinValue() {
+        return kpiMinValueBuilder_ != null || kpiMinValue_ != null;
       }
       /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return The kpiId.
+       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+       * @return The kpiMinValue.
        */
-      public monitoring.Monitoring.KpiId getKpiId() {
-        if (kpiIdBuilder_ == null) {
-          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+      public monitoring.Monitoring.KpiValue getKpiMinValue() {
+        if (kpiMinValueBuilder_ == null) {
+          return kpiMinValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMinValue_;
         } else {
-          return kpiIdBuilder_.getMessage();
+          return kpiMinValueBuilder_.getMessage();
         }
       }
       /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
        */
-      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
+      public Builder setKpiMinValue(monitoring.Monitoring.KpiValue value) {
+        if (kpiMinValueBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          kpiId_ = value;
+          kpiMinValue_ = value;
           onChanged();
         } else {
-          kpiIdBuilder_.setMessage(value);
+          kpiMinValueBuilder_.setMessage(value);
         }
 
         return this;
       }
       /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
        */
-      public Builder setKpiId(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = builderForValue.build();
+      public Builder setKpiMinValue(
+          monitoring.Monitoring.KpiValue.Builder builderForValue) {
+        if (kpiMinValueBuilder_ == null) {
+          kpiMinValue_ = builderForValue.build();
           onChanged();
         } else {
-          kpiIdBuilder_.setMessage(builderForValue.build());
+          kpiMinValueBuilder_.setMessage(builderForValue.build());
         }
 
         return this;
       }
       /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
        */
-      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (kpiId_ != null) {
-            kpiId_ =
-              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+      public Builder mergeKpiMinValue(monitoring.Monitoring.KpiValue value) {
+        if (kpiMinValueBuilder_ == null) {
+          if (kpiMinValue_ != null) {
+            kpiMinValue_ =
+              monitoring.Monitoring.KpiValue.newBuilder(kpiMinValue_).mergeFrom(value).buildPartial();
           } else {
-            kpiId_ = value;
+            kpiMinValue_ = value;
           }
           onChanged();
         } else {
-          kpiIdBuilder_.mergeFrom(value);
+          kpiMinValueBuilder_.mergeFrom(value);
         }
 
         return this;
       }
       /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
        */
-      public Builder clearKpiId() {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
+      public Builder clearKpiMinValue() {
+        if (kpiMinValueBuilder_ == null) {
+          kpiMinValue_ = null;
           onChanged();
         } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
+          kpiMinValue_ = null;
+          kpiMinValueBuilder_ = null;
         }
 
         return this;
       }
       /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
        */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+      public monitoring.Monitoring.KpiValue.Builder getKpiMinValueBuilder() {
         
         onChanged();
-        return getKpiIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-        if (kpiIdBuilder_ != null) {
-          return kpiIdBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiId_ == null ?
-              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdFieldBuilder() {
-        if (kpiIdBuilder_ == null) {
-          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  getKpiId(),
-                  getParentForChildren(),
-                  isClean());
-          kpiId_ = null;
-        }
-        return kpiIdBuilder_;
-      }
-
-      private java.lang.Object timestamp_ = "";
-      /**
-       * <code>string timestamp = 2;</code>
-       * @return The timestamp.
-       */
-      public java.lang.String getTimestamp() {
-        java.lang.Object ref = timestamp_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          timestamp_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
+        return getKpiMinValueFieldBuilder().getBuilder();
       }
       /**
-       * <code>string timestamp = 2;</code>
-       * @return The bytes for timestamp.
+       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
        */
-      public com.google.protobuf.ByteString
-          getTimestampBytes() {
-        java.lang.Object ref = timestamp_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          timestamp_ = b;
-          return b;
+      public monitoring.Monitoring.KpiValueOrBuilder getKpiMinValueOrBuilder() {
+        if (kpiMinValueBuilder_ != null) {
+          return kpiMinValueBuilder_.getMessageOrBuilder();
         } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string timestamp = 2;</code>
-       * @param value The timestamp to set.
-       * @return This builder for chaining.
-       */
-      public Builder setTimestamp(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        timestamp_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string timestamp = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearTimestamp() {
-        
-        timestamp_ = getDefaultInstance().getTimestamp();
-        onChanged();
-        return this;
+          return kpiMinValue_ == null ?
+              monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMinValue_;
+        }
       }
       /**
-       * <code>string timestamp = 2;</code>
-       * @param value The bytes for timestamp to set.
-       * @return This builder for chaining.
+       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
        */
-      public Builder setTimestampBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        timestamp_ = value;
-        onChanged();
-        return this;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> 
+          getKpiMinValueFieldBuilder() {
+        if (kpiMinValueBuilder_ == null) {
+          kpiMinValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder>(
+                  getKpiMinValue(),
+                  getParentForChildren(),
+                  isClean());
+          kpiMinValue_ = null;
+        }
+        return kpiMinValueBuilder_;
       }
 
-      private monitoring.Monitoring.KpiValue kpiValue_;
+      private monitoring.Monitoring.KpiValue kpiMaxValue_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiValueBuilder_;
+          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiMaxValueBuilder_;
       /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
-       * @return Whether the kpiValue field is set.
+       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+       * @return Whether the kpiMaxValue field is set.
        */
-      public boolean hasKpiValue() {
-        return kpiValueBuilder_ != null || kpiValue_ != null;
+      public boolean hasKpiMaxValue() {
+        return kpiMaxValueBuilder_ != null || kpiMaxValue_ != null;
       }
       /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
-       * @return The kpiValue.
+       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+       * @return The kpiMaxValue.
        */
-      public monitoring.Monitoring.KpiValue getKpiValue() {
-        if (kpiValueBuilder_ == null) {
-          return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+      public monitoring.Monitoring.KpiValue getKpiMaxValue() {
+        if (kpiMaxValueBuilder_ == null) {
+          return kpiMaxValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMaxValue_;
         } else {
-          return kpiValueBuilder_.getMessage();
+          return kpiMaxValueBuilder_.getMessage();
         }
       }
       /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
+       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
        */
-      public Builder setKpiValue(monitoring.Monitoring.KpiValue value) {
-        if (kpiValueBuilder_ == null) {
+      public Builder setKpiMaxValue(monitoring.Monitoring.KpiValue value) {
+        if (kpiMaxValueBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          kpiValue_ = value;
+          kpiMaxValue_ = value;
           onChanged();
         } else {
-          kpiValueBuilder_.setMessage(value);
+          kpiMaxValueBuilder_.setMessage(value);
         }
 
         return this;
       }
       /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
+       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
        */
-      public Builder setKpiValue(
+      public Builder setKpiMaxValue(
           monitoring.Monitoring.KpiValue.Builder builderForValue) {
-        if (kpiValueBuilder_ == null) {
-          kpiValue_ = builderForValue.build();
+        if (kpiMaxValueBuilder_ == null) {
+          kpiMaxValue_ = builderForValue.build();
           onChanged();
         } else {
-          kpiValueBuilder_.setMessage(builderForValue.build());
+          kpiMaxValueBuilder_.setMessage(builderForValue.build());
         }
 
         return this;
       }
       /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
+       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
        */
-      public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) {
-        if (kpiValueBuilder_ == null) {
-          if (kpiValue_ != null) {
-            kpiValue_ =
-              monitoring.Monitoring.KpiValue.newBuilder(kpiValue_).mergeFrom(value).buildPartial();
+      public Builder mergeKpiMaxValue(monitoring.Monitoring.KpiValue value) {
+        if (kpiMaxValueBuilder_ == null) {
+          if (kpiMaxValue_ != null) {
+            kpiMaxValue_ =
+              monitoring.Monitoring.KpiValue.newBuilder(kpiMaxValue_).mergeFrom(value).buildPartial();
           } else {
-            kpiValue_ = value;
+            kpiMaxValue_ = value;
           }
           onChanged();
         } else {
-          kpiValueBuilder_.mergeFrom(value);
+          kpiMaxValueBuilder_.mergeFrom(value);
         }
 
         return this;
       }
       /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
+       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
        */
-      public Builder clearKpiValue() {
-        if (kpiValueBuilder_ == null) {
-          kpiValue_ = null;
+      public Builder clearKpiMaxValue() {
+        if (kpiMaxValueBuilder_ == null) {
+          kpiMaxValue_ = null;
           onChanged();
         } else {
-          kpiValue_ = null;
-          kpiValueBuilder_ = null;
+          kpiMaxValue_ = null;
+          kpiMaxValueBuilder_ = null;
         }
 
         return this;
       }
       /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
+       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
        */
-      public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() {
+      public monitoring.Monitoring.KpiValue.Builder getKpiMaxValueBuilder() {
         
         onChanged();
-        return getKpiValueFieldBuilder().getBuilder();
+        return getKpiMaxValueFieldBuilder().getBuilder();
       }
       /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
+       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
        */
-      public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
-        if (kpiValueBuilder_ != null) {
-          return kpiValueBuilder_.getMessageOrBuilder();
+      public monitoring.Monitoring.KpiValueOrBuilder getKpiMaxValueOrBuilder() {
+        if (kpiMaxValueBuilder_ != null) {
+          return kpiMaxValueBuilder_.getMessageOrBuilder();
         } else {
-          return kpiValue_ == null ?
-              monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+          return kpiMaxValue_ == null ?
+              monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMaxValue_;
         }
       }
       /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
+       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
           monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> 
-          getKpiValueFieldBuilder() {
-        if (kpiValueBuilder_ == null) {
-          kpiValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+          getKpiMaxValueFieldBuilder() {
+        if (kpiMaxValueBuilder_ == null) {
+          kpiMaxValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder>(
-                  getKpiValue(),
+                  getKpiMaxValue(),
                   getParentForChildren(),
                   isClean());
-          kpiValue_ = null;
+          kpiMaxValue_ = null;
         }
-        return kpiValueBuilder_;
+        return kpiMaxValueBuilder_;
+      }
+
+      private boolean inRange_ ;
+      /**
+       * <pre>
+       * by default True
+       * </pre>
+       *
+       * <code>bool inRange = 3;</code>
+       * @return The inRange.
+       */
+      @java.lang.Override
+      public boolean getInRange() {
+        return inRange_;
+      }
+      /**
+       * <pre>
+       * by default True
+       * </pre>
+       *
+       * <code>bool inRange = 3;</code>
+       * @param value The inRange to set.
+       * @return This builder for chaining.
+       */
+      public Builder setInRange(boolean value) {
+        
+        inRange_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * by default True
+       * </pre>
+       *
+       * <code>bool inRange = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearInRange() {
+        
+        inRange_ = false;
+        onChanged();
+        return this;
+      }
+
+      private boolean includeMinValue_ ;
+      /**
+       * <pre>
+       * False is outside the interval
+       * </pre>
+       *
+       * <code>bool includeMinValue = 4;</code>
+       * @return The includeMinValue.
+       */
+      @java.lang.Override
+      public boolean getIncludeMinValue() {
+        return includeMinValue_;
+      }
+      /**
+       * <pre>
+       * False is outside the interval
+       * </pre>
+       *
+       * <code>bool includeMinValue = 4;</code>
+       * @param value The includeMinValue to set.
+       * @return This builder for chaining.
+       */
+      public Builder setIncludeMinValue(boolean value) {
+        
+        includeMinValue_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * False is outside the interval
+       * </pre>
+       *
+       * <code>bool includeMinValue = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearIncludeMinValue() {
+        
+        includeMinValue_ = false;
+        onChanged();
+        return this;
+      }
+
+      private boolean includeMaxValue_ ;
+      /**
+       * <pre>
+       * False is outside the interval
+       * </pre>
+       *
+       * <code>bool includeMaxValue = 5;</code>
+       * @return The includeMaxValue.
+       */
+      @java.lang.Override
+      public boolean getIncludeMaxValue() {
+        return includeMaxValue_;
+      }
+      /**
+       * <pre>
+       * False is outside the interval
+       * </pre>
+       *
+       * <code>bool includeMaxValue = 5;</code>
+       * @param value The includeMaxValue to set.
+       * @return This builder for chaining.
+       */
+      public Builder setIncludeMaxValue(boolean value) {
+        
+        includeMaxValue_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * False is outside the interval
+       * </pre>
+       *
+       * <code>bool includeMaxValue = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearIncludeMaxValue() {
+        
+        includeMaxValue_ = false;
+        onChanged();
+        return this;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -9167,100 +7122,155 @@ public final class Monitoring {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:monitoring.Kpi)
+      // @@protoc_insertion_point(builder_scope:monitoring.KpiValueRange)
     }
 
-    // @@protoc_insertion_point(class_scope:monitoring.Kpi)
-    private static final monitoring.Monitoring.Kpi DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:monitoring.KpiValueRange)
+    private static final monitoring.Monitoring.KpiValueRange DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.Kpi();
+      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiValueRange();
     }
 
-    public static monitoring.Monitoring.Kpi getDefaultInstance() {
+    public static monitoring.Monitoring.KpiValueRange getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<Kpi>
-        PARSER = new com.google.protobuf.AbstractParser<Kpi>() {
+    private static final com.google.protobuf.Parser<KpiValueRange>
+        PARSER = new com.google.protobuf.AbstractParser<KpiValueRange>() {
       @java.lang.Override
-      public Kpi parsePartialFrom(
+      public KpiValueRange parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Kpi(input, extensionRegistry);
+        return new KpiValueRange(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<Kpi> parser() {
+    public static com.google.protobuf.Parser<KpiValueRange> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<Kpi> getParserForType() {
+    public com.google.protobuf.Parser<KpiValueRange> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public monitoring.Monitoring.Kpi getDefaultInstanceForType() {
+    public monitoring.Monitoring.KpiValueRange getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface KpiValueRangeOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.KpiValueRange)
+  public interface KpiValueOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:monitoring.KpiValue)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-     * @return Whether the kpiMinValue field is set.
+     * <code>int32 int32Val = 1;</code>
+     * @return Whether the int32Val field is set.
+     */
+    boolean hasInt32Val();
+    /**
+     * <code>int32 int32Val = 1;</code>
+     * @return The int32Val.
+     */
+    int getInt32Val();
+
+    /**
+     * <code>uint32 uint32Val = 2;</code>
+     * @return Whether the uint32Val field is set.
+     */
+    boolean hasUint32Val();
+    /**
+     * <code>uint32 uint32Val = 2;</code>
+     * @return The uint32Val.
+     */
+    int getUint32Val();
+
+    /**
+     * <code>int64 int64Val = 3;</code>
+     * @return Whether the int64Val field is set.
+     */
+    boolean hasInt64Val();
+    /**
+     * <code>int64 int64Val = 3;</code>
+     * @return The int64Val.
+     */
+    long getInt64Val();
+
+    /**
+     * <code>uint64 uint64Val = 4;</code>
+     * @return Whether the uint64Val field is set.
      */
-    boolean hasKpiMinValue();
+    boolean hasUint64Val();
     /**
-     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-     * @return The kpiMinValue.
+     * <code>uint64 uint64Val = 4;</code>
+     * @return The uint64Val.
      */
-    monitoring.Monitoring.KpiValue getKpiMinValue();
+    long getUint64Val();
+
     /**
-     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+     * <code>float floatVal = 5;</code>
+     * @return Whether the floatVal field is set.
      */
-    monitoring.Monitoring.KpiValueOrBuilder getKpiMinValueOrBuilder();
+    boolean hasFloatVal();
+    /**
+     * <code>float floatVal = 5;</code>
+     * @return The floatVal.
+     */
+    float getFloatVal();
 
     /**
-     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-     * @return Whether the kpiMaxValue field is set.
+     * <code>string stringVal = 6;</code>
+     * @return Whether the stringVal field is set.
      */
-    boolean hasKpiMaxValue();
+    boolean hasStringVal();
     /**
-     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-     * @return The kpiMaxValue.
+     * <code>string stringVal = 6;</code>
+     * @return The stringVal.
      */
-    monitoring.Monitoring.KpiValue getKpiMaxValue();
+    java.lang.String getStringVal();
     /**
-     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+     * <code>string stringVal = 6;</code>
+     * @return The bytes for stringVal.
      */
-    monitoring.Monitoring.KpiValueOrBuilder getKpiMaxValueOrBuilder();
+    com.google.protobuf.ByteString
+        getStringValBytes();
+
+    /**
+     * <code>bool boolVal = 7;</code>
+     * @return Whether the boolVal field is set.
+     */
+    boolean hasBoolVal();
+    /**
+     * <code>bool boolVal = 7;</code>
+     * @return The boolVal.
+     */
+    boolean getBoolVal();
+
+    public monitoring.Monitoring.KpiValue.ValueCase getValueCase();
   }
   /**
-   * Protobuf type {@code monitoring.KpiValueRange}
+   * Protobuf type {@code monitoring.KpiValue}
    */
-  public static final class KpiValueRange extends
+  public static final class KpiValue extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.KpiValueRange)
-      KpiValueRangeOrBuilder {
+      // @@protoc_insertion_point(message_implements:monitoring.KpiValue)
+      KpiValueOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use KpiValueRange.newBuilder() to construct.
-    private KpiValueRange(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use KpiValue.newBuilder() to construct.
+    private KpiValue(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private KpiValueRange() {
+    private KpiValue() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new KpiValueRange();
+      return new KpiValue();
     }
 
     @java.lang.Override
@@ -9268,7 +7278,7 @@ public final class Monitoring {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private KpiValueRange(
+    private KpiValue(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -9286,30 +7296,40 @@ public final class Monitoring {
             case 0:
               done = true;
               break;
-            case 10: {
-              monitoring.Monitoring.KpiValue.Builder subBuilder = null;
-              if (kpiMinValue_ != null) {
-                subBuilder = kpiMinValue_.toBuilder();
-              }
-              kpiMinValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiMinValue_);
-                kpiMinValue_ = subBuilder.buildPartial();
-              }
-
+            case 8: {
+              valueCase_ = 1;
+              value_ = input.readInt32();
               break;
             }
-            case 18: {
-              monitoring.Monitoring.KpiValue.Builder subBuilder = null;
-              if (kpiMaxValue_ != null) {
-                subBuilder = kpiMaxValue_.toBuilder();
-              }
-              kpiMaxValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiMaxValue_);
-                kpiMaxValue_ = subBuilder.buildPartial();
-              }
-
+            case 16: {
+              valueCase_ = 2;
+              value_ = input.readUInt32();
+              break;
+            }
+            case 24: {
+              valueCase_ = 3;
+              value_ = input.readInt64();
+              break;
+            }
+            case 32: {
+              valueCase_ = 4;
+              value_ = input.readUInt64();
+              break;
+            }
+            case 45: {
+              valueCase_ = 5;
+              value_ = input.readFloat();
+              break;
+            }
+            case 50: {
+              java.lang.String s = input.readStringRequireUtf8();
+              valueCase_ = 6;
+              value_ = s;
+              break;
+            }
+            case 56: {
+              valueCase_ = 7;
+              value_ = input.readBool();
               break;
             }
             default: {
@@ -9333,67 +7353,244 @@ public final class Monitoring {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_descriptor;
+      return monitoring.Monitoring.internal_static_monitoring_KpiValue_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_fieldAccessorTable
+      return monitoring.Monitoring.internal_static_monitoring_KpiValue_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.KpiValueRange.class, monitoring.Monitoring.KpiValueRange.Builder.class);
+              monitoring.Monitoring.KpiValue.class, monitoring.Monitoring.KpiValue.Builder.class);
     }
 
-    public static final int KPIMINVALUE_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.KpiValue kpiMinValue_;
+    private int valueCase_ = 0;
+    private java.lang.Object value_;
+    public enum ValueCase
+        implements com.google.protobuf.Internal.EnumLite,
+            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
+      INT32VAL(1),
+      UINT32VAL(2),
+      INT64VAL(3),
+      UINT64VAL(4),
+      FLOATVAL(5),
+      STRINGVAL(6),
+      BOOLVAL(7),
+      VALUE_NOT_SET(0);
+      private final int value;
+      private ValueCase(int value) {
+        this.value = value;
+      }
+      /**
+       * @param value The number of the enum to look for.
+       * @return The enum associated with the given number.
+       * @deprecated Use {@link #forNumber(int)} instead.
+       */
+      @java.lang.Deprecated
+      public static ValueCase valueOf(int value) {
+        return forNumber(value);
+      }
+
+      public static ValueCase forNumber(int value) {
+        switch (value) {
+          case 1: return INT32VAL;
+          case 2: return UINT32VAL;
+          case 3: return INT64VAL;
+          case 4: return UINT64VAL;
+          case 5: return FLOATVAL;
+          case 6: return STRINGVAL;
+          case 7: return BOOLVAL;
+          case 0: return VALUE_NOT_SET;
+          default: return null;
+        }
+      }
+      public int getNumber() {
+        return this.value;
+      }
+    };
+
+    public ValueCase
+    getValueCase() {
+      return ValueCase.forNumber(
+          valueCase_);
+    }
+
+    public static final int INT32VAL_FIELD_NUMBER = 1;
     /**
-     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-     * @return Whether the kpiMinValue field is set.
+     * <code>int32 int32Val = 1;</code>
+     * @return Whether the int32Val field is set.
      */
     @java.lang.Override
-    public boolean hasKpiMinValue() {
-      return kpiMinValue_ != null;
+    public boolean hasInt32Val() {
+      return valueCase_ == 1;
     }
     /**
-     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-     * @return The kpiMinValue.
+     * <code>int32 int32Val = 1;</code>
+     * @return The int32Val.
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiValue getKpiMinValue() {
-      return kpiMinValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMinValue_;
+    public int getInt32Val() {
+      if (valueCase_ == 1) {
+        return (java.lang.Integer) value_;
+      }
+      return 0;
     }
+
+    public static final int UINT32VAL_FIELD_NUMBER = 2;
     /**
-     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+     * <code>uint32 uint32Val = 2;</code>
+     * @return Whether the uint32Val field is set.
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiValueOrBuilder getKpiMinValueOrBuilder() {
-      return getKpiMinValue();
+    public boolean hasUint32Val() {
+      return valueCase_ == 2;
+    }
+    /**
+     * <code>uint32 uint32Val = 2;</code>
+     * @return The uint32Val.
+     */
+    @java.lang.Override
+    public int getUint32Val() {
+      if (valueCase_ == 2) {
+        return (java.lang.Integer) value_;
+      }
+      return 0;
     }
 
-    public static final int KPIMAXVALUE_FIELD_NUMBER = 2;
-    private monitoring.Monitoring.KpiValue kpiMaxValue_;
+    public static final int INT64VAL_FIELD_NUMBER = 3;
     /**
-     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-     * @return Whether the kpiMaxValue field is set.
+     * <code>int64 int64Val = 3;</code>
+     * @return Whether the int64Val field is set.
      */
     @java.lang.Override
-    public boolean hasKpiMaxValue() {
-      return kpiMaxValue_ != null;
+    public boolean hasInt64Val() {
+      return valueCase_ == 3;
+    }
+    /**
+     * <code>int64 int64Val = 3;</code>
+     * @return The int64Val.
+     */
+    @java.lang.Override
+    public long getInt64Val() {
+      if (valueCase_ == 3) {
+        return (java.lang.Long) value_;
+      }
+      return 0L;
+    }
+
+    public static final int UINT64VAL_FIELD_NUMBER = 4;
+    /**
+     * <code>uint64 uint64Val = 4;</code>
+     * @return Whether the uint64Val field is set.
+     */
+    @java.lang.Override
+    public boolean hasUint64Val() {
+      return valueCase_ == 4;
+    }
+    /**
+     * <code>uint64 uint64Val = 4;</code>
+     * @return The uint64Val.
+     */
+    @java.lang.Override
+    public long getUint64Val() {
+      if (valueCase_ == 4) {
+        return (java.lang.Long) value_;
+      }
+      return 0L;
+    }
+
+    public static final int FLOATVAL_FIELD_NUMBER = 5;
+    /**
+     * <code>float floatVal = 5;</code>
+     * @return Whether the floatVal field is set.
+     */
+    @java.lang.Override
+    public boolean hasFloatVal() {
+      return valueCase_ == 5;
+    }
+    /**
+     * <code>float floatVal = 5;</code>
+     * @return The floatVal.
+     */
+    @java.lang.Override
+    public float getFloatVal() {
+      if (valueCase_ == 5) {
+        return (java.lang.Float) value_;
+      }
+      return 0F;
+    }
+
+    public static final int STRINGVAL_FIELD_NUMBER = 6;
+    /**
+     * <code>string stringVal = 6;</code>
+     * @return Whether the stringVal field is set.
+     */
+    public boolean hasStringVal() {
+      return valueCase_ == 6;
+    }
+    /**
+     * <code>string stringVal = 6;</code>
+     * @return The stringVal.
+     */
+    public java.lang.String getStringVal() {
+      java.lang.Object ref = "";
+      if (valueCase_ == 6) {
+        ref = value_;
+      }
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (valueCase_ == 6) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>string stringVal = 6;</code>
+     * @return The bytes for stringVal.
+     */
+    public com.google.protobuf.ByteString
+        getStringValBytes() {
+      java.lang.Object ref = "";
+      if (valueCase_ == 6) {
+        ref = value_;
+      }
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        if (valueCase_ == 6) {
+          value_ = b;
+        }
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
     }
+
+    public static final int BOOLVAL_FIELD_NUMBER = 7;
     /**
-     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-     * @return The kpiMaxValue.
+     * <code>bool boolVal = 7;</code>
+     * @return Whether the boolVal field is set.
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiValue getKpiMaxValue() {
-      return kpiMaxValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMaxValue_;
+    public boolean hasBoolVal() {
+      return valueCase_ == 7;
     }
     /**
-     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+     * <code>bool boolVal = 7;</code>
+     * @return The boolVal.
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiValueOrBuilder getKpiMaxValueOrBuilder() {
-      return getKpiMaxValue();
+    public boolean getBoolVal() {
+      if (valueCase_ == 7) {
+        return (java.lang.Boolean) value_;
+      }
+      return false;
     }
 
     private byte memoizedIsInitialized = -1;
@@ -9410,11 +7607,32 @@ public final class Monitoring {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (kpiMinValue_ != null) {
-        output.writeMessage(1, getKpiMinValue());
+      if (valueCase_ == 1) {
+        output.writeInt32(
+            1, (int)((java.lang.Integer) value_));
       }
-      if (kpiMaxValue_ != null) {
-        output.writeMessage(2, getKpiMaxValue());
+      if (valueCase_ == 2) {
+        output.writeUInt32(
+            2, (int)((java.lang.Integer) value_));
+      }
+      if (valueCase_ == 3) {
+        output.writeInt64(
+            3, (long)((java.lang.Long) value_));
+      }
+      if (valueCase_ == 4) {
+        output.writeUInt64(
+            4, (long)((java.lang.Long) value_));
+      }
+      if (valueCase_ == 5) {
+        output.writeFloat(
+            5, (float)((java.lang.Float) value_));
+      }
+      if (valueCase_ == 6) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, value_);
+      }
+      if (valueCase_ == 7) {
+        output.writeBool(
+            7, (boolean)((java.lang.Boolean) value_));
       }
       unknownFields.writeTo(output);
     }
@@ -9425,13 +7643,38 @@ public final class Monitoring {
       if (size != -1) return size;
 
       size = 0;
-      if (kpiMinValue_ != null) {
+      if (valueCase_ == 1) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getKpiMinValue());
+          .computeInt32Size(
+              1, (int)((java.lang.Integer) value_));
       }
-      if (kpiMaxValue_ != null) {
+      if (valueCase_ == 2) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getKpiMaxValue());
+          .computeUInt32Size(
+              2, (int)((java.lang.Integer) value_));
+      }
+      if (valueCase_ == 3) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(
+              3, (long)((java.lang.Long) value_));
+      }
+      if (valueCase_ == 4) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(
+              4, (long)((java.lang.Long) value_));
+      }
+      if (valueCase_ == 5) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeFloatSize(
+              5, (float)((java.lang.Float) value_));
+      }
+      if (valueCase_ == 6) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, value_);
+      }
+      if (valueCase_ == 7) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(
+              7, (boolean)((java.lang.Boolean) value_));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -9443,20 +7686,44 @@ public final class Monitoring {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof monitoring.Monitoring.KpiValueRange)) {
+      if (!(obj instanceof monitoring.Monitoring.KpiValue)) {
         return super.equals(obj);
       }
-      monitoring.Monitoring.KpiValueRange other = (monitoring.Monitoring.KpiValueRange) obj;
+      monitoring.Monitoring.KpiValue other = (monitoring.Monitoring.KpiValue) obj;
 
-      if (hasKpiMinValue() != other.hasKpiMinValue()) return false;
-      if (hasKpiMinValue()) {
-        if (!getKpiMinValue()
-            .equals(other.getKpiMinValue())) return false;
-      }
-      if (hasKpiMaxValue() != other.hasKpiMaxValue()) return false;
-      if (hasKpiMaxValue()) {
-        if (!getKpiMaxValue()
-            .equals(other.getKpiMaxValue())) return false;
+      if (!getValueCase().equals(other.getValueCase())) return false;
+      switch (valueCase_) {
+        case 1:
+          if (getInt32Val()
+              != other.getInt32Val()) return false;
+          break;
+        case 2:
+          if (getUint32Val()
+              != other.getUint32Val()) return false;
+          break;
+        case 3:
+          if (getInt64Val()
+              != other.getInt64Val()) return false;
+          break;
+        case 4:
+          if (getUint64Val()
+              != other.getUint64Val()) return false;
+          break;
+        case 5:
+          if (java.lang.Float.floatToIntBits(getFloatVal())
+              != java.lang.Float.floatToIntBits(
+                  other.getFloatVal())) return false;
+          break;
+        case 6:
+          if (!getStringVal()
+              .equals(other.getStringVal())) return false;
+          break;
+        case 7:
+          if (getBoolVal()
+              != other.getBoolVal()) return false;
+          break;
+        case 0:
+        default:
       }
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
@@ -9469,82 +7736,110 @@ public final class Monitoring {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasKpiMinValue()) {
-        hash = (37 * hash) + KPIMINVALUE_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiMinValue().hashCode();
-      }
-      if (hasKpiMaxValue()) {
-        hash = (37 * hash) + KPIMAXVALUE_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiMaxValue().hashCode();
+      switch (valueCase_) {
+        case 1:
+          hash = (37 * hash) + INT32VAL_FIELD_NUMBER;
+          hash = (53 * hash) + getInt32Val();
+          break;
+        case 2:
+          hash = (37 * hash) + UINT32VAL_FIELD_NUMBER;
+          hash = (53 * hash) + getUint32Val();
+          break;
+        case 3:
+          hash = (37 * hash) + INT64VAL_FIELD_NUMBER;
+          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+              getInt64Val());
+          break;
+        case 4:
+          hash = (37 * hash) + UINT64VAL_FIELD_NUMBER;
+          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+              getUint64Val());
+          break;
+        case 5:
+          hash = (37 * hash) + FLOATVAL_FIELD_NUMBER;
+          hash = (53 * hash) + java.lang.Float.floatToIntBits(
+              getFloatVal());
+          break;
+        case 6:
+          hash = (37 * hash) + STRINGVAL_FIELD_NUMBER;
+          hash = (53 * hash) + getStringVal().hashCode();
+          break;
+        case 7:
+          hash = (37 * hash) + BOOLVAL_FIELD_NUMBER;
+          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+              getBoolVal());
+          break;
+        case 0:
+        default:
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static monitoring.Monitoring.KpiValueRange parseFrom(
+    public static monitoring.Monitoring.KpiValue parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(
+    public static monitoring.Monitoring.KpiValue parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(
+    public static monitoring.Monitoring.KpiValue parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(
+    public static monitoring.Monitoring.KpiValue parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(byte[] data)
+    public static monitoring.Monitoring.KpiValue parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(
+    public static monitoring.Monitoring.KpiValue parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.KpiValue parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(
+    public static monitoring.Monitoring.KpiValue parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiValueRange parseDelimitedFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.KpiValue parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.KpiValueRange parseDelimitedFrom(
+    public static monitoring.Monitoring.KpiValue parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(
+    public static monitoring.Monitoring.KpiValue parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(
+    public static monitoring.Monitoring.KpiValue parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -9557,7 +7852,7 @@ public final class Monitoring {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(monitoring.Monitoring.KpiValueRange prototype) {
+    public static Builder newBuilder(monitoring.Monitoring.KpiValue prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -9573,26 +7868,26 @@ public final class Monitoring {
       return builder;
     }
     /**
-     * Protobuf type {@code monitoring.KpiValueRange}
+     * Protobuf type {@code monitoring.KpiValue}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.KpiValueRange)
-        monitoring.Monitoring.KpiValueRangeOrBuilder {
+        // @@protoc_insertion_point(builder_implements:monitoring.KpiValue)
+        monitoring.Monitoring.KpiValueOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_KpiValue_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_fieldAccessorTable
+        return monitoring.Monitoring.internal_static_monitoring_KpiValue_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.KpiValueRange.class, monitoring.Monitoring.KpiValueRange.Builder.class);
+                monitoring.Monitoring.KpiValue.class, monitoring.Monitoring.KpiValue.Builder.class);
       }
 
-      // Construct using monitoring.Monitoring.KpiValueRange.newBuilder()
+      // Construct using monitoring.Monitoring.KpiValue.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -9610,35 +7905,25 @@ public final class Monitoring {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (kpiMinValueBuilder_ == null) {
-          kpiMinValue_ = null;
-        } else {
-          kpiMinValue_ = null;
-          kpiMinValueBuilder_ = null;
-        }
-        if (kpiMaxValueBuilder_ == null) {
-          kpiMaxValue_ = null;
-        } else {
-          kpiMaxValue_ = null;
-          kpiMaxValueBuilder_ = null;
-        }
+        valueCase_ = 0;
+        value_ = null;
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_KpiValue_descriptor;
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.KpiValueRange getDefaultInstanceForType() {
-        return monitoring.Monitoring.KpiValueRange.getDefaultInstance();
+      public monitoring.Monitoring.KpiValue getDefaultInstanceForType() {
+        return monitoring.Monitoring.KpiValue.getDefaultInstance();
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.KpiValueRange build() {
-        monitoring.Monitoring.KpiValueRange result = buildPartial();
+      public monitoring.Monitoring.KpiValue build() {
+        monitoring.Monitoring.KpiValue result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -9646,18 +7931,30 @@ public final class Monitoring {
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.KpiValueRange buildPartial() {
-        monitoring.Monitoring.KpiValueRange result = new monitoring.Monitoring.KpiValueRange(this);
-        if (kpiMinValueBuilder_ == null) {
-          result.kpiMinValue_ = kpiMinValue_;
-        } else {
-          result.kpiMinValue_ = kpiMinValueBuilder_.build();
+      public monitoring.Monitoring.KpiValue buildPartial() {
+        monitoring.Monitoring.KpiValue result = new monitoring.Monitoring.KpiValue(this);
+        if (valueCase_ == 1) {
+          result.value_ = value_;
         }
-        if (kpiMaxValueBuilder_ == null) {
-          result.kpiMaxValue_ = kpiMaxValue_;
-        } else {
-          result.kpiMaxValue_ = kpiMaxValueBuilder_.build();
+        if (valueCase_ == 2) {
+          result.value_ = value_;
+        }
+        if (valueCase_ == 3) {
+          result.value_ = value_;
+        }
+        if (valueCase_ == 4) {
+          result.value_ = value_;
+        }
+        if (valueCase_ == 5) {
+          result.value_ = value_;
+        }
+        if (valueCase_ == 6) {
+          result.value_ = value_;
+        }
+        if (valueCase_ == 7) {
+          result.value_ = value_;
         }
+        result.valueCase_ = valueCase_;
         onBuilt();
         return result;
       }
@@ -9696,21 +7993,50 @@ public final class Monitoring {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.KpiValueRange) {
-          return mergeFrom((monitoring.Monitoring.KpiValueRange)other);
+        if (other instanceof monitoring.Monitoring.KpiValue) {
+          return mergeFrom((monitoring.Monitoring.KpiValue)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(monitoring.Monitoring.KpiValueRange other) {
-        if (other == monitoring.Monitoring.KpiValueRange.getDefaultInstance()) return this;
-        if (other.hasKpiMinValue()) {
-          mergeKpiMinValue(other.getKpiMinValue());
-        }
-        if (other.hasKpiMaxValue()) {
-          mergeKpiMaxValue(other.getKpiMaxValue());
+      public Builder mergeFrom(monitoring.Monitoring.KpiValue other) {
+        if (other == monitoring.Monitoring.KpiValue.getDefaultInstance()) return this;
+        switch (other.getValueCase()) {
+          case INT32VAL: {
+            setInt32Val(other.getInt32Val());
+            break;
+          }
+          case UINT32VAL: {
+            setUint32Val(other.getUint32Val());
+            break;
+          }
+          case INT64VAL: {
+            setInt64Val(other.getInt64Val());
+            break;
+          }
+          case UINT64VAL: {
+            setUint64Val(other.getUint64Val());
+            break;
+          }
+          case FLOATVAL: {
+            setFloatVal(other.getFloatVal());
+            break;
+          }
+          case STRINGVAL: {
+            valueCase_ = 6;
+            value_ = other.value_;
+            onChanged();
+            break;
+          }
+          case BOOLVAL: {
+            setBoolVal(other.getBoolVal());
+            break;
+          }
+          case VALUE_NOT_SET: {
+            break;
+          }
         }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
@@ -9727,11 +8053,11 @@ public final class Monitoring {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        monitoring.Monitoring.KpiValueRange parsedMessage = null;
+        monitoring.Monitoring.KpiValue parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.KpiValueRange) e.getUnfinishedMessage();
+          parsedMessage = (monitoring.Monitoring.KpiValue) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -9740,243 +8066,363 @@ public final class Monitoring {
         }
         return this;
       }
+      private int valueCase_ = 0;
+      private java.lang.Object value_;
+      public ValueCase
+          getValueCase() {
+        return ValueCase.forNumber(
+            valueCase_);
+      }
+
+      public Builder clearValue() {
+        valueCase_ = 0;
+        value_ = null;
+        onChanged();
+        return this;
+      }
+
 
-      private monitoring.Monitoring.KpiValue kpiMinValue_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiMinValueBuilder_;
       /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-       * @return Whether the kpiMinValue field is set.
+       * <code>int32 int32Val = 1;</code>
+       * @return Whether the int32Val field is set.
        */
-      public boolean hasKpiMinValue() {
-        return kpiMinValueBuilder_ != null || kpiMinValue_ != null;
+      public boolean hasInt32Val() {
+        return valueCase_ == 1;
       }
       /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-       * @return The kpiMinValue.
+       * <code>int32 int32Val = 1;</code>
+       * @return The int32Val.
        */
-      public monitoring.Monitoring.KpiValue getKpiMinValue() {
-        if (kpiMinValueBuilder_ == null) {
-          return kpiMinValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMinValue_;
-        } else {
-          return kpiMinValueBuilder_.getMessage();
+      public int getInt32Val() {
+        if (valueCase_ == 1) {
+          return (java.lang.Integer) value_;
         }
+        return 0;
       }
       /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+       * <code>int32 int32Val = 1;</code>
+       * @param value The int32Val to set.
+       * @return This builder for chaining.
        */
-      public Builder setKpiMinValue(monitoring.Monitoring.KpiValue value) {
-        if (kpiMinValueBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiMinValue_ = value;
-          onChanged();
-        } else {
-          kpiMinValueBuilder_.setMessage(value);
-        }
-
+      public Builder setInt32Val(int value) {
+        valueCase_ = 1;
+        value_ = value;
+        onChanged();
         return this;
       }
       /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+       * <code>int32 int32Val = 1;</code>
+       * @return This builder for chaining.
        */
-      public Builder setKpiMinValue(
-          monitoring.Monitoring.KpiValue.Builder builderForValue) {
-        if (kpiMinValueBuilder_ == null) {
-          kpiMinValue_ = builderForValue.build();
+      public Builder clearInt32Val() {
+        if (valueCase_ == 1) {
+          valueCase_ = 0;
+          value_ = null;
           onChanged();
-        } else {
-          kpiMinValueBuilder_.setMessage(builderForValue.build());
         }
+        return this;
+      }
 
+      /**
+       * <code>uint32 uint32Val = 2;</code>
+       * @return Whether the uint32Val field is set.
+       */
+      public boolean hasUint32Val() {
+        return valueCase_ == 2;
+      }
+      /**
+       * <code>uint32 uint32Val = 2;</code>
+       * @return The uint32Val.
+       */
+      public int getUint32Val() {
+        if (valueCase_ == 2) {
+          return (java.lang.Integer) value_;
+        }
+        return 0;
+      }
+      /**
+       * <code>uint32 uint32Val = 2;</code>
+       * @param value The uint32Val to set.
+       * @return This builder for chaining.
+       */
+      public Builder setUint32Val(int value) {
+        valueCase_ = 2;
+        value_ = value;
+        onChanged();
         return this;
       }
       /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+       * <code>uint32 uint32Val = 2;</code>
+       * @return This builder for chaining.
        */
-      public Builder mergeKpiMinValue(monitoring.Monitoring.KpiValue value) {
-        if (kpiMinValueBuilder_ == null) {
-          if (kpiMinValue_ != null) {
-            kpiMinValue_ =
-              monitoring.Monitoring.KpiValue.newBuilder(kpiMinValue_).mergeFrom(value).buildPartial();
-          } else {
-            kpiMinValue_ = value;
-          }
+      public Builder clearUint32Val() {
+        if (valueCase_ == 2) {
+          valueCase_ = 0;
+          value_ = null;
           onChanged();
-        } else {
-          kpiMinValueBuilder_.mergeFrom(value);
         }
+        return this;
+      }
 
+      /**
+       * <code>int64 int64Val = 3;</code>
+       * @return Whether the int64Val field is set.
+       */
+      public boolean hasInt64Val() {
+        return valueCase_ == 3;
+      }
+      /**
+       * <code>int64 int64Val = 3;</code>
+       * @return The int64Val.
+       */
+      public long getInt64Val() {
+        if (valueCase_ == 3) {
+          return (java.lang.Long) value_;
+        }
+        return 0L;
+      }
+      /**
+       * <code>int64 int64Val = 3;</code>
+       * @param value The int64Val to set.
+       * @return This builder for chaining.
+       */
+      public Builder setInt64Val(long value) {
+        valueCase_ = 3;
+        value_ = value;
+        onChanged();
         return this;
       }
       /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+       * <code>int64 int64Val = 3;</code>
+       * @return This builder for chaining.
        */
-      public Builder clearKpiMinValue() {
-        if (kpiMinValueBuilder_ == null) {
-          kpiMinValue_ = null;
+      public Builder clearInt64Val() {
+        if (valueCase_ == 3) {
+          valueCase_ = 0;
+          value_ = null;
           onChanged();
-        } else {
-          kpiMinValue_ = null;
-          kpiMinValueBuilder_ = null;
         }
-
         return this;
       }
+
       /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+       * <code>uint64 uint64Val = 4;</code>
+       * @return Whether the uint64Val field is set.
        */
-      public monitoring.Monitoring.KpiValue.Builder getKpiMinValueBuilder() {
-        
-        onChanged();
-        return getKpiMinValueFieldBuilder().getBuilder();
+      public boolean hasUint64Val() {
+        return valueCase_ == 4;
       }
       /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+       * <code>uint64 uint64Val = 4;</code>
+       * @return The uint64Val.
        */
-      public monitoring.Monitoring.KpiValueOrBuilder getKpiMinValueOrBuilder() {
-        if (kpiMinValueBuilder_ != null) {
-          return kpiMinValueBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiMinValue_ == null ?
-              monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMinValue_;
+      public long getUint64Val() {
+        if (valueCase_ == 4) {
+          return (java.lang.Long) value_;
         }
+        return 0L;
       }
       /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+       * <code>uint64 uint64Val = 4;</code>
+       * @param value The uint64Val to set.
+       * @return This builder for chaining.
        */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> 
-          getKpiMinValueFieldBuilder() {
-        if (kpiMinValueBuilder_ == null) {
-          kpiMinValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder>(
-                  getKpiMinValue(),
-                  getParentForChildren(),
-                  isClean());
-          kpiMinValue_ = null;
+      public Builder setUint64Val(long value) {
+        valueCase_ = 4;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>uint64 uint64Val = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearUint64Val() {
+        if (valueCase_ == 4) {
+          valueCase_ = 0;
+          value_ = null;
+          onChanged();
         }
-        return kpiMinValueBuilder_;
+        return this;
       }
 
-      private monitoring.Monitoring.KpiValue kpiMaxValue_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiMaxValueBuilder_;
       /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-       * @return Whether the kpiMaxValue field is set.
+       * <code>float floatVal = 5;</code>
+       * @return Whether the floatVal field is set.
        */
-      public boolean hasKpiMaxValue() {
-        return kpiMaxValueBuilder_ != null || kpiMaxValue_ != null;
+      public boolean hasFloatVal() {
+        return valueCase_ == 5;
       }
       /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-       * @return The kpiMaxValue.
+       * <code>float floatVal = 5;</code>
+       * @return The floatVal.
        */
-      public monitoring.Monitoring.KpiValue getKpiMaxValue() {
-        if (kpiMaxValueBuilder_ == null) {
-          return kpiMaxValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMaxValue_;
-        } else {
-          return kpiMaxValueBuilder_.getMessage();
+      public float getFloatVal() {
+        if (valueCase_ == 5) {
+          return (java.lang.Float) value_;
         }
+        return 0F;
       }
       /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+       * <code>float floatVal = 5;</code>
+       * @param value The floatVal to set.
+       * @return This builder for chaining.
        */
-      public Builder setKpiMaxValue(monitoring.Monitoring.KpiValue value) {
-        if (kpiMaxValueBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiMaxValue_ = value;
+      public Builder setFloatVal(float value) {
+        valueCase_ = 5;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>float floatVal = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearFloatVal() {
+        if (valueCase_ == 5) {
+          valueCase_ = 0;
+          value_ = null;
           onChanged();
-        } else {
-          kpiMaxValueBuilder_.setMessage(value);
         }
-
         return this;
       }
+
+      /**
+       * <code>string stringVal = 6;</code>
+       * @return Whether the stringVal field is set.
+       */
+      @java.lang.Override
+      public boolean hasStringVal() {
+        return valueCase_ == 6;
+      }
       /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+       * <code>string stringVal = 6;</code>
+       * @return The stringVal.
        */
-      public Builder setKpiMaxValue(
-          monitoring.Monitoring.KpiValue.Builder builderForValue) {
-        if (kpiMaxValueBuilder_ == null) {
-          kpiMaxValue_ = builderForValue.build();
-          onChanged();
+      @java.lang.Override
+      public java.lang.String getStringVal() {
+        java.lang.Object ref = "";
+        if (valueCase_ == 6) {
+          ref = value_;
+        }
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (valueCase_ == 6) {
+            value_ = s;
+          }
+          return s;
         } else {
-          kpiMaxValueBuilder_.setMessage(builderForValue.build());
+          return (java.lang.String) ref;
         }
-
-        return this;
       }
       /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+       * <code>string stringVal = 6;</code>
+       * @return The bytes for stringVal.
        */
-      public Builder mergeKpiMaxValue(monitoring.Monitoring.KpiValue value) {
-        if (kpiMaxValueBuilder_ == null) {
-          if (kpiMaxValue_ != null) {
-            kpiMaxValue_ =
-              monitoring.Monitoring.KpiValue.newBuilder(kpiMaxValue_).mergeFrom(value).buildPartial();
-          } else {
-            kpiMaxValue_ = value;
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getStringValBytes() {
+        java.lang.Object ref = "";
+        if (valueCase_ == 6) {
+          ref = value_;
+        }
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          if (valueCase_ == 6) {
+            value_ = b;
           }
-          onChanged();
+          return b;
         } else {
-          kpiMaxValueBuilder_.mergeFrom(value);
+          return (com.google.protobuf.ByteString) ref;
         }
-
+      }
+      /**
+       * <code>string stringVal = 6;</code>
+       * @param value The stringVal to set.
+       * @return This builder for chaining.
+       */
+      public Builder setStringVal(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  valueCase_ = 6;
+        value_ = value;
+        onChanged();
         return this;
       }
       /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+       * <code>string stringVal = 6;</code>
+       * @return This builder for chaining.
        */
-      public Builder clearKpiMaxValue() {
-        if (kpiMaxValueBuilder_ == null) {
-          kpiMaxValue_ = null;
+      public Builder clearStringVal() {
+        if (valueCase_ == 6) {
+          valueCase_ = 0;
+          value_ = null;
           onChanged();
-        } else {
-          kpiMaxValue_ = null;
-          kpiMaxValueBuilder_ = null;
         }
-
         return this;
       }
       /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+       * <code>string stringVal = 6;</code>
+       * @param value The bytes for stringVal to set.
+       * @return This builder for chaining.
        */
-      public monitoring.Monitoring.KpiValue.Builder getKpiMaxValueBuilder() {
-        
+      public Builder setStringValBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+        valueCase_ = 6;
+        value_ = value;
         onChanged();
-        return getKpiMaxValueFieldBuilder().getBuilder();
+        return this;
       }
+
       /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+       * <code>bool boolVal = 7;</code>
+       * @return Whether the boolVal field is set.
        */
-      public monitoring.Monitoring.KpiValueOrBuilder getKpiMaxValueOrBuilder() {
-        if (kpiMaxValueBuilder_ != null) {
-          return kpiMaxValueBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiMaxValue_ == null ?
-              monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMaxValue_;
+      public boolean hasBoolVal() {
+        return valueCase_ == 7;
+      }
+      /**
+       * <code>bool boolVal = 7;</code>
+       * @return The boolVal.
+       */
+      public boolean getBoolVal() {
+        if (valueCase_ == 7) {
+          return (java.lang.Boolean) value_;
         }
+        return false;
       }
       /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+       * <code>bool boolVal = 7;</code>
+       * @param value The boolVal to set.
+       * @return This builder for chaining.
        */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> 
-          getKpiMaxValueFieldBuilder() {
-        if (kpiMaxValueBuilder_ == null) {
-          kpiMaxValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder>(
-                  getKpiMaxValue(),
-                  getParentForChildren(),
-                  isClean());
-          kpiMaxValue_ = null;
+      public Builder setBoolVal(boolean value) {
+        valueCase_ = 7;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>bool boolVal = 7;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearBoolVal() {
+        if (valueCase_ == 7) {
+          valueCase_ = 0;
+          value_ = null;
+          onChanged();
         }
-        return kpiMaxValueBuilder_;
+        return this;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -9991,122 +8437,95 @@ public final class Monitoring {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:monitoring.KpiValueRange)
+      // @@protoc_insertion_point(builder_scope:monitoring.KpiValue)
     }
 
-    // @@protoc_insertion_point(class_scope:monitoring.KpiValueRange)
-    private static final monitoring.Monitoring.KpiValueRange DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:monitoring.KpiValue)
+    private static final monitoring.Monitoring.KpiValue DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiValueRange();
+      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiValue();
     }
 
-    public static monitoring.Monitoring.KpiValueRange getDefaultInstance() {
+    public static monitoring.Monitoring.KpiValue getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<KpiValueRange>
-        PARSER = new com.google.protobuf.AbstractParser<KpiValueRange>() {
+    private static final com.google.protobuf.Parser<KpiValue>
+        PARSER = new com.google.protobuf.AbstractParser<KpiValue>() {
       @java.lang.Override
-      public KpiValueRange parsePartialFrom(
+      public KpiValue parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new KpiValueRange(input, extensionRegistry);
+        return new KpiValue(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<KpiValueRange> parser() {
+    public static com.google.protobuf.Parser<KpiValue> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<KpiValueRange> getParserForType() {
+    public com.google.protobuf.Parser<KpiValue> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public monitoring.Monitoring.KpiValueRange getDefaultInstanceForType() {
+    public monitoring.Monitoring.KpiValue getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface KpiValueOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.KpiValue)
+  public interface KpiListOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:monitoring.KpiList)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>uint32 intVal = 1;</code>
-     * @return Whether the intVal field is set.
-     */
-    boolean hasIntVal();
-    /**
-     * <code>uint32 intVal = 1;</code>
-     * @return The intVal.
-     */
-    int getIntVal();
-
-    /**
-     * <code>float floatVal = 2;</code>
-     * @return Whether the floatVal field is set.
-     */
-    boolean hasFloatVal();
-    /**
-     * <code>float floatVal = 2;</code>
-     * @return The floatVal.
-     */
-    float getFloatVal();
-
-    /**
-     * <code>string stringVal = 3;</code>
-     * @return Whether the stringVal field is set.
+     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
      */
-    boolean hasStringVal();
+    java.util.List<monitoring.Monitoring.Kpi> 
+        getKpiListList();
     /**
-     * <code>string stringVal = 3;</code>
-     * @return The stringVal.
+     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
      */
-    java.lang.String getStringVal();
+    monitoring.Monitoring.Kpi getKpiList(int index);
     /**
-     * <code>string stringVal = 3;</code>
-     * @return The bytes for stringVal.
+     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
      */
-    com.google.protobuf.ByteString
-        getStringValBytes();
-
+    int getKpiListCount();
     /**
-     * <code>bool boolVal = 4;</code>
-     * @return Whether the boolVal field is set.
+     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
      */
-    boolean hasBoolVal();
+    java.util.List<? extends monitoring.Monitoring.KpiOrBuilder> 
+        getKpiListOrBuilderList();
     /**
-     * <code>bool boolVal = 4;</code>
-     * @return The boolVal.
+     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
      */
-    boolean getBoolVal();
-
-    public monitoring.Monitoring.KpiValue.ValueCase getValueCase();
+    monitoring.Monitoring.KpiOrBuilder getKpiListOrBuilder(
+        int index);
   }
   /**
-   * Protobuf type {@code monitoring.KpiValue}
+   * Protobuf type {@code monitoring.KpiList}
    */
-  public static final class KpiValue extends
+  public static final class KpiList extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.KpiValue)
-      KpiValueOrBuilder {
+      // @@protoc_insertion_point(message_implements:monitoring.KpiList)
+      KpiListOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use KpiValue.newBuilder() to construct.
-    private KpiValue(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use KpiList.newBuilder() to construct.
+    private KpiList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private KpiValue() {
+    private KpiList() {
+      kpiList_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new KpiValue();
+      return new KpiList();
     }
 
     @java.lang.Override
@@ -10114,7 +8533,7 @@ public final class Monitoring {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private KpiValue(
+    private KpiList(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -10122,6 +8541,7 @@ public final class Monitoring {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
+      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -10132,25 +8552,13 @@ public final class Monitoring {
             case 0:
               done = true;
               break;
-            case 8: {
-              valueCase_ = 1;
-              value_ = input.readUInt32();
-              break;
-            }
-            case 21: {
-              valueCase_ = 2;
-              value_ = input.readFloat();
-              break;
-            }
-            case 26: {
-              java.lang.String s = input.readStringRequireUtf8();
-              valueCase_ = 3;
-              value_ = s;
-              break;
-            }
-            case 32: {
-              valueCase_ = 4;
-              value_ = input.readBool();
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                kpiList_ = new java.util.ArrayList<monitoring.Monitoring.Kpi>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              kpiList_.add(
+                  input.readMessage(monitoring.Monitoring.Kpi.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -10168,181 +8576,64 @@ public final class Monitoring {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          kpiList_ = java.util.Collections.unmodifiableList(kpiList_);
+        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiValue_descriptor;
-    }
-
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiValue_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.KpiValue.class, monitoring.Monitoring.KpiValue.Builder.class);
-    }
-
-    private int valueCase_ = 0;
-    private java.lang.Object value_;
-    public enum ValueCase
-        implements com.google.protobuf.Internal.EnumLite,
-            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
-      INTVAL(1),
-      FLOATVAL(2),
-      STRINGVAL(3),
-      BOOLVAL(4),
-      VALUE_NOT_SET(0);
-      private final int value;
-      private ValueCase(int value) {
-        this.value = value;
-      }
-      /**
-       * @param value The number of the enum to look for.
-       * @return The enum associated with the given number.
-       * @deprecated Use {@link #forNumber(int)} instead.
-       */
-      @java.lang.Deprecated
-      public static ValueCase valueOf(int value) {
-        return forNumber(value);
-      }
-
-      public static ValueCase forNumber(int value) {
-        switch (value) {
-          case 1: return INTVAL;
-          case 2: return FLOATVAL;
-          case 3: return STRINGVAL;
-          case 4: return BOOLVAL;
-          case 0: return VALUE_NOT_SET;
-          default: return null;
-        }
-      }
-      public int getNumber() {
-        return this.value;
-      }
-    };
-
-    public ValueCase
-    getValueCase() {
-      return ValueCase.forNumber(
-          valueCase_);
+      }
     }
-
-    public static final int INTVAL_FIELD_NUMBER = 1;
-    /**
-     * <code>uint32 intVal = 1;</code>
-     * @return Whether the intVal field is set.
-     */
-    @java.lang.Override
-    public boolean hasIntVal() {
-      return valueCase_ == 1;
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return monitoring.Monitoring.internal_static_monitoring_KpiList_descriptor;
     }
-    /**
-     * <code>uint32 intVal = 1;</code>
-     * @return The intVal.
-     */
+
     @java.lang.Override
-    public int getIntVal() {
-      if (valueCase_ == 1) {
-        return (java.lang.Integer) value_;
-      }
-      return 0;
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return monitoring.Monitoring.internal_static_monitoring_KpiList_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              monitoring.Monitoring.KpiList.class, monitoring.Monitoring.KpiList.Builder.class);
     }
 
-    public static final int FLOATVAL_FIELD_NUMBER = 2;
+    public static final int KPI_LIST_FIELD_NUMBER = 1;
+    private java.util.List<monitoring.Monitoring.Kpi> kpiList_;
     /**
-     * <code>float floatVal = 2;</code>
-     * @return Whether the floatVal field is set.
+     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
      */
     @java.lang.Override
-    public boolean hasFloatVal() {
-      return valueCase_ == 2;
+    public java.util.List<monitoring.Monitoring.Kpi> getKpiListList() {
+      return kpiList_;
     }
     /**
-     * <code>float floatVal = 2;</code>
-     * @return The floatVal.
+     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
      */
     @java.lang.Override
-    public float getFloatVal() {
-      if (valueCase_ == 2) {
-        return (java.lang.Float) value_;
-      }
-      return 0F;
-    }
-
-    public static final int STRINGVAL_FIELD_NUMBER = 3;
-    /**
-     * <code>string stringVal = 3;</code>
-     * @return Whether the stringVal field is set.
-     */
-    public boolean hasStringVal() {
-      return valueCase_ == 3;
-    }
-    /**
-     * <code>string stringVal = 3;</code>
-     * @return The stringVal.
-     */
-    public java.lang.String getStringVal() {
-      java.lang.Object ref = "";
-      if (valueCase_ == 3) {
-        ref = value_;
-      }
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (valueCase_ == 3) {
-          value_ = s;
-        }
-        return s;
-      }
+    public java.util.List<? extends monitoring.Monitoring.KpiOrBuilder> 
+        getKpiListOrBuilderList() {
+      return kpiList_;
     }
     /**
-     * <code>string stringVal = 3;</code>
-     * @return The bytes for stringVal.
+     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
      */
-    public com.google.protobuf.ByteString
-        getStringValBytes() {
-      java.lang.Object ref = "";
-      if (valueCase_ == 3) {
-        ref = value_;
-      }
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        if (valueCase_ == 3) {
-          value_ = b;
-        }
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
+    @java.lang.Override
+    public int getKpiListCount() {
+      return kpiList_.size();
     }
-
-    public static final int BOOLVAL_FIELD_NUMBER = 4;
     /**
-     * <code>bool boolVal = 4;</code>
-     * @return Whether the boolVal field is set.
+     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
      */
     @java.lang.Override
-    public boolean hasBoolVal() {
-      return valueCase_ == 4;
+    public monitoring.Monitoring.Kpi getKpiList(int index) {
+      return kpiList_.get(index);
     }
     /**
-     * <code>bool boolVal = 4;</code>
-     * @return The boolVal.
+     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
      */
     @java.lang.Override
-    public boolean getBoolVal() {
-      if (valueCase_ == 4) {
-        return (java.lang.Boolean) value_;
-      }
-      return false;
+    public monitoring.Monitoring.KpiOrBuilder getKpiListOrBuilder(
+        int index) {
+      return kpiList_.get(index);
     }
 
     private byte memoizedIsInitialized = -1;
@@ -10359,20 +8650,8 @@ public final class Monitoring {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (valueCase_ == 1) {
-        output.writeUInt32(
-            1, (int)((java.lang.Integer) value_));
-      }
-      if (valueCase_ == 2) {
-        output.writeFloat(
-            2, (float)((java.lang.Float) value_));
-      }
-      if (valueCase_ == 3) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, value_);
-      }
-      if (valueCase_ == 4) {
-        output.writeBool(
-            4, (boolean)((java.lang.Boolean) value_));
+      for (int i = 0; i < kpiList_.size(); i++) {
+        output.writeMessage(1, kpiList_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -10383,23 +8662,9 @@ public final class Monitoring {
       if (size != -1) return size;
 
       size = 0;
-      if (valueCase_ == 1) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(
-              1, (int)((java.lang.Integer) value_));
-      }
-      if (valueCase_ == 2) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(
-              2, (float)((java.lang.Float) value_));
-      }
-      if (valueCase_ == 3) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, value_);
-      }
-      if (valueCase_ == 4) {
+      for (int i = 0; i < kpiList_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(
-              4, (boolean)((java.lang.Boolean) value_));
+          .computeMessageSize(1, kpiList_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -10411,33 +8676,13 @@ public final class Monitoring {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof monitoring.Monitoring.KpiValue)) {
+      if (!(obj instanceof monitoring.Monitoring.KpiList)) {
         return super.equals(obj);
       }
-      monitoring.Monitoring.KpiValue other = (monitoring.Monitoring.KpiValue) obj;
+      monitoring.Monitoring.KpiList other = (monitoring.Monitoring.KpiList) obj;
 
-      if (!getValueCase().equals(other.getValueCase())) return false;
-      switch (valueCase_) {
-        case 1:
-          if (getIntVal()
-              != other.getIntVal()) return false;
-          break;
-        case 2:
-          if (java.lang.Float.floatToIntBits(getFloatVal())
-              != java.lang.Float.floatToIntBits(
-                  other.getFloatVal())) return false;
-          break;
-        case 3:
-          if (!getStringVal()
-              .equals(other.getStringVal())) return false;
-          break;
-        case 4:
-          if (getBoolVal()
-              != other.getBoolVal()) return false;
-          break;
-        case 0:
-        default:
-      }
+      if (!getKpiListList()
+          .equals(other.getKpiListList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -10449,96 +8694,78 @@ public final class Monitoring {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      switch (valueCase_) {
-        case 1:
-          hash = (37 * hash) + INTVAL_FIELD_NUMBER;
-          hash = (53 * hash) + getIntVal();
-          break;
-        case 2:
-          hash = (37 * hash) + FLOATVAL_FIELD_NUMBER;
-          hash = (53 * hash) + java.lang.Float.floatToIntBits(
-              getFloatVal());
-          break;
-        case 3:
-          hash = (37 * hash) + STRINGVAL_FIELD_NUMBER;
-          hash = (53 * hash) + getStringVal().hashCode();
-          break;
-        case 4:
-          hash = (37 * hash) + BOOLVAL_FIELD_NUMBER;
-          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-              getBoolVal());
-          break;
-        case 0:
-        default:
+      if (getKpiListCount() > 0) {
+        hash = (37 * hash) + KPI_LIST_FIELD_NUMBER;
+        hash = (53 * hash) + getKpiListList().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static monitoring.Monitoring.KpiValue parseFrom(
+    public static monitoring.Monitoring.KpiList parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.KpiValue parseFrom(
+    public static monitoring.Monitoring.KpiList parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiValue parseFrom(
+    public static monitoring.Monitoring.KpiList parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.KpiValue parseFrom(
+    public static monitoring.Monitoring.KpiList parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiValue parseFrom(byte[] data)
+    public static monitoring.Monitoring.KpiList parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.KpiValue parseFrom(
+    public static monitoring.Monitoring.KpiList parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiValue parseFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.KpiList parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.KpiValue parseFrom(
+    public static monitoring.Monitoring.KpiList parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiValue parseDelimitedFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.KpiList parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.KpiValue parseDelimitedFrom(
+    public static monitoring.Monitoring.KpiList parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiValue parseFrom(
+    public static monitoring.Monitoring.KpiList parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.KpiValue parseFrom(
+    public static monitoring.Monitoring.KpiList parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -10551,7 +8778,7 @@ public final class Monitoring {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(monitoring.Monitoring.KpiValue prototype) {
+    public static Builder newBuilder(monitoring.Monitoring.KpiList prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -10567,26 +8794,26 @@ public final class Monitoring {
       return builder;
     }
     /**
-     * Protobuf type {@code monitoring.KpiValue}
+     * Protobuf type {@code monitoring.KpiList}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.KpiValue)
-        monitoring.Monitoring.KpiValueOrBuilder {
+        // @@protoc_insertion_point(builder_implements:monitoring.KpiList)
+        monitoring.Monitoring.KpiListOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiValue_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_KpiList_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiValue_fieldAccessorTable
+        return monitoring.Monitoring.internal_static_monitoring_KpiList_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.KpiValue.class, monitoring.Monitoring.KpiValue.Builder.class);
+                monitoring.Monitoring.KpiList.class, monitoring.Monitoring.KpiList.Builder.class);
       }
 
-      // Construct using monitoring.Monitoring.KpiValue.newBuilder()
+      // Construct using monitoring.Monitoring.KpiList.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -10599,52 +8826,54 @@ public final class Monitoring {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
+          getKpiListFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        valueCase_ = 0;
-        value_ = null;
+        if (kpiListBuilder_ == null) {
+          kpiList_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          kpiListBuilder_.clear();
+        }
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiValue_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiValue getDefaultInstanceForType() {
-        return monitoring.Monitoring.KpiValue.getDefaultInstance();
+        return monitoring.Monitoring.internal_static_monitoring_KpiList_descriptor;
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.KpiValue build() {
-        monitoring.Monitoring.KpiValue result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
+      public monitoring.Monitoring.KpiList getDefaultInstanceForType() {
+        return monitoring.Monitoring.KpiList.getDefaultInstance();
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.KpiValue buildPartial() {
-        monitoring.Monitoring.KpiValue result = new monitoring.Monitoring.KpiValue(this);
-        if (valueCase_ == 1) {
-          result.value_ = value_;
-        }
-        if (valueCase_ == 2) {
-          result.value_ = value_;
-        }
-        if (valueCase_ == 3) {
-          result.value_ = value_;
+      public monitoring.Monitoring.KpiList build() {
+        monitoring.Monitoring.KpiList result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
         }
-        if (valueCase_ == 4) {
-          result.value_ = value_;
+        return result;
+      }
+
+      @java.lang.Override
+      public monitoring.Monitoring.KpiList buildPartial() {
+        monitoring.Monitoring.KpiList result = new monitoring.Monitoring.KpiList(this);
+        int from_bitField0_ = bitField0_;
+        if (kpiListBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            kpiList_ = java.util.Collections.unmodifiableList(kpiList_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.kpiList_ = kpiList_;
+        } else {
+          result.kpiList_ = kpiListBuilder_.build();
         }
-        result.valueCase_ = valueCase_;
         onBuilt();
         return result;
       }
@@ -10683,37 +8912,40 @@ public final class Monitoring {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.KpiValue) {
-          return mergeFrom((monitoring.Monitoring.KpiValue)other);
+        if (other instanceof monitoring.Monitoring.KpiList) {
+          return mergeFrom((monitoring.Monitoring.KpiList)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(monitoring.Monitoring.KpiValue other) {
-        if (other == monitoring.Monitoring.KpiValue.getDefaultInstance()) return this;
-        switch (other.getValueCase()) {
-          case INTVAL: {
-            setIntVal(other.getIntVal());
-            break;
-          }
-          case FLOATVAL: {
-            setFloatVal(other.getFloatVal());
-            break;
-          }
-          case STRINGVAL: {
-            valueCase_ = 3;
-            value_ = other.value_;
+      public Builder mergeFrom(monitoring.Monitoring.KpiList other) {
+        if (other == monitoring.Monitoring.KpiList.getDefaultInstance()) return this;
+        if (kpiListBuilder_ == null) {
+          if (!other.kpiList_.isEmpty()) {
+            if (kpiList_.isEmpty()) {
+              kpiList_ = other.kpiList_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureKpiListIsMutable();
+              kpiList_.addAll(other.kpiList_);
+            }
             onChanged();
-            break;
           }
-          case BOOLVAL: {
-            setBoolVal(other.getBoolVal());
-            break;
-          }
-          case VALUE_NOT_SET: {
-            break;
+        } else {
+          if (!other.kpiList_.isEmpty()) {
+            if (kpiListBuilder_.isEmpty()) {
+              kpiListBuilder_.dispose();
+              kpiListBuilder_ = null;
+              kpiList_ = other.kpiList_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              kpiListBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                   getKpiListFieldBuilder() : null;
+            } else {
+              kpiListBuilder_.addAllMessages(other.kpiList_);
+            }
           }
         }
         this.mergeUnknownFields(other.unknownFields);
@@ -10731,11 +8963,11 @@ public final class Monitoring {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        monitoring.Monitoring.KpiValue parsedMessage = null;
+        monitoring.Monitoring.KpiList parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.KpiValue) e.getUnfinishedMessage();
+          parsedMessage = (monitoring.Monitoring.KpiList) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -10744,240 +8976,246 @@ public final class Monitoring {
         }
         return this;
       }
-      private int valueCase_ = 0;
-      private java.lang.Object value_;
-      public ValueCase
-          getValueCase() {
-        return ValueCase.forNumber(
-            valueCase_);
-      }
+      private int bitField0_;
 
-      public Builder clearValue() {
-        valueCase_ = 0;
-        value_ = null;
-        onChanged();
-        return this;
+      private java.util.List<monitoring.Monitoring.Kpi> kpiList_ =
+        java.util.Collections.emptyList();
+      private void ensureKpiListIsMutable() {
+        if (!((bitField0_ & 0x00000001) != 0)) {
+          kpiList_ = new java.util.ArrayList<monitoring.Monitoring.Kpi>(kpiList_);
+          bitField0_ |= 0x00000001;
+         }
       }
 
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          monitoring.Monitoring.Kpi, monitoring.Monitoring.Kpi.Builder, monitoring.Monitoring.KpiOrBuilder> kpiListBuilder_;
 
       /**
-       * <code>uint32 intVal = 1;</code>
-       * @return Whether the intVal field is set.
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
        */
-      public boolean hasIntVal() {
-        return valueCase_ == 1;
+      public java.util.List<monitoring.Monitoring.Kpi> getKpiListList() {
+        if (kpiListBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(kpiList_);
+        } else {
+          return kpiListBuilder_.getMessageList();
+        }
       }
       /**
-       * <code>uint32 intVal = 1;</code>
-       * @return The intVal.
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
        */
-      public int getIntVal() {
-        if (valueCase_ == 1) {
-          return (java.lang.Integer) value_;
+      public int getKpiListCount() {
+        if (kpiListBuilder_ == null) {
+          return kpiList_.size();
+        } else {
+          return kpiListBuilder_.getCount();
         }
-        return 0;
       }
       /**
-       * <code>uint32 intVal = 1;</code>
-       * @param value The intVal to set.
-       * @return This builder for chaining.
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
        */
-      public Builder setIntVal(int value) {
-        valueCase_ = 1;
-        value_ = value;
-        onChanged();
-        return this;
+      public monitoring.Monitoring.Kpi getKpiList(int index) {
+        if (kpiListBuilder_ == null) {
+          return kpiList_.get(index);
+        } else {
+          return kpiListBuilder_.getMessage(index);
+        }
       }
       /**
-       * <code>uint32 intVal = 1;</code>
-       * @return This builder for chaining.
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
        */
-      public Builder clearIntVal() {
-        if (valueCase_ == 1) {
-          valueCase_ = 0;
-          value_ = null;
+      public Builder setKpiList(
+          int index, monitoring.Monitoring.Kpi value) {
+        if (kpiListBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureKpiListIsMutable();
+          kpiList_.set(index, value);
           onChanged();
+        } else {
+          kpiListBuilder_.setMessage(index, value);
         }
         return this;
       }
-
-      /**
-       * <code>float floatVal = 2;</code>
-       * @return Whether the floatVal field is set.
-       */
-      public boolean hasFloatVal() {
-        return valueCase_ == 2;
-      }
       /**
-       * <code>float floatVal = 2;</code>
-       * @return The floatVal.
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
        */
-      public float getFloatVal() {
-        if (valueCase_ == 2) {
-          return (java.lang.Float) value_;
+      public Builder setKpiList(
+          int index, monitoring.Monitoring.Kpi.Builder builderForValue) {
+        if (kpiListBuilder_ == null) {
+          ensureKpiListIsMutable();
+          kpiList_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          kpiListBuilder_.setMessage(index, builderForValue.build());
         }
-        return 0F;
+        return this;
       }
       /**
-       * <code>float floatVal = 2;</code>
-       * @param value The floatVal to set.
-       * @return This builder for chaining.
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
        */
-      public Builder setFloatVal(float value) {
-        valueCase_ = 2;
-        value_ = value;
-        onChanged();
+      public Builder addKpiList(monitoring.Monitoring.Kpi value) {
+        if (kpiListBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureKpiListIsMutable();
+          kpiList_.add(value);
+          onChanged();
+        } else {
+          kpiListBuilder_.addMessage(value);
+        }
         return this;
       }
       /**
-       * <code>float floatVal = 2;</code>
-       * @return This builder for chaining.
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
        */
-      public Builder clearFloatVal() {
-        if (valueCase_ == 2) {
-          valueCase_ = 0;
-          value_ = null;
+      public Builder addKpiList(
+          int index, monitoring.Monitoring.Kpi value) {
+        if (kpiListBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureKpiListIsMutable();
+          kpiList_.add(index, value);
           onChanged();
+        } else {
+          kpiListBuilder_.addMessage(index, value);
         }
         return this;
       }
-
       /**
-       * <code>string stringVal = 3;</code>
-       * @return Whether the stringVal field is set.
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
        */
-      @java.lang.Override
-      public boolean hasStringVal() {
-        return valueCase_ == 3;
+      public Builder addKpiList(
+          monitoring.Monitoring.Kpi.Builder builderForValue) {
+        if (kpiListBuilder_ == null) {
+          ensureKpiListIsMutable();
+          kpiList_.add(builderForValue.build());
+          onChanged();
+        } else {
+          kpiListBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
       }
       /**
-       * <code>string stringVal = 3;</code>
-       * @return The stringVal.
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
        */
-      @java.lang.Override
-      public java.lang.String getStringVal() {
-        java.lang.Object ref = "";
-        if (valueCase_ == 3) {
-          ref = value_;
-        }
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (valueCase_ == 3) {
-            value_ = s;
-          }
-          return s;
+      public Builder addKpiList(
+          int index, monitoring.Monitoring.Kpi.Builder builderForValue) {
+        if (kpiListBuilder_ == null) {
+          ensureKpiListIsMutable();
+          kpiList_.add(index, builderForValue.build());
+          onChanged();
         } else {
-          return (java.lang.String) ref;
+          kpiListBuilder_.addMessage(index, builderForValue.build());
         }
+        return this;
       }
       /**
-       * <code>string stringVal = 3;</code>
-       * @return The bytes for stringVal.
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
        */
-      @java.lang.Override
-      public com.google.protobuf.ByteString
-          getStringValBytes() {
-        java.lang.Object ref = "";
-        if (valueCase_ == 3) {
-          ref = value_;
-        }
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          if (valueCase_ == 3) {
-            value_ = b;
-          }
-          return b;
+      public Builder addAllKpiList(
+          java.lang.Iterable<? extends monitoring.Monitoring.Kpi> values) {
+        if (kpiListBuilder_ == null) {
+          ensureKpiListIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, kpiList_);
+          onChanged();
         } else {
-          return (com.google.protobuf.ByteString) ref;
+          kpiListBuilder_.addAllMessages(values);
         }
+        return this;
       }
       /**
-       * <code>string stringVal = 3;</code>
-       * @param value The stringVal to set.
-       * @return This builder for chaining.
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
        */
-      public Builder setStringVal(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  valueCase_ = 3;
-        value_ = value;
-        onChanged();
+      public Builder clearKpiList() {
+        if (kpiListBuilder_ == null) {
+          kpiList_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          kpiListBuilder_.clear();
+        }
         return this;
       }
       /**
-       * <code>string stringVal = 3;</code>
-       * @return This builder for chaining.
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
        */
-      public Builder clearStringVal() {
-        if (valueCase_ == 3) {
-          valueCase_ = 0;
-          value_ = null;
+      public Builder removeKpiList(int index) {
+        if (kpiListBuilder_ == null) {
+          ensureKpiListIsMutable();
+          kpiList_.remove(index);
           onChanged();
+        } else {
+          kpiListBuilder_.remove(index);
         }
         return this;
       }
       /**
-       * <code>string stringVal = 3;</code>
-       * @param value The bytes for stringVal to set.
-       * @return This builder for chaining.
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
        */
-      public Builder setStringValBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        valueCase_ = 3;
-        value_ = value;
-        onChanged();
-        return this;
+      public monitoring.Monitoring.Kpi.Builder getKpiListBuilder(
+          int index) {
+        return getKpiListFieldBuilder().getBuilder(index);
       }
-
       /**
-       * <code>bool boolVal = 4;</code>
-       * @return Whether the boolVal field is set.
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
        */
-      public boolean hasBoolVal() {
-        return valueCase_ == 4;
+      public monitoring.Monitoring.KpiOrBuilder getKpiListOrBuilder(
+          int index) {
+        if (kpiListBuilder_ == null) {
+          return kpiList_.get(index);  } else {
+          return kpiListBuilder_.getMessageOrBuilder(index);
+        }
       }
       /**
-       * <code>bool boolVal = 4;</code>
-       * @return The boolVal.
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
        */
-      public boolean getBoolVal() {
-        if (valueCase_ == 4) {
-          return (java.lang.Boolean) value_;
+      public java.util.List<? extends monitoring.Monitoring.KpiOrBuilder> 
+           getKpiListOrBuilderList() {
+        if (kpiListBuilder_ != null) {
+          return kpiListBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(kpiList_);
         }
-        return false;
       }
       /**
-       * <code>bool boolVal = 4;</code>
-       * @param value The boolVal to set.
-       * @return This builder for chaining.
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
        */
-      public Builder setBoolVal(boolean value) {
-        valueCase_ = 4;
-        value_ = value;
-        onChanged();
-        return this;
+      public monitoring.Monitoring.Kpi.Builder addKpiListBuilder() {
+        return getKpiListFieldBuilder().addBuilder(
+            monitoring.Monitoring.Kpi.getDefaultInstance());
       }
       /**
-       * <code>bool boolVal = 4;</code>
-       * @return This builder for chaining.
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
        */
-      public Builder clearBoolVal() {
-        if (valueCase_ == 4) {
-          valueCase_ = 0;
-          value_ = null;
-          onChanged();
+      public monitoring.Monitoring.Kpi.Builder addKpiListBuilder(
+          int index) {
+        return getKpiListFieldBuilder().addBuilder(
+            index, monitoring.Monitoring.Kpi.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       */
+      public java.util.List<monitoring.Monitoring.Kpi.Builder> 
+           getKpiListBuilderList() {
+        return getKpiListFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          monitoring.Monitoring.Kpi, monitoring.Monitoring.Kpi.Builder, monitoring.Monitoring.KpiOrBuilder> 
+          getKpiListFieldBuilder() {
+        if (kpiListBuilder_ == null) {
+          kpiListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              monitoring.Monitoring.Kpi, monitoring.Monitoring.Kpi.Builder, monitoring.Monitoring.KpiOrBuilder>(
+                  kpiList_,
+                  ((bitField0_ & 0x00000001) != 0),
+                  getParentForChildren(),
+                  isClean());
+          kpiList_ = null;
         }
-        return this;
+        return kpiListBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -10992,95 +9230,95 @@ public final class Monitoring {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:monitoring.KpiValue)
+      // @@protoc_insertion_point(builder_scope:monitoring.KpiList)
     }
 
-    // @@protoc_insertion_point(class_scope:monitoring.KpiValue)
-    private static final monitoring.Monitoring.KpiValue DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:monitoring.KpiList)
+    private static final monitoring.Monitoring.KpiList DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiValue();
+      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiList();
     }
 
-    public static monitoring.Monitoring.KpiValue getDefaultInstance() {
+    public static monitoring.Monitoring.KpiList getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<KpiValue>
-        PARSER = new com.google.protobuf.AbstractParser<KpiValue>() {
+    private static final com.google.protobuf.Parser<KpiList>
+        PARSER = new com.google.protobuf.AbstractParser<KpiList>() {
       @java.lang.Override
-      public KpiValue parsePartialFrom(
+      public KpiList parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new KpiValue(input, extensionRegistry);
+        return new KpiList(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<KpiValue> parser() {
+    public static com.google.protobuf.Parser<KpiList> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<KpiValue> getParserForType() {
+    public com.google.protobuf.Parser<KpiList> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public monitoring.Monitoring.KpiValue getDefaultInstanceForType() {
+    public monitoring.Monitoring.KpiList getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface KpiListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.KpiList)
+  public interface KpiDescriptorListOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:monitoring.KpiDescriptorList)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
      */
-    java.util.List<monitoring.Monitoring.Kpi> 
-        getKpiListList();
+    java.util.List<monitoring.Monitoring.KpiDescriptor> 
+        getKpiDescriptorListList();
     /**
-     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
      */
-    monitoring.Monitoring.Kpi getKpiList(int index);
+    monitoring.Monitoring.KpiDescriptor getKpiDescriptorList(int index);
     /**
-     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
      */
-    int getKpiListCount();
+    int getKpiDescriptorListCount();
     /**
-     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
      */
-    java.util.List<? extends monitoring.Monitoring.KpiOrBuilder> 
-        getKpiListOrBuilderList();
+    java.util.List<? extends monitoring.Monitoring.KpiDescriptorOrBuilder> 
+        getKpiDescriptorListOrBuilderList();
     /**
-     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
      */
-    monitoring.Monitoring.KpiOrBuilder getKpiListOrBuilder(
+    monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorListOrBuilder(
         int index);
   }
   /**
-   * Protobuf type {@code monitoring.KpiList}
+   * Protobuf type {@code monitoring.KpiDescriptorList}
    */
-  public static final class KpiList extends
+  public static final class KpiDescriptorList extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.KpiList)
-      KpiListOrBuilder {
+      // @@protoc_insertion_point(message_implements:monitoring.KpiDescriptorList)
+      KpiDescriptorListOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use KpiList.newBuilder() to construct.
-    private KpiList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use KpiDescriptorList.newBuilder() to construct.
+    private KpiDescriptorList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private KpiList() {
-      kpiList_ = java.util.Collections.emptyList();
+    private KpiDescriptorList() {
+      kpiDescriptorList_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new KpiList();
+      return new KpiDescriptorList();
     }
 
     @java.lang.Override
@@ -11088,7 +9326,7 @@ public final class Monitoring {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private KpiList(
+    private KpiDescriptorList(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -11109,11 +9347,11 @@ public final class Monitoring {
               break;
             case 10: {
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                kpiList_ = new java.util.ArrayList<monitoring.Monitoring.Kpi>();
+                kpiDescriptorList_ = new java.util.ArrayList<monitoring.Monitoring.KpiDescriptor>();
                 mutable_bitField0_ |= 0x00000001;
               }
-              kpiList_.add(
-                  input.readMessage(monitoring.Monitoring.Kpi.parser(), extensionRegistry));
+              kpiDescriptorList_.add(
+                  input.readMessage(monitoring.Monitoring.KpiDescriptor.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -11132,7 +9370,7 @@ public final class Monitoring {
             e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          kpiList_ = java.util.Collections.unmodifiableList(kpiList_);
+          kpiDescriptorList_ = java.util.Collections.unmodifiableList(kpiDescriptorList_);
         }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -11140,55 +9378,55 @@ public final class Monitoring {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiList_descriptor;
+      return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiList_fieldAccessorTable
+      return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.KpiList.class, monitoring.Monitoring.KpiList.Builder.class);
+              monitoring.Monitoring.KpiDescriptorList.class, monitoring.Monitoring.KpiDescriptorList.Builder.class);
     }
 
-    public static final int KPI_LIST_FIELD_NUMBER = 1;
-    private java.util.List<monitoring.Monitoring.Kpi> kpiList_;
+    public static final int KPI_DESCRIPTOR_LIST_FIELD_NUMBER = 1;
+    private java.util.List<monitoring.Monitoring.KpiDescriptor> kpiDescriptorList_;
     /**
-     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<monitoring.Monitoring.Kpi> getKpiListList() {
-      return kpiList_;
+    public java.util.List<monitoring.Monitoring.KpiDescriptor> getKpiDescriptorListList() {
+      return kpiDescriptorList_;
     }
     /**
-     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.KpiOrBuilder> 
-        getKpiListOrBuilderList() {
-      return kpiList_;
+    public java.util.List<? extends monitoring.Monitoring.KpiDescriptorOrBuilder> 
+        getKpiDescriptorListOrBuilderList() {
+      return kpiDescriptorList_;
     }
     /**
-     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
      */
     @java.lang.Override
-    public int getKpiListCount() {
-      return kpiList_.size();
+    public int getKpiDescriptorListCount() {
+      return kpiDescriptorList_.size();
     }
     /**
-     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
      */
     @java.lang.Override
-    public monitoring.Monitoring.Kpi getKpiList(int index) {
-      return kpiList_.get(index);
+    public monitoring.Monitoring.KpiDescriptor getKpiDescriptorList(int index) {
+      return kpiDescriptorList_.get(index);
     }
     /**
-     * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiOrBuilder getKpiListOrBuilder(
+    public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorListOrBuilder(
         int index) {
-      return kpiList_.get(index);
+      return kpiDescriptorList_.get(index);
     }
 
     private byte memoizedIsInitialized = -1;
@@ -11205,8 +9443,8 @@ public final class Monitoring {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      for (int i = 0; i < kpiList_.size(); i++) {
-        output.writeMessage(1, kpiList_.get(i));
+      for (int i = 0; i < kpiDescriptorList_.size(); i++) {
+        output.writeMessage(1, kpiDescriptorList_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -11217,9 +9455,9 @@ public final class Monitoring {
       if (size != -1) return size;
 
       size = 0;
-      for (int i = 0; i < kpiList_.size(); i++) {
+      for (int i = 0; i < kpiDescriptorList_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, kpiList_.get(i));
+          .computeMessageSize(1, kpiDescriptorList_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -11231,13 +9469,13 @@ public final class Monitoring {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof monitoring.Monitoring.KpiList)) {
+      if (!(obj instanceof monitoring.Monitoring.KpiDescriptorList)) {
         return super.equals(obj);
       }
-      monitoring.Monitoring.KpiList other = (monitoring.Monitoring.KpiList) obj;
+      monitoring.Monitoring.KpiDescriptorList other = (monitoring.Monitoring.KpiDescriptorList) obj;
 
-      if (!getKpiListList()
-          .equals(other.getKpiListList())) return false;
+      if (!getKpiDescriptorListList()
+          .equals(other.getKpiDescriptorListList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -11249,78 +9487,78 @@ public final class Monitoring {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (getKpiListCount() > 0) {
-        hash = (37 * hash) + KPI_LIST_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiListList().hashCode();
+      if (getKpiDescriptorListCount() > 0) {
+        hash = (37 * hash) + KPI_DESCRIPTOR_LIST_FIELD_NUMBER;
+        hash = (53 * hash) + getKpiDescriptorListList().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static monitoring.Monitoring.KpiList parseFrom(
+    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.KpiList parseFrom(
+    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiList parseFrom(
+    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.KpiList parseFrom(
+    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiList parseFrom(byte[] data)
+    public static monitoring.Monitoring.KpiDescriptorList parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.KpiList parseFrom(
+    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiList parseFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.KpiDescriptorList parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.KpiList parseFrom(
+    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiList parseDelimitedFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.KpiDescriptorList parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.KpiList parseDelimitedFrom(
+    public static monitoring.Monitoring.KpiDescriptorList parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiList parseFrom(
+    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.KpiList parseFrom(
+    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -11333,7 +9571,7 @@ public final class Monitoring {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(monitoring.Monitoring.KpiList prototype) {
+    public static Builder newBuilder(monitoring.Monitoring.KpiDescriptorList prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -11349,26 +9587,26 @@ public final class Monitoring {
       return builder;
     }
     /**
-     * Protobuf type {@code monitoring.KpiList}
+     * Protobuf type {@code monitoring.KpiDescriptorList}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.KpiList)
-        monitoring.Monitoring.KpiListOrBuilder {
+        // @@protoc_insertion_point(builder_implements:monitoring.KpiDescriptorList)
+        monitoring.Monitoring.KpiDescriptorListOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiList_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiList_fieldAccessorTable
+        return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.KpiList.class, monitoring.Monitoring.KpiList.Builder.class);
+                monitoring.Monitoring.KpiDescriptorList.class, monitoring.Monitoring.KpiDescriptorList.Builder.class);
       }
 
-      // Construct using monitoring.Monitoring.KpiList.newBuilder()
+      // Construct using monitoring.Monitoring.KpiDescriptorList.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -11381,17 +9619,17 @@ public final class Monitoring {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getKpiListFieldBuilder();
+          getKpiDescriptorListFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (kpiListBuilder_ == null) {
-          kpiList_ = java.util.Collections.emptyList();
+        if (kpiDescriptorListBuilder_ == null) {
+          kpiDescriptorList_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000001);
         } else {
-          kpiListBuilder_.clear();
+          kpiDescriptorListBuilder_.clear();
         }
         return this;
       }
@@ -11399,17 +9637,17 @@ public final class Monitoring {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiList_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_descriptor;
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.KpiList getDefaultInstanceForType() {
-        return monitoring.Monitoring.KpiList.getDefaultInstance();
+      public monitoring.Monitoring.KpiDescriptorList getDefaultInstanceForType() {
+        return monitoring.Monitoring.KpiDescriptorList.getDefaultInstance();
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.KpiList build() {
-        monitoring.Monitoring.KpiList result = buildPartial();
+      public monitoring.Monitoring.KpiDescriptorList build() {
+        monitoring.Monitoring.KpiDescriptorList result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -11417,17 +9655,17 @@ public final class Monitoring {
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.KpiList buildPartial() {
-        monitoring.Monitoring.KpiList result = new monitoring.Monitoring.KpiList(this);
+      public monitoring.Monitoring.KpiDescriptorList buildPartial() {
+        monitoring.Monitoring.KpiDescriptorList result = new monitoring.Monitoring.KpiDescriptorList(this);
         int from_bitField0_ = bitField0_;
-        if (kpiListBuilder_ == null) {
+        if (kpiDescriptorListBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
-            kpiList_ = java.util.Collections.unmodifiableList(kpiList_);
+            kpiDescriptorList_ = java.util.Collections.unmodifiableList(kpiDescriptorList_);
             bitField0_ = (bitField0_ & ~0x00000001);
           }
-          result.kpiList_ = kpiList_;
+          result.kpiDescriptorList_ = kpiDescriptorList_;
         } else {
-          result.kpiList_ = kpiListBuilder_.build();
+          result.kpiDescriptorList_ = kpiDescriptorListBuilder_.build();
         }
         onBuilt();
         return result;
@@ -11467,39 +9705,39 @@ public final class Monitoring {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.KpiList) {
-          return mergeFrom((monitoring.Monitoring.KpiList)other);
+        if (other instanceof monitoring.Monitoring.KpiDescriptorList) {
+          return mergeFrom((monitoring.Monitoring.KpiDescriptorList)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(monitoring.Monitoring.KpiList other) {
-        if (other == monitoring.Monitoring.KpiList.getDefaultInstance()) return this;
-        if (kpiListBuilder_ == null) {
-          if (!other.kpiList_.isEmpty()) {
-            if (kpiList_.isEmpty()) {
-              kpiList_ = other.kpiList_;
+      public Builder mergeFrom(monitoring.Monitoring.KpiDescriptorList other) {
+        if (other == monitoring.Monitoring.KpiDescriptorList.getDefaultInstance()) return this;
+        if (kpiDescriptorListBuilder_ == null) {
+          if (!other.kpiDescriptorList_.isEmpty()) {
+            if (kpiDescriptorList_.isEmpty()) {
+              kpiDescriptorList_ = other.kpiDescriptorList_;
               bitField0_ = (bitField0_ & ~0x00000001);
             } else {
-              ensureKpiListIsMutable();
-              kpiList_.addAll(other.kpiList_);
+              ensureKpiDescriptorListIsMutable();
+              kpiDescriptorList_.addAll(other.kpiDescriptorList_);
             }
             onChanged();
           }
         } else {
-          if (!other.kpiList_.isEmpty()) {
-            if (kpiListBuilder_.isEmpty()) {
-              kpiListBuilder_.dispose();
-              kpiListBuilder_ = null;
-              kpiList_ = other.kpiList_;
+          if (!other.kpiDescriptorList_.isEmpty()) {
+            if (kpiDescriptorListBuilder_.isEmpty()) {
+              kpiDescriptorListBuilder_.dispose();
+              kpiDescriptorListBuilder_ = null;
+              kpiDescriptorList_ = other.kpiDescriptorList_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              kpiListBuilder_ = 
+              kpiDescriptorListBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getKpiListFieldBuilder() : null;
+                   getKpiDescriptorListFieldBuilder() : null;
             } else {
-              kpiListBuilder_.addAllMessages(other.kpiList_);
+              kpiDescriptorListBuilder_.addAllMessages(other.kpiDescriptorList_);
             }
           }
         }
@@ -11518,11 +9756,11 @@ public final class Monitoring {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        monitoring.Monitoring.KpiList parsedMessage = null;
+        monitoring.Monitoring.KpiDescriptorList parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.KpiList) e.getUnfinishedMessage();
+          parsedMessage = (monitoring.Monitoring.KpiDescriptorList) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -11533,244 +9771,244 @@ public final class Monitoring {
       }
       private int bitField0_;
 
-      private java.util.List<monitoring.Monitoring.Kpi> kpiList_ =
+      private java.util.List<monitoring.Monitoring.KpiDescriptor> kpiDescriptorList_ =
         java.util.Collections.emptyList();
-      private void ensureKpiListIsMutable() {
+      private void ensureKpiDescriptorListIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          kpiList_ = new java.util.ArrayList<monitoring.Monitoring.Kpi>(kpiList_);
+          kpiDescriptorList_ = new java.util.ArrayList<monitoring.Monitoring.KpiDescriptor>(kpiDescriptorList_);
           bitField0_ |= 0x00000001;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.Kpi, monitoring.Monitoring.Kpi.Builder, monitoring.Monitoring.KpiOrBuilder> kpiListBuilder_;
+          monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder> kpiDescriptorListBuilder_;
 
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public java.util.List<monitoring.Monitoring.Kpi> getKpiListList() {
-        if (kpiListBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(kpiList_);
+      public java.util.List<monitoring.Monitoring.KpiDescriptor> getKpiDescriptorListList() {
+        if (kpiDescriptorListBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(kpiDescriptorList_);
         } else {
-          return kpiListBuilder_.getMessageList();
+          return kpiDescriptorListBuilder_.getMessageList();
         }
       }
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public int getKpiListCount() {
-        if (kpiListBuilder_ == null) {
-          return kpiList_.size();
+      public int getKpiDescriptorListCount() {
+        if (kpiDescriptorListBuilder_ == null) {
+          return kpiDescriptorList_.size();
         } else {
-          return kpiListBuilder_.getCount();
+          return kpiDescriptorListBuilder_.getCount();
         }
       }
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public monitoring.Monitoring.Kpi getKpiList(int index) {
-        if (kpiListBuilder_ == null) {
-          return kpiList_.get(index);
+      public monitoring.Monitoring.KpiDescriptor getKpiDescriptorList(int index) {
+        if (kpiDescriptorListBuilder_ == null) {
+          return kpiDescriptorList_.get(index);
         } else {
-          return kpiListBuilder_.getMessage(index);
+          return kpiDescriptorListBuilder_.getMessage(index);
         }
       }
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public Builder setKpiList(
-          int index, monitoring.Monitoring.Kpi value) {
-        if (kpiListBuilder_ == null) {
+      public Builder setKpiDescriptorList(
+          int index, monitoring.Monitoring.KpiDescriptor value) {
+        if (kpiDescriptorListBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureKpiListIsMutable();
-          kpiList_.set(index, value);
+          ensureKpiDescriptorListIsMutable();
+          kpiDescriptorList_.set(index, value);
           onChanged();
         } else {
-          kpiListBuilder_.setMessage(index, value);
+          kpiDescriptorListBuilder_.setMessage(index, value);
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public Builder setKpiList(
-          int index, monitoring.Monitoring.Kpi.Builder builderForValue) {
-        if (kpiListBuilder_ == null) {
-          ensureKpiListIsMutable();
-          kpiList_.set(index, builderForValue.build());
+      public Builder setKpiDescriptorList(
+          int index, monitoring.Monitoring.KpiDescriptor.Builder builderForValue) {
+        if (kpiDescriptorListBuilder_ == null) {
+          ensureKpiDescriptorListIsMutable();
+          kpiDescriptorList_.set(index, builderForValue.build());
           onChanged();
         } else {
-          kpiListBuilder_.setMessage(index, builderForValue.build());
+          kpiDescriptorListBuilder_.setMessage(index, builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public Builder addKpiList(monitoring.Monitoring.Kpi value) {
-        if (kpiListBuilder_ == null) {
+      public Builder addKpiDescriptorList(monitoring.Monitoring.KpiDescriptor value) {
+        if (kpiDescriptorListBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureKpiListIsMutable();
-          kpiList_.add(value);
+          ensureKpiDescriptorListIsMutable();
+          kpiDescriptorList_.add(value);
           onChanged();
         } else {
-          kpiListBuilder_.addMessage(value);
+          kpiDescriptorListBuilder_.addMessage(value);
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public Builder addKpiList(
-          int index, monitoring.Monitoring.Kpi value) {
-        if (kpiListBuilder_ == null) {
+      public Builder addKpiDescriptorList(
+          int index, monitoring.Monitoring.KpiDescriptor value) {
+        if (kpiDescriptorListBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureKpiListIsMutable();
-          kpiList_.add(index, value);
+          ensureKpiDescriptorListIsMutable();
+          kpiDescriptorList_.add(index, value);
           onChanged();
         } else {
-          kpiListBuilder_.addMessage(index, value);
+          kpiDescriptorListBuilder_.addMessage(index, value);
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public Builder addKpiList(
-          monitoring.Monitoring.Kpi.Builder builderForValue) {
-        if (kpiListBuilder_ == null) {
-          ensureKpiListIsMutable();
-          kpiList_.add(builderForValue.build());
+      public Builder addKpiDescriptorList(
+          monitoring.Monitoring.KpiDescriptor.Builder builderForValue) {
+        if (kpiDescriptorListBuilder_ == null) {
+          ensureKpiDescriptorListIsMutable();
+          kpiDescriptorList_.add(builderForValue.build());
           onChanged();
         } else {
-          kpiListBuilder_.addMessage(builderForValue.build());
+          kpiDescriptorListBuilder_.addMessage(builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public Builder addKpiList(
-          int index, monitoring.Monitoring.Kpi.Builder builderForValue) {
-        if (kpiListBuilder_ == null) {
-          ensureKpiListIsMutable();
-          kpiList_.add(index, builderForValue.build());
+      public Builder addKpiDescriptorList(
+          int index, monitoring.Monitoring.KpiDescriptor.Builder builderForValue) {
+        if (kpiDescriptorListBuilder_ == null) {
+          ensureKpiDescriptorListIsMutable();
+          kpiDescriptorList_.add(index, builderForValue.build());
           onChanged();
         } else {
-          kpiListBuilder_.addMessage(index, builderForValue.build());
+          kpiDescriptorListBuilder_.addMessage(index, builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public Builder addAllKpiList(
-          java.lang.Iterable<? extends monitoring.Monitoring.Kpi> values) {
-        if (kpiListBuilder_ == null) {
-          ensureKpiListIsMutable();
+      public Builder addAllKpiDescriptorList(
+          java.lang.Iterable<? extends monitoring.Monitoring.KpiDescriptor> values) {
+        if (kpiDescriptorListBuilder_ == null) {
+          ensureKpiDescriptorListIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, kpiList_);
+              values, kpiDescriptorList_);
           onChanged();
         } else {
-          kpiListBuilder_.addAllMessages(values);
+          kpiDescriptorListBuilder_.addAllMessages(values);
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public Builder clearKpiList() {
-        if (kpiListBuilder_ == null) {
-          kpiList_ = java.util.Collections.emptyList();
+      public Builder clearKpiDescriptorList() {
+        if (kpiDescriptorListBuilder_ == null) {
+          kpiDescriptorList_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000001);
           onChanged();
         } else {
-          kpiListBuilder_.clear();
+          kpiDescriptorListBuilder_.clear();
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public Builder removeKpiList(int index) {
-        if (kpiListBuilder_ == null) {
-          ensureKpiListIsMutable();
-          kpiList_.remove(index);
+      public Builder removeKpiDescriptorList(int index) {
+        if (kpiDescriptorListBuilder_ == null) {
+          ensureKpiDescriptorListIsMutable();
+          kpiDescriptorList_.remove(index);
           onChanged();
         } else {
-          kpiListBuilder_.remove(index);
+          kpiDescriptorListBuilder_.remove(index);
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public monitoring.Monitoring.Kpi.Builder getKpiListBuilder(
+      public monitoring.Monitoring.KpiDescriptor.Builder getKpiDescriptorListBuilder(
           int index) {
-        return getKpiListFieldBuilder().getBuilder(index);
+        return getKpiDescriptorListFieldBuilder().getBuilder(index);
       }
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public monitoring.Monitoring.KpiOrBuilder getKpiListOrBuilder(
+      public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorListOrBuilder(
           int index) {
-        if (kpiListBuilder_ == null) {
-          return kpiList_.get(index);  } else {
-          return kpiListBuilder_.getMessageOrBuilder(index);
+        if (kpiDescriptorListBuilder_ == null) {
+          return kpiDescriptorList_.get(index);  } else {
+          return kpiDescriptorListBuilder_.getMessageOrBuilder(index);
         }
       }
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public java.util.List<? extends monitoring.Monitoring.KpiOrBuilder> 
-           getKpiListOrBuilderList() {
-        if (kpiListBuilder_ != null) {
-          return kpiListBuilder_.getMessageOrBuilderList();
+      public java.util.List<? extends monitoring.Monitoring.KpiDescriptorOrBuilder> 
+           getKpiDescriptorListOrBuilderList() {
+        if (kpiDescriptorListBuilder_ != null) {
+          return kpiDescriptorListBuilder_.getMessageOrBuilderList();
         } else {
-          return java.util.Collections.unmodifiableList(kpiList_);
+          return java.util.Collections.unmodifiableList(kpiDescriptorList_);
         }
       }
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public monitoring.Monitoring.Kpi.Builder addKpiListBuilder() {
-        return getKpiListFieldBuilder().addBuilder(
-            monitoring.Monitoring.Kpi.getDefaultInstance());
+      public monitoring.Monitoring.KpiDescriptor.Builder addKpiDescriptorListBuilder() {
+        return getKpiDescriptorListFieldBuilder().addBuilder(
+            monitoring.Monitoring.KpiDescriptor.getDefaultInstance());
       }
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public monitoring.Monitoring.Kpi.Builder addKpiListBuilder(
+      public monitoring.Monitoring.KpiDescriptor.Builder addKpiDescriptorListBuilder(
           int index) {
-        return getKpiListFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.Kpi.getDefaultInstance());
+        return getKpiDescriptorListFieldBuilder().addBuilder(
+            index, monitoring.Monitoring.KpiDescriptor.getDefaultInstance());
       }
       /**
-       * <code>repeated .monitoring.Kpi kpi_list = 1;</code>
+       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
        */
-      public java.util.List<monitoring.Monitoring.Kpi.Builder> 
-           getKpiListBuilderList() {
-        return getKpiListFieldBuilder().getBuilderList();
+      public java.util.List<monitoring.Monitoring.KpiDescriptor.Builder> 
+           getKpiDescriptorListBuilderList() {
+        return getKpiDescriptorListFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.Kpi, monitoring.Monitoring.Kpi.Builder, monitoring.Monitoring.KpiOrBuilder> 
-          getKpiListFieldBuilder() {
-        if (kpiListBuilder_ == null) {
-          kpiListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              monitoring.Monitoring.Kpi, monitoring.Monitoring.Kpi.Builder, monitoring.Monitoring.KpiOrBuilder>(
-                  kpiList_,
+          monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder> 
+          getKpiDescriptorListFieldBuilder() {
+        if (kpiDescriptorListBuilder_ == null) {
+          kpiDescriptorListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder>(
+                  kpiDescriptorList_,
                   ((bitField0_ & 0x00000001) != 0),
                   getParentForChildren(),
                   isClean());
-          kpiList_ = null;
+          kpiDescriptorList_ = null;
         }
-        return kpiListBuilder_;
+        return kpiDescriptorListBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -11785,128 +10023,251 @@ public final class Monitoring {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:monitoring.KpiList)
+      // @@protoc_insertion_point(builder_scope:monitoring.KpiDescriptorList)
     }
 
-    // @@protoc_insertion_point(class_scope:monitoring.KpiList)
-    private static final monitoring.Monitoring.KpiList DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:monitoring.KpiDescriptorList)
+    private static final monitoring.Monitoring.KpiDescriptorList DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiList();
+      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiDescriptorList();
     }
 
-    public static monitoring.Monitoring.KpiList getDefaultInstance() {
+    public static monitoring.Monitoring.KpiDescriptorList getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<KpiList>
-        PARSER = new com.google.protobuf.AbstractParser<KpiList>() {
+    private static final com.google.protobuf.Parser<KpiDescriptorList>
+        PARSER = new com.google.protobuf.AbstractParser<KpiDescriptorList>() {
       @java.lang.Override
-      public KpiList parsePartialFrom(
+      public KpiDescriptorList parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new KpiList(input, extensionRegistry);
+        return new KpiDescriptorList(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<KpiList> parser() {
+    public static com.google.protobuf.Parser<KpiDescriptorList> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<KpiList> getParserForType() {
+    public com.google.protobuf.Parser<KpiDescriptorList> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public monitoring.Monitoring.KpiList getDefaultInstanceForType() {
+    public monitoring.Monitoring.KpiDescriptorList getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface KpiDescriptorListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.KpiDescriptorList)
+  public interface SubsDescriptorOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:monitoring.SubsDescriptor)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+     * @return Whether the subsId field is set.
      */
-    java.util.List<monitoring.Monitoring.KpiDescriptor> 
-        getKpiDescriptorListList();
+    boolean hasSubsId();
     /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+     * @return The subsId.
      */
-    monitoring.Monitoring.KpiDescriptor getKpiDescriptorList(int index);
+    monitoring.Monitoring.SubscriptionID getSubsId();
     /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
      */
-    int getKpiDescriptorListCount();
+    monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder();
+
     /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+     * <code>.monitoring.KpiId kpi_id = 2;</code>
+     * @return Whether the kpiId field is set.
      */
-    java.util.List<? extends monitoring.Monitoring.KpiDescriptorOrBuilder> 
-        getKpiDescriptorListOrBuilderList();
+    boolean hasKpiId();
     /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+     * <code>.monitoring.KpiId kpi_id = 2;</code>
+     * @return The kpiId.
      */
-    monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorListOrBuilder(
-        int index);
+    monitoring.Monitoring.KpiId getKpiId();
+    /**
+     * <code>.monitoring.KpiId kpi_id = 2;</code>
+     */
+    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
+
+    /**
+     * <code>float sampling_duration_s = 3;</code>
+     * @return The samplingDurationS.
+     */
+    float getSamplingDurationS();
+
+    /**
+     * <code>float sampling_interval_s = 4;</code>
+     * @return The samplingIntervalS.
+     */
+    float getSamplingIntervalS();
+
+    /**
+     * <pre>
+     * used when you want something like "get the samples since X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp start_timestamp = 5;</code>
+     * @return Whether the startTimestamp field is set.
+     */
+    boolean hasStartTimestamp();
+    /**
+     * <pre>
+     * used when you want something like "get the samples since X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp start_timestamp = 5;</code>
+     * @return The startTimestamp.
+     */
+    context.ContextOuterClass.Timestamp getStartTimestamp();
+    /**
+     * <pre>
+     * used when you want something like "get the samples since X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp start_timestamp = 5;</code>
+     */
+    context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder();
+
+    /**
+     * <pre>
+     * used when you want something like "get the samples until X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp end_timestamp = 6;</code>
+     * @return Whether the endTimestamp field is set.
+     */
+    boolean hasEndTimestamp();
+    /**
+     * <pre>
+     * used when you want something like "get the samples until X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp end_timestamp = 6;</code>
+     * @return The endTimestamp.
+     */
+    context.ContextOuterClass.Timestamp getEndTimestamp();
+    /**
+     * <pre>
+     * used when you want something like "get the samples until X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp end_timestamp = 6;</code>
+     */
+    context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder();
   }
   /**
-   * Protobuf type {@code monitoring.KpiDescriptorList}
+   * Protobuf type {@code monitoring.SubsDescriptor}
    */
-  public static final class KpiDescriptorList extends
+  public static final class SubsDescriptor extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.KpiDescriptorList)
-      KpiDescriptorListOrBuilder {
+      // @@protoc_insertion_point(message_implements:monitoring.SubsDescriptor)
+      SubsDescriptorOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use KpiDescriptorList.newBuilder() to construct.
-    private KpiDescriptorList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use SubsDescriptor.newBuilder() to construct.
+    private SubsDescriptor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private KpiDescriptorList() {
-      kpiDescriptorList_ = java.util.Collections.emptyList();
+    private SubsDescriptor() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new KpiDescriptorList();
+      return new SubsDescriptor();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
     }
+    private SubsDescriptor(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 10: {
+              monitoring.Monitoring.SubscriptionID.Builder subBuilder = null;
+              if (subsId_ != null) {
+                subBuilder = subsId_.toBuilder();
+              }
+              subsId_ = input.readMessage(monitoring.Monitoring.SubscriptionID.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(subsId_);
+                subsId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 18: {
+              monitoring.Monitoring.KpiId.Builder subBuilder = null;
+              if (kpiId_ != null) {
+                subBuilder = kpiId_.toBuilder();
+              }
+              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(kpiId_);
+                kpiId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 29: {
+
+              samplingDurationS_ = input.readFloat();
+              break;
+            }
+            case 37: {
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private KpiDescriptorList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
+              samplingIntervalS_ = input.readFloat();
               break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                kpiDescriptorList_ = new java.util.ArrayList<monitoring.Monitoring.KpiDescriptor>();
-                mutable_bitField0_ |= 0x00000001;
+            }
+            case 42: {
+              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+              if (startTimestamp_ != null) {
+                subBuilder = startTimestamp_.toBuilder();
               }
-              kpiDescriptorList_.add(
-                  input.readMessage(monitoring.Monitoring.KpiDescriptor.parser(), extensionRegistry));
+              startTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(startTimestamp_);
+                startTimestamp_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 50: {
+              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+              if (endTimestamp_ != null) {
+                subBuilder = endTimestamp_.toBuilder();
+              }
+              endTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(endTimestamp_);
+                endTimestamp_ = subBuilder.buildPartial();
+              }
+
               break;
             }
             default: {
@@ -11924,64 +10285,171 @@ public final class Monitoring {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          kpiDescriptorList_ = java.util.Collections.unmodifiableList(kpiDescriptorList_);
-        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_descriptor;
+      return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_fieldAccessorTable
+      return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.KpiDescriptorList.class, monitoring.Monitoring.KpiDescriptorList.Builder.class);
+              monitoring.Monitoring.SubsDescriptor.class, monitoring.Monitoring.SubsDescriptor.Builder.class);
     }
 
-    public static final int KPI_DESCRIPTOR_LIST_FIELD_NUMBER = 1;
-    private java.util.List<monitoring.Monitoring.KpiDescriptor> kpiDescriptorList_;
+    public static final int SUBS_ID_FIELD_NUMBER = 1;
+    private monitoring.Monitoring.SubscriptionID subsId_;
     /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+     * @return Whether the subsId field is set.
      */
     @java.lang.Override
-    public java.util.List<monitoring.Monitoring.KpiDescriptor> getKpiDescriptorListList() {
-      return kpiDescriptorList_;
+    public boolean hasSubsId() {
+      return subsId_ != null;
     }
     /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+     * @return The subsId.
      */
     @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.KpiDescriptorOrBuilder> 
-        getKpiDescriptorListOrBuilderList() {
-      return kpiDescriptorList_;
+    public monitoring.Monitoring.SubscriptionID getSubsId() {
+      return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
     }
     /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
      */
     @java.lang.Override
-    public int getKpiDescriptorListCount() {
-      return kpiDescriptorList_.size();
+    public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
+      return getSubsId();
     }
+
+    public static final int KPI_ID_FIELD_NUMBER = 2;
+    private monitoring.Monitoring.KpiId kpiId_;
     /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+     * <code>.monitoring.KpiId kpi_id = 2;</code>
+     * @return Whether the kpiId field is set.
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiDescriptor getKpiDescriptorList(int index) {
-      return kpiDescriptorList_.get(index);
+    public boolean hasKpiId() {
+      return kpiId_ != null;
     }
     /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+     * <code>.monitoring.KpiId kpi_id = 2;</code>
+     * @return The kpiId.
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorListOrBuilder(
-        int index) {
-      return kpiDescriptorList_.get(index);
+    public monitoring.Monitoring.KpiId getKpiId() {
+      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+    }
+    /**
+     * <code>.monitoring.KpiId kpi_id = 2;</code>
+     */
+    @java.lang.Override
+    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+      return getKpiId();
+    }
+
+    public static final int SAMPLING_DURATION_S_FIELD_NUMBER = 3;
+    private float samplingDurationS_;
+    /**
+     * <code>float sampling_duration_s = 3;</code>
+     * @return The samplingDurationS.
+     */
+    @java.lang.Override
+    public float getSamplingDurationS() {
+      return samplingDurationS_;
+    }
+
+    public static final int SAMPLING_INTERVAL_S_FIELD_NUMBER = 4;
+    private float samplingIntervalS_;
+    /**
+     * <code>float sampling_interval_s = 4;</code>
+     * @return The samplingIntervalS.
+     */
+    @java.lang.Override
+    public float getSamplingIntervalS() {
+      return samplingIntervalS_;
+    }
+
+    public static final int START_TIMESTAMP_FIELD_NUMBER = 5;
+    private context.ContextOuterClass.Timestamp startTimestamp_;
+    /**
+     * <pre>
+     * used when you want something like "get the samples since X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp start_timestamp = 5;</code>
+     * @return Whether the startTimestamp field is set.
+     */
+    @java.lang.Override
+    public boolean hasStartTimestamp() {
+      return startTimestamp_ != null;
+    }
+    /**
+     * <pre>
+     * used when you want something like "get the samples since X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp start_timestamp = 5;</code>
+     * @return The startTimestamp.
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.Timestamp getStartTimestamp() {
+      return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
+    }
+    /**
+     * <pre>
+     * used when you want something like "get the samples since X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp start_timestamp = 5;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
+      return getStartTimestamp();
+    }
+
+    public static final int END_TIMESTAMP_FIELD_NUMBER = 6;
+    private context.ContextOuterClass.Timestamp endTimestamp_;
+    /**
+     * <pre>
+     * used when you want something like "get the samples until X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp end_timestamp = 6;</code>
+     * @return Whether the endTimestamp field is set.
+     */
+    @java.lang.Override
+    public boolean hasEndTimestamp() {
+      return endTimestamp_ != null;
+    }
+    /**
+     * <pre>
+     * used when you want something like "get the samples until X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp end_timestamp = 6;</code>
+     * @return The endTimestamp.
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.Timestamp getEndTimestamp() {
+      return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
+    }
+    /**
+     * <pre>
+     * used when you want something like "get the samples until X date/time"
+     * </pre>
+     *
+     * <code>.context.Timestamp end_timestamp = 6;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
+      return getEndTimestamp();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -11998,8 +10466,23 @@ public final class Monitoring {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      for (int i = 0; i < kpiDescriptorList_.size(); i++) {
-        output.writeMessage(1, kpiDescriptorList_.get(i));
+      if (subsId_ != null) {
+        output.writeMessage(1, getSubsId());
+      }
+      if (kpiId_ != null) {
+        output.writeMessage(2, getKpiId());
+      }
+      if (samplingDurationS_ != 0F) {
+        output.writeFloat(3, samplingDurationS_);
+      }
+      if (samplingIntervalS_ != 0F) {
+        output.writeFloat(4, samplingIntervalS_);
+      }
+      if (startTimestamp_ != null) {
+        output.writeMessage(5, getStartTimestamp());
+      }
+      if (endTimestamp_ != null) {
+        output.writeMessage(6, getEndTimestamp());
       }
       unknownFields.writeTo(output);
     }
@@ -12010,9 +10493,29 @@ public final class Monitoring {
       if (size != -1) return size;
 
       size = 0;
-      for (int i = 0; i < kpiDescriptorList_.size(); i++) {
+      if (subsId_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, kpiDescriptorList_.get(i));
+          .computeMessageSize(1, getSubsId());
+      }
+      if (kpiId_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, getKpiId());
+      }
+      if (samplingDurationS_ != 0F) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeFloatSize(3, samplingDurationS_);
+      }
+      if (samplingIntervalS_ != 0F) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeFloatSize(4, samplingIntervalS_);
+      }
+      if (startTimestamp_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, getStartTimestamp());
+      }
+      if (endTimestamp_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, getEndTimestamp());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -12024,13 +10527,37 @@ public final class Monitoring {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof monitoring.Monitoring.KpiDescriptorList)) {
+      if (!(obj instanceof monitoring.Monitoring.SubsDescriptor)) {
         return super.equals(obj);
       }
-      monitoring.Monitoring.KpiDescriptorList other = (monitoring.Monitoring.KpiDescriptorList) obj;
+      monitoring.Monitoring.SubsDescriptor other = (monitoring.Monitoring.SubsDescriptor) obj;
 
-      if (!getKpiDescriptorListList()
-          .equals(other.getKpiDescriptorListList())) return false;
+      if (hasSubsId() != other.hasSubsId()) return false;
+      if (hasSubsId()) {
+        if (!getSubsId()
+            .equals(other.getSubsId())) return false;
+      }
+      if (hasKpiId() != other.hasKpiId()) return false;
+      if (hasKpiId()) {
+        if (!getKpiId()
+            .equals(other.getKpiId())) return false;
+      }
+      if (java.lang.Float.floatToIntBits(getSamplingDurationS())
+          != java.lang.Float.floatToIntBits(
+              other.getSamplingDurationS())) return false;
+      if (java.lang.Float.floatToIntBits(getSamplingIntervalS())
+          != java.lang.Float.floatToIntBits(
+              other.getSamplingIntervalS())) return false;
+      if (hasStartTimestamp() != other.hasStartTimestamp()) return false;
+      if (hasStartTimestamp()) {
+        if (!getStartTimestamp()
+            .equals(other.getStartTimestamp())) return false;
+      }
+      if (hasEndTimestamp() != other.hasEndTimestamp()) return false;
+      if (hasEndTimestamp()) {
+        if (!getEndTimestamp()
+            .equals(other.getEndTimestamp())) return false;
+      }
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -12042,78 +10569,96 @@ public final class Monitoring {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (getKpiDescriptorListCount() > 0) {
-        hash = (37 * hash) + KPI_DESCRIPTOR_LIST_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiDescriptorListList().hashCode();
+      if (hasSubsId()) {
+        hash = (37 * hash) + SUBS_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getSubsId().hashCode();
+      }
+      if (hasKpiId()) {
+        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getKpiId().hashCode();
+      }
+      hash = (37 * hash) + SAMPLING_DURATION_S_FIELD_NUMBER;
+      hash = (53 * hash) + java.lang.Float.floatToIntBits(
+          getSamplingDurationS());
+      hash = (37 * hash) + SAMPLING_INTERVAL_S_FIELD_NUMBER;
+      hash = (53 * hash) + java.lang.Float.floatToIntBits(
+          getSamplingIntervalS());
+      if (hasStartTimestamp()) {
+        hash = (37 * hash) + START_TIMESTAMP_FIELD_NUMBER;
+        hash = (53 * hash) + getStartTimestamp().hashCode();
+      }
+      if (hasEndTimestamp()) {
+        hash = (37 * hash) + END_TIMESTAMP_FIELD_NUMBER;
+        hash = (53 * hash) + getEndTimestamp().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
+    public static monitoring.Monitoring.SubsDescriptor parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
+    public static monitoring.Monitoring.SubsDescriptor parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
+    public static monitoring.Monitoring.SubsDescriptor parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
+    public static monitoring.Monitoring.SubsDescriptor parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(byte[] data)
+    public static monitoring.Monitoring.SubsDescriptor parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
+    public static monitoring.Monitoring.SubsDescriptor parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.SubsDescriptor parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
+    public static monitoring.Monitoring.SubsDescriptor parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiDescriptorList parseDelimitedFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.SubsDescriptor parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.KpiDescriptorList parseDelimitedFrom(
+    public static monitoring.Monitoring.SubsDescriptor parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
+    public static monitoring.Monitoring.SubsDescriptor parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
+    public static monitoring.Monitoring.SubsDescriptor parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -12126,7 +10671,7 @@ public final class Monitoring {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(monitoring.Monitoring.KpiDescriptorList prototype) {
+    public static Builder newBuilder(monitoring.Monitoring.SubsDescriptor prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -12142,26 +10687,26 @@ public final class Monitoring {
       return builder;
     }
     /**
-     * Protobuf type {@code monitoring.KpiDescriptorList}
+     * Protobuf type {@code monitoring.SubsDescriptor}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.KpiDescriptorList)
-        monitoring.Monitoring.KpiDescriptorListOrBuilder {
+        // @@protoc_insertion_point(builder_implements:monitoring.SubsDescriptor)
+        monitoring.Monitoring.SubsDescriptorOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_fieldAccessorTable
+        return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.KpiDescriptorList.class, monitoring.Monitoring.KpiDescriptorList.Builder.class);
+                monitoring.Monitoring.SubsDescriptor.class, monitoring.Monitoring.SubsDescriptor.Builder.class);
       }
 
-      // Construct using monitoring.Monitoring.KpiDescriptorList.newBuilder()
+      // Construct using monitoring.Monitoring.SubsDescriptor.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -12174,17 +10719,38 @@ public final class Monitoring {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getKpiDescriptorListFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (kpiDescriptorListBuilder_ == null) {
-          kpiDescriptorList_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+        if (subsIdBuilder_ == null) {
+          subsId_ = null;
         } else {
-          kpiDescriptorListBuilder_.clear();
+          subsId_ = null;
+          subsIdBuilder_ = null;
+        }
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = null;
+        } else {
+          kpiId_ = null;
+          kpiIdBuilder_ = null;
+        }
+        samplingDurationS_ = 0F;
+
+        samplingIntervalS_ = 0F;
+
+        if (startTimestampBuilder_ == null) {
+          startTimestamp_ = null;
+        } else {
+          startTimestamp_ = null;
+          startTimestampBuilder_ = null;
+        }
+        if (endTimestampBuilder_ == null) {
+          endTimestamp_ = null;
+        } else {
+          endTimestamp_ = null;
+          endTimestampBuilder_ = null;
         }
         return this;
       }
@@ -12192,17 +10758,17 @@ public final class Monitoring {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_descriptor;
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.KpiDescriptorList getDefaultInstanceForType() {
-        return monitoring.Monitoring.KpiDescriptorList.getDefaultInstance();
+      public monitoring.Monitoring.SubsDescriptor getDefaultInstanceForType() {
+        return monitoring.Monitoring.SubsDescriptor.getDefaultInstance();
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.KpiDescriptorList build() {
-        monitoring.Monitoring.KpiDescriptorList result = buildPartial();
+      public monitoring.Monitoring.SubsDescriptor build() {
+        monitoring.Monitoring.SubsDescriptor result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -12210,17 +10776,29 @@ public final class Monitoring {
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.KpiDescriptorList buildPartial() {
-        monitoring.Monitoring.KpiDescriptorList result = new monitoring.Monitoring.KpiDescriptorList(this);
-        int from_bitField0_ = bitField0_;
-        if (kpiDescriptorListBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            kpiDescriptorList_ = java.util.Collections.unmodifiableList(kpiDescriptorList_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.kpiDescriptorList_ = kpiDescriptorList_;
+      public monitoring.Monitoring.SubsDescriptor buildPartial() {
+        monitoring.Monitoring.SubsDescriptor result = new monitoring.Monitoring.SubsDescriptor(this);
+        if (subsIdBuilder_ == null) {
+          result.subsId_ = subsId_;
         } else {
-          result.kpiDescriptorList_ = kpiDescriptorListBuilder_.build();
+          result.subsId_ = subsIdBuilder_.build();
+        }
+        if (kpiIdBuilder_ == null) {
+          result.kpiId_ = kpiId_;
+        } else {
+          result.kpiId_ = kpiIdBuilder_.build();
+        }
+        result.samplingDurationS_ = samplingDurationS_;
+        result.samplingIntervalS_ = samplingIntervalS_;
+        if (startTimestampBuilder_ == null) {
+          result.startTimestamp_ = startTimestamp_;
+        } else {
+          result.startTimestamp_ = startTimestampBuilder_.build();
+        }
+        if (endTimestampBuilder_ == null) {
+          result.endTimestamp_ = endTimestamp_;
+        } else {
+          result.endTimestamp_ = endTimestampBuilder_.build();
         }
         onBuilt();
         return result;
@@ -12258,312 +10836,673 @@ public final class Monitoring {
           java.lang.Object value) {
         return super.addRepeatedField(field, value);
       }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.KpiDescriptorList) {
-          return mergeFrom((monitoring.Monitoring.KpiDescriptorList)other);
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof monitoring.Monitoring.SubsDescriptor) {
+          return mergeFrom((monitoring.Monitoring.SubsDescriptor)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(monitoring.Monitoring.SubsDescriptor other) {
+        if (other == monitoring.Monitoring.SubsDescriptor.getDefaultInstance()) return this;
+        if (other.hasSubsId()) {
+          mergeSubsId(other.getSubsId());
+        }
+        if (other.hasKpiId()) {
+          mergeKpiId(other.getKpiId());
+        }
+        if (other.getSamplingDurationS() != 0F) {
+          setSamplingDurationS(other.getSamplingDurationS());
+        }
+        if (other.getSamplingIntervalS() != 0F) {
+          setSamplingIntervalS(other.getSamplingIntervalS());
+        }
+        if (other.hasStartTimestamp()) {
+          mergeStartTimestamp(other.getStartTimestamp());
+        }
+        if (other.hasEndTimestamp()) {
+          mergeEndTimestamp(other.getEndTimestamp());
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        monitoring.Monitoring.SubsDescriptor parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (monitoring.Monitoring.SubsDescriptor) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+
+      private monitoring.Monitoring.SubscriptionID subsId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> subsIdBuilder_;
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       * @return Whether the subsId field is set.
+       */
+      public boolean hasSubsId() {
+        return subsIdBuilder_ != null || subsId_ != null;
+      }
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       * @return The subsId.
+       */
+      public monitoring.Monitoring.SubscriptionID getSubsId() {
+        if (subsIdBuilder_ == null) {
+          return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
+        } else {
+          return subsIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       */
+      public Builder setSubsId(monitoring.Monitoring.SubscriptionID value) {
+        if (subsIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          subsId_ = value;
+          onChanged();
+        } else {
+          subsIdBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       */
+      public Builder setSubsId(
+          monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
+        if (subsIdBuilder_ == null) {
+          subsId_ = builderForValue.build();
+          onChanged();
+        } else {
+          subsIdBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       */
+      public Builder mergeSubsId(monitoring.Monitoring.SubscriptionID value) {
+        if (subsIdBuilder_ == null) {
+          if (subsId_ != null) {
+            subsId_ =
+              monitoring.Monitoring.SubscriptionID.newBuilder(subsId_).mergeFrom(value).buildPartial();
+          } else {
+            subsId_ = value;
+          }
+          onChanged();
+        } else {
+          subsIdBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       */
+      public Builder clearSubsId() {
+        if (subsIdBuilder_ == null) {
+          subsId_ = null;
+          onChanged();
+        } else {
+          subsId_ = null;
+          subsIdBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       */
+      public monitoring.Monitoring.SubscriptionID.Builder getSubsIdBuilder() {
+        
+        onChanged();
+        return getSubsIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       */
+      public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
+        if (subsIdBuilder_ != null) {
+          return subsIdBuilder_.getMessageOrBuilder();
+        } else {
+          return subsId_ == null ?
+              monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
+        }
+      }
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> 
+          getSubsIdFieldBuilder() {
+        if (subsIdBuilder_ == null) {
+          subsIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder>(
+                  getSubsId(),
+                  getParentForChildren(),
+                  isClean());
+          subsId_ = null;
+        }
+        return subsIdBuilder_;
+      }
+
+      private monitoring.Monitoring.KpiId kpiId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
+      /**
+       * <code>.monitoring.KpiId kpi_id = 2;</code>
+       * @return Whether the kpiId field is set.
+       */
+      public boolean hasKpiId() {
+        return kpiIdBuilder_ != null || kpiId_ != null;
+      }
+      /**
+       * <code>.monitoring.KpiId kpi_id = 2;</code>
+       * @return The kpiId.
+       */
+      public monitoring.Monitoring.KpiId getKpiId() {
+        if (kpiIdBuilder_ == null) {
+          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         } else {
-          super.mergeFrom(other);
-          return this;
+          return kpiIdBuilder_.getMessage();
         }
       }
-
-      public Builder mergeFrom(monitoring.Monitoring.KpiDescriptorList other) {
-        if (other == monitoring.Monitoring.KpiDescriptorList.getDefaultInstance()) return this;
-        if (kpiDescriptorListBuilder_ == null) {
-          if (!other.kpiDescriptorList_.isEmpty()) {
-            if (kpiDescriptorList_.isEmpty()) {
-              kpiDescriptorList_ = other.kpiDescriptorList_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureKpiDescriptorListIsMutable();
-              kpiDescriptorList_.addAll(other.kpiDescriptorList_);
-            }
-            onChanged();
+      /**
+       * <code>.monitoring.KpiId kpi_id = 2;</code>
+       */
+      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
+        if (kpiIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
           }
+          kpiId_ = value;
+          onChanged();
         } else {
-          if (!other.kpiDescriptorList_.isEmpty()) {
-            if (kpiDescriptorListBuilder_.isEmpty()) {
-              kpiDescriptorListBuilder_.dispose();
-              kpiDescriptorListBuilder_ = null;
-              kpiDescriptorList_ = other.kpiDescriptorList_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              kpiDescriptorListBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getKpiDescriptorListFieldBuilder() : null;
-            } else {
-              kpiDescriptorListBuilder_.addAllMessages(other.kpiDescriptorList_);
-            }
-          }
+          kpiIdBuilder_.setMessage(value);
         }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
+
         return this;
       }
+      /**
+       * <code>.monitoring.KpiId kpi_id = 2;</code>
+       */
+      public Builder setKpiId(
+          monitoring.Monitoring.KpiId.Builder builderForValue) {
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = builderForValue.build();
+          onChanged();
+        } else {
+          kpiIdBuilder_.setMessage(builderForValue.build());
+        }
 
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
+        return this;
       }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.KpiDescriptorList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.KpiDescriptorList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
+      /**
+       * <code>.monitoring.KpiId kpi_id = 2;</code>
+       */
+      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
+        if (kpiIdBuilder_ == null) {
+          if (kpiId_ != null) {
+            kpiId_ =
+              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+          } else {
+            kpiId_ = value;
           }
+          onChanged();
+        } else {
+          kpiIdBuilder_.mergeFrom(value);
         }
-        return this;
-      }
-      private int bitField0_;
 
-      private java.util.List<monitoring.Monitoring.KpiDescriptor> kpiDescriptorList_ =
-        java.util.Collections.emptyList();
-      private void ensureKpiDescriptorListIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          kpiDescriptorList_ = new java.util.ArrayList<monitoring.Monitoring.KpiDescriptor>(kpiDescriptorList_);
-          bitField0_ |= 0x00000001;
-         }
+        return this;
       }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder> kpiDescriptorListBuilder_;
-
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 2;</code>
        */
-      public java.util.List<monitoring.Monitoring.KpiDescriptor> getKpiDescriptorListList() {
-        if (kpiDescriptorListBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(kpiDescriptorList_);
+      public Builder clearKpiId() {
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = null;
+          onChanged();
         } else {
-          return kpiDescriptorListBuilder_.getMessageList();
+          kpiId_ = null;
+          kpiIdBuilder_ = null;
         }
+
+        return this;
       }
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 2;</code>
        */
-      public int getKpiDescriptorListCount() {
-        if (kpiDescriptorListBuilder_ == null) {
-          return kpiDescriptorList_.size();
+      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+        
+        onChanged();
+        return getKpiIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.monitoring.KpiId kpi_id = 2;</code>
+       */
+      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+        if (kpiIdBuilder_ != null) {
+          return kpiIdBuilder_.getMessageOrBuilder();
         } else {
-          return kpiDescriptorListBuilder_.getCount();
+          return kpiId_ == null ?
+              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         }
       }
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 2;</code>
        */
-      public monitoring.Monitoring.KpiDescriptor getKpiDescriptorList(int index) {
-        if (kpiDescriptorListBuilder_ == null) {
-          return kpiDescriptorList_.get(index);
-        } else {
-          return kpiDescriptorListBuilder_.getMessage(index);
+      private com.google.protobuf.SingleFieldBuilderV3<
+          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
+          getKpiIdFieldBuilder() {
+        if (kpiIdBuilder_ == null) {
+          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
+                  getKpiId(),
+                  getParentForChildren(),
+                  isClean());
+          kpiId_ = null;
         }
+        return kpiIdBuilder_;
       }
+
+      private float samplingDurationS_ ;
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <code>float sampling_duration_s = 3;</code>
+       * @return The samplingDurationS.
        */
-      public Builder setKpiDescriptorList(
-          int index, monitoring.Monitoring.KpiDescriptor value) {
-        if (kpiDescriptorListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiDescriptorListIsMutable();
-          kpiDescriptorList_.set(index, value);
-          onChanged();
+      @java.lang.Override
+      public float getSamplingDurationS() {
+        return samplingDurationS_;
+      }
+      /**
+       * <code>float sampling_duration_s = 3;</code>
+       * @param value The samplingDurationS to set.
+       * @return This builder for chaining.
+       */
+      public Builder setSamplingDurationS(float value) {
+        
+        samplingDurationS_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>float sampling_duration_s = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearSamplingDurationS() {
+        
+        samplingDurationS_ = 0F;
+        onChanged();
+        return this;
+      }
+
+      private float samplingIntervalS_ ;
+      /**
+       * <code>float sampling_interval_s = 4;</code>
+       * @return The samplingIntervalS.
+       */
+      @java.lang.Override
+      public float getSamplingIntervalS() {
+        return samplingIntervalS_;
+      }
+      /**
+       * <code>float sampling_interval_s = 4;</code>
+       * @param value The samplingIntervalS to set.
+       * @return This builder for chaining.
+       */
+      public Builder setSamplingIntervalS(float value) {
+        
+        samplingIntervalS_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>float sampling_interval_s = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearSamplingIntervalS() {
+        
+        samplingIntervalS_ = 0F;
+        onChanged();
+        return this;
+      }
+
+      private context.ContextOuterClass.Timestamp startTimestamp_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> startTimestampBuilder_;
+      /**
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
+       * @return Whether the startTimestamp field is set.
+       */
+      public boolean hasStartTimestamp() {
+        return startTimestampBuilder_ != null || startTimestamp_ != null;
+      }
+      /**
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
+       * @return The startTimestamp.
+       */
+      public context.ContextOuterClass.Timestamp getStartTimestamp() {
+        if (startTimestampBuilder_ == null) {
+          return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
         } else {
-          kpiDescriptorListBuilder_.setMessage(index, value);
+          return startTimestampBuilder_.getMessage();
         }
-        return this;
       }
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
        */
-      public Builder setKpiDescriptorList(
-          int index, monitoring.Monitoring.KpiDescriptor.Builder builderForValue) {
-        if (kpiDescriptorListBuilder_ == null) {
-          ensureKpiDescriptorListIsMutable();
-          kpiDescriptorList_.set(index, builderForValue.build());
+      public Builder setStartTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (startTimestampBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          startTimestamp_ = value;
           onChanged();
         } else {
-          kpiDescriptorListBuilder_.setMessage(index, builderForValue.build());
+          startTimestampBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
        */
-      public Builder addKpiDescriptorList(monitoring.Monitoring.KpiDescriptor value) {
-        if (kpiDescriptorListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiDescriptorListIsMutable();
-          kpiDescriptorList_.add(value);
+      public Builder setStartTimestamp(
+          context.ContextOuterClass.Timestamp.Builder builderForValue) {
+        if (startTimestampBuilder_ == null) {
+          startTimestamp_ = builderForValue.build();
           onChanged();
         } else {
-          kpiDescriptorListBuilder_.addMessage(value);
+          startTimestampBuilder_.setMessage(builderForValue.build());
         }
+
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
        */
-      public Builder addKpiDescriptorList(
-          int index, monitoring.Monitoring.KpiDescriptor value) {
-        if (kpiDescriptorListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
+      public Builder mergeStartTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (startTimestampBuilder_ == null) {
+          if (startTimestamp_ != null) {
+            startTimestamp_ =
+              context.ContextOuterClass.Timestamp.newBuilder(startTimestamp_).mergeFrom(value).buildPartial();
+          } else {
+            startTimestamp_ = value;
           }
-          ensureKpiDescriptorListIsMutable();
-          kpiDescriptorList_.add(index, value);
           onChanged();
         } else {
-          kpiDescriptorListBuilder_.addMessage(index, value);
+          startTimestampBuilder_.mergeFrom(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
        */
-      public Builder addKpiDescriptorList(
-          monitoring.Monitoring.KpiDescriptor.Builder builderForValue) {
-        if (kpiDescriptorListBuilder_ == null) {
-          ensureKpiDescriptorListIsMutable();
-          kpiDescriptorList_.add(builderForValue.build());
+      public Builder clearStartTimestamp() {
+        if (startTimestampBuilder_ == null) {
+          startTimestamp_ = null;
           onChanged();
         } else {
-          kpiDescriptorListBuilder_.addMessage(builderForValue.build());
+          startTimestamp_ = null;
+          startTimestampBuilder_ = null;
         }
+
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
        */
-      public Builder addKpiDescriptorList(
-          int index, monitoring.Monitoring.KpiDescriptor.Builder builderForValue) {
-        if (kpiDescriptorListBuilder_ == null) {
-          ensureKpiDescriptorListIsMutable();
-          kpiDescriptorList_.add(index, builderForValue.build());
-          onChanged();
+      public context.ContextOuterClass.Timestamp.Builder getStartTimestampBuilder() {
+        
+        onChanged();
+        return getStartTimestampFieldBuilder().getBuilder();
+      }
+      /**
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
+       */
+      public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
+        if (startTimestampBuilder_ != null) {
+          return startTimestampBuilder_.getMessageOrBuilder();
         } else {
-          kpiDescriptorListBuilder_.addMessage(index, builderForValue.build());
+          return startTimestamp_ == null ?
+              context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
         }
-        return this;
       }
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
        */
-      public Builder addAllKpiDescriptorList(
-          java.lang.Iterable<? extends monitoring.Monitoring.KpiDescriptor> values) {
-        if (kpiDescriptorListBuilder_ == null) {
-          ensureKpiDescriptorListIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, kpiDescriptorList_);
-          onChanged();
-        } else {
-          kpiDescriptorListBuilder_.addAllMessages(values);
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
+          getStartTimestampFieldBuilder() {
+        if (startTimestampBuilder_ == null) {
+          startTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
+                  getStartTimestamp(),
+                  getParentForChildren(),
+                  isClean());
+          startTimestamp_ = null;
         }
-        return this;
+        return startTimestampBuilder_;
       }
+
+      private context.ContextOuterClass.Timestamp endTimestamp_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> endTimestampBuilder_;
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
+       * @return Whether the endTimestamp field is set.
        */
-      public Builder clearKpiDescriptorList() {
-        if (kpiDescriptorListBuilder_ == null) {
-          kpiDescriptorList_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
+      public boolean hasEndTimestamp() {
+        return endTimestampBuilder_ != null || endTimestamp_ != null;
+      }
+      /**
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
+       * @return The endTimestamp.
+       */
+      public context.ContextOuterClass.Timestamp getEndTimestamp() {
+        if (endTimestampBuilder_ == null) {
+          return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
         } else {
-          kpiDescriptorListBuilder_.clear();
+          return endTimestampBuilder_.getMessage();
         }
-        return this;
       }
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
        */
-      public Builder removeKpiDescriptorList(int index) {
-        if (kpiDescriptorListBuilder_ == null) {
-          ensureKpiDescriptorListIsMutable();
-          kpiDescriptorList_.remove(index);
+      public Builder setEndTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (endTimestampBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          endTimestamp_ = value;
           onChanged();
         } else {
-          kpiDescriptorListBuilder_.remove(index);
+          endTimestampBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
        */
-      public monitoring.Monitoring.KpiDescriptor.Builder getKpiDescriptorListBuilder(
-          int index) {
-        return getKpiDescriptorListFieldBuilder().getBuilder(index);
+      public Builder setEndTimestamp(
+          context.ContextOuterClass.Timestamp.Builder builderForValue) {
+        if (endTimestampBuilder_ == null) {
+          endTimestamp_ = builderForValue.build();
+          onChanged();
+        } else {
+          endTimestampBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
       }
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
        */
-      public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorListOrBuilder(
-          int index) {
-        if (kpiDescriptorListBuilder_ == null) {
-          return kpiDescriptorList_.get(index);  } else {
-          return kpiDescriptorListBuilder_.getMessageOrBuilder(index);
+      public Builder mergeEndTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (endTimestampBuilder_ == null) {
+          if (endTimestamp_ != null) {
+            endTimestamp_ =
+              context.ContextOuterClass.Timestamp.newBuilder(endTimestamp_).mergeFrom(value).buildPartial();
+          } else {
+            endTimestamp_ = value;
+          }
+          onChanged();
+        } else {
+          endTimestampBuilder_.mergeFrom(value);
         }
+
+        return this;
       }
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
        */
-      public java.util.List<? extends monitoring.Monitoring.KpiDescriptorOrBuilder> 
-           getKpiDescriptorListOrBuilderList() {
-        if (kpiDescriptorListBuilder_ != null) {
-          return kpiDescriptorListBuilder_.getMessageOrBuilderList();
+      public Builder clearEndTimestamp() {
+        if (endTimestampBuilder_ == null) {
+          endTimestamp_ = null;
+          onChanged();
         } else {
-          return java.util.Collections.unmodifiableList(kpiDescriptorList_);
+          endTimestamp_ = null;
+          endTimestampBuilder_ = null;
         }
+
+        return this;
       }
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
        */
-      public monitoring.Monitoring.KpiDescriptor.Builder addKpiDescriptorListBuilder() {
-        return getKpiDescriptorListFieldBuilder().addBuilder(
-            monitoring.Monitoring.KpiDescriptor.getDefaultInstance());
+      public context.ContextOuterClass.Timestamp.Builder getEndTimestampBuilder() {
+        
+        onChanged();
+        return getEndTimestampFieldBuilder().getBuilder();
       }
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
        */
-      public monitoring.Monitoring.KpiDescriptor.Builder addKpiDescriptorListBuilder(
-          int index) {
-        return getKpiDescriptorListFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.KpiDescriptor.getDefaultInstance());
+      public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
+        if (endTimestampBuilder_ != null) {
+          return endTimestampBuilder_.getMessageOrBuilder();
+        } else {
+          return endTimestamp_ == null ?
+              context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
+        }
       }
       /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
        */
-      public java.util.List<monitoring.Monitoring.KpiDescriptor.Builder> 
-           getKpiDescriptorListBuilderList() {
-        return getKpiDescriptorListFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder> 
-          getKpiDescriptorListFieldBuilder() {
-        if (kpiDescriptorListBuilder_ == null) {
-          kpiDescriptorListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder>(
-                  kpiDescriptorList_,
-                  ((bitField0_ & 0x00000001) != 0),
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
+          getEndTimestampFieldBuilder() {
+        if (endTimestampBuilder_ == null) {
+          endTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
+                  getEndTimestamp(),
                   getParentForChildren(),
                   isClean());
-          kpiDescriptorList_ = null;
+          endTimestamp_ = null;
         }
-        return kpiDescriptorListBuilder_;
+        return endTimestampBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -12578,139 +11517,85 @@ public final class Monitoring {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:monitoring.KpiDescriptorList)
+      // @@protoc_insertion_point(builder_scope:monitoring.SubsDescriptor)
     }
 
-    // @@protoc_insertion_point(class_scope:monitoring.KpiDescriptorList)
-    private static final monitoring.Monitoring.KpiDescriptorList DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:monitoring.SubsDescriptor)
+    private static final monitoring.Monitoring.SubsDescriptor DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiDescriptorList();
+      DEFAULT_INSTANCE = new monitoring.Monitoring.SubsDescriptor();
     }
 
-    public static monitoring.Monitoring.KpiDescriptorList getDefaultInstance() {
+    public static monitoring.Monitoring.SubsDescriptor getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<KpiDescriptorList>
-        PARSER = new com.google.protobuf.AbstractParser<KpiDescriptorList>() {
+    private static final com.google.protobuf.Parser<SubsDescriptor>
+        PARSER = new com.google.protobuf.AbstractParser<SubsDescriptor>() {
       @java.lang.Override
-      public KpiDescriptorList parsePartialFrom(
+      public SubsDescriptor parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new KpiDescriptorList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<KpiDescriptorList> parser() {
-      return PARSER;
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<KpiDescriptorList> getParserForType() {
-      return PARSER;
-    }
-
-    @java.lang.Override
-    public monitoring.Monitoring.KpiDescriptorList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
-
-  }
-
-  public interface SubsDescriptorOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.SubsDescriptor)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    boolean hasKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    monitoring.Monitoring.KpiId getKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
+        return new SubsDescriptor(input, extensionRegistry);
+      }
+    };
 
-    /**
-     * <code>float sampling_duration_s = 2;</code>
-     * @return The samplingDurationS.
-     */
-    float getSamplingDurationS();
+    public static com.google.protobuf.Parser<SubsDescriptor> parser() {
+      return PARSER;
+    }
 
-    /**
-     * <code>float sampling_interval_s = 3;</code>
-     * @return The samplingIntervalS.
-     */
-    float getSamplingIntervalS();
+    @java.lang.Override
+    public com.google.protobuf.Parser<SubsDescriptor> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public monitoring.Monitoring.SubsDescriptor getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface SubscriptionIDOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:monitoring.SubscriptionID)
+      com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>string start_date = 4;</code>
-     * @return The startDate.
-     */
-    java.lang.String getStartDate();
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>string start_date = 4;</code>
-     * @return The bytes for startDate.
+     * <code>.context.Uuid subs_id = 1;</code>
+     * @return Whether the subsId field is set.
      */
-    com.google.protobuf.ByteString
-        getStartDateBytes();
-
+    boolean hasSubsId();
     /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>string end_date = 5;</code>
-     * @return The endDate.
+     * <code>.context.Uuid subs_id = 1;</code>
+     * @return The subsId.
      */
-    java.lang.String getEndDate();
+    context.ContextOuterClass.Uuid getSubsId();
     /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>string end_date = 5;</code>
-     * @return The bytes for endDate.
+     * <code>.context.Uuid subs_id = 1;</code>
      */
-    com.google.protobuf.ByteString
-        getEndDateBytes();
+    context.ContextOuterClass.UuidOrBuilder getSubsIdOrBuilder();
   }
   /**
-   * Protobuf type {@code monitoring.SubsDescriptor}
+   * Protobuf type {@code monitoring.SubscriptionID}
    */
-  public static final class SubsDescriptor extends
+  public static final class SubscriptionID extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.SubsDescriptor)
-      SubsDescriptorOrBuilder {
+      // @@protoc_insertion_point(message_implements:monitoring.SubscriptionID)
+      SubscriptionIDOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use SubsDescriptor.newBuilder() to construct.
-    private SubsDescriptor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use SubscriptionID.newBuilder() to construct.
+    private SubscriptionID(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private SubsDescriptor() {
-      startDate_ = "";
-      endDate_ = "";
+    private SubscriptionID() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new SubsDescriptor();
+      return new SubscriptionID();
     }
 
     @java.lang.Override
@@ -12718,7 +11603,7 @@ public final class Monitoring {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private SubsDescriptor(
+    private SubscriptionID(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -12737,40 +11622,18 @@ public final class Monitoring {
               done = true;
               break;
             case 10: {
-              monitoring.Monitoring.KpiId.Builder subBuilder = null;
-              if (kpiId_ != null) {
-                subBuilder = kpiId_.toBuilder();
+              context.ContextOuterClass.Uuid.Builder subBuilder = null;
+              if (subsId_ != null) {
+                subBuilder = subsId_.toBuilder();
               }
-              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+              subsId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
               if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiId_);
-                kpiId_ = subBuilder.buildPartial();
+                subBuilder.mergeFrom(subsId_);
+                subsId_ = subBuilder.buildPartial();
               }
 
               break;
             }
-            case 21: {
-
-              samplingDurationS_ = input.readFloat();
-              break;
-            }
-            case 29: {
-
-              samplingIntervalS_ = input.readFloat();
-              break;
-            }
-            case 34: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              startDate_ = s;
-              break;
-            }
-            case 42: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              endDate_ = s;
-              break;
-            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -12792,155 +11655,41 @@ public final class Monitoring {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_descriptor;
+      return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_fieldAccessorTable
+      return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.SubsDescriptor.class, monitoring.Monitoring.SubsDescriptor.Builder.class);
-    }
-
-    public static final int KPI_ID_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.KpiId kpiId_;
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiId() {
-      return kpiId_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiId() {
-      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-      return getKpiId();
-    }
-
-    public static final int SAMPLING_DURATION_S_FIELD_NUMBER = 2;
-    private float samplingDurationS_;
-    /**
-     * <code>float sampling_duration_s = 2;</code>
-     * @return The samplingDurationS.
-     */
-    @java.lang.Override
-    public float getSamplingDurationS() {
-      return samplingDurationS_;
-    }
-
-    public static final int SAMPLING_INTERVAL_S_FIELD_NUMBER = 3;
-    private float samplingIntervalS_;
-    /**
-     * <code>float sampling_interval_s = 3;</code>
-     * @return The samplingIntervalS.
-     */
-    @java.lang.Override
-    public float getSamplingIntervalS() {
-      return samplingIntervalS_;
+              monitoring.Monitoring.SubscriptionID.class, monitoring.Monitoring.SubscriptionID.Builder.class);
     }
 
-    public static final int START_DATE_FIELD_NUMBER = 4;
-    private volatile java.lang.Object startDate_;
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>string start_date = 4;</code>
-     * @return The startDate.
-     */
-    @java.lang.Override
-    public java.lang.String getStartDate() {
-      java.lang.Object ref = startDate_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        startDate_ = s;
-        return s;
-      }
-    }
+    public static final int SUBS_ID_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.Uuid subsId_;
     /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>string start_date = 4;</code>
-     * @return The bytes for startDate.
+     * <code>.context.Uuid subs_id = 1;</code>
+     * @return Whether the subsId field is set.
      */
     @java.lang.Override
-    public com.google.protobuf.ByteString
-        getStartDateBytes() {
-      java.lang.Object ref = startDate_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        startDate_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
+    public boolean hasSubsId() {
+      return subsId_ != null;
     }
-
-    public static final int END_DATE_FIELD_NUMBER = 5;
-    private volatile java.lang.Object endDate_;
     /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>string end_date = 5;</code>
-     * @return The endDate.
+     * <code>.context.Uuid subs_id = 1;</code>
+     * @return The subsId.
      */
     @java.lang.Override
-    public java.lang.String getEndDate() {
-      java.lang.Object ref = endDate_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        endDate_ = s;
-        return s;
-      }
+    public context.ContextOuterClass.Uuid getSubsId() {
+      return subsId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : subsId_;
     }
     /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>string end_date = 5;</code>
-     * @return The bytes for endDate.
+     * <code>.context.Uuid subs_id = 1;</code>
      */
     @java.lang.Override
-    public com.google.protobuf.ByteString
-        getEndDateBytes() {
-      java.lang.Object ref = endDate_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        endDate_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
+    public context.ContextOuterClass.UuidOrBuilder getSubsIdOrBuilder() {
+      return getSubsId();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -12957,20 +11706,8 @@ public final class Monitoring {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (kpiId_ != null) {
-        output.writeMessage(1, getKpiId());
-      }
-      if (samplingDurationS_ != 0F) {
-        output.writeFloat(2, samplingDurationS_);
-      }
-      if (samplingIntervalS_ != 0F) {
-        output.writeFloat(3, samplingIntervalS_);
-      }
-      if (!getStartDateBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, startDate_);
-      }
-      if (!getEndDateBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, endDate_);
+      if (subsId_ != null) {
+        output.writeMessage(1, getSubsId());
       }
       unknownFields.writeTo(output);
     }
@@ -12981,23 +11718,9 @@ public final class Monitoring {
       if (size != -1) return size;
 
       size = 0;
-      if (kpiId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getKpiId());
-      }
-      if (samplingDurationS_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(2, samplingDurationS_);
-      }
-      if (samplingIntervalS_ != 0F) {
+      if (subsId_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(3, samplingIntervalS_);
-      }
-      if (!getStartDateBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, startDate_);
-      }
-      if (!getEndDateBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, endDate_);
+          .computeMessageSize(1, getSubsId());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -13009,26 +11732,16 @@ public final class Monitoring {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof monitoring.Monitoring.SubsDescriptor)) {
+      if (!(obj instanceof monitoring.Monitoring.SubscriptionID)) {
         return super.equals(obj);
       }
-      monitoring.Monitoring.SubsDescriptor other = (monitoring.Monitoring.SubsDescriptor) obj;
+      monitoring.Monitoring.SubscriptionID other = (monitoring.Monitoring.SubscriptionID) obj;
 
-      if (hasKpiId() != other.hasKpiId()) return false;
-      if (hasKpiId()) {
-        if (!getKpiId()
-            .equals(other.getKpiId())) return false;
+      if (hasSubsId() != other.hasSubsId()) return false;
+      if (hasSubsId()) {
+        if (!getSubsId()
+            .equals(other.getSubsId())) return false;
       }
-      if (java.lang.Float.floatToIntBits(getSamplingDurationS())
-          != java.lang.Float.floatToIntBits(
-              other.getSamplingDurationS())) return false;
-      if (java.lang.Float.floatToIntBits(getSamplingIntervalS())
-          != java.lang.Float.floatToIntBits(
-              other.getSamplingIntervalS())) return false;
-      if (!getStartDate()
-          .equals(other.getStartDate())) return false;
-      if (!getEndDate()
-          .equals(other.getEndDate())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -13040,88 +11753,78 @@ public final class Monitoring {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasKpiId()) {
-        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiId().hashCode();
+      if (hasSubsId()) {
+        hash = (37 * hash) + SUBS_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getSubsId().hashCode();
       }
-      hash = (37 * hash) + SAMPLING_DURATION_S_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getSamplingDurationS());
-      hash = (37 * hash) + SAMPLING_INTERVAL_S_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getSamplingIntervalS());
-      hash = (37 * hash) + START_DATE_FIELD_NUMBER;
-      hash = (53 * hash) + getStartDate().hashCode();
-      hash = (37 * hash) + END_DATE_FIELD_NUMBER;
-      hash = (53 * hash) + getEndDate().hashCode();
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(
+    public static monitoring.Monitoring.SubscriptionID parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(
+    public static monitoring.Monitoring.SubscriptionID parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(
+    public static monitoring.Monitoring.SubscriptionID parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(
+    public static monitoring.Monitoring.SubscriptionID parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(byte[] data)
+    public static monitoring.Monitoring.SubscriptionID parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(
+    public static monitoring.Monitoring.SubscriptionID parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.SubscriptionID parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(
+    public static monitoring.Monitoring.SubscriptionID parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubsDescriptor parseDelimitedFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.SubscriptionID parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.SubsDescriptor parseDelimitedFrom(
+    public static monitoring.Monitoring.SubscriptionID parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(
+    public static monitoring.Monitoring.SubscriptionID parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(
+    public static monitoring.Monitoring.SubscriptionID parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -13134,7 +11837,7 @@ public final class Monitoring {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(monitoring.Monitoring.SubsDescriptor prototype) {
+    public static Builder newBuilder(monitoring.Monitoring.SubscriptionID prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -13150,26 +11853,26 @@ public final class Monitoring {
       return builder;
     }
     /**
-     * Protobuf type {@code monitoring.SubsDescriptor}
+     * Protobuf type {@code monitoring.SubscriptionID}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.SubsDescriptor)
-        monitoring.Monitoring.SubsDescriptorOrBuilder {
+        // @@protoc_insertion_point(builder_implements:monitoring.SubscriptionID)
+        monitoring.Monitoring.SubscriptionIDOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_fieldAccessorTable
+        return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.SubsDescriptor.class, monitoring.Monitoring.SubsDescriptor.Builder.class);
+                monitoring.Monitoring.SubscriptionID.class, monitoring.Monitoring.SubscriptionID.Builder.class);
       }
 
-      // Construct using monitoring.Monitoring.SubsDescriptor.newBuilder()
+      // Construct using monitoring.Monitoring.SubscriptionID.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -13187,37 +11890,29 @@ public final class Monitoring {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
+        if (subsIdBuilder_ == null) {
+          subsId_ = null;
         } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
+          subsId_ = null;
+          subsIdBuilder_ = null;
         }
-        samplingDurationS_ = 0F;
-
-        samplingIntervalS_ = 0F;
-
-        startDate_ = "";
-
-        endDate_ = "";
-
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_descriptor;
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.SubsDescriptor getDefaultInstanceForType() {
-        return monitoring.Monitoring.SubsDescriptor.getDefaultInstance();
+      public monitoring.Monitoring.SubscriptionID getDefaultInstanceForType() {
+        return monitoring.Monitoring.SubscriptionID.getDefaultInstance();
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.SubsDescriptor build() {
-        monitoring.Monitoring.SubsDescriptor result = buildPartial();
+      public monitoring.Monitoring.SubscriptionID build() {
+        monitoring.Monitoring.SubscriptionID result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -13225,17 +11920,13 @@ public final class Monitoring {
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.SubsDescriptor buildPartial() {
-        monitoring.Monitoring.SubsDescriptor result = new monitoring.Monitoring.SubsDescriptor(this);
-        if (kpiIdBuilder_ == null) {
-          result.kpiId_ = kpiId_;
+      public monitoring.Monitoring.SubscriptionID buildPartial() {
+        monitoring.Monitoring.SubscriptionID result = new monitoring.Monitoring.SubscriptionID(this);
+        if (subsIdBuilder_ == null) {
+          result.subsId_ = subsId_;
         } else {
-          result.kpiId_ = kpiIdBuilder_.build();
+          result.subsId_ = subsIdBuilder_.build();
         }
-        result.samplingDurationS_ = samplingDurationS_;
-        result.samplingIntervalS_ = samplingIntervalS_;
-        result.startDate_ = startDate_;
-        result.endDate_ = endDate_;
         onBuilt();
         return result;
       }
@@ -13250,457 +11941,189 @@ public final class Monitoring {
           java.lang.Object value) {
         return super.setField(field, value);
       }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.SubsDescriptor) {
-          return mergeFrom((monitoring.Monitoring.SubsDescriptor)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.SubsDescriptor other) {
-        if (other == monitoring.Monitoring.SubsDescriptor.getDefaultInstance()) return this;
-        if (other.hasKpiId()) {
-          mergeKpiId(other.getKpiId());
-        }
-        if (other.getSamplingDurationS() != 0F) {
-          setSamplingDurationS(other.getSamplingDurationS());
-        }
-        if (other.getSamplingIntervalS() != 0F) {
-          setSamplingIntervalS(other.getSamplingIntervalS());
-        }
-        if (!other.getStartDate().isEmpty()) {
-          startDate_ = other.startDate_;
-          onChanged();
-        }
-        if (!other.getEndDate().isEmpty()) {
-          endDate_ = other.endDate_;
-          onChanged();
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.SubsDescriptor parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.SubsDescriptor) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private monitoring.Monitoring.KpiId kpiId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return Whether the kpiId field is set.
-       */
-      public boolean hasKpiId() {
-        return kpiIdBuilder_ != null || kpiId_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return The kpiId.
-       */
-      public monitoring.Monitoring.KpiId getKpiId() {
-        if (kpiIdBuilder_ == null) {
-          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        } else {
-          return kpiIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiId_ = value;
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (kpiId_ != null) {
-            kpiId_ =
-              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
-          } else {
-            kpiId_ = value;
-          }
-          onChanged();
-        } else {
-          kpiIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder clearKpiId() {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-          onChanged();
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-        
-        onChanged();
-        return getKpiIdFieldBuilder().getBuilder();
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
       }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-        if (kpiIdBuilder_ != null) {
-          return kpiIdBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiId_ == null ?
-              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
       }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdFieldBuilder() {
-        if (kpiIdBuilder_ == null) {
-          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  getKpiId(),
-                  getParentForChildren(),
-                  isClean());
-          kpiId_ = null;
-        }
-        return kpiIdBuilder_;
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
       }
-
-      private float samplingDurationS_ ;
-      /**
-       * <code>float sampling_duration_s = 2;</code>
-       * @return The samplingDurationS.
-       */
       @java.lang.Override
-      public float getSamplingDurationS() {
-        return samplingDurationS_;
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
       }
-      /**
-       * <code>float sampling_duration_s = 2;</code>
-       * @param value The samplingDurationS to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSamplingDurationS(float value) {
-        
-        samplingDurationS_ = value;
-        onChanged();
-        return this;
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof monitoring.Monitoring.SubscriptionID) {
+          return mergeFrom((monitoring.Monitoring.SubscriptionID)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
       }
-      /**
-       * <code>float sampling_duration_s = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSamplingDurationS() {
-        
-        samplingDurationS_ = 0F;
+
+      public Builder mergeFrom(monitoring.Monitoring.SubscriptionID other) {
+        if (other == monitoring.Monitoring.SubscriptionID.getDefaultInstance()) return this;
+        if (other.hasSubsId()) {
+          mergeSubsId(other.getSubsId());
+        }
+        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      private float samplingIntervalS_ ;
-      /**
-       * <code>float sampling_interval_s = 3;</code>
-       * @return The samplingIntervalS.
-       */
       @java.lang.Override
-      public float getSamplingIntervalS() {
-        return samplingIntervalS_;
+      public final boolean isInitialized() {
+        return true;
       }
-      /**
-       * <code>float sampling_interval_s = 3;</code>
-       * @param value The samplingIntervalS to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSamplingIntervalS(float value) {
-        
-        samplingIntervalS_ = value;
-        onChanged();
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        monitoring.Monitoring.SubscriptionID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (monitoring.Monitoring.SubscriptionID) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
         return this;
       }
+
+      private context.ContextOuterClass.Uuid subsId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> subsIdBuilder_;
       /**
-       * <code>float sampling_interval_s = 3;</code>
-       * @return This builder for chaining.
+       * <code>.context.Uuid subs_id = 1;</code>
+       * @return Whether the subsId field is set.
        */
-      public Builder clearSamplingIntervalS() {
-        
-        samplingIntervalS_ = 0F;
-        onChanged();
-        return this;
+      public boolean hasSubsId() {
+        return subsIdBuilder_ != null || subsId_ != null;
       }
-
-      private java.lang.Object startDate_ = "";
       /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>string start_date = 4;</code>
-       * @return The startDate.
+       * <code>.context.Uuid subs_id = 1;</code>
+       * @return The subsId.
        */
-      public java.lang.String getStartDate() {
-        java.lang.Object ref = startDate_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          startDate_ = s;
-          return s;
+      public context.ContextOuterClass.Uuid getSubsId() {
+        if (subsIdBuilder_ == null) {
+          return subsId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : subsId_;
         } else {
-          return (java.lang.String) ref;
+          return subsIdBuilder_.getMessage();
         }
       }
       /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>string start_date = 4;</code>
-       * @return The bytes for startDate.
+       * <code>.context.Uuid subs_id = 1;</code>
        */
-      public com.google.protobuf.ByteString
-          getStartDateBytes() {
-        java.lang.Object ref = startDate_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          startDate_ = b;
-          return b;
+      public Builder setSubsId(context.ContextOuterClass.Uuid value) {
+        if (subsIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          subsId_ = value;
+          onChanged();
         } else {
-          return (com.google.protobuf.ByteString) ref;
+          subsIdBuilder_.setMessage(value);
         }
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>string start_date = 4;</code>
-       * @param value The startDate to set.
-       * @return This builder for chaining.
-       */
-      public Builder setStartDate(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        startDate_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>string start_date = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearStartDate() {
-        
-        startDate_ = getDefaultInstance().getStartDate();
-        onChanged();
+
         return this;
       }
       /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>string start_date = 4;</code>
-       * @param value The bytes for startDate to set.
-       * @return This builder for chaining.
+       * <code>.context.Uuid subs_id = 1;</code>
        */
-      public Builder setStartDateBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        startDate_ = value;
-        onChanged();
+      public Builder setSubsId(
+          context.ContextOuterClass.Uuid.Builder builderForValue) {
+        if (subsIdBuilder_ == null) {
+          subsId_ = builderForValue.build();
+          onChanged();
+        } else {
+          subsIdBuilder_.setMessage(builderForValue.build());
+        }
+
         return this;
       }
-
-      private java.lang.Object endDate_ = "";
       /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>string end_date = 5;</code>
-       * @return The endDate.
+       * <code>.context.Uuid subs_id = 1;</code>
        */
-      public java.lang.String getEndDate() {
-        java.lang.Object ref = endDate_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          endDate_ = s;
-          return s;
+      public Builder mergeSubsId(context.ContextOuterClass.Uuid value) {
+        if (subsIdBuilder_ == null) {
+          if (subsId_ != null) {
+            subsId_ =
+              context.ContextOuterClass.Uuid.newBuilder(subsId_).mergeFrom(value).buildPartial();
+          } else {
+            subsId_ = value;
+          }
+          onChanged();
         } else {
-          return (java.lang.String) ref;
+          subsIdBuilder_.mergeFrom(value);
         }
+
+        return this;
       }
       /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>string end_date = 5;</code>
-       * @return The bytes for endDate.
+       * <code>.context.Uuid subs_id = 1;</code>
        */
-      public com.google.protobuf.ByteString
-          getEndDateBytes() {
-        java.lang.Object ref = endDate_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          endDate_ = b;
-          return b;
+      public Builder clearSubsId() {
+        if (subsIdBuilder_ == null) {
+          subsId_ = null;
+          onChanged();
         } else {
-          return (com.google.protobuf.ByteString) ref;
+          subsId_ = null;
+          subsIdBuilder_ = null;
         }
+
+        return this;
       }
       /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>string end_date = 5;</code>
-       * @param value The endDate to set.
-       * @return This builder for chaining.
+       * <code>.context.Uuid subs_id = 1;</code>
        */
-      public Builder setEndDate(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        endDate_ = value;
+      public context.ContextOuterClass.Uuid.Builder getSubsIdBuilder() {
+        
         onChanged();
-        return this;
+        return getSubsIdFieldBuilder().getBuilder();
       }
       /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>string end_date = 5;</code>
-       * @return This builder for chaining.
+       * <code>.context.Uuid subs_id = 1;</code>
        */
-      public Builder clearEndDate() {
-        
-        endDate_ = getDefaultInstance().getEndDate();
-        onChanged();
-        return this;
+      public context.ContextOuterClass.UuidOrBuilder getSubsIdOrBuilder() {
+        if (subsIdBuilder_ != null) {
+          return subsIdBuilder_.getMessageOrBuilder();
+        } else {
+          return subsId_ == null ?
+              context.ContextOuterClass.Uuid.getDefaultInstance() : subsId_;
+        }
       }
       /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>string end_date = 5;</code>
-       * @param value The bytes for endDate to set.
-       * @return This builder for chaining.
+       * <code>.context.Uuid subs_id = 1;</code>
        */
-      public Builder setEndDateBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        endDate_ = value;
-        onChanged();
-        return this;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
+          getSubsIdFieldBuilder() {
+        if (subsIdBuilder_ == null) {
+          subsIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
+                  getSubsId(),
+                  getParentForChildren(),
+                  isClean());
+          subsId_ = null;
+        }
+        return subsIdBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -13715,85 +12138,110 @@ public final class Monitoring {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:monitoring.SubsDescriptor)
+      // @@protoc_insertion_point(builder_scope:monitoring.SubscriptionID)
     }
 
-    // @@protoc_insertion_point(class_scope:monitoring.SubsDescriptor)
-    private static final monitoring.Monitoring.SubsDescriptor DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:monitoring.SubscriptionID)
+    private static final monitoring.Monitoring.SubscriptionID DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.SubsDescriptor();
+      DEFAULT_INSTANCE = new monitoring.Monitoring.SubscriptionID();
     }
 
-    public static monitoring.Monitoring.SubsDescriptor getDefaultInstance() {
+    public static monitoring.Monitoring.SubscriptionID getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<SubsDescriptor>
-        PARSER = new com.google.protobuf.AbstractParser<SubsDescriptor>() {
+    private static final com.google.protobuf.Parser<SubscriptionID>
+        PARSER = new com.google.protobuf.AbstractParser<SubscriptionID>() {
       @java.lang.Override
-      public SubsDescriptor parsePartialFrom(
+      public SubscriptionID parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SubsDescriptor(input, extensionRegistry);
+        return new SubscriptionID(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<SubsDescriptor> parser() {
+    public static com.google.protobuf.Parser<SubscriptionID> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<SubsDescriptor> getParserForType() {
+    public com.google.protobuf.Parser<SubscriptionID> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public monitoring.Monitoring.SubsDescriptor getDefaultInstanceForType() {
+    public monitoring.Monitoring.SubscriptionID getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface SubscriptionIDOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.SubscriptionID)
+  public interface SubsResponseOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:monitoring.SubsResponse)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>.context.Uuid subs_id = 1;</code>
+     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
      * @return Whether the subsId field is set.
      */
     boolean hasSubsId();
     /**
-     * <code>.context.Uuid subs_id = 1;</code>
+     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
      * @return The subsId.
      */
-    context.ContextOuterClass.Uuid getSubsId();
+    monitoring.Monitoring.SubscriptionID getSubsId();
     /**
-     * <code>.context.Uuid subs_id = 1;</code>
+     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
      */
-    context.ContextOuterClass.UuidOrBuilder getSubsIdOrBuilder();
+    monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder();
+
+    /**
+     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     */
+    java.util.List<monitoring.Monitoring.KpiList> 
+        getKpiListList();
+    /**
+     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     */
+    monitoring.Monitoring.KpiList getKpiList(int index);
+    /**
+     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     */
+    int getKpiListCount();
+    /**
+     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     */
+    java.util.List<? extends monitoring.Monitoring.KpiListOrBuilder> 
+        getKpiListOrBuilderList();
+    /**
+     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     */
+    monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder(
+        int index);
   }
   /**
-   * Protobuf type {@code monitoring.SubscriptionID}
+   * Protobuf type {@code monitoring.SubsResponse}
    */
-  public static final class SubscriptionID extends
+  public static final class SubsResponse extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.SubscriptionID)
-      SubscriptionIDOrBuilder {
+      // @@protoc_insertion_point(message_implements:monitoring.SubsResponse)
+      SubsResponseOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use SubscriptionID.newBuilder() to construct.
-    private SubscriptionID(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use SubsResponse.newBuilder() to construct.
+    private SubsResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private SubscriptionID() {
+    private SubsResponse() {
+      kpiList_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new SubscriptionID();
+      return new SubsResponse();
     }
 
     @java.lang.Override
@@ -13801,7 +12249,7 @@ public final class Monitoring {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private SubscriptionID(
+    private SubsResponse(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -13809,6 +12257,7 @@ public final class Monitoring {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
+      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -13820,11 +12269,11 @@ public final class Monitoring {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
+              monitoring.Monitoring.SubscriptionID.Builder subBuilder = null;
               if (subsId_ != null) {
                 subBuilder = subsId_.toBuilder();
               }
-              subsId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+              subsId_ = input.readMessage(monitoring.Monitoring.SubscriptionID.parser(), extensionRegistry);
               if (subBuilder != null) {
                 subBuilder.mergeFrom(subsId_);
                 subsId_ = subBuilder.buildPartial();
@@ -13832,6 +12281,15 @@ public final class Monitoring {
 
               break;
             }
+            case 18: {
+              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                kpiList_ = new java.util.ArrayList<monitoring.Monitoring.KpiList>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              kpiList_.add(
+                  input.readMessage(monitoring.Monitoring.KpiList.parser(), extensionRegistry));
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -13847,27 +12305,30 @@ public final class Monitoring {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          kpiList_ = java.util.Collections.unmodifiableList(kpiList_);
+        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_descriptor;
+      return monitoring.Monitoring.internal_static_monitoring_SubsResponse_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_fieldAccessorTable
+      return monitoring.Monitoring.internal_static_monitoring_SubsResponse_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.SubscriptionID.class, monitoring.Monitoring.SubscriptionID.Builder.class);
+              monitoring.Monitoring.SubsResponse.class, monitoring.Monitoring.SubsResponse.Builder.class);
     }
 
     public static final int SUBS_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Uuid subsId_;
+    private monitoring.Monitoring.SubscriptionID subsId_;
     /**
-     * <code>.context.Uuid subs_id = 1;</code>
+     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
      * @return Whether the subsId field is set.
      */
     @java.lang.Override
@@ -13875,21 +12336,61 @@ public final class Monitoring {
       return subsId_ != null;
     }
     /**
-     * <code>.context.Uuid subs_id = 1;</code>
+     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
      * @return The subsId.
      */
     @java.lang.Override
-    public context.ContextOuterClass.Uuid getSubsId() {
-      return subsId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : subsId_;
+    public monitoring.Monitoring.SubscriptionID getSubsId() {
+      return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
     }
     /**
-     * <code>.context.Uuid subs_id = 1;</code>
+     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getSubsIdOrBuilder() {
+    public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
       return getSubsId();
     }
 
+    public static final int KPI_LIST_FIELD_NUMBER = 2;
+    private java.util.List<monitoring.Monitoring.KpiList> kpiList_;
+    /**
+     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     */
+    @java.lang.Override
+    public java.util.List<monitoring.Monitoring.KpiList> getKpiListList() {
+      return kpiList_;
+    }
+    /**
+     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     */
+    @java.lang.Override
+    public java.util.List<? extends monitoring.Monitoring.KpiListOrBuilder> 
+        getKpiListOrBuilderList() {
+      return kpiList_;
+    }
+    /**
+     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     */
+    @java.lang.Override
+    public int getKpiListCount() {
+      return kpiList_.size();
+    }
+    /**
+     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     */
+    @java.lang.Override
+    public monitoring.Monitoring.KpiList getKpiList(int index) {
+      return kpiList_.get(index);
+    }
+    /**
+     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     */
+    @java.lang.Override
+    public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder(
+        int index) {
+      return kpiList_.get(index);
+    }
+
     private byte memoizedIsInitialized = -1;
     @java.lang.Override
     public final boolean isInitialized() {
@@ -13907,6 +12408,9 @@ public final class Monitoring {
       if (subsId_ != null) {
         output.writeMessage(1, getSubsId());
       }
+      for (int i = 0; i < kpiList_.size(); i++) {
+        output.writeMessage(2, kpiList_.get(i));
+      }
       unknownFields.writeTo(output);
     }
 
@@ -13920,6 +12424,10 @@ public final class Monitoring {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(1, getSubsId());
       }
+      for (int i = 0; i < kpiList_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, kpiList_.get(i));
+      }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
@@ -13930,16 +12438,18 @@ public final class Monitoring {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof monitoring.Monitoring.SubscriptionID)) {
+      if (!(obj instanceof monitoring.Monitoring.SubsResponse)) {
         return super.equals(obj);
       }
-      monitoring.Monitoring.SubscriptionID other = (monitoring.Monitoring.SubscriptionID) obj;
+      monitoring.Monitoring.SubsResponse other = (monitoring.Monitoring.SubsResponse) obj;
 
       if (hasSubsId() != other.hasSubsId()) return false;
       if (hasSubsId()) {
         if (!getSubsId()
             .equals(other.getSubsId())) return false;
       }
+      if (!getKpiListList()
+          .equals(other.getKpiListList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -13955,74 +12465,78 @@ public final class Monitoring {
         hash = (37 * hash) + SUBS_ID_FIELD_NUMBER;
         hash = (53 * hash) + getSubsId().hashCode();
       }
+      if (getKpiListCount() > 0) {
+        hash = (37 * hash) + KPI_LIST_FIELD_NUMBER;
+        hash = (53 * hash) + getKpiListList().hashCode();
+      }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static monitoring.Monitoring.SubscriptionID parseFrom(
+    public static monitoring.Monitoring.SubsResponse parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(
+    public static monitoring.Monitoring.SubsResponse parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(
+    public static monitoring.Monitoring.SubsResponse parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(
+    public static monitoring.Monitoring.SubsResponse parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(byte[] data)
+    public static monitoring.Monitoring.SubsResponse parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(
+    public static monitoring.Monitoring.SubsResponse parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.SubsResponse parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(
+    public static monitoring.Monitoring.SubsResponse parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubscriptionID parseDelimitedFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.SubsResponse parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.SubscriptionID parseDelimitedFrom(
+    public static monitoring.Monitoring.SubsResponse parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(
+    public static monitoring.Monitoring.SubsResponse parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(
+    public static monitoring.Monitoring.SubsResponse parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -14035,7 +12549,7 @@ public final class Monitoring {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(monitoring.Monitoring.SubscriptionID prototype) {
+    public static Builder newBuilder(monitoring.Monitoring.SubsResponse prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -14051,26 +12565,26 @@ public final class Monitoring {
       return builder;
     }
     /**
-     * Protobuf type {@code monitoring.SubscriptionID}
+     * Protobuf type {@code monitoring.SubsResponse}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.SubscriptionID)
-        monitoring.Monitoring.SubscriptionIDOrBuilder {
+        // @@protoc_insertion_point(builder_implements:monitoring.SubsResponse)
+        monitoring.Monitoring.SubsResponseOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_SubsResponse_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_fieldAccessorTable
+        return monitoring.Monitoring.internal_static_monitoring_SubsResponse_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.SubscriptionID.class, monitoring.Monitoring.SubscriptionID.Builder.class);
+                monitoring.Monitoring.SubsResponse.class, monitoring.Monitoring.SubsResponse.Builder.class);
       }
 
-      // Construct using monitoring.Monitoring.SubscriptionID.newBuilder()
+      // Construct using monitoring.Monitoring.SubsResponse.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -14083,6 +12597,7 @@ public final class Monitoring {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
+          getKpiListFieldBuilder();
         }
       }
       @java.lang.Override
@@ -14094,23 +12609,29 @@ public final class Monitoring {
           subsId_ = null;
           subsIdBuilder_ = null;
         }
+        if (kpiListBuilder_ == null) {
+          kpiList_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          kpiListBuilder_.clear();
+        }
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_SubsResponse_descriptor;
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.SubscriptionID getDefaultInstanceForType() {
-        return monitoring.Monitoring.SubscriptionID.getDefaultInstance();
+      public monitoring.Monitoring.SubsResponse getDefaultInstanceForType() {
+        return monitoring.Monitoring.SubsResponse.getDefaultInstance();
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.SubscriptionID build() {
-        monitoring.Monitoring.SubscriptionID result = buildPartial();
+      public monitoring.Monitoring.SubsResponse build() {
+        monitoring.Monitoring.SubsResponse result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -14118,13 +12639,23 @@ public final class Monitoring {
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.SubscriptionID buildPartial() {
-        monitoring.Monitoring.SubscriptionID result = new monitoring.Monitoring.SubscriptionID(this);
+      public monitoring.Monitoring.SubsResponse buildPartial() {
+        monitoring.Monitoring.SubsResponse result = new monitoring.Monitoring.SubsResponse(this);
+        int from_bitField0_ = bitField0_;
         if (subsIdBuilder_ == null) {
           result.subsId_ = subsId_;
         } else {
           result.subsId_ = subsIdBuilder_.build();
         }
+        if (kpiListBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            kpiList_ = java.util.Collections.unmodifiableList(kpiList_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.kpiList_ = kpiList_;
+        } else {
+          result.kpiList_ = kpiListBuilder_.build();
+        }
         onBuilt();
         return result;
       }
@@ -14163,19 +12694,45 @@ public final class Monitoring {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.SubscriptionID) {
-          return mergeFrom((monitoring.Monitoring.SubscriptionID)other);
+        if (other instanceof monitoring.Monitoring.SubsResponse) {
+          return mergeFrom((monitoring.Monitoring.SubsResponse)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(monitoring.Monitoring.SubscriptionID other) {
-        if (other == monitoring.Monitoring.SubscriptionID.getDefaultInstance()) return this;
+      public Builder mergeFrom(monitoring.Monitoring.SubsResponse other) {
+        if (other == monitoring.Monitoring.SubsResponse.getDefaultInstance()) return this;
         if (other.hasSubsId()) {
           mergeSubsId(other.getSubsId());
         }
+        if (kpiListBuilder_ == null) {
+          if (!other.kpiList_.isEmpty()) {
+            if (kpiList_.isEmpty()) {
+              kpiList_ = other.kpiList_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureKpiListIsMutable();
+              kpiList_.addAll(other.kpiList_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.kpiList_.isEmpty()) {
+            if (kpiListBuilder_.isEmpty()) {
+              kpiListBuilder_.dispose();
+              kpiListBuilder_ = null;
+              kpiList_ = other.kpiList_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              kpiListBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                   getKpiListFieldBuilder() : null;
+            } else {
+              kpiListBuilder_.addAllMessages(other.kpiList_);
+            }
+          }
+        }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
@@ -14191,11 +12748,11 @@ public final class Monitoring {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        monitoring.Monitoring.SubscriptionID parsedMessage = null;
+        monitoring.Monitoring.SubsResponse parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.SubscriptionID) e.getUnfinishedMessage();
+          parsedMessage = (monitoring.Monitoring.SubsResponse) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -14204,124 +12761,365 @@ public final class Monitoring {
         }
         return this;
       }
-
-      private context.ContextOuterClass.Uuid subsId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> subsIdBuilder_;
+      private int bitField0_;
+
+      private monitoring.Monitoring.SubscriptionID subsId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> subsIdBuilder_;
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       * @return Whether the subsId field is set.
+       */
+      public boolean hasSubsId() {
+        return subsIdBuilder_ != null || subsId_ != null;
+      }
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       * @return The subsId.
+       */
+      public monitoring.Monitoring.SubscriptionID getSubsId() {
+        if (subsIdBuilder_ == null) {
+          return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
+        } else {
+          return subsIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       */
+      public Builder setSubsId(monitoring.Monitoring.SubscriptionID value) {
+        if (subsIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          subsId_ = value;
+          onChanged();
+        } else {
+          subsIdBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       */
+      public Builder setSubsId(
+          monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
+        if (subsIdBuilder_ == null) {
+          subsId_ = builderForValue.build();
+          onChanged();
+        } else {
+          subsIdBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       */
+      public Builder mergeSubsId(monitoring.Monitoring.SubscriptionID value) {
+        if (subsIdBuilder_ == null) {
+          if (subsId_ != null) {
+            subsId_ =
+              monitoring.Monitoring.SubscriptionID.newBuilder(subsId_).mergeFrom(value).buildPartial();
+          } else {
+            subsId_ = value;
+          }
+          onChanged();
+        } else {
+          subsIdBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       */
+      public Builder clearSubsId() {
+        if (subsIdBuilder_ == null) {
+          subsId_ = null;
+          onChanged();
+        } else {
+          subsId_ = null;
+          subsIdBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       */
+      public monitoring.Monitoring.SubscriptionID.Builder getSubsIdBuilder() {
+        
+        onChanged();
+        return getSubsIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       */
+      public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
+        if (subsIdBuilder_ != null) {
+          return subsIdBuilder_.getMessageOrBuilder();
+        } else {
+          return subsId_ == null ?
+              monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
+        }
+      }
+      /**
+       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> 
+          getSubsIdFieldBuilder() {
+        if (subsIdBuilder_ == null) {
+          subsIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder>(
+                  getSubsId(),
+                  getParentForChildren(),
+                  isClean());
+          subsId_ = null;
+        }
+        return subsIdBuilder_;
+      }
+
+      private java.util.List<monitoring.Monitoring.KpiList> kpiList_ =
+        java.util.Collections.emptyList();
+      private void ensureKpiListIsMutable() {
+        if (!((bitField0_ & 0x00000001) != 0)) {
+          kpiList_ = new java.util.ArrayList<monitoring.Monitoring.KpiList>(kpiList_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder> kpiListBuilder_;
+
+      /**
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       */
+      public java.util.List<monitoring.Monitoring.KpiList> getKpiListList() {
+        if (kpiListBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(kpiList_);
+        } else {
+          return kpiListBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       */
+      public int getKpiListCount() {
+        if (kpiListBuilder_ == null) {
+          return kpiList_.size();
+        } else {
+          return kpiListBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       */
+      public monitoring.Monitoring.KpiList getKpiList(int index) {
+        if (kpiListBuilder_ == null) {
+          return kpiList_.get(index);
+        } else {
+          return kpiListBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       */
+      public Builder setKpiList(
+          int index, monitoring.Monitoring.KpiList value) {
+        if (kpiListBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureKpiListIsMutable();
+          kpiList_.set(index, value);
+          onChanged();
+        } else {
+          kpiListBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
       /**
-       * <code>.context.Uuid subs_id = 1;</code>
-       * @return Whether the subsId field is set.
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
        */
-      public boolean hasSubsId() {
-        return subsIdBuilder_ != null || subsId_ != null;
+      public Builder setKpiList(
+          int index, monitoring.Monitoring.KpiList.Builder builderForValue) {
+        if (kpiListBuilder_ == null) {
+          ensureKpiListIsMutable();
+          kpiList_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          kpiListBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
       }
       /**
-       * <code>.context.Uuid subs_id = 1;</code>
-       * @return The subsId.
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
        */
-      public context.ContextOuterClass.Uuid getSubsId() {
-        if (subsIdBuilder_ == null) {
-          return subsId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : subsId_;
+      public Builder addKpiList(monitoring.Monitoring.KpiList value) {
+        if (kpiListBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureKpiListIsMutable();
+          kpiList_.add(value);
+          onChanged();
         } else {
-          return subsIdBuilder_.getMessage();
+          kpiListBuilder_.addMessage(value);
         }
+        return this;
       }
       /**
-       * <code>.context.Uuid subs_id = 1;</code>
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
        */
-      public Builder setSubsId(context.ContextOuterClass.Uuid value) {
-        if (subsIdBuilder_ == null) {
+      public Builder addKpiList(
+          int index, monitoring.Monitoring.KpiList value) {
+        if (kpiListBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          subsId_ = value;
+          ensureKpiListIsMutable();
+          kpiList_.add(index, value);
           onChanged();
         } else {
-          subsIdBuilder_.setMessage(value);
+          kpiListBuilder_.addMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.Uuid subs_id = 1;</code>
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
        */
-      public Builder setSubsId(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (subsIdBuilder_ == null) {
-          subsId_ = builderForValue.build();
+      public Builder addKpiList(
+          monitoring.Monitoring.KpiList.Builder builderForValue) {
+        if (kpiListBuilder_ == null) {
+          ensureKpiListIsMutable();
+          kpiList_.add(builderForValue.build());
           onChanged();
         } else {
-          subsIdBuilder_.setMessage(builderForValue.build());
+          kpiListBuilder_.addMessage(builderForValue.build());
         }
-
         return this;
       }
       /**
-       * <code>.context.Uuid subs_id = 1;</code>
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
        */
-      public Builder mergeSubsId(context.ContextOuterClass.Uuid value) {
-        if (subsIdBuilder_ == null) {
-          if (subsId_ != null) {
-            subsId_ =
-              context.ContextOuterClass.Uuid.newBuilder(subsId_).mergeFrom(value).buildPartial();
-          } else {
-            subsId_ = value;
-          }
+      public Builder addKpiList(
+          int index, monitoring.Monitoring.KpiList.Builder builderForValue) {
+        if (kpiListBuilder_ == null) {
+          ensureKpiListIsMutable();
+          kpiList_.add(index, builderForValue.build());
           onChanged();
         } else {
-          subsIdBuilder_.mergeFrom(value);
+          kpiListBuilder_.addMessage(index, builderForValue.build());
         }
-
         return this;
       }
       /**
-       * <code>.context.Uuid subs_id = 1;</code>
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
        */
-      public Builder clearSubsId() {
-        if (subsIdBuilder_ == null) {
-          subsId_ = null;
+      public Builder addAllKpiList(
+          java.lang.Iterable<? extends monitoring.Monitoring.KpiList> values) {
+        if (kpiListBuilder_ == null) {
+          ensureKpiListIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, kpiList_);
           onChanged();
         } else {
-          subsId_ = null;
-          subsIdBuilder_ = null;
+          kpiListBuilder_.addAllMessages(values);
         }
-
         return this;
       }
       /**
-       * <code>.context.Uuid subs_id = 1;</code>
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
        */
-      public context.ContextOuterClass.Uuid.Builder getSubsIdBuilder() {
-        
-        onChanged();
-        return getSubsIdFieldBuilder().getBuilder();
+      public Builder clearKpiList() {
+        if (kpiListBuilder_ == null) {
+          kpiList_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          kpiListBuilder_.clear();
+        }
+        return this;
       }
       /**
-       * <code>.context.Uuid subs_id = 1;</code>
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
        */
-      public context.ContextOuterClass.UuidOrBuilder getSubsIdOrBuilder() {
-        if (subsIdBuilder_ != null) {
-          return subsIdBuilder_.getMessageOrBuilder();
+      public Builder removeKpiList(int index) {
+        if (kpiListBuilder_ == null) {
+          ensureKpiListIsMutable();
+          kpiList_.remove(index);
+          onChanged();
         } else {
-          return subsId_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : subsId_;
+          kpiListBuilder_.remove(index);
         }
+        return this;
       }
       /**
-       * <code>.context.Uuid subs_id = 1;</code>
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
        */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
-          getSubsIdFieldBuilder() {
-        if (subsIdBuilder_ == null) {
-          subsIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
-                  getSubsId(),
+      public monitoring.Monitoring.KpiList.Builder getKpiListBuilder(
+          int index) {
+        return getKpiListFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       */
+      public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder(
+          int index) {
+        if (kpiListBuilder_ == null) {
+          return kpiList_.get(index);  } else {
+          return kpiListBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       */
+      public java.util.List<? extends monitoring.Monitoring.KpiListOrBuilder> 
+           getKpiListOrBuilderList() {
+        if (kpiListBuilder_ != null) {
+          return kpiListBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(kpiList_);
+        }
+      }
+      /**
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       */
+      public monitoring.Monitoring.KpiList.Builder addKpiListBuilder() {
+        return getKpiListFieldBuilder().addBuilder(
+            monitoring.Monitoring.KpiList.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       */
+      public monitoring.Monitoring.KpiList.Builder addKpiListBuilder(
+          int index) {
+        return getKpiListFieldBuilder().addBuilder(
+            index, monitoring.Monitoring.KpiList.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       */
+      public java.util.List<monitoring.Monitoring.KpiList.Builder> 
+           getKpiListBuilderList() {
+        return getKpiListFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder> 
+          getKpiListFieldBuilder() {
+        if (kpiListBuilder_ == null) {
+          kpiListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder>(
+                  kpiList_,
+                  ((bitField0_ & 0x00000001) != 0),
                   getParentForChildren(),
                   isClean());
-          subsId_ = null;
+          kpiList_ = null;
         }
-        return subsIdBuilder_;
+        return kpiListBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -14336,110 +13134,95 @@ public final class Monitoring {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:monitoring.SubscriptionID)
+      // @@protoc_insertion_point(builder_scope:monitoring.SubsResponse)
     }
 
-    // @@protoc_insertion_point(class_scope:monitoring.SubscriptionID)
-    private static final monitoring.Monitoring.SubscriptionID DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:monitoring.SubsResponse)
+    private static final monitoring.Monitoring.SubsResponse DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.SubscriptionID();
+      DEFAULT_INSTANCE = new monitoring.Monitoring.SubsResponse();
     }
 
-    public static monitoring.Monitoring.SubscriptionID getDefaultInstance() {
+    public static monitoring.Monitoring.SubsResponse getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<SubscriptionID>
-        PARSER = new com.google.protobuf.AbstractParser<SubscriptionID>() {
+    private static final com.google.protobuf.Parser<SubsResponse>
+        PARSER = new com.google.protobuf.AbstractParser<SubsResponse>() {
       @java.lang.Override
-      public SubscriptionID parsePartialFrom(
+      public SubsResponse parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SubscriptionID(input, extensionRegistry);
+        return new SubsResponse(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<SubscriptionID> parser() {
+    public static com.google.protobuf.Parser<SubsResponse> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<SubscriptionID> getParserForType() {
+    public com.google.protobuf.Parser<SubsResponse> getParserForType() {
       return PARSER;
     }
 
-    @java.lang.Override
-    public monitoring.Monitoring.SubscriptionID getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
-
-  }
-
-  public interface SubsResponseOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.SubsResponse)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     * @return Whether the subsId field is set.
-     */
-    boolean hasSubsId();
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     * @return The subsId.
-     */
-    monitoring.Monitoring.SubscriptionID getSubsId();
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     */
-    monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder();
-
+    @java.lang.Override
+    public monitoring.Monitoring.SubsResponse getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface SubsIDListOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:monitoring.SubsIDList)
+      com.google.protobuf.MessageOrBuilder {
+
     /**
-     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
      */
-    java.util.List<monitoring.Monitoring.KpiList> 
-        getKpiListList();
+    java.util.List<monitoring.Monitoring.SubscriptionID> 
+        getSubsListList();
     /**
-     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
      */
-    monitoring.Monitoring.KpiList getKpiList(int index);
+    monitoring.Monitoring.SubscriptionID getSubsList(int index);
     /**
-     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
      */
-    int getKpiListCount();
+    int getSubsListCount();
     /**
-     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
      */
-    java.util.List<? extends monitoring.Monitoring.KpiListOrBuilder> 
-        getKpiListOrBuilderList();
+    java.util.List<? extends monitoring.Monitoring.SubscriptionIDOrBuilder> 
+        getSubsListOrBuilderList();
     /**
-     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
      */
-    monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder(
+    monitoring.Monitoring.SubscriptionIDOrBuilder getSubsListOrBuilder(
         int index);
   }
   /**
-   * Protobuf type {@code monitoring.SubsResponse}
+   * Protobuf type {@code monitoring.SubsIDList}
    */
-  public static final class SubsResponse extends
+  public static final class SubsIDList extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.SubsResponse)
-      SubsResponseOrBuilder {
+      // @@protoc_insertion_point(message_implements:monitoring.SubsIDList)
+      SubsIDListOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use SubsResponse.newBuilder() to construct.
-    private SubsResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use SubsIDList.newBuilder() to construct.
+    private SubsIDList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private SubsResponse() {
-      kpiList_ = java.util.Collections.emptyList();
+    private SubsIDList() {
+      subsList_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new SubsResponse();
+      return new SubsIDList();
     }
 
     @java.lang.Override
@@ -14447,7 +13230,7 @@ public final class Monitoring {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private SubsResponse(
+    private SubsIDList(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -14467,25 +13250,12 @@ public final class Monitoring {
               done = true;
               break;
             case 10: {
-              monitoring.Monitoring.SubscriptionID.Builder subBuilder = null;
-              if (subsId_ != null) {
-                subBuilder = subsId_.toBuilder();
-              }
-              subsId_ = input.readMessage(monitoring.Monitoring.SubscriptionID.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(subsId_);
-                subsId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                kpiList_ = new java.util.ArrayList<monitoring.Monitoring.KpiList>();
+                subsList_ = new java.util.ArrayList<monitoring.Monitoring.SubscriptionID>();
                 mutable_bitField0_ |= 0x00000001;
               }
-              kpiList_.add(
-                  input.readMessage(monitoring.Monitoring.KpiList.parser(), extensionRegistry));
+              subsList_.add(
+                  input.readMessage(monitoring.Monitoring.SubscriptionID.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -14504,7 +13274,7 @@ public final class Monitoring {
             e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          kpiList_ = java.util.Collections.unmodifiableList(kpiList_);
+          subsList_ = java.util.Collections.unmodifiableList(subsList_);
         }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -14512,81 +13282,55 @@ public final class Monitoring {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_SubsResponse_descriptor;
+      return monitoring.Monitoring.internal_static_monitoring_SubsIDList_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_SubsResponse_fieldAccessorTable
+      return monitoring.Monitoring.internal_static_monitoring_SubsIDList_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.SubsResponse.class, monitoring.Monitoring.SubsResponse.Builder.class);
-    }
-
-    public static final int SUBS_ID_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.SubscriptionID subsId_;
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     * @return Whether the subsId field is set.
-     */
-    @java.lang.Override
-    public boolean hasSubsId() {
-      return subsId_ != null;
-    }
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     * @return The subsId.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.SubscriptionID getSubsId() {
-      return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
-    }
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
-      return getSubsId();
+              monitoring.Monitoring.SubsIDList.class, monitoring.Monitoring.SubsIDList.Builder.class);
     }
 
-    public static final int KPI_LIST_FIELD_NUMBER = 2;
-    private java.util.List<monitoring.Monitoring.KpiList> kpiList_;
+    public static final int SUBS_LIST_FIELD_NUMBER = 1;
+    private java.util.List<monitoring.Monitoring.SubscriptionID> subsList_;
     /**
-     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<monitoring.Monitoring.KpiList> getKpiListList() {
-      return kpiList_;
+    public java.util.List<monitoring.Monitoring.SubscriptionID> getSubsListList() {
+      return subsList_;
     }
     /**
-     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.KpiListOrBuilder> 
-        getKpiListOrBuilderList() {
-      return kpiList_;
+    public java.util.List<? extends monitoring.Monitoring.SubscriptionIDOrBuilder> 
+        getSubsListOrBuilderList() {
+      return subsList_;
     }
     /**
-     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
      */
     @java.lang.Override
-    public int getKpiListCount() {
-      return kpiList_.size();
+    public int getSubsListCount() {
+      return subsList_.size();
     }
     /**
-     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiList getKpiList(int index) {
-      return kpiList_.get(index);
+    public monitoring.Monitoring.SubscriptionID getSubsList(int index) {
+      return subsList_.get(index);
     }
     /**
-     * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder(
+    public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsListOrBuilder(
         int index) {
-      return kpiList_.get(index);
+      return subsList_.get(index);
     }
 
     private byte memoizedIsInitialized = -1;
@@ -14603,11 +13347,8 @@ public final class Monitoring {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (subsId_ != null) {
-        output.writeMessage(1, getSubsId());
-      }
-      for (int i = 0; i < kpiList_.size(); i++) {
-        output.writeMessage(2, kpiList_.get(i));
+      for (int i = 0; i < subsList_.size(); i++) {
+        output.writeMessage(1, subsList_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -14618,13 +13359,9 @@ public final class Monitoring {
       if (size != -1) return size;
 
       size = 0;
-      if (subsId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getSubsId());
-      }
-      for (int i = 0; i < kpiList_.size(); i++) {
+      for (int i = 0; i < subsList_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, kpiList_.get(i));
+          .computeMessageSize(1, subsList_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -14636,18 +13373,13 @@ public final class Monitoring {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof monitoring.Monitoring.SubsResponse)) {
+      if (!(obj instanceof monitoring.Monitoring.SubsIDList)) {
         return super.equals(obj);
       }
-      monitoring.Monitoring.SubsResponse other = (monitoring.Monitoring.SubsResponse) obj;
+      monitoring.Monitoring.SubsIDList other = (monitoring.Monitoring.SubsIDList) obj;
 
-      if (hasSubsId() != other.hasSubsId()) return false;
-      if (hasSubsId()) {
-        if (!getSubsId()
-            .equals(other.getSubsId())) return false;
-      }
-      if (!getKpiListList()
-          .equals(other.getKpiListList())) return false;
+      if (!getSubsListList()
+          .equals(other.getSubsListList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -14659,82 +13391,78 @@ public final class Monitoring {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasSubsId()) {
-        hash = (37 * hash) + SUBS_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getSubsId().hashCode();
-      }
-      if (getKpiListCount() > 0) {
-        hash = (37 * hash) + KPI_LIST_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiListList().hashCode();
+      if (getSubsListCount() > 0) {
+        hash = (37 * hash) + SUBS_LIST_FIELD_NUMBER;
+        hash = (53 * hash) + getSubsListList().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static monitoring.Monitoring.SubsResponse parseFrom(
+    public static monitoring.Monitoring.SubsIDList parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.SubsResponse parseFrom(
+    public static monitoring.Monitoring.SubsIDList parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubsResponse parseFrom(
+    public static monitoring.Monitoring.SubsIDList parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.SubsResponse parseFrom(
+    public static monitoring.Monitoring.SubsIDList parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubsResponse parseFrom(byte[] data)
+    public static monitoring.Monitoring.SubsIDList parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.SubsResponse parseFrom(
+    public static monitoring.Monitoring.SubsIDList parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubsResponse parseFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.SubsIDList parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.SubsResponse parseFrom(
+    public static monitoring.Monitoring.SubsIDList parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubsResponse parseDelimitedFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.SubsIDList parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.SubsResponse parseDelimitedFrom(
+    public static monitoring.Monitoring.SubsIDList parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubsResponse parseFrom(
+    public static monitoring.Monitoring.SubsIDList parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.SubsResponse parseFrom(
+    public static monitoring.Monitoring.SubsIDList parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -14747,7 +13475,7 @@ public final class Monitoring {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(monitoring.Monitoring.SubsResponse prototype) {
+    public static Builder newBuilder(monitoring.Monitoring.SubsIDList prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -14763,26 +13491,26 @@ public final class Monitoring {
       return builder;
     }
     /**
-     * Protobuf type {@code monitoring.SubsResponse}
+     * Protobuf type {@code monitoring.SubsIDList}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.SubsResponse)
-        monitoring.Monitoring.SubsResponseOrBuilder {
+        // @@protoc_insertion_point(builder_implements:monitoring.SubsIDList)
+        monitoring.Monitoring.SubsIDListOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsResponse_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_SubsIDList_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsResponse_fieldAccessorTable
+        return monitoring.Monitoring.internal_static_monitoring_SubsIDList_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.SubsResponse.class, monitoring.Monitoring.SubsResponse.Builder.class);
+                monitoring.Monitoring.SubsIDList.class, monitoring.Monitoring.SubsIDList.Builder.class);
       }
 
-      // Construct using monitoring.Monitoring.SubsResponse.newBuilder()
+      // Construct using monitoring.Monitoring.SubsIDList.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -14795,23 +13523,17 @@ public final class Monitoring {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getKpiListFieldBuilder();
+          getSubsListFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (subsIdBuilder_ == null) {
-          subsId_ = null;
-        } else {
-          subsId_ = null;
-          subsIdBuilder_ = null;
-        }
-        if (kpiListBuilder_ == null) {
-          kpiList_ = java.util.Collections.emptyList();
+        if (subsListBuilder_ == null) {
+          subsList_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000001);
         } else {
-          kpiListBuilder_.clear();
+          subsListBuilder_.clear();
         }
         return this;
       }
@@ -14819,40 +13541,35 @@ public final class Monitoring {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsResponse_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_SubsIDList_descriptor;
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.SubsResponse getDefaultInstanceForType() {
-        return monitoring.Monitoring.SubsResponse.getDefaultInstance();
+      public monitoring.Monitoring.SubsIDList getDefaultInstanceForType() {
+        return monitoring.Monitoring.SubsIDList.getDefaultInstance();
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.SubsResponse build() {
-        monitoring.Monitoring.SubsResponse result = buildPartial();
+      public monitoring.Monitoring.SubsIDList build() {
+        monitoring.Monitoring.SubsIDList result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
         return result;
       }
 
-      @java.lang.Override
-      public monitoring.Monitoring.SubsResponse buildPartial() {
-        monitoring.Monitoring.SubsResponse result = new monitoring.Monitoring.SubsResponse(this);
-        int from_bitField0_ = bitField0_;
-        if (subsIdBuilder_ == null) {
-          result.subsId_ = subsId_;
-        } else {
-          result.subsId_ = subsIdBuilder_.build();
-        }
-        if (kpiListBuilder_ == null) {
+      @java.lang.Override
+      public monitoring.Monitoring.SubsIDList buildPartial() {
+        monitoring.Monitoring.SubsIDList result = new monitoring.Monitoring.SubsIDList(this);
+        int from_bitField0_ = bitField0_;
+        if (subsListBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
-            kpiList_ = java.util.Collections.unmodifiableList(kpiList_);
+            subsList_ = java.util.Collections.unmodifiableList(subsList_);
             bitField0_ = (bitField0_ & ~0x00000001);
           }
-          result.kpiList_ = kpiList_;
+          result.subsList_ = subsList_;
         } else {
-          result.kpiList_ = kpiListBuilder_.build();
+          result.subsList_ = subsListBuilder_.build();
         }
         onBuilt();
         return result;
@@ -14892,42 +13609,39 @@ public final class Monitoring {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.SubsResponse) {
-          return mergeFrom((monitoring.Monitoring.SubsResponse)other);
+        if (other instanceof monitoring.Monitoring.SubsIDList) {
+          return mergeFrom((monitoring.Monitoring.SubsIDList)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(monitoring.Monitoring.SubsResponse other) {
-        if (other == monitoring.Monitoring.SubsResponse.getDefaultInstance()) return this;
-        if (other.hasSubsId()) {
-          mergeSubsId(other.getSubsId());
-        }
-        if (kpiListBuilder_ == null) {
-          if (!other.kpiList_.isEmpty()) {
-            if (kpiList_.isEmpty()) {
-              kpiList_ = other.kpiList_;
+      public Builder mergeFrom(monitoring.Monitoring.SubsIDList other) {
+        if (other == monitoring.Monitoring.SubsIDList.getDefaultInstance()) return this;
+        if (subsListBuilder_ == null) {
+          if (!other.subsList_.isEmpty()) {
+            if (subsList_.isEmpty()) {
+              subsList_ = other.subsList_;
               bitField0_ = (bitField0_ & ~0x00000001);
             } else {
-              ensureKpiListIsMutable();
-              kpiList_.addAll(other.kpiList_);
+              ensureSubsListIsMutable();
+              subsList_.addAll(other.subsList_);
             }
             onChanged();
           }
         } else {
-          if (!other.kpiList_.isEmpty()) {
-            if (kpiListBuilder_.isEmpty()) {
-              kpiListBuilder_.dispose();
-              kpiListBuilder_ = null;
-              kpiList_ = other.kpiList_;
+          if (!other.subsList_.isEmpty()) {
+            if (subsListBuilder_.isEmpty()) {
+              subsListBuilder_.dispose();
+              subsListBuilder_ = null;
+              subsList_ = other.subsList_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              kpiListBuilder_ = 
+              subsListBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getKpiListFieldBuilder() : null;
+                   getSubsListFieldBuilder() : null;
             } else {
-              kpiListBuilder_.addAllMessages(other.kpiList_);
+              subsListBuilder_.addAllMessages(other.subsList_);
             }
           }
         }
@@ -14946,11 +13660,11 @@ public final class Monitoring {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        monitoring.Monitoring.SubsResponse parsedMessage = null;
+        monitoring.Monitoring.SubsIDList parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.SubsResponse) e.getUnfinishedMessage();
+          parsedMessage = (monitoring.Monitoring.SubsIDList) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -14961,363 +13675,244 @@ public final class Monitoring {
       }
       private int bitField0_;
 
-      private monitoring.Monitoring.SubscriptionID subsId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> subsIdBuilder_;
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       * @return Whether the subsId field is set.
-       */
-      public boolean hasSubsId() {
-        return subsIdBuilder_ != null || subsId_ != null;
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       * @return The subsId.
-       */
-      public monitoring.Monitoring.SubscriptionID getSubsId() {
-        if (subsIdBuilder_ == null) {
-          return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
-        } else {
-          return subsIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public Builder setSubsId(monitoring.Monitoring.SubscriptionID value) {
-        if (subsIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          subsId_ = value;
-          onChanged();
-        } else {
-          subsIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public Builder setSubsId(
-          monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
-        if (subsIdBuilder_ == null) {
-          subsId_ = builderForValue.build();
-          onChanged();
-        } else {
-          subsIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public Builder mergeSubsId(monitoring.Monitoring.SubscriptionID value) {
-        if (subsIdBuilder_ == null) {
-          if (subsId_ != null) {
-            subsId_ =
-              monitoring.Monitoring.SubscriptionID.newBuilder(subsId_).mergeFrom(value).buildPartial();
-          } else {
-            subsId_ = value;
-          }
-          onChanged();
-        } else {
-          subsIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public Builder clearSubsId() {
-        if (subsIdBuilder_ == null) {
-          subsId_ = null;
-          onChanged();
-        } else {
-          subsId_ = null;
-          subsIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public monitoring.Monitoring.SubscriptionID.Builder getSubsIdBuilder() {
-        
-        onChanged();
-        return getSubsIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
-        if (subsIdBuilder_ != null) {
-          return subsIdBuilder_.getMessageOrBuilder();
-        } else {
-          return subsId_ == null ?
-              monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
-        }
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> 
-          getSubsIdFieldBuilder() {
-        if (subsIdBuilder_ == null) {
-          subsIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder>(
-                  getSubsId(),
-                  getParentForChildren(),
-                  isClean());
-          subsId_ = null;
-        }
-        return subsIdBuilder_;
-      }
-
-      private java.util.List<monitoring.Monitoring.KpiList> kpiList_ =
+      private java.util.List<monitoring.Monitoring.SubscriptionID> subsList_ =
         java.util.Collections.emptyList();
-      private void ensureKpiListIsMutable() {
+      private void ensureSubsListIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          kpiList_ = new java.util.ArrayList<monitoring.Monitoring.KpiList>(kpiList_);
+          subsList_ = new java.util.ArrayList<monitoring.Monitoring.SubscriptionID>(subsList_);
           bitField0_ |= 0x00000001;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder> kpiListBuilder_;
+          monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> subsListBuilder_;
 
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
        */
-      public java.util.List<monitoring.Monitoring.KpiList> getKpiListList() {
-        if (kpiListBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(kpiList_);
+      public java.util.List<monitoring.Monitoring.SubscriptionID> getSubsListList() {
+        if (subsListBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(subsList_);
         } else {
-          return kpiListBuilder_.getMessageList();
+          return subsListBuilder_.getMessageList();
         }
       }
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
        */
-      public int getKpiListCount() {
-        if (kpiListBuilder_ == null) {
-          return kpiList_.size();
+      public int getSubsListCount() {
+        if (subsListBuilder_ == null) {
+          return subsList_.size();
         } else {
-          return kpiListBuilder_.getCount();
+          return subsListBuilder_.getCount();
         }
       }
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
        */
-      public monitoring.Monitoring.KpiList getKpiList(int index) {
-        if (kpiListBuilder_ == null) {
-          return kpiList_.get(index);
+      public monitoring.Monitoring.SubscriptionID getSubsList(int index) {
+        if (subsListBuilder_ == null) {
+          return subsList_.get(index);
         } else {
-          return kpiListBuilder_.getMessage(index);
+          return subsListBuilder_.getMessage(index);
         }
       }
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
        */
-      public Builder setKpiList(
-          int index, monitoring.Monitoring.KpiList value) {
-        if (kpiListBuilder_ == null) {
+      public Builder setSubsList(
+          int index, monitoring.Monitoring.SubscriptionID value) {
+        if (subsListBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureKpiListIsMutable();
-          kpiList_.set(index, value);
+          ensureSubsListIsMutable();
+          subsList_.set(index, value);
           onChanged();
         } else {
-          kpiListBuilder_.setMessage(index, value);
+          subsListBuilder_.setMessage(index, value);
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
        */
-      public Builder setKpiList(
-          int index, monitoring.Monitoring.KpiList.Builder builderForValue) {
-        if (kpiListBuilder_ == null) {
-          ensureKpiListIsMutable();
-          kpiList_.set(index, builderForValue.build());
+      public Builder setSubsList(
+          int index, monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
+        if (subsListBuilder_ == null) {
+          ensureSubsListIsMutable();
+          subsList_.set(index, builderForValue.build());
           onChanged();
         } else {
-          kpiListBuilder_.setMessage(index, builderForValue.build());
+          subsListBuilder_.setMessage(index, builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
        */
-      public Builder addKpiList(monitoring.Monitoring.KpiList value) {
-        if (kpiListBuilder_ == null) {
+      public Builder addSubsList(monitoring.Monitoring.SubscriptionID value) {
+        if (subsListBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureKpiListIsMutable();
-          kpiList_.add(value);
+          ensureSubsListIsMutable();
+          subsList_.add(value);
           onChanged();
         } else {
-          kpiListBuilder_.addMessage(value);
+          subsListBuilder_.addMessage(value);
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
-       */
-      public Builder addKpiList(
-          int index, monitoring.Monitoring.KpiList value) {
-        if (kpiListBuilder_ == null) {
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
+       */
+      public Builder addSubsList(
+          int index, monitoring.Monitoring.SubscriptionID value) {
+        if (subsListBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureKpiListIsMutable();
-          kpiList_.add(index, value);
+          ensureSubsListIsMutable();
+          subsList_.add(index, value);
           onChanged();
         } else {
-          kpiListBuilder_.addMessage(index, value);
+          subsListBuilder_.addMessage(index, value);
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
        */
-      public Builder addKpiList(
-          monitoring.Monitoring.KpiList.Builder builderForValue) {
-        if (kpiListBuilder_ == null) {
-          ensureKpiListIsMutable();
-          kpiList_.add(builderForValue.build());
+      public Builder addSubsList(
+          monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
+        if (subsListBuilder_ == null) {
+          ensureSubsListIsMutable();
+          subsList_.add(builderForValue.build());
           onChanged();
         } else {
-          kpiListBuilder_.addMessage(builderForValue.build());
+          subsListBuilder_.addMessage(builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
        */
-      public Builder addKpiList(
-          int index, monitoring.Monitoring.KpiList.Builder builderForValue) {
-        if (kpiListBuilder_ == null) {
-          ensureKpiListIsMutable();
-          kpiList_.add(index, builderForValue.build());
+      public Builder addSubsList(
+          int index, monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
+        if (subsListBuilder_ == null) {
+          ensureSubsListIsMutable();
+          subsList_.add(index, builderForValue.build());
           onChanged();
         } else {
-          kpiListBuilder_.addMessage(index, builderForValue.build());
+          subsListBuilder_.addMessage(index, builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
        */
-      public Builder addAllKpiList(
-          java.lang.Iterable<? extends monitoring.Monitoring.KpiList> values) {
-        if (kpiListBuilder_ == null) {
-          ensureKpiListIsMutable();
+      public Builder addAllSubsList(
+          java.lang.Iterable<? extends monitoring.Monitoring.SubscriptionID> values) {
+        if (subsListBuilder_ == null) {
+          ensureSubsListIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, kpiList_);
+              values, subsList_);
           onChanged();
         } else {
-          kpiListBuilder_.addAllMessages(values);
+          subsListBuilder_.addAllMessages(values);
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
        */
-      public Builder clearKpiList() {
-        if (kpiListBuilder_ == null) {
-          kpiList_ = java.util.Collections.emptyList();
+      public Builder clearSubsList() {
+        if (subsListBuilder_ == null) {
+          subsList_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000001);
           onChanged();
         } else {
-          kpiListBuilder_.clear();
+          subsListBuilder_.clear();
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
        */
-      public Builder removeKpiList(int index) {
-        if (kpiListBuilder_ == null) {
-          ensureKpiListIsMutable();
-          kpiList_.remove(index);
+      public Builder removeSubsList(int index) {
+        if (subsListBuilder_ == null) {
+          ensureSubsListIsMutable();
+          subsList_.remove(index);
           onChanged();
         } else {
-          kpiListBuilder_.remove(index);
+          subsListBuilder_.remove(index);
         }
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
        */
-      public monitoring.Monitoring.KpiList.Builder getKpiListBuilder(
+      public monitoring.Monitoring.SubscriptionID.Builder getSubsListBuilder(
           int index) {
-        return getKpiListFieldBuilder().getBuilder(index);
+        return getSubsListFieldBuilder().getBuilder(index);
       }
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
        */
-      public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder(
+      public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsListOrBuilder(
           int index) {
-        if (kpiListBuilder_ == null) {
-          return kpiList_.get(index);  } else {
-          return kpiListBuilder_.getMessageOrBuilder(index);
+        if (subsListBuilder_ == null) {
+          return subsList_.get(index);  } else {
+          return subsListBuilder_.getMessageOrBuilder(index);
         }
       }
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
        */
-      public java.util.List<? extends monitoring.Monitoring.KpiListOrBuilder> 
-           getKpiListOrBuilderList() {
-        if (kpiListBuilder_ != null) {
-          return kpiListBuilder_.getMessageOrBuilderList();
+      public java.util.List<? extends monitoring.Monitoring.SubscriptionIDOrBuilder> 
+           getSubsListOrBuilderList() {
+        if (subsListBuilder_ != null) {
+          return subsListBuilder_.getMessageOrBuilderList();
         } else {
-          return java.util.Collections.unmodifiableList(kpiList_);
+          return java.util.Collections.unmodifiableList(subsList_);
         }
       }
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
        */
-      public monitoring.Monitoring.KpiList.Builder addKpiListBuilder() {
-        return getKpiListFieldBuilder().addBuilder(
-            monitoring.Monitoring.KpiList.getDefaultInstance());
+      public monitoring.Monitoring.SubscriptionID.Builder addSubsListBuilder() {
+        return getSubsListFieldBuilder().addBuilder(
+            monitoring.Monitoring.SubscriptionID.getDefaultInstance());
       }
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
        */
-      public monitoring.Monitoring.KpiList.Builder addKpiListBuilder(
+      public monitoring.Monitoring.SubscriptionID.Builder addSubsListBuilder(
           int index) {
-        return getKpiListFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.KpiList.getDefaultInstance());
+        return getSubsListFieldBuilder().addBuilder(
+            index, monitoring.Monitoring.SubscriptionID.getDefaultInstance());
       }
       /**
-       * <code>repeated .monitoring.KpiList kpi_list = 2;</code>
+       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
        */
-      public java.util.List<monitoring.Monitoring.KpiList.Builder> 
-           getKpiListBuilderList() {
-        return getKpiListFieldBuilder().getBuilderList();
+      public java.util.List<monitoring.Monitoring.SubscriptionID.Builder> 
+           getSubsListBuilderList() {
+        return getSubsListFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder> 
-          getKpiListFieldBuilder() {
-        if (kpiListBuilder_ == null) {
-          kpiListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder>(
-                  kpiList_,
+          monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> 
+          getSubsListFieldBuilder() {
+        if (subsListBuilder_ == null) {
+          subsListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder>(
+                  subsList_,
                   ((bitField0_ & 0x00000001) != 0),
                   getParentForChildren(),
                   isClean());
-          kpiList_ = null;
+          subsList_ = null;
         }
-        return kpiListBuilder_;
+        return subsListBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -15332,95 +13927,176 @@ public final class Monitoring {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:monitoring.SubsResponse)
+      // @@protoc_insertion_point(builder_scope:monitoring.SubsIDList)
     }
 
-    // @@protoc_insertion_point(class_scope:monitoring.SubsResponse)
-    private static final monitoring.Monitoring.SubsResponse DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:monitoring.SubsIDList)
+    private static final monitoring.Monitoring.SubsIDList DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.SubsResponse();
+      DEFAULT_INSTANCE = new monitoring.Monitoring.SubsIDList();
     }
 
-    public static monitoring.Monitoring.SubsResponse getDefaultInstance() {
+    public static monitoring.Monitoring.SubsIDList getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<SubsResponse>
-        PARSER = new com.google.protobuf.AbstractParser<SubsResponse>() {
+    private static final com.google.protobuf.Parser<SubsIDList>
+        PARSER = new com.google.protobuf.AbstractParser<SubsIDList>() {
       @java.lang.Override
-      public SubsResponse parsePartialFrom(
+      public SubsIDList parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SubsResponse(input, extensionRegistry);
+        return new SubsIDList(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<SubsResponse> parser() {
+    public static com.google.protobuf.Parser<SubsIDList> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<SubsResponse> getParserForType() {
+    public com.google.protobuf.Parser<SubsIDList> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public monitoring.Monitoring.SubsResponse getDefaultInstanceForType() {
+    public monitoring.Monitoring.SubsIDList getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface SubsIDListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.SubsIDList)
+  public interface AlarmDescriptorOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:monitoring.AlarmDescriptor)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
+     * <code>.monitoring.AlarmID alarm_id = 1;</code>
+     * @return Whether the alarmId field is set.
      */
-    java.util.List<monitoring.Monitoring.SubscriptionID> 
-        getSubsListList();
+    boolean hasAlarmId();
     /**
-     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
+     * <code>.monitoring.AlarmID alarm_id = 1;</code>
+     * @return The alarmId.
      */
-    monitoring.Monitoring.SubscriptionID getSubsList(int index);
+    monitoring.Monitoring.AlarmID getAlarmId();
     /**
-     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
+     * <code>.monitoring.AlarmID alarm_id = 1;</code>
      */
-    int getSubsListCount();
+    monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder();
+
     /**
-     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
+     * <code>string alarm_description = 2;</code>
+     * @return The alarmDescription.
      */
-    java.util.List<? extends monitoring.Monitoring.SubscriptionIDOrBuilder> 
-        getSubsListOrBuilderList();
+    java.lang.String getAlarmDescription();
     /**
-     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
+     * <code>string alarm_description = 2;</code>
+     * @return The bytes for alarmDescription.
      */
-    monitoring.Monitoring.SubscriptionIDOrBuilder getSubsListOrBuilder(
+    com.google.protobuf.ByteString
+        getAlarmDescriptionBytes();
+
+    /**
+     * <code>string name = 3;</code>
+     * @return The name.
+     */
+    java.lang.String getName();
+    /**
+     * <code>string name = 3;</code>
+     * @return The bytes for name.
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+     */
+    java.util.List<monitoring.Monitoring.KpiId> 
+        getKpiIdList();
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+     */
+    monitoring.Monitoring.KpiId getKpiId(int index);
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+     */
+    int getKpiIdCount();
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+     */
+    java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
+        getKpiIdOrBuilderList();
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+     */
+    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder(
+        int index);
+
+    /**
+     * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+     */
+    java.util.List<monitoring.Monitoring.KpiValueRange> 
+        getKpiValueRangeList();
+    /**
+     * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+     */
+    monitoring.Monitoring.KpiValueRange getKpiValueRange(int index);
+    /**
+     * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+     */
+    int getKpiValueRangeCount();
+    /**
+     * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+     */
+    java.util.List<? extends monitoring.Monitoring.KpiValueRangeOrBuilder> 
+        getKpiValueRangeOrBuilderList();
+    /**
+     * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+     */
+    monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder(
         int index);
+
+    /**
+     * <code>.context.Timestamp timestamp = 6;</code>
+     * @return Whether the timestamp field is set.
+     */
+    boolean hasTimestamp();
+    /**
+     * <code>.context.Timestamp timestamp = 6;</code>
+     * @return The timestamp.
+     */
+    context.ContextOuterClass.Timestamp getTimestamp();
+    /**
+     * <code>.context.Timestamp timestamp = 6;</code>
+     */
+    context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
   }
   /**
-   * Protobuf type {@code monitoring.SubsIDList}
+   * Protobuf type {@code monitoring.AlarmDescriptor}
    */
-  public static final class SubsIDList extends
+  public static final class AlarmDescriptor extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.SubsIDList)
-      SubsIDListOrBuilder {
+      // @@protoc_insertion_point(message_implements:monitoring.AlarmDescriptor)
+      AlarmDescriptorOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use SubsIDList.newBuilder() to construct.
-    private SubsIDList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use AlarmDescriptor.newBuilder() to construct.
+    private AlarmDescriptor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private SubsIDList() {
-      subsList_ = java.util.Collections.emptyList();
+    private AlarmDescriptor() {
+      alarmDescription_ = "";
+      name_ = "";
+      kpiId_ = java.util.Collections.emptyList();
+      kpiValueRange_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new SubsIDList();
+      return new AlarmDescriptor();
     }
 
     @java.lang.Override
@@ -15428,7 +14104,7 @@ public final class Monitoring {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private SubsIDList(
+    private AlarmDescriptor(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -15448,12 +14124,59 @@ public final class Monitoring {
               done = true;
               break;
             case 10: {
+              monitoring.Monitoring.AlarmID.Builder subBuilder = null;
+              if (alarmId_ != null) {
+                subBuilder = alarmId_.toBuilder();
+              }
+              alarmId_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(alarmId_);
+                alarmId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 18: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              alarmDescription_ = s;
+              break;
+            }
+            case 26: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              name_ = s;
+              break;
+            }
+            case 34: {
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                subsList_ = new java.util.ArrayList<monitoring.Monitoring.SubscriptionID>();
+                kpiId_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>();
                 mutable_bitField0_ |= 0x00000001;
               }
-              subsList_.add(
-                  input.readMessage(monitoring.Monitoring.SubscriptionID.parser(), extensionRegistry));
+              kpiId_.add(
+                  input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry));
+              break;
+            }
+            case 42: {
+              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                kpiValueRange_ = new java.util.ArrayList<monitoring.Monitoring.KpiValueRange>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              kpiValueRange_.add(
+                  input.readMessage(monitoring.Monitoring.KpiValueRange.parser(), extensionRegistry));
+              break;
+            }
+            case 50: {
+              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+              if (timestamp_ != null) {
+                subBuilder = timestamp_.toBuilder();
+              }
+              timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(timestamp_);
+                timestamp_ = subBuilder.buildPartial();
+              }
+
               break;
             }
             default: {
@@ -15472,7 +14195,10 @@ public final class Monitoring {
             e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          subsList_ = java.util.Collections.unmodifiableList(subsList_);
+          kpiId_ = java.util.Collections.unmodifiableList(kpiId_);
+        }
+        if (((mutable_bitField0_ & 0x00000002) != 0)) {
+          kpiValueRange_ = java.util.Collections.unmodifiableList(kpiValueRange_);
         }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -15480,55 +14206,223 @@ public final class Monitoring {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_SubsIDList_descriptor;
+      return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_SubsIDList_fieldAccessorTable
+      return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.SubsIDList.class, monitoring.Monitoring.SubsIDList.Builder.class);
+              monitoring.Monitoring.AlarmDescriptor.class, monitoring.Monitoring.AlarmDescriptor.Builder.class);
     }
 
-    public static final int SUBS_LIST_FIELD_NUMBER = 1;
-    private java.util.List<monitoring.Monitoring.SubscriptionID> subsList_;
+    public static final int ALARM_ID_FIELD_NUMBER = 1;
+    private monitoring.Monitoring.AlarmID alarmId_;
     /**
-     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
+     * <code>.monitoring.AlarmID alarm_id = 1;</code>
+     * @return Whether the alarmId field is set.
      */
     @java.lang.Override
-    public java.util.List<monitoring.Monitoring.SubscriptionID> getSubsListList() {
-      return subsList_;
+    public boolean hasAlarmId() {
+      return alarmId_ != null;
     }
     /**
-     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
+     * <code>.monitoring.AlarmID alarm_id = 1;</code>
+     * @return The alarmId.
      */
     @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.SubscriptionIDOrBuilder> 
-        getSubsListOrBuilderList() {
-      return subsList_;
+    public monitoring.Monitoring.AlarmID getAlarmId() {
+      return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
     }
     /**
-     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
+     * <code>.monitoring.AlarmID alarm_id = 1;</code>
      */
     @java.lang.Override
-    public int getSubsListCount() {
-      return subsList_.size();
+    public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
+      return getAlarmId();
     }
+
+    public static final int ALARM_DESCRIPTION_FIELD_NUMBER = 2;
+    private volatile java.lang.Object alarmDescription_;
     /**
-     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
+     * <code>string alarm_description = 2;</code>
+     * @return The alarmDescription.
      */
     @java.lang.Override
-    public monitoring.Monitoring.SubscriptionID getSubsList(int index) {
-      return subsList_.get(index);
+    public java.lang.String getAlarmDescription() {
+      java.lang.Object ref = alarmDescription_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        alarmDescription_ = s;
+        return s;
+      }
     }
     /**
-     * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
+     * <code>string alarm_description = 2;</code>
+     * @return The bytes for alarmDescription.
      */
     @java.lang.Override
-    public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsListOrBuilder(
+    public com.google.protobuf.ByteString
+        getAlarmDescriptionBytes() {
+      java.lang.Object ref = alarmDescription_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        alarmDescription_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int NAME_FIELD_NUMBER = 3;
+    private volatile java.lang.Object name_;
+    /**
+     * <code>string name = 3;</code>
+     * @return The name.
+     */
+    @java.lang.Override
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        name_ = s;
+        return s;
+      }
+    }
+    /**
+     * <code>string name = 3;</code>
+     * @return The bytes for name.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int KPI_ID_FIELD_NUMBER = 4;
+    private java.util.List<monitoring.Monitoring.KpiId> kpiId_;
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+     */
+    @java.lang.Override
+    public java.util.List<monitoring.Monitoring.KpiId> getKpiIdList() {
+      return kpiId_;
+    }
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+     */
+    @java.lang.Override
+    public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
+        getKpiIdOrBuilderList() {
+      return kpiId_;
+    }
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+     */
+    @java.lang.Override
+    public int getKpiIdCount() {
+      return kpiId_.size();
+    }
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+     */
+    @java.lang.Override
+    public monitoring.Monitoring.KpiId getKpiId(int index) {
+      return kpiId_.get(index);
+    }
+    /**
+     * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+     */
+    @java.lang.Override
+    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder(
         int index) {
-      return subsList_.get(index);
+      return kpiId_.get(index);
+    }
+
+    public static final int KPI_VALUE_RANGE_FIELD_NUMBER = 5;
+    private java.util.List<monitoring.Monitoring.KpiValueRange> kpiValueRange_;
+    /**
+     * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+     */
+    @java.lang.Override
+    public java.util.List<monitoring.Monitoring.KpiValueRange> getKpiValueRangeList() {
+      return kpiValueRange_;
+    }
+    /**
+     * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+     */
+    @java.lang.Override
+    public java.util.List<? extends monitoring.Monitoring.KpiValueRangeOrBuilder> 
+        getKpiValueRangeOrBuilderList() {
+      return kpiValueRange_;
+    }
+    /**
+     * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+     */
+    @java.lang.Override
+    public int getKpiValueRangeCount() {
+      return kpiValueRange_.size();
+    }
+    /**
+     * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+     */
+    @java.lang.Override
+    public monitoring.Monitoring.KpiValueRange getKpiValueRange(int index) {
+      return kpiValueRange_.get(index);
+    }
+    /**
+     * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+     */
+    @java.lang.Override
+    public monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder(
+        int index) {
+      return kpiValueRange_.get(index);
+    }
+
+    public static final int TIMESTAMP_FIELD_NUMBER = 6;
+    private context.ContextOuterClass.Timestamp timestamp_;
+    /**
+     * <code>.context.Timestamp timestamp = 6;</code>
+     * @return Whether the timestamp field is set.
+     */
+    @java.lang.Override
+    public boolean hasTimestamp() {
+      return timestamp_ != null;
+    }
+    /**
+     * <code>.context.Timestamp timestamp = 6;</code>
+     * @return The timestamp.
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.Timestamp getTimestamp() {
+      return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+    }
+    /**
+     * <code>.context.Timestamp timestamp = 6;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+      return getTimestamp();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -15545,21 +14439,54 @@ public final class Monitoring {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      for (int i = 0; i < subsList_.size(); i++) {
-        output.writeMessage(1, subsList_.get(i));
+      if (alarmId_ != null) {
+        output.writeMessage(1, getAlarmId());
+      }
+      if (!getAlarmDescriptionBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, alarmDescription_);
+      }
+      if (!getNameBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_);
+      }
+      for (int i = 0; i < kpiId_.size(); i++) {
+        output.writeMessage(4, kpiId_.get(i));
+      }
+      for (int i = 0; i < kpiValueRange_.size(); i++) {
+        output.writeMessage(5, kpiValueRange_.get(i));
+      }
+      if (timestamp_ != null) {
+        output.writeMessage(6, getTimestamp());
+      }
+      unknownFields.writeTo(output);
+    }
+
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (alarmId_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, getAlarmId());
+      }
+      if (!getAlarmDescriptionBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, alarmDescription_);
+      }
+      if (!getNameBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_);
+      }
+      for (int i = 0; i < kpiId_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, kpiId_.get(i));
       }
-      unknownFields.writeTo(output);
-    }
-
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < subsList_.size(); i++) {
+      for (int i = 0; i < kpiValueRange_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, subsList_.get(i));
+          .computeMessageSize(5, kpiValueRange_.get(i));
+      }
+      if (timestamp_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, getTimestamp());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -15571,13 +14498,29 @@ public final class Monitoring {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof monitoring.Monitoring.SubsIDList)) {
+      if (!(obj instanceof monitoring.Monitoring.AlarmDescriptor)) {
         return super.equals(obj);
       }
-      monitoring.Monitoring.SubsIDList other = (monitoring.Monitoring.SubsIDList) obj;
+      monitoring.Monitoring.AlarmDescriptor other = (monitoring.Monitoring.AlarmDescriptor) obj;
 
-      if (!getSubsListList()
-          .equals(other.getSubsListList())) return false;
+      if (hasAlarmId() != other.hasAlarmId()) return false;
+      if (hasAlarmId()) {
+        if (!getAlarmId()
+            .equals(other.getAlarmId())) return false;
+      }
+      if (!getAlarmDescription()
+          .equals(other.getAlarmDescription())) return false;
+      if (!getName()
+          .equals(other.getName())) return false;
+      if (!getKpiIdList()
+          .equals(other.getKpiIdList())) return false;
+      if (!getKpiValueRangeList()
+          .equals(other.getKpiValueRangeList())) return false;
+      if (hasTimestamp() != other.hasTimestamp()) return false;
+      if (hasTimestamp()) {
+        if (!getTimestamp()
+            .equals(other.getTimestamp())) return false;
+      }
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -15589,78 +14532,94 @@ public final class Monitoring {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (getSubsListCount() > 0) {
-        hash = (37 * hash) + SUBS_LIST_FIELD_NUMBER;
-        hash = (53 * hash) + getSubsListList().hashCode();
+      if (hasAlarmId()) {
+        hash = (37 * hash) + ALARM_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getAlarmId().hashCode();
+      }
+      hash = (37 * hash) + ALARM_DESCRIPTION_FIELD_NUMBER;
+      hash = (53 * hash) + getAlarmDescription().hashCode();
+      hash = (37 * hash) + NAME_FIELD_NUMBER;
+      hash = (53 * hash) + getName().hashCode();
+      if (getKpiIdCount() > 0) {
+        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getKpiIdList().hashCode();
+      }
+      if (getKpiValueRangeCount() > 0) {
+        hash = (37 * hash) + KPI_VALUE_RANGE_FIELD_NUMBER;
+        hash = (53 * hash) + getKpiValueRangeList().hashCode();
+      }
+      if (hasTimestamp()) {
+        hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
+        hash = (53 * hash) + getTimestamp().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static monitoring.Monitoring.SubsIDList parseFrom(
+    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.SubsIDList parseFrom(
+    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubsIDList parseFrom(
+    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.SubsIDList parseFrom(
+    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubsIDList parseFrom(byte[] data)
+    public static monitoring.Monitoring.AlarmDescriptor parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.SubsIDList parseFrom(
+    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubsIDList parseFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.AlarmDescriptor parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.SubsIDList parseFrom(
+    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubsIDList parseDelimitedFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.AlarmDescriptor parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.SubsIDList parseDelimitedFrom(
+    public static monitoring.Monitoring.AlarmDescriptor parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.SubsIDList parseFrom(
+    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.SubsIDList parseFrom(
+    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -15673,7 +14632,7 @@ public final class Monitoring {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(monitoring.Monitoring.SubsIDList prototype) {
+    public static Builder newBuilder(monitoring.Monitoring.AlarmDescriptor prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -15689,26 +14648,26 @@ public final class Monitoring {
       return builder;
     }
     /**
-     * Protobuf type {@code monitoring.SubsIDList}
+     * Protobuf type {@code monitoring.AlarmDescriptor}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.SubsIDList)
-        monitoring.Monitoring.SubsIDListOrBuilder {
+        // @@protoc_insertion_point(builder_implements:monitoring.AlarmDescriptor)
+        monitoring.Monitoring.AlarmDescriptorOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsIDList_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsIDList_fieldAccessorTable
+        return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.SubsIDList.class, monitoring.Monitoring.SubsIDList.Builder.class);
+                monitoring.Monitoring.AlarmDescriptor.class, monitoring.Monitoring.AlarmDescriptor.Builder.class);
       }
 
-      // Construct using monitoring.Monitoring.SubsIDList.newBuilder()
+      // Construct using monitoring.Monitoring.AlarmDescriptor.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -15721,1670 +14680,1731 @@ public final class Monitoring {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getSubsListFieldBuilder();
+          getKpiIdFieldBuilder();
+          getKpiValueRangeFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (subsListBuilder_ == null) {
-          subsList_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          subsListBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsIDList_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.SubsIDList getDefaultInstanceForType() {
-        return monitoring.Monitoring.SubsIDList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.SubsIDList build() {
-        monitoring.Monitoring.SubsIDList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.SubsIDList buildPartial() {
-        monitoring.Monitoring.SubsIDList result = new monitoring.Monitoring.SubsIDList(this);
-        int from_bitField0_ = bitField0_;
-        if (subsListBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            subsList_ = java.util.Collections.unmodifiableList(subsList_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.subsList_ = subsList_;
-        } else {
-          result.subsList_ = subsListBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.SubsIDList) {
-          return mergeFrom((monitoring.Monitoring.SubsIDList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.SubsIDList other) {
-        if (other == monitoring.Monitoring.SubsIDList.getDefaultInstance()) return this;
-        if (subsListBuilder_ == null) {
-          if (!other.subsList_.isEmpty()) {
-            if (subsList_.isEmpty()) {
-              subsList_ = other.subsList_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureSubsListIsMutable();
-              subsList_.addAll(other.subsList_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.subsList_.isEmpty()) {
-            if (subsListBuilder_.isEmpty()) {
-              subsListBuilder_.dispose();
-              subsListBuilder_ = null;
-              subsList_ = other.subsList_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              subsListBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getSubsListFieldBuilder() : null;
-            } else {
-              subsListBuilder_.addAllMessages(other.subsList_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.SubsIDList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.SubsIDList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<monitoring.Monitoring.SubscriptionID> subsList_ =
-        java.util.Collections.emptyList();
-      private void ensureSubsListIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          subsList_ = new java.util.ArrayList<monitoring.Monitoring.SubscriptionID>(subsList_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> subsListBuilder_;
-
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public java.util.List<monitoring.Monitoring.SubscriptionID> getSubsListList() {
-        if (subsListBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(subsList_);
+        if (alarmIdBuilder_ == null) {
+          alarmId_ = null;
         } else {
-          return subsListBuilder_.getMessageList();
+          alarmId_ = null;
+          alarmIdBuilder_ = null;
         }
-      }
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public int getSubsListCount() {
-        if (subsListBuilder_ == null) {
-          return subsList_.size();
+        alarmDescription_ = "";
+
+        name_ = "";
+
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
         } else {
-          return subsListBuilder_.getCount();
+          kpiIdBuilder_.clear();
         }
-      }
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public monitoring.Monitoring.SubscriptionID getSubsList(int index) {
-        if (subsListBuilder_ == null) {
-          return subsList_.get(index);
+        if (kpiValueRangeBuilder_ == null) {
+          kpiValueRange_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
         } else {
-          return subsListBuilder_.getMessage(index);
+          kpiValueRangeBuilder_.clear();
         }
-      }
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public Builder setSubsList(
-          int index, monitoring.Monitoring.SubscriptionID value) {
-        if (subsListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSubsListIsMutable();
-          subsList_.set(index, value);
-          onChanged();
+        if (timestampBuilder_ == null) {
+          timestamp_ = null;
         } else {
-          subsListBuilder_.setMessage(index, value);
+          timestamp_ = null;
+          timestampBuilder_ = null;
         }
         return this;
       }
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public Builder setSubsList(
-          int index, monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
-        if (subsListBuilder_ == null) {
-          ensureSubsListIsMutable();
-          subsList_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          subsListBuilder_.setMessage(index, builderForValue.build());
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_descriptor;
+      }
+
+      @java.lang.Override
+      public monitoring.Monitoring.AlarmDescriptor getDefaultInstanceForType() {
+        return monitoring.Monitoring.AlarmDescriptor.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public monitoring.Monitoring.AlarmDescriptor build() {
+        monitoring.Monitoring.AlarmDescriptor result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
         }
-        return this;
+        return result;
       }
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public Builder addSubsList(monitoring.Monitoring.SubscriptionID value) {
-        if (subsListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSubsListIsMutable();
-          subsList_.add(value);
-          onChanged();
+
+      @java.lang.Override
+      public monitoring.Monitoring.AlarmDescriptor buildPartial() {
+        monitoring.Monitoring.AlarmDescriptor result = new monitoring.Monitoring.AlarmDescriptor(this);
+        int from_bitField0_ = bitField0_;
+        if (alarmIdBuilder_ == null) {
+          result.alarmId_ = alarmId_;
         } else {
-          subsListBuilder_.addMessage(value);
+          result.alarmId_ = alarmIdBuilder_.build();
         }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public Builder addSubsList(
-          int index, monitoring.Monitoring.SubscriptionID value) {
-        if (subsListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
+        result.alarmDescription_ = alarmDescription_;
+        result.name_ = name_;
+        if (kpiIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            kpiId_ = java.util.Collections.unmodifiableList(kpiId_);
+            bitField0_ = (bitField0_ & ~0x00000001);
           }
-          ensureSubsListIsMutable();
-          subsList_.add(index, value);
-          onChanged();
+          result.kpiId_ = kpiId_;
         } else {
-          subsListBuilder_.addMessage(index, value);
+          result.kpiId_ = kpiIdBuilder_.build();
         }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public Builder addSubsList(
-          monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
-        if (subsListBuilder_ == null) {
-          ensureSubsListIsMutable();
-          subsList_.add(builderForValue.build());
-          onChanged();
+        if (kpiValueRangeBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) != 0)) {
+            kpiValueRange_ = java.util.Collections.unmodifiableList(kpiValueRange_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.kpiValueRange_ = kpiValueRange_;
         } else {
-          subsListBuilder_.addMessage(builderForValue.build());
+          result.kpiValueRange_ = kpiValueRangeBuilder_.build();
         }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public Builder addSubsList(
-          int index, monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
-        if (subsListBuilder_ == null) {
-          ensureSubsListIsMutable();
-          subsList_.add(index, builderForValue.build());
-          onChanged();
+        if (timestampBuilder_ == null) {
+          result.timestamp_ = timestamp_;
         } else {
-          subsListBuilder_.addMessage(index, builderForValue.build());
+          result.timestamp_ = timestampBuilder_.build();
         }
-        return this;
+        onBuilt();
+        return result;
       }
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public Builder addAllSubsList(
-          java.lang.Iterable<? extends monitoring.Monitoring.SubscriptionID> values) {
-        if (subsListBuilder_ == null) {
-          ensureSubsListIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, subsList_);
-          onChanged();
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof monitoring.Monitoring.AlarmDescriptor) {
+          return mergeFrom((monitoring.Monitoring.AlarmDescriptor)other);
         } else {
-          subsListBuilder_.addAllMessages(values);
+          super.mergeFrom(other);
+          return this;
         }
-        return this;
       }
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public Builder clearSubsList() {
-        if (subsListBuilder_ == null) {
-          subsList_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+
+      public Builder mergeFrom(monitoring.Monitoring.AlarmDescriptor other) {
+        if (other == monitoring.Monitoring.AlarmDescriptor.getDefaultInstance()) return this;
+        if (other.hasAlarmId()) {
+          mergeAlarmId(other.getAlarmId());
+        }
+        if (!other.getAlarmDescription().isEmpty()) {
+          alarmDescription_ = other.alarmDescription_;
           onChanged();
-        } else {
-          subsListBuilder_.clear();
         }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public Builder removeSubsList(int index) {
-        if (subsListBuilder_ == null) {
-          ensureSubsListIsMutable();
-          subsList_.remove(index);
+        if (!other.getName().isEmpty()) {
+          name_ = other.name_;
           onChanged();
-        } else {
-          subsListBuilder_.remove(index);
         }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public monitoring.Monitoring.SubscriptionID.Builder getSubsListBuilder(
-          int index) {
-        return getSubsListFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsListOrBuilder(
-          int index) {
-        if (subsListBuilder_ == null) {
-          return subsList_.get(index);  } else {
-          return subsListBuilder_.getMessageOrBuilder(index);
+        if (kpiIdBuilder_ == null) {
+          if (!other.kpiId_.isEmpty()) {
+            if (kpiId_.isEmpty()) {
+              kpiId_ = other.kpiId_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureKpiIdIsMutable();
+              kpiId_.addAll(other.kpiId_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.kpiId_.isEmpty()) {
+            if (kpiIdBuilder_.isEmpty()) {
+              kpiIdBuilder_.dispose();
+              kpiIdBuilder_ = null;
+              kpiId_ = other.kpiId_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              kpiIdBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                   getKpiIdFieldBuilder() : null;
+            } else {
+              kpiIdBuilder_.addAllMessages(other.kpiId_);
+            }
+          }
         }
-      }
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public java.util.List<? extends monitoring.Monitoring.SubscriptionIDOrBuilder> 
-           getSubsListOrBuilderList() {
-        if (subsListBuilder_ != null) {
-          return subsListBuilder_.getMessageOrBuilderList();
+        if (kpiValueRangeBuilder_ == null) {
+          if (!other.kpiValueRange_.isEmpty()) {
+            if (kpiValueRange_.isEmpty()) {
+              kpiValueRange_ = other.kpiValueRange_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureKpiValueRangeIsMutable();
+              kpiValueRange_.addAll(other.kpiValueRange_);
+            }
+            onChanged();
+          }
         } else {
-          return java.util.Collections.unmodifiableList(subsList_);
+          if (!other.kpiValueRange_.isEmpty()) {
+            if (kpiValueRangeBuilder_.isEmpty()) {
+              kpiValueRangeBuilder_.dispose();
+              kpiValueRangeBuilder_ = null;
+              kpiValueRange_ = other.kpiValueRange_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              kpiValueRangeBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                   getKpiValueRangeFieldBuilder() : null;
+            } else {
+              kpiValueRangeBuilder_.addAllMessages(other.kpiValueRange_);
+            }
+          }
         }
-      }
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public monitoring.Monitoring.SubscriptionID.Builder addSubsListBuilder() {
-        return getSubsListFieldBuilder().addBuilder(
-            monitoring.Monitoring.SubscriptionID.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public monitoring.Monitoring.SubscriptionID.Builder addSubsListBuilder(
-          int index) {
-        return getSubsListFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.SubscriptionID.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.SubscriptionID subs_list = 1;</code>
-       */
-      public java.util.List<monitoring.Monitoring.SubscriptionID.Builder> 
-           getSubsListBuilderList() {
-        return getSubsListFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> 
-          getSubsListFieldBuilder() {
-        if (subsListBuilder_ == null) {
-          subsListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder>(
-                  subsList_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          subsList_ = null;
+        if (other.hasTimestamp()) {
+          mergeTimestamp(other.getTimestamp());
         }
-        return subsListBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
       }
 
       @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+      public final boolean isInitialized() {
+        return true;
       }
 
-
-      // @@protoc_insertion_point(builder_scope:monitoring.SubsIDList)
-    }
-
-    // @@protoc_insertion_point(class_scope:monitoring.SubsIDList)
-    private static final monitoring.Monitoring.SubsIDList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.SubsIDList();
-    }
-
-    public static monitoring.Monitoring.SubsIDList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
-
-    private static final com.google.protobuf.Parser<SubsIDList>
-        PARSER = new com.google.protobuf.AbstractParser<SubsIDList>() {
       @java.lang.Override
-      public SubsIDList parsePartialFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SubsIDList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<SubsIDList> parser() {
-      return PARSER;
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<SubsIDList> getParserForType() {
-      return PARSER;
-    }
-
-    @java.lang.Override
-    public monitoring.Monitoring.SubsIDList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
-
-  }
-
-  public interface AlarmDescriptorOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.AlarmDescriptor)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>string alarm_description = 1;</code>
-     * @return The alarmDescription.
-     */
-    java.lang.String getAlarmDescription();
-    /**
-     * <code>string alarm_description = 1;</code>
-     * @return The bytes for alarmDescription.
-     */
-    com.google.protobuf.ByteString
-        getAlarmDescriptionBytes();
-
-    /**
-     * <code>string name = 2;</code>
-     * @return The name.
-     */
-    java.lang.String getName();
-    /**
-     * <code>string name = 2;</code>
-     * @return The bytes for name.
-     */
-    com.google.protobuf.ByteString
-        getNameBytes();
-
-    /**
-     * <code>.monitoring.KpiId kpi_id = 3;</code>
-     * @return Whether the kpiId field is set.
-     */
-    boolean hasKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 3;</code>
-     * @return The kpiId.
-     */
-    monitoring.Monitoring.KpiId getKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 3;</code>
-     */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
-
-    /**
-     * <code>.monitoring.KpiValueRange kpi_value_range = 4;</code>
-     * @return Whether the kpiValueRange field is set.
-     */
-    boolean hasKpiValueRange();
-    /**
-     * <code>.monitoring.KpiValueRange kpi_value_range = 4;</code>
-     * @return The kpiValueRange.
-     */
-    monitoring.Monitoring.KpiValueRange getKpiValueRange();
-    /**
-     * <code>.monitoring.KpiValueRange kpi_value_range = 4;</code>
-     */
-    monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder();
-
-    /**
-     * <code>string timestamp = 5;</code>
-     * @return The timestamp.
-     */
-    java.lang.String getTimestamp();
-    /**
-     * <code>string timestamp = 5;</code>
-     * @return The bytes for timestamp.
-     */
-    com.google.protobuf.ByteString
-        getTimestampBytes();
-  }
-  /**
-   * Protobuf type {@code monitoring.AlarmDescriptor}
-   */
-  public static final class AlarmDescriptor extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.AlarmDescriptor)
-      AlarmDescriptorOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use AlarmDescriptor.newBuilder() to construct.
-    private AlarmDescriptor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private AlarmDescriptor() {
-      alarmDescription_ = "";
-      name_ = "";
-      timestamp_ = "";
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new AlarmDescriptor();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private AlarmDescriptor(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
+          throws java.io.IOException {
+        monitoring.Monitoring.AlarmDescriptor parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (monitoring.Monitoring.AlarmDescriptor) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
       }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              alarmDescription_ = s;
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 26: {
-              monitoring.Monitoring.KpiId.Builder subBuilder = null;
-              if (kpiId_ != null) {
-                subBuilder = kpiId_.toBuilder();
-              }
-              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiId_);
-                kpiId_ = subBuilder.buildPartial();
-              }
+      private int bitField0_;
 
-              break;
-            }
-            case 34: {
-              monitoring.Monitoring.KpiValueRange.Builder subBuilder = null;
-              if (kpiValueRange_ != null) {
-                subBuilder = kpiValueRange_.toBuilder();
-              }
-              kpiValueRange_ = input.readMessage(monitoring.Monitoring.KpiValueRange.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiValueRange_);
-                kpiValueRange_ = subBuilder.buildPartial();
-              }
+      private monitoring.Monitoring.AlarmID alarmId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> alarmIdBuilder_;
+      /**
+       * <code>.monitoring.AlarmID alarm_id = 1;</code>
+       * @return Whether the alarmId field is set.
+       */
+      public boolean hasAlarmId() {
+        return alarmIdBuilder_ != null || alarmId_ != null;
+      }
+      /**
+       * <code>.monitoring.AlarmID alarm_id = 1;</code>
+       * @return The alarmId.
+       */
+      public monitoring.Monitoring.AlarmID getAlarmId() {
+        if (alarmIdBuilder_ == null) {
+          return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+        } else {
+          return alarmIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>.monitoring.AlarmID alarm_id = 1;</code>
+       */
+      public Builder setAlarmId(monitoring.Monitoring.AlarmID value) {
+        if (alarmIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          alarmId_ = value;
+          onChanged();
+        } else {
+          alarmIdBuilder_.setMessage(value);
+        }
 
-              break;
-            }
-            case 42: {
-              java.lang.String s = input.readStringRequireUtf8();
+        return this;
+      }
+      /**
+       * <code>.monitoring.AlarmID alarm_id = 1;</code>
+       */
+      public Builder setAlarmId(
+          monitoring.Monitoring.AlarmID.Builder builderForValue) {
+        if (alarmIdBuilder_ == null) {
+          alarmId_ = builderForValue.build();
+          onChanged();
+        } else {
+          alarmIdBuilder_.setMessage(builderForValue.build());
+        }
 
-              timestamp_ = s;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
+        return this;
+      }
+      /**
+       * <code>.monitoring.AlarmID alarm_id = 1;</code>
+       */
+      public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
+        if (alarmIdBuilder_ == null) {
+          if (alarmId_ != null) {
+            alarmId_ =
+              monitoring.Monitoring.AlarmID.newBuilder(alarmId_).mergeFrom(value).buildPartial();
+          } else {
+            alarmId_ = value;
           }
+          onChanged();
+        } else {
+          alarmIdBuilder_.mergeFrom(value);
         }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
+
+        return this;
       }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_descriptor;
-    }
+      /**
+       * <code>.monitoring.AlarmID alarm_id = 1;</code>
+       */
+      public Builder clearAlarmId() {
+        if (alarmIdBuilder_ == null) {
+          alarmId_ = null;
+          onChanged();
+        } else {
+          alarmId_ = null;
+          alarmIdBuilder_ = null;
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.AlarmDescriptor.class, monitoring.Monitoring.AlarmDescriptor.Builder.class);
-    }
+        return this;
+      }
+      /**
+       * <code>.monitoring.AlarmID alarm_id = 1;</code>
+       */
+      public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
+        
+        onChanged();
+        return getAlarmIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.monitoring.AlarmID alarm_id = 1;</code>
+       */
+      public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
+        if (alarmIdBuilder_ != null) {
+          return alarmIdBuilder_.getMessageOrBuilder();
+        } else {
+          return alarmId_ == null ?
+              monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+        }
+      }
+      /**
+       * <code>.monitoring.AlarmID alarm_id = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> 
+          getAlarmIdFieldBuilder() {
+        if (alarmIdBuilder_ == null) {
+          alarmIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder>(
+                  getAlarmId(),
+                  getParentForChildren(),
+                  isClean());
+          alarmId_ = null;
+        }
+        return alarmIdBuilder_;
+      }
 
-    public static final int ALARM_DESCRIPTION_FIELD_NUMBER = 1;
-    private volatile java.lang.Object alarmDescription_;
-    /**
-     * <code>string alarm_description = 1;</code>
-     * @return The alarmDescription.
-     */
-    @java.lang.Override
-    public java.lang.String getAlarmDescription() {
-      java.lang.Object ref = alarmDescription_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        alarmDescription_ = s;
-        return s;
+      private java.lang.Object alarmDescription_ = "";
+      /**
+       * <code>string alarm_description = 2;</code>
+       * @return The alarmDescription.
+       */
+      public java.lang.String getAlarmDescription() {
+        java.lang.Object ref = alarmDescription_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          alarmDescription_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
       }
-    }
-    /**
-     * <code>string alarm_description = 1;</code>
-     * @return The bytes for alarmDescription.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getAlarmDescriptionBytes() {
-      java.lang.Object ref = alarmDescription_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        alarmDescription_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
+      /**
+       * <code>string alarm_description = 2;</code>
+       * @return The bytes for alarmDescription.
+       */
+      public com.google.protobuf.ByteString
+          getAlarmDescriptionBytes() {
+        java.lang.Object ref = alarmDescription_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          alarmDescription_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>string alarm_description = 2;</code>
+       * @param value The alarmDescription to set.
+       * @return This builder for chaining.
+       */
+      public Builder setAlarmDescription(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        alarmDescription_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>string alarm_description = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearAlarmDescription() {
+        
+        alarmDescription_ = getDefaultInstance().getAlarmDescription();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>string alarm_description = 2;</code>
+       * @param value The bytes for alarmDescription to set.
+       * @return This builder for chaining.
+       */
+      public Builder setAlarmDescriptionBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+        
+        alarmDescription_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object name_ = "";
+      /**
+       * <code>string name = 3;</code>
+       * @return The name.
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
       }
-    }
-
-    public static final int NAME_FIELD_NUMBER = 2;
-    private volatile java.lang.Object name_;
-    /**
-     * <code>string name = 2;</code>
-     * @return The name.
-     */
-    @java.lang.Override
-    public java.lang.String getName() {
-      java.lang.Object ref = name_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        name_ = s;
-        return s;
+      /**
+       * <code>string name = 3;</code>
+       * @return The bytes for name.
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
       }
-    }
-    /**
-     * <code>string name = 2;</code>
-     * @return The bytes for name.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getNameBytes() {
-      java.lang.Object ref = name_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        name_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
+      /**
+       * <code>string name = 3;</code>
+       * @param value The name to set.
+       * @return This builder for chaining.
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        name_ = value;
+        onChanged();
+        return this;
       }
-    }
-
-    public static final int KPI_ID_FIELD_NUMBER = 3;
-    private monitoring.Monitoring.KpiId kpiId_;
-    /**
-     * <code>.monitoring.KpiId kpi_id = 3;</code>
-     * @return Whether the kpiId field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiId() {
-      return kpiId_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 3;</code>
-     * @return The kpiId.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiId() {
-      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 3;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-      return getKpiId();
-    }
-
-    public static final int KPI_VALUE_RANGE_FIELD_NUMBER = 4;
-    private monitoring.Monitoring.KpiValueRange kpiValueRange_;
-    /**
-     * <code>.monitoring.KpiValueRange kpi_value_range = 4;</code>
-     * @return Whether the kpiValueRange field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiValueRange() {
-      return kpiValueRange_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiValueRange kpi_value_range = 4;</code>
-     * @return The kpiValueRange.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiValueRange getKpiValueRange() {
-      return kpiValueRange_ == null ? monitoring.Monitoring.KpiValueRange.getDefaultInstance() : kpiValueRange_;
-    }
-    /**
-     * <code>.monitoring.KpiValueRange kpi_value_range = 4;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder() {
-      return getKpiValueRange();
-    }
-
-    public static final int TIMESTAMP_FIELD_NUMBER = 5;
-    private volatile java.lang.Object timestamp_;
-    /**
-     * <code>string timestamp = 5;</code>
-     * @return The timestamp.
-     */
-    @java.lang.Override
-    public java.lang.String getTimestamp() {
-      java.lang.Object ref = timestamp_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        timestamp_ = s;
-        return s;
+      /**
+       * <code>string name = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearName() {
+        
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
       }
-    }
-    /**
-     * <code>string timestamp = 5;</code>
-     * @return The bytes for timestamp.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getTimestampBytes() {
-      java.lang.Object ref = timestamp_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        timestamp_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
+      /**
+       * <code>string name = 3;</code>
+       * @param value The bytes for name to set.
+       * @return This builder for chaining.
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+        
+        name_ = value;
+        onChanged();
+        return this;
       }
-    }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+      private java.util.List<monitoring.Monitoring.KpiId> kpiId_ =
+        java.util.Collections.emptyList();
+      private void ensureKpiIdIsMutable() {
+        if (!((bitField0_ & 0x00000001) != 0)) {
+          kpiId_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>(kpiId_);
+          bitField0_ |= 0x00000001;
+         }
+      }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (!getAlarmDescriptionBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, alarmDescription_);
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public java.util.List<monitoring.Monitoring.KpiId> getKpiIdList() {
+        if (kpiIdBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(kpiId_);
+        } else {
+          return kpiIdBuilder_.getMessageList();
+        }
       }
-      if (!getNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public int getKpiIdCount() {
+        if (kpiIdBuilder_ == null) {
+          return kpiId_.size();
+        } else {
+          return kpiIdBuilder_.getCount();
+        }
       }
-      if (kpiId_ != null) {
-        output.writeMessage(3, getKpiId());
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public monitoring.Monitoring.KpiId getKpiId(int index) {
+        if (kpiIdBuilder_ == null) {
+          return kpiId_.get(index);
+        } else {
+          return kpiIdBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public Builder setKpiId(
+          int index, monitoring.Monitoring.KpiId value) {
+        if (kpiIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureKpiIdIsMutable();
+          kpiId_.set(index, value);
+          onChanged();
+        } else {
+          kpiIdBuilder_.setMessage(index, value);
+        }
+        return this;
       }
-      if (kpiValueRange_ != null) {
-        output.writeMessage(4, getKpiValueRange());
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public Builder setKpiId(
+          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
+        if (kpiIdBuilder_ == null) {
+          ensureKpiIdIsMutable();
+          kpiId_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          kpiIdBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
       }
-      if (!getTimestampBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, timestamp_);
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public Builder addKpiId(monitoring.Monitoring.KpiId value) {
+        if (kpiIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureKpiIdIsMutable();
+          kpiId_.add(value);
+          onChanged();
+        } else {
+          kpiIdBuilder_.addMessage(value);
+        }
+        return this;
       }
-      unknownFields.writeTo(output);
-    }
-
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (!getAlarmDescriptionBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, alarmDescription_);
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public Builder addKpiId(
+          int index, monitoring.Monitoring.KpiId value) {
+        if (kpiIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureKpiIdIsMutable();
+          kpiId_.add(index, value);
+          onChanged();
+        } else {
+          kpiIdBuilder_.addMessage(index, value);
+        }
+        return this;
       }
-      if (!getNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public Builder addKpiId(
+          monitoring.Monitoring.KpiId.Builder builderForValue) {
+        if (kpiIdBuilder_ == null) {
+          ensureKpiIdIsMutable();
+          kpiId_.add(builderForValue.build());
+          onChanged();
+        } else {
+          kpiIdBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
       }
-      if (kpiId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, getKpiId());
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public Builder addKpiId(
+          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
+        if (kpiIdBuilder_ == null) {
+          ensureKpiIdIsMutable();
+          kpiId_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          kpiIdBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
       }
-      if (kpiValueRange_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, getKpiValueRange());
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public Builder addAllKpiId(
+          java.lang.Iterable<? extends monitoring.Monitoring.KpiId> values) {
+        if (kpiIdBuilder_ == null) {
+          ensureKpiIdIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, kpiId_);
+          onChanged();
+        } else {
+          kpiIdBuilder_.addAllMessages(values);
+        }
+        return this;
       }
-      if (!getTimestampBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, timestamp_);
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public Builder clearKpiId() {
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          kpiIdBuilder_.clear();
+        }
+        return this;
       }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
-
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public Builder removeKpiId(int index) {
+        if (kpiIdBuilder_ == null) {
+          ensureKpiIdIsMutable();
+          kpiId_.remove(index);
+          onChanged();
+        } else {
+          kpiIdBuilder_.remove(index);
+        }
+        return this;
       }
-      if (!(obj instanceof monitoring.Monitoring.AlarmDescriptor)) {
-        return super.equals(obj);
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder(
+          int index) {
+        return getKpiIdFieldBuilder().getBuilder(index);
       }
-      monitoring.Monitoring.AlarmDescriptor other = (monitoring.Monitoring.AlarmDescriptor) obj;
-
-      if (!getAlarmDescription()
-          .equals(other.getAlarmDescription())) return false;
-      if (!getName()
-          .equals(other.getName())) return false;
-      if (hasKpiId() != other.hasKpiId()) return false;
-      if (hasKpiId()) {
-        if (!getKpiId()
-            .equals(other.getKpiId())) return false;
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder(
+          int index) {
+        if (kpiIdBuilder_ == null) {
+          return kpiId_.get(index);  } else {
+          return kpiIdBuilder_.getMessageOrBuilder(index);
+        }
       }
-      if (hasKpiValueRange() != other.hasKpiValueRange()) return false;
-      if (hasKpiValueRange()) {
-        if (!getKpiValueRange()
-            .equals(other.getKpiValueRange())) return false;
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
+           getKpiIdOrBuilderList() {
+        if (kpiIdBuilder_ != null) {
+          return kpiIdBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(kpiId_);
+        }
       }
-      if (!getTimestamp()
-          .equals(other.getTimestamp())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
-
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public monitoring.Monitoring.KpiId.Builder addKpiIdBuilder() {
+        return getKpiIdFieldBuilder().addBuilder(
+            monitoring.Monitoring.KpiId.getDefaultInstance());
       }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + ALARM_DESCRIPTION_FIELD_NUMBER;
-      hash = (53 * hash) + getAlarmDescription().hashCode();
-      hash = (37 * hash) + NAME_FIELD_NUMBER;
-      hash = (53 * hash) + getName().hashCode();
-      if (hasKpiId()) {
-        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiId().hashCode();
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public monitoring.Monitoring.KpiId.Builder addKpiIdBuilder(
+          int index) {
+        return getKpiIdFieldBuilder().addBuilder(
+            index, monitoring.Monitoring.KpiId.getDefaultInstance());
       }
-      if (hasKpiValueRange()) {
-        hash = (37 * hash) + KPI_VALUE_RANGE_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiValueRange().hashCode();
+      /**
+       * <code>repeated .monitoring.KpiId kpi_id = 4;</code>
+       */
+      public java.util.List<monitoring.Monitoring.KpiId.Builder> 
+           getKpiIdBuilderList() {
+        return getKpiIdFieldBuilder().getBuilderList();
       }
-      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
-      hash = (53 * hash) + getTimestamp().hashCode();
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
-
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.AlarmDescriptor prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
-
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.AlarmDescriptor}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.AlarmDescriptor)
-        monitoring.Monitoring.AlarmDescriptorOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_descriptor;
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
+          getKpiIdFieldBuilder() {
+        if (kpiIdBuilder_ == null) {
+          kpiIdBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
+                  kpiId_,
+                  ((bitField0_ & 0x00000001) != 0),
+                  getParentForChildren(),
+                  isClean());
+          kpiId_ = null;
+        }
+        return kpiIdBuilder_;
       }
 
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.AlarmDescriptor.class, monitoring.Monitoring.AlarmDescriptor.Builder.class);
+      private java.util.List<monitoring.Monitoring.KpiValueRange> kpiValueRange_ =
+        java.util.Collections.emptyList();
+      private void ensureKpiValueRangeIsMutable() {
+        if (!((bitField0_ & 0x00000002) != 0)) {
+          kpiValueRange_ = new java.util.ArrayList<monitoring.Monitoring.KpiValueRange>(kpiValueRange_);
+          bitField0_ |= 0x00000002;
+         }
       }
 
-      // Construct using monitoring.Monitoring.AlarmDescriptor.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          monitoring.Monitoring.KpiValueRange, monitoring.Monitoring.KpiValueRange.Builder, monitoring.Monitoring.KpiValueRangeOrBuilder> kpiValueRangeBuilder_;
 
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public java.util.List<monitoring.Monitoring.KpiValueRange> getKpiValueRangeList() {
+        if (kpiValueRangeBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(kpiValueRange_);
+        } else {
+          return kpiValueRangeBuilder_.getMessageList();
+        }
       }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public int getKpiValueRangeCount() {
+        if (kpiValueRangeBuilder_ == null) {
+          return kpiValueRange_.size();
+        } else {
+          return kpiValueRangeBuilder_.getCount();
         }
       }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        alarmDescription_ = "";
-
-        name_ = "";
-
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public monitoring.Monitoring.KpiValueRange getKpiValueRange(int index) {
+        if (kpiValueRangeBuilder_ == null) {
+          return kpiValueRange_.get(index);
         } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
+          return kpiValueRangeBuilder_.getMessage(index);
         }
+      }
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public Builder setKpiValueRange(
+          int index, monitoring.Monitoring.KpiValueRange value) {
         if (kpiValueRangeBuilder_ == null) {
-          kpiValueRange_ = null;
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureKpiValueRangeIsMutable();
+          kpiValueRange_.set(index, value);
+          onChanged();
         } else {
-          kpiValueRange_ = null;
-          kpiValueRangeBuilder_ = null;
+          kpiValueRangeBuilder_.setMessage(index, value);
         }
-        timestamp_ = "";
-
         return this;
       }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_descriptor;
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public Builder setKpiValueRange(
+          int index, monitoring.Monitoring.KpiValueRange.Builder builderForValue) {
+        if (kpiValueRangeBuilder_ == null) {
+          ensureKpiValueRangeIsMutable();
+          kpiValueRange_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          kpiValueRangeBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
       }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmDescriptor getDefaultInstanceForType() {
-        return monitoring.Monitoring.AlarmDescriptor.getDefaultInstance();
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public Builder addKpiValueRange(monitoring.Monitoring.KpiValueRange value) {
+        if (kpiValueRangeBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureKpiValueRangeIsMutable();
+          kpiValueRange_.add(value);
+          onChanged();
+        } else {
+          kpiValueRangeBuilder_.addMessage(value);
+        }
+        return this;
       }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmDescriptor build() {
-        monitoring.Monitoring.AlarmDescriptor result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public Builder addKpiValueRange(
+          int index, monitoring.Monitoring.KpiValueRange value) {
+        if (kpiValueRangeBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureKpiValueRangeIsMutable();
+          kpiValueRange_.add(index, value);
+          onChanged();
+        } else {
+          kpiValueRangeBuilder_.addMessage(index, value);
         }
-        return result;
+        return this;
       }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmDescriptor buildPartial() {
-        monitoring.Monitoring.AlarmDescriptor result = new monitoring.Monitoring.AlarmDescriptor(this);
-        result.alarmDescription_ = alarmDescription_;
-        result.name_ = name_;
-        if (kpiIdBuilder_ == null) {
-          result.kpiId_ = kpiId_;
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public Builder addKpiValueRange(
+          monitoring.Monitoring.KpiValueRange.Builder builderForValue) {
+        if (kpiValueRangeBuilder_ == null) {
+          ensureKpiValueRangeIsMutable();
+          kpiValueRange_.add(builderForValue.build());
+          onChanged();
         } else {
-          result.kpiId_ = kpiIdBuilder_.build();
+          kpiValueRangeBuilder_.addMessage(builderForValue.build());
         }
+        return this;
+      }
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public Builder addKpiValueRange(
+          int index, monitoring.Monitoring.KpiValueRange.Builder builderForValue) {
         if (kpiValueRangeBuilder_ == null) {
-          result.kpiValueRange_ = kpiValueRange_;
+          ensureKpiValueRangeIsMutable();
+          kpiValueRange_.add(index, builderForValue.build());
+          onChanged();
         } else {
-          result.kpiValueRange_ = kpiValueRangeBuilder_.build();
+          kpiValueRangeBuilder_.addMessage(index, builderForValue.build());
         }
-        result.timestamp_ = timestamp_;
-        onBuilt();
-        return result;
+        return this;
       }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public Builder addAllKpiValueRange(
+          java.lang.Iterable<? extends monitoring.Monitoring.KpiValueRange> values) {
+        if (kpiValueRangeBuilder_ == null) {
+          ensureKpiValueRangeIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, kpiValueRange_);
+          onChanged();
+        } else {
+          kpiValueRangeBuilder_.addAllMessages(values);
+        }
+        return this;
       }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public Builder clearKpiValueRange() {
+        if (kpiValueRangeBuilder_ == null) {
+          kpiValueRange_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          kpiValueRangeBuilder_.clear();
+        }
+        return this;
       }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public Builder removeKpiValueRange(int index) {
+        if (kpiValueRangeBuilder_ == null) {
+          ensureKpiValueRangeIsMutable();
+          kpiValueRange_.remove(index);
+          onChanged();
+        } else {
+          kpiValueRangeBuilder_.remove(index);
+        }
+        return this;
       }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public monitoring.Monitoring.KpiValueRange.Builder getKpiValueRangeBuilder(
+          int index) {
+        return getKpiValueRangeFieldBuilder().getBuilder(index);
       }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder(
+          int index) {
+        if (kpiValueRangeBuilder_ == null) {
+          return kpiValueRange_.get(index);  } else {
+          return kpiValueRangeBuilder_.getMessageOrBuilder(index);
+        }
       }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public java.util.List<? extends monitoring.Monitoring.KpiValueRangeOrBuilder> 
+           getKpiValueRangeOrBuilderList() {
+        if (kpiValueRangeBuilder_ != null) {
+          return kpiValueRangeBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(kpiValueRange_);
+        }
       }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.AlarmDescriptor) {
-          return mergeFrom((monitoring.Monitoring.AlarmDescriptor)other);
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public monitoring.Monitoring.KpiValueRange.Builder addKpiValueRangeBuilder() {
+        return getKpiValueRangeFieldBuilder().addBuilder(
+            monitoring.Monitoring.KpiValueRange.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public monitoring.Monitoring.KpiValueRange.Builder addKpiValueRangeBuilder(
+          int index) {
+        return getKpiValueRangeFieldBuilder().addBuilder(
+            index, monitoring.Monitoring.KpiValueRange.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .monitoring.KpiValueRange kpi_value_range = 5;</code>
+       */
+      public java.util.List<monitoring.Monitoring.KpiValueRange.Builder> 
+           getKpiValueRangeBuilderList() {
+        return getKpiValueRangeFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          monitoring.Monitoring.KpiValueRange, monitoring.Monitoring.KpiValueRange.Builder, monitoring.Monitoring.KpiValueRangeOrBuilder> 
+          getKpiValueRangeFieldBuilder() {
+        if (kpiValueRangeBuilder_ == null) {
+          kpiValueRangeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              monitoring.Monitoring.KpiValueRange, monitoring.Monitoring.KpiValueRange.Builder, monitoring.Monitoring.KpiValueRangeOrBuilder>(
+                  kpiValueRange_,
+                  ((bitField0_ & 0x00000002) != 0),
+                  getParentForChildren(),
+                  isClean());
+          kpiValueRange_ = null;
+        }
+        return kpiValueRangeBuilder_;
+      }
+
+      private context.ContextOuterClass.Timestamp timestamp_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
+      /**
+       * <code>.context.Timestamp timestamp = 6;</code>
+       * @return Whether the timestamp field is set.
+       */
+      public boolean hasTimestamp() {
+        return timestampBuilder_ != null || timestamp_ != null;
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 6;</code>
+       * @return The timestamp.
+       */
+      public context.ContextOuterClass.Timestamp getTimestamp() {
+        if (timestampBuilder_ == null) {
+          return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        } else {
+          return timestampBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 6;</code>
+       */
+      public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (timestampBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          timestamp_ = value;
+          onChanged();
+        } else {
+          timestampBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 6;</code>
+       */
+      public Builder setTimestamp(
+          context.ContextOuterClass.Timestamp.Builder builderForValue) {
+        if (timestampBuilder_ == null) {
+          timestamp_ = builderForValue.build();
+          onChanged();
+        } else {
+          timestampBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 6;</code>
+       */
+      public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (timestampBuilder_ == null) {
+          if (timestamp_ != null) {
+            timestamp_ =
+              context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
+          } else {
+            timestamp_ = value;
+          }
+          onChanged();
         } else {
-          super.mergeFrom(other);
-          return this;
+          timestampBuilder_.mergeFrom(value);
         }
-      }
 
-      public Builder mergeFrom(monitoring.Monitoring.AlarmDescriptor other) {
-        if (other == monitoring.Monitoring.AlarmDescriptor.getDefaultInstance()) return this;
-        if (!other.getAlarmDescription().isEmpty()) {
-          alarmDescription_ = other.alarmDescription_;
-          onChanged();
-        }
-        if (!other.getName().isEmpty()) {
-          name_ = other.name_;
+        return this;
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 6;</code>
+       */
+      public Builder clearTimestamp() {
+        if (timestampBuilder_ == null) {
+          timestamp_ = null;
           onChanged();
+        } else {
+          timestamp_ = null;
+          timestampBuilder_ = null;
         }
-        if (other.hasKpiId()) {
-          mergeKpiId(other.getKpiId());
-        }
-        if (other.hasKpiValueRange()) {
-          mergeKpiValueRange(other.getKpiValueRange());
+
+        return this;
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 6;</code>
+       */
+      public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+        
+        onChanged();
+        return getTimestampFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 6;</code>
+       */
+      public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+        if (timestampBuilder_ != null) {
+          return timestampBuilder_.getMessageOrBuilder();
+        } else {
+          return timestamp_ == null ?
+              context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
         }
-        if (!other.getTimestamp().isEmpty()) {
-          timestamp_ = other.timestamp_;
-          onChanged();
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 6;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
+          getTimestampFieldBuilder() {
+        if (timestampBuilder_ == null) {
+          timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
+                  getTimestamp(),
+                  getParentForChildren(),
+                  isClean());
+          timestamp_ = null;
         }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
+        return timestampBuilder_;
+      }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
       }
 
       @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
       }
 
+
+      // @@protoc_insertion_point(builder_scope:monitoring.AlarmDescriptor)
+    }
+
+    // @@protoc_insertion_point(class_scope:monitoring.AlarmDescriptor)
+    private static final monitoring.Monitoring.AlarmDescriptor DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new monitoring.Monitoring.AlarmDescriptor();
+    }
+
+    public static monitoring.Monitoring.AlarmDescriptor getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static final com.google.protobuf.Parser<AlarmDescriptor>
+        PARSER = new com.google.protobuf.AbstractParser<AlarmDescriptor>() {
       @java.lang.Override
-      public Builder mergeFrom(
+      public AlarmDescriptor parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.AlarmDescriptor parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.AlarmDescriptor) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new AlarmDescriptor(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<AlarmDescriptor> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<AlarmDescriptor> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public monitoring.Monitoring.AlarmDescriptor getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface AlarmIDOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:monitoring.AlarmID)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>.context.Uuid alarm_id = 1;</code>
+     * @return Whether the alarmId field is set.
+     */
+    boolean hasAlarmId();
+    /**
+     * <code>.context.Uuid alarm_id = 1;</code>
+     * @return The alarmId.
+     */
+    context.ContextOuterClass.Uuid getAlarmId();
+    /**
+     * <code>.context.Uuid alarm_id = 1;</code>
+     */
+    context.ContextOuterClass.UuidOrBuilder getAlarmIdOrBuilder();
+  }
+  /**
+   * Protobuf type {@code monitoring.AlarmID}
+   */
+  public static final class AlarmID extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:monitoring.AlarmID)
+      AlarmIDOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use AlarmID.newBuilder() to construct.
+    private AlarmID(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private AlarmID() {
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new AlarmID();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private AlarmID(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 10: {
+              context.ContextOuterClass.Uuid.Builder subBuilder = null;
+              if (alarmId_ != null) {
+                subBuilder = alarmId_.toBuilder();
+              }
+              alarmId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(alarmId_);
+                alarmId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
           }
         }
-        return this;
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
       }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return monitoring.Monitoring.internal_static_monitoring_AlarmID_descriptor;
+    }
 
-      private java.lang.Object alarmDescription_ = "";
-      /**
-       * <code>string alarm_description = 1;</code>
-       * @return The alarmDescription.
-       */
-      public java.lang.String getAlarmDescription() {
-        java.lang.Object ref = alarmDescription_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          alarmDescription_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return monitoring.Monitoring.internal_static_monitoring_AlarmID_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              monitoring.Monitoring.AlarmID.class, monitoring.Monitoring.AlarmID.Builder.class);
+    }
+
+    public static final int ALARM_ID_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.Uuid alarmId_;
+    /**
+     * <code>.context.Uuid alarm_id = 1;</code>
+     * @return Whether the alarmId field is set.
+     */
+    @java.lang.Override
+    public boolean hasAlarmId() {
+      return alarmId_ != null;
+    }
+    /**
+     * <code>.context.Uuid alarm_id = 1;</code>
+     * @return The alarmId.
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.Uuid getAlarmId() {
+      return alarmId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : alarmId_;
+    }
+    /**
+     * <code>.context.Uuid alarm_id = 1;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.UuidOrBuilder getAlarmIdOrBuilder() {
+      return getAlarmId();
+    }
+
+    private byte memoizedIsInitialized = -1;
+    @java.lang.Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      if (alarmId_ != null) {
+        output.writeMessage(1, getAlarmId());
       }
-      /**
-       * <code>string alarm_description = 1;</code>
-       * @return The bytes for alarmDescription.
-       */
-      public com.google.protobuf.ByteString
-          getAlarmDescriptionBytes() {
-        java.lang.Object ref = alarmDescription_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          alarmDescription_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
+      unknownFields.writeTo(output);
+    }
+
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (alarmId_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, getAlarmId());
       }
-      /**
-       * <code>string alarm_description = 1;</code>
-       * @param value The alarmDescription to set.
-       * @return This builder for chaining.
-       */
-      public Builder setAlarmDescription(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        alarmDescription_ = value;
-        onChanged();
-        return this;
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
       }
-      /**
-       * <code>string alarm_description = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearAlarmDescription() {
-        
-        alarmDescription_ = getDefaultInstance().getAlarmDescription();
-        onChanged();
-        return this;
+      if (!(obj instanceof monitoring.Monitoring.AlarmID)) {
+        return super.equals(obj);
       }
-      /**
-       * <code>string alarm_description = 1;</code>
-       * @param value The bytes for alarmDescription to set.
-       * @return This builder for chaining.
-       */
-      public Builder setAlarmDescriptionBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        alarmDescription_ = value;
-        onChanged();
-        return this;
+      monitoring.Monitoring.AlarmID other = (monitoring.Monitoring.AlarmID) obj;
+
+      if (hasAlarmId() != other.hasAlarmId()) return false;
+      if (hasAlarmId()) {
+        if (!getAlarmId()
+            .equals(other.getAlarmId())) return false;
       }
+      if (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
+    }
 
-      private java.lang.Object name_ = "";
-      /**
-       * <code>string name = 2;</code>
-       * @return The name.
-       */
-      public java.lang.String getName() {
-        java.lang.Object ref = name_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          name_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
       }
-      /**
-       * <code>string name = 2;</code>
-       * @return The bytes for name.
-       */
-      public com.google.protobuf.ByteString
-          getNameBytes() {
-        java.lang.Object ref = name_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          name_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasAlarmId()) {
+        hash = (37 * hash) + ALARM_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getAlarmId().hashCode();
       }
-      /**
-       * <code>string name = 2;</code>
-       * @param value The name to set.
-       * @return This builder for chaining.
-       */
-      public Builder setName(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        name_ = value;
-        onChanged();
-        return this;
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static monitoring.Monitoring.AlarmID parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static monitoring.Monitoring.AlarmID parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static monitoring.Monitoring.AlarmID parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static monitoring.Monitoring.AlarmID parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static monitoring.Monitoring.AlarmID parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static monitoring.Monitoring.AlarmID parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static monitoring.Monitoring.AlarmID parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static monitoring.Monitoring.AlarmID parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static monitoring.Monitoring.AlarmID parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static monitoring.Monitoring.AlarmID parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static monitoring.Monitoring.AlarmID parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static monitoring.Monitoring.AlarmID parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    @java.lang.Override
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(monitoring.Monitoring.AlarmID prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    @java.lang.Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code monitoring.AlarmID}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:monitoring.AlarmID)
+        monitoring.Monitoring.AlarmIDOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return monitoring.Monitoring.internal_static_monitoring_AlarmID_descriptor;
       }
-      /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        onChanged();
-        return this;
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return monitoring.Monitoring.internal_static_monitoring_AlarmID_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                monitoring.Monitoring.AlarmID.class, monitoring.Monitoring.AlarmID.Builder.class);
       }
-      /**
-       * <code>string name = 2;</code>
-       * @param value The bytes for name to set.
-       * @return This builder for chaining.
-       */
-      public Builder setNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        name_ = value;
-        onChanged();
-        return this;
+
+      // Construct using monitoring.Monitoring.AlarmID.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
       }
 
-      private monitoring.Monitoring.KpiId kpiId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
-      /**
-       * <code>.monitoring.KpiId kpi_id = 3;</code>
-       * @return Whether the kpiId field is set.
-       */
-      public boolean hasKpiId() {
-        return kpiIdBuilder_ != null || kpiId_ != null;
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
       }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 3;</code>
-       * @return The kpiId.
-       */
-      public monitoring.Monitoring.KpiId getKpiId() {
-        if (kpiIdBuilder_ == null) {
-          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        } else {
-          return kpiIdBuilder_.getMessage();
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
         }
       }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 3;</code>
-       */
-      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiId_ = value;
-          onChanged();
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        if (alarmIdBuilder_ == null) {
+          alarmId_ = null;
         } else {
-          kpiIdBuilder_.setMessage(value);
+          alarmId_ = null;
+          alarmIdBuilder_ = null;
         }
-
         return this;
       }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 3;</code>
-       */
-      public Builder setKpiId(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(builderForValue.build());
-        }
 
-        return this;
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return monitoring.Monitoring.internal_static_monitoring_AlarmID_descriptor;
       }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 3;</code>
-       */
-      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (kpiId_ != null) {
-            kpiId_ =
-              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
-          } else {
-            kpiId_ = value;
-          }
-          onChanged();
-        } else {
-          kpiIdBuilder_.mergeFrom(value);
-        }
 
-        return this;
+      @java.lang.Override
+      public monitoring.Monitoring.AlarmID getDefaultInstanceForType() {
+        return monitoring.Monitoring.AlarmID.getDefaultInstance();
       }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 3;</code>
-       */
-      public Builder clearKpiId() {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-          onChanged();
+
+      @java.lang.Override
+      public monitoring.Monitoring.AlarmID build() {
+        monitoring.Monitoring.AlarmID result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public monitoring.Monitoring.AlarmID buildPartial() {
+        monitoring.Monitoring.AlarmID result = new monitoring.Monitoring.AlarmID(this);
+        if (alarmIdBuilder_ == null) {
+          result.alarmId_ = alarmId_;
         } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
+          result.alarmId_ = alarmIdBuilder_.build();
         }
+        onBuilt();
+        return result;
+      }
 
-        return this;
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
       }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 3;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-        
-        onChanged();
-        return getKpiIdFieldBuilder().getBuilder();
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
       }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 3;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-        if (kpiIdBuilder_ != null) {
-          return kpiIdBuilder_.getMessageOrBuilder();
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof monitoring.Monitoring.AlarmID) {
+          return mergeFrom((monitoring.Monitoring.AlarmID)other);
         } else {
-          return kpiId_ == null ?
-              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+          super.mergeFrom(other);
+          return this;
         }
       }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 3;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdFieldBuilder() {
-        if (kpiIdBuilder_ == null) {
-          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  getKpiId(),
-                  getParentForChildren(),
-                  isClean());
-          kpiId_ = null;
+
+      public Builder mergeFrom(monitoring.Monitoring.AlarmID other) {
+        if (other == monitoring.Monitoring.AlarmID.getDefaultInstance()) return this;
+        if (other.hasAlarmId()) {
+          mergeAlarmId(other.getAlarmId());
         }
-        return kpiIdBuilder_;
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        monitoring.Monitoring.AlarmID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (monitoring.Monitoring.AlarmID) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
       }
 
-      private monitoring.Monitoring.KpiValueRange kpiValueRange_;
+      private context.ContextOuterClass.Uuid alarmId_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValueRange, monitoring.Monitoring.KpiValueRange.Builder, monitoring.Monitoring.KpiValueRangeOrBuilder> kpiValueRangeBuilder_;
+          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> alarmIdBuilder_;
       /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 4;</code>
-       * @return Whether the kpiValueRange field is set.
+       * <code>.context.Uuid alarm_id = 1;</code>
+       * @return Whether the alarmId field is set.
        */
-      public boolean hasKpiValueRange() {
-        return kpiValueRangeBuilder_ != null || kpiValueRange_ != null;
+      public boolean hasAlarmId() {
+        return alarmIdBuilder_ != null || alarmId_ != null;
       }
       /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 4;</code>
-       * @return The kpiValueRange.
+       * <code>.context.Uuid alarm_id = 1;</code>
+       * @return The alarmId.
        */
-      public monitoring.Monitoring.KpiValueRange getKpiValueRange() {
-        if (kpiValueRangeBuilder_ == null) {
-          return kpiValueRange_ == null ? monitoring.Monitoring.KpiValueRange.getDefaultInstance() : kpiValueRange_;
+      public context.ContextOuterClass.Uuid getAlarmId() {
+        if (alarmIdBuilder_ == null) {
+          return alarmId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : alarmId_;
         } else {
-          return kpiValueRangeBuilder_.getMessage();
+          return alarmIdBuilder_.getMessage();
         }
       }
       /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 4;</code>
+       * <code>.context.Uuid alarm_id = 1;</code>
        */
-      public Builder setKpiValueRange(monitoring.Monitoring.KpiValueRange value) {
-        if (kpiValueRangeBuilder_ == null) {
+      public Builder setAlarmId(context.ContextOuterClass.Uuid value) {
+        if (alarmIdBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          kpiValueRange_ = value;
+          alarmId_ = value;
           onChanged();
         } else {
-          kpiValueRangeBuilder_.setMessage(value);
+          alarmIdBuilder_.setMessage(value);
         }
 
         return this;
       }
       /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 4;</code>
+       * <code>.context.Uuid alarm_id = 1;</code>
        */
-      public Builder setKpiValueRange(
-          monitoring.Monitoring.KpiValueRange.Builder builderForValue) {
-        if (kpiValueRangeBuilder_ == null) {
-          kpiValueRange_ = builderForValue.build();
+      public Builder setAlarmId(
+          context.ContextOuterClass.Uuid.Builder builderForValue) {
+        if (alarmIdBuilder_ == null) {
+          alarmId_ = builderForValue.build();
           onChanged();
         } else {
-          kpiValueRangeBuilder_.setMessage(builderForValue.build());
+          alarmIdBuilder_.setMessage(builderForValue.build());
         }
 
         return this;
       }
       /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 4;</code>
+       * <code>.context.Uuid alarm_id = 1;</code>
        */
-      public Builder mergeKpiValueRange(monitoring.Monitoring.KpiValueRange value) {
-        if (kpiValueRangeBuilder_ == null) {
-          if (kpiValueRange_ != null) {
-            kpiValueRange_ =
-              monitoring.Monitoring.KpiValueRange.newBuilder(kpiValueRange_).mergeFrom(value).buildPartial();
+      public Builder mergeAlarmId(context.ContextOuterClass.Uuid value) {
+        if (alarmIdBuilder_ == null) {
+          if (alarmId_ != null) {
+            alarmId_ =
+              context.ContextOuterClass.Uuid.newBuilder(alarmId_).mergeFrom(value).buildPartial();
           } else {
-            kpiValueRange_ = value;
+            alarmId_ = value;
           }
           onChanged();
         } else {
-          kpiValueRangeBuilder_.mergeFrom(value);
+          alarmIdBuilder_.mergeFrom(value);
         }
 
         return this;
       }
       /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 4;</code>
+       * <code>.context.Uuid alarm_id = 1;</code>
        */
-      public Builder clearKpiValueRange() {
-        if (kpiValueRangeBuilder_ == null) {
-          kpiValueRange_ = null;
+      public Builder clearAlarmId() {
+        if (alarmIdBuilder_ == null) {
+          alarmId_ = null;
           onChanged();
         } else {
-          kpiValueRange_ = null;
-          kpiValueRangeBuilder_ = null;
+          alarmId_ = null;
+          alarmIdBuilder_ = null;
         }
 
         return this;
       }
       /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 4;</code>
+       * <code>.context.Uuid alarm_id = 1;</code>
        */
-      public monitoring.Monitoring.KpiValueRange.Builder getKpiValueRangeBuilder() {
+      public context.ContextOuterClass.Uuid.Builder getAlarmIdBuilder() {
         
         onChanged();
-        return getKpiValueRangeFieldBuilder().getBuilder();
+        return getAlarmIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 4;</code>
+       * <code>.context.Uuid alarm_id = 1;</code>
        */
-      public monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder() {
-        if (kpiValueRangeBuilder_ != null) {
-          return kpiValueRangeBuilder_.getMessageOrBuilder();
+      public context.ContextOuterClass.UuidOrBuilder getAlarmIdOrBuilder() {
+        if (alarmIdBuilder_ != null) {
+          return alarmIdBuilder_.getMessageOrBuilder();
         } else {
-          return kpiValueRange_ == null ?
-              monitoring.Monitoring.KpiValueRange.getDefaultInstance() : kpiValueRange_;
+          return alarmId_ == null ?
+              context.ContextOuterClass.Uuid.getDefaultInstance() : alarmId_;
         }
       }
       /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 4;</code>
+       * <code>.context.Uuid alarm_id = 1;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValueRange, monitoring.Monitoring.KpiValueRange.Builder, monitoring.Monitoring.KpiValueRangeOrBuilder> 
-          getKpiValueRangeFieldBuilder() {
-        if (kpiValueRangeBuilder_ == null) {
-          kpiValueRangeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiValueRange, monitoring.Monitoring.KpiValueRange.Builder, monitoring.Monitoring.KpiValueRangeOrBuilder>(
-                  getKpiValueRange(),
+          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
+          getAlarmIdFieldBuilder() {
+        if (alarmIdBuilder_ == null) {
+          alarmIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
+                  getAlarmId(),
                   getParentForChildren(),
                   isClean());
-          kpiValueRange_ = null;
-        }
-        return kpiValueRangeBuilder_;
-      }
-
-      private java.lang.Object timestamp_ = "";
-      /**
-       * <code>string timestamp = 5;</code>
-       * @return The timestamp.
-       */
-      public java.lang.String getTimestamp() {
-        java.lang.Object ref = timestamp_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          timestamp_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string timestamp = 5;</code>
-       * @return The bytes for timestamp.
-       */
-      public com.google.protobuf.ByteString
-          getTimestampBytes() {
-        java.lang.Object ref = timestamp_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          timestamp_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
+          alarmId_ = null;
         }
-      }
-      /**
-       * <code>string timestamp = 5;</code>
-       * @param value The timestamp to set.
-       * @return This builder for chaining.
-       */
-      public Builder setTimestamp(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        timestamp_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string timestamp = 5;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearTimestamp() {
-        
-        timestamp_ = getDefaultInstance().getTimestamp();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string timestamp = 5;</code>
-       * @param value The bytes for timestamp to set.
-       * @return This builder for chaining.
-       */
-      public Builder setTimestampBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        timestamp_ = value;
-        onChanged();
-        return this;
+        return alarmIdBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -17399,85 +16419,97 @@ public final class Monitoring {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:monitoring.AlarmDescriptor)
+      // @@protoc_insertion_point(builder_scope:monitoring.AlarmID)
     }
 
-    // @@protoc_insertion_point(class_scope:monitoring.AlarmDescriptor)
-    private static final monitoring.Monitoring.AlarmDescriptor DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:monitoring.AlarmID)
+    private static final monitoring.Monitoring.AlarmID DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.AlarmDescriptor();
+      DEFAULT_INSTANCE = new monitoring.Monitoring.AlarmID();
     }
 
-    public static monitoring.Monitoring.AlarmDescriptor getDefaultInstance() {
+    public static monitoring.Monitoring.AlarmID getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<AlarmDescriptor>
-        PARSER = new com.google.protobuf.AbstractParser<AlarmDescriptor>() {
+    private static final com.google.protobuf.Parser<AlarmID>
+        PARSER = new com.google.protobuf.AbstractParser<AlarmID>() {
       @java.lang.Override
-      public AlarmDescriptor parsePartialFrom(
+      public AlarmID parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new AlarmDescriptor(input, extensionRegistry);
+        return new AlarmID(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<AlarmDescriptor> parser() {
+    public static com.google.protobuf.Parser<AlarmID> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<AlarmDescriptor> getParserForType() {
+    public com.google.protobuf.Parser<AlarmID> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public monitoring.Monitoring.AlarmDescriptor getDefaultInstanceForType() {
+    public monitoring.Monitoring.AlarmID getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface AlarmIDOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.AlarmID)
+  public interface AlarmSubscriptionOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:monitoring.AlarmSubscription)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>.context.Uuid alarm_id = 1;</code>
-     * @return Whether the alarmId field is set.
+     * <code>.monitoring.AlarmID alarmID = 1;</code>
+     * @return Whether the alarmID field is set.
      */
-    boolean hasAlarmId();
+    boolean hasAlarmID();
     /**
-     * <code>.context.Uuid alarm_id = 1;</code>
-     * @return The alarmId.
+     * <code>.monitoring.AlarmID alarmID = 1;</code>
+     * @return The alarmID.
      */
-    context.ContextOuterClass.Uuid getAlarmId();
+    monitoring.Monitoring.AlarmID getAlarmID();
     /**
-     * <code>.context.Uuid alarm_id = 1;</code>
+     * <code>.monitoring.AlarmID alarmID = 1;</code>
      */
-    context.ContextOuterClass.UuidOrBuilder getAlarmIdOrBuilder();
+    monitoring.Monitoring.AlarmIDOrBuilder getAlarmIDOrBuilder();
+
+    /**
+     * <code>float subscription_timeout_s = 2;</code>
+     * @return The subscriptionTimeoutS.
+     */
+    float getSubscriptionTimeoutS();
+
+    /**
+     * <code>float subscription_frequency_ms = 3;</code>
+     * @return The subscriptionFrequencyMs.
+     */
+    float getSubscriptionFrequencyMs();
   }
   /**
-   * Protobuf type {@code monitoring.AlarmID}
+   * Protobuf type {@code monitoring.AlarmSubscription}
    */
-  public static final class AlarmID extends
+  public static final class AlarmSubscription extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.AlarmID)
-      AlarmIDOrBuilder {
+      // @@protoc_insertion_point(message_implements:monitoring.AlarmSubscription)
+      AlarmSubscriptionOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use AlarmID.newBuilder() to construct.
-    private AlarmID(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use AlarmSubscription.newBuilder() to construct.
+    private AlarmSubscription(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private AlarmID() {
+    private AlarmSubscription() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new AlarmID();
+      return new AlarmSubscription();
     }
 
     @java.lang.Override
@@ -17485,7 +16517,7 @@ public final class Monitoring {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private AlarmID(
+    private AlarmSubscription(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -17504,18 +16536,28 @@ public final class Monitoring {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (alarmId_ != null) {
-                subBuilder = alarmId_.toBuilder();
+              monitoring.Monitoring.AlarmID.Builder subBuilder = null;
+              if (alarmID_ != null) {
+                subBuilder = alarmID_.toBuilder();
               }
-              alarmId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+              alarmID_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry);
               if (subBuilder != null) {
-                subBuilder.mergeFrom(alarmId_);
-                alarmId_ = subBuilder.buildPartial();
+                subBuilder.mergeFrom(alarmID_);
+                alarmID_ = subBuilder.buildPartial();
               }
 
               break;
             }
+            case 21: {
+
+              subscriptionTimeoutS_ = input.readFloat();
+              break;
+            }
+            case 29: {
+
+              subscriptionFrequencyMs_ = input.readFloat();
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -17537,41 +16579,63 @@ public final class Monitoring {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_AlarmID_descriptor;
+      return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_AlarmID_fieldAccessorTable
+      return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.AlarmID.class, monitoring.Monitoring.AlarmID.Builder.class);
+              monitoring.Monitoring.AlarmSubscription.class, monitoring.Monitoring.AlarmSubscription.Builder.class);
     }
 
-    public static final int ALARM_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Uuid alarmId_;
+    public static final int ALARMID_FIELD_NUMBER = 1;
+    private monitoring.Monitoring.AlarmID alarmID_;
     /**
-     * <code>.context.Uuid alarm_id = 1;</code>
-     * @return Whether the alarmId field is set.
+     * <code>.monitoring.AlarmID alarmID = 1;</code>
+     * @return Whether the alarmID field is set.
      */
     @java.lang.Override
-    public boolean hasAlarmId() {
-      return alarmId_ != null;
+    public boolean hasAlarmID() {
+      return alarmID_ != null;
     }
     /**
-     * <code>.context.Uuid alarm_id = 1;</code>
-     * @return The alarmId.
+     * <code>.monitoring.AlarmID alarmID = 1;</code>
+     * @return The alarmID.
      */
     @java.lang.Override
-    public context.ContextOuterClass.Uuid getAlarmId() {
-      return alarmId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : alarmId_;
+    public monitoring.Monitoring.AlarmID getAlarmID() {
+      return alarmID_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmID_;
     }
     /**
-     * <code>.context.Uuid alarm_id = 1;</code>
+     * <code>.monitoring.AlarmID alarmID = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getAlarmIdOrBuilder() {
-      return getAlarmId();
+    public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIDOrBuilder() {
+      return getAlarmID();
+    }
+
+    public static final int SUBSCRIPTION_TIMEOUT_S_FIELD_NUMBER = 2;
+    private float subscriptionTimeoutS_;
+    /**
+     * <code>float subscription_timeout_s = 2;</code>
+     * @return The subscriptionTimeoutS.
+     */
+    @java.lang.Override
+    public float getSubscriptionTimeoutS() {
+      return subscriptionTimeoutS_;
+    }
+
+    public static final int SUBSCRIPTION_FREQUENCY_MS_FIELD_NUMBER = 3;
+    private float subscriptionFrequencyMs_;
+    /**
+     * <code>float subscription_frequency_ms = 3;</code>
+     * @return The subscriptionFrequencyMs.
+     */
+    @java.lang.Override
+    public float getSubscriptionFrequencyMs() {
+      return subscriptionFrequencyMs_;
     }
 
     private byte memoizedIsInitialized = -1;
@@ -17588,8 +16652,14 @@ public final class Monitoring {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (alarmId_ != null) {
-        output.writeMessage(1, getAlarmId());
+      if (alarmID_ != null) {
+        output.writeMessage(1, getAlarmID());
+      }
+      if (subscriptionTimeoutS_ != 0F) {
+        output.writeFloat(2, subscriptionTimeoutS_);
+      }
+      if (subscriptionFrequencyMs_ != 0F) {
+        output.writeFloat(3, subscriptionFrequencyMs_);
       }
       unknownFields.writeTo(output);
     }
@@ -17600,9 +16670,17 @@ public final class Monitoring {
       if (size != -1) return size;
 
       size = 0;
-      if (alarmId_ != null) {
+      if (alarmID_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getAlarmId());
+          .computeMessageSize(1, getAlarmID());
+      }
+      if (subscriptionTimeoutS_ != 0F) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeFloatSize(2, subscriptionTimeoutS_);
+      }
+      if (subscriptionFrequencyMs_ != 0F) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeFloatSize(3, subscriptionFrequencyMs_);
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -17614,16 +16692,22 @@ public final class Monitoring {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof monitoring.Monitoring.AlarmID)) {
+      if (!(obj instanceof monitoring.Monitoring.AlarmSubscription)) {
         return super.equals(obj);
       }
-      monitoring.Monitoring.AlarmID other = (monitoring.Monitoring.AlarmID) obj;
+      monitoring.Monitoring.AlarmSubscription other = (monitoring.Monitoring.AlarmSubscription) obj;
 
-      if (hasAlarmId() != other.hasAlarmId()) return false;
-      if (hasAlarmId()) {
-        if (!getAlarmId()
-            .equals(other.getAlarmId())) return false;
+      if (hasAlarmID() != other.hasAlarmID()) return false;
+      if (hasAlarmID()) {
+        if (!getAlarmID()
+            .equals(other.getAlarmID())) return false;
       }
+      if (java.lang.Float.floatToIntBits(getSubscriptionTimeoutS())
+          != java.lang.Float.floatToIntBits(
+              other.getSubscriptionTimeoutS())) return false;
+      if (java.lang.Float.floatToIntBits(getSubscriptionFrequencyMs())
+          != java.lang.Float.floatToIntBits(
+              other.getSubscriptionFrequencyMs())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -17635,78 +16719,84 @@ public final class Monitoring {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasAlarmId()) {
-        hash = (37 * hash) + ALARM_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getAlarmId().hashCode();
+      if (hasAlarmID()) {
+        hash = (37 * hash) + ALARMID_FIELD_NUMBER;
+        hash = (53 * hash) + getAlarmID().hashCode();
       }
+      hash = (37 * hash) + SUBSCRIPTION_TIMEOUT_S_FIELD_NUMBER;
+      hash = (53 * hash) + java.lang.Float.floatToIntBits(
+          getSubscriptionTimeoutS());
+      hash = (37 * hash) + SUBSCRIPTION_FREQUENCY_MS_FIELD_NUMBER;
+      hash = (53 * hash) + java.lang.Float.floatToIntBits(
+          getSubscriptionFrequencyMs());
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static monitoring.Monitoring.AlarmID parseFrom(
+    public static monitoring.Monitoring.AlarmSubscription parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.AlarmID parseFrom(
+    public static monitoring.Monitoring.AlarmSubscription parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.AlarmID parseFrom(
+    public static monitoring.Monitoring.AlarmSubscription parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.AlarmID parseFrom(
+    public static monitoring.Monitoring.AlarmSubscription parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.AlarmID parseFrom(byte[] data)
+    public static monitoring.Monitoring.AlarmSubscription parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static monitoring.Monitoring.AlarmID parseFrom(
+    public static monitoring.Monitoring.AlarmSubscription parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static monitoring.Monitoring.AlarmID parseFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.AlarmSubscription parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.AlarmID parseFrom(
+    public static monitoring.Monitoring.AlarmSubscription parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.AlarmID parseDelimitedFrom(java.io.InputStream input)
+    public static monitoring.Monitoring.AlarmSubscription parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.AlarmID parseDelimitedFrom(
+    public static monitoring.Monitoring.AlarmSubscription parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static monitoring.Monitoring.AlarmID parseFrom(
+    public static monitoring.Monitoring.AlarmSubscription parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static monitoring.Monitoring.AlarmID parseFrom(
+    public static monitoring.Monitoring.AlarmSubscription parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -17719,7 +16809,7 @@ public final class Monitoring {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(monitoring.Monitoring.AlarmID prototype) {
+    public static Builder newBuilder(monitoring.Monitoring.AlarmSubscription prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -17735,26 +16825,26 @@ public final class Monitoring {
       return builder;
     }
     /**
-     * Protobuf type {@code monitoring.AlarmID}
+     * Protobuf type {@code monitoring.AlarmSubscription}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.AlarmID)
-        monitoring.Monitoring.AlarmIDOrBuilder {
+        // @@protoc_insertion_point(builder_implements:monitoring.AlarmSubscription)
+        monitoring.Monitoring.AlarmSubscriptionOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmID_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmID_fieldAccessorTable
+        return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.AlarmID.class, monitoring.Monitoring.AlarmID.Builder.class);
+                monitoring.Monitoring.AlarmSubscription.class, monitoring.Monitoring.AlarmSubscription.Builder.class);
       }
 
-      // Construct using monitoring.Monitoring.AlarmID.newBuilder()
+      // Construct using monitoring.Monitoring.AlarmSubscription.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -17772,29 +16862,33 @@ public final class Monitoring {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (alarmIdBuilder_ == null) {
-          alarmId_ = null;
+        if (alarmIDBuilder_ == null) {
+          alarmID_ = null;
         } else {
-          alarmId_ = null;
-          alarmIdBuilder_ = null;
+          alarmID_ = null;
+          alarmIDBuilder_ = null;
         }
+        subscriptionTimeoutS_ = 0F;
+
+        subscriptionFrequencyMs_ = 0F;
+
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmID_descriptor;
+        return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_descriptor;
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.AlarmID getDefaultInstanceForType() {
-        return monitoring.Monitoring.AlarmID.getDefaultInstance();
+      public monitoring.Monitoring.AlarmSubscription getDefaultInstanceForType() {
+        return monitoring.Monitoring.AlarmSubscription.getDefaultInstance();
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.AlarmID build() {
-        monitoring.Monitoring.AlarmID result = buildPartial();
+      public monitoring.Monitoring.AlarmSubscription build() {
+        monitoring.Monitoring.AlarmSubscription result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -17802,13 +16896,15 @@ public final class Monitoring {
       }
 
       @java.lang.Override
-      public monitoring.Monitoring.AlarmID buildPartial() {
-        monitoring.Monitoring.AlarmID result = new monitoring.Monitoring.AlarmID(this);
-        if (alarmIdBuilder_ == null) {
-          result.alarmId_ = alarmId_;
+      public monitoring.Monitoring.AlarmSubscription buildPartial() {
+        monitoring.Monitoring.AlarmSubscription result = new monitoring.Monitoring.AlarmSubscription(this);
+        if (alarmIDBuilder_ == null) {
+          result.alarmID_ = alarmID_;
         } else {
-          result.alarmId_ = alarmIdBuilder_.build();
+          result.alarmID_ = alarmIDBuilder_.build();
         }
+        result.subscriptionTimeoutS_ = subscriptionTimeoutS_;
+        result.subscriptionFrequencyMs_ = subscriptionFrequencyMs_;
         onBuilt();
         return result;
       }
@@ -17847,18 +16943,24 @@ public final class Monitoring {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.AlarmID) {
-          return mergeFrom((monitoring.Monitoring.AlarmID)other);
+        if (other instanceof monitoring.Monitoring.AlarmSubscription) {
+          return mergeFrom((monitoring.Monitoring.AlarmSubscription)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(monitoring.Monitoring.AlarmID other) {
-        if (other == monitoring.Monitoring.AlarmID.getDefaultInstance()) return this;
-        if (other.hasAlarmId()) {
-          mergeAlarmId(other.getAlarmId());
+      public Builder mergeFrom(monitoring.Monitoring.AlarmSubscription other) {
+        if (other == monitoring.Monitoring.AlarmSubscription.getDefaultInstance()) return this;
+        if (other.hasAlarmID()) {
+          mergeAlarmID(other.getAlarmID());
+        }
+        if (other.getSubscriptionTimeoutS() != 0F) {
+          setSubscriptionTimeoutS(other.getSubscriptionTimeoutS());
+        }
+        if (other.getSubscriptionFrequencyMs() != 0F) {
+          setSubscriptionFrequencyMs(other.getSubscriptionFrequencyMs());
         }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
@@ -17875,11 +16977,11 @@ public final class Monitoring {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        monitoring.Monitoring.AlarmID parsedMessage = null;
+        monitoring.Monitoring.AlarmSubscription parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.AlarmID) e.getUnfinishedMessage();
+          parsedMessage = (monitoring.Monitoring.AlarmSubscription) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -17889,123 +16991,185 @@ public final class Monitoring {
         return this;
       }
 
-      private context.ContextOuterClass.Uuid alarmId_;
+      private monitoring.Monitoring.AlarmID alarmID_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> alarmIdBuilder_;
+          monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> alarmIDBuilder_;
       /**
-       * <code>.context.Uuid alarm_id = 1;</code>
-       * @return Whether the alarmId field is set.
+       * <code>.monitoring.AlarmID alarmID = 1;</code>
+       * @return Whether the alarmID field is set.
        */
-      public boolean hasAlarmId() {
-        return alarmIdBuilder_ != null || alarmId_ != null;
+      public boolean hasAlarmID() {
+        return alarmIDBuilder_ != null || alarmID_ != null;
       }
       /**
-       * <code>.context.Uuid alarm_id = 1;</code>
-       * @return The alarmId.
+       * <code>.monitoring.AlarmID alarmID = 1;</code>
+       * @return The alarmID.
        */
-      public context.ContextOuterClass.Uuid getAlarmId() {
-        if (alarmIdBuilder_ == null) {
-          return alarmId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : alarmId_;
+      public monitoring.Monitoring.AlarmID getAlarmID() {
+        if (alarmIDBuilder_ == null) {
+          return alarmID_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmID_;
         } else {
-          return alarmIdBuilder_.getMessage();
+          return alarmIDBuilder_.getMessage();
         }
       }
       /**
-       * <code>.context.Uuid alarm_id = 1;</code>
+       * <code>.monitoring.AlarmID alarmID = 1;</code>
        */
-      public Builder setAlarmId(context.ContextOuterClass.Uuid value) {
-        if (alarmIdBuilder_ == null) {
+      public Builder setAlarmID(monitoring.Monitoring.AlarmID value) {
+        if (alarmIDBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          alarmId_ = value;
+          alarmID_ = value;
           onChanged();
         } else {
-          alarmIdBuilder_.setMessage(value);
+          alarmIDBuilder_.setMessage(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.Uuid alarm_id = 1;</code>
+       * <code>.monitoring.AlarmID alarmID = 1;</code>
        */
-      public Builder setAlarmId(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (alarmIdBuilder_ == null) {
-          alarmId_ = builderForValue.build();
+      public Builder setAlarmID(
+          monitoring.Monitoring.AlarmID.Builder builderForValue) {
+        if (alarmIDBuilder_ == null) {
+          alarmID_ = builderForValue.build();
           onChanged();
         } else {
-          alarmIdBuilder_.setMessage(builderForValue.build());
+          alarmIDBuilder_.setMessage(builderForValue.build());
         }
 
         return this;
       }
       /**
-       * <code>.context.Uuid alarm_id = 1;</code>
+       * <code>.monitoring.AlarmID alarmID = 1;</code>
        */
-      public Builder mergeAlarmId(context.ContextOuterClass.Uuid value) {
-        if (alarmIdBuilder_ == null) {
-          if (alarmId_ != null) {
-            alarmId_ =
-              context.ContextOuterClass.Uuid.newBuilder(alarmId_).mergeFrom(value).buildPartial();
+      public Builder mergeAlarmID(monitoring.Monitoring.AlarmID value) {
+        if (alarmIDBuilder_ == null) {
+          if (alarmID_ != null) {
+            alarmID_ =
+              monitoring.Monitoring.AlarmID.newBuilder(alarmID_).mergeFrom(value).buildPartial();
           } else {
-            alarmId_ = value;
+            alarmID_ = value;
           }
           onChanged();
         } else {
-          alarmIdBuilder_.mergeFrom(value);
+          alarmIDBuilder_.mergeFrom(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.Uuid alarm_id = 1;</code>
+       * <code>.monitoring.AlarmID alarmID = 1;</code>
        */
-      public Builder clearAlarmId() {
-        if (alarmIdBuilder_ == null) {
-          alarmId_ = null;
+      public Builder clearAlarmID() {
+        if (alarmIDBuilder_ == null) {
+          alarmID_ = null;
           onChanged();
         } else {
-          alarmId_ = null;
-          alarmIdBuilder_ = null;
+          alarmID_ = null;
+          alarmIDBuilder_ = null;
         }
 
         return this;
       }
       /**
-       * <code>.context.Uuid alarm_id = 1;</code>
+       * <code>.monitoring.AlarmID alarmID = 1;</code>
        */
-      public context.ContextOuterClass.Uuid.Builder getAlarmIdBuilder() {
+      public monitoring.Monitoring.AlarmID.Builder getAlarmIDBuilder() {
         
         onChanged();
-        return getAlarmIdFieldBuilder().getBuilder();
+        return getAlarmIDFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.Uuid alarm_id = 1;</code>
+       * <code>.monitoring.AlarmID alarmID = 1;</code>
        */
-      public context.ContextOuterClass.UuidOrBuilder getAlarmIdOrBuilder() {
-        if (alarmIdBuilder_ != null) {
-          return alarmIdBuilder_.getMessageOrBuilder();
+      public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIDOrBuilder() {
+        if (alarmIDBuilder_ != null) {
+          return alarmIDBuilder_.getMessageOrBuilder();
         } else {
-          return alarmId_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : alarmId_;
+          return alarmID_ == null ?
+              monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmID_;
         }
       }
       /**
-       * <code>.context.Uuid alarm_id = 1;</code>
+       * <code>.monitoring.AlarmID alarmID = 1;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
-          getAlarmIdFieldBuilder() {
-        if (alarmIdBuilder_ == null) {
-          alarmIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
-                  getAlarmId(),
+          monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> 
+          getAlarmIDFieldBuilder() {
+        if (alarmIDBuilder_ == null) {
+          alarmIDBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder>(
+                  getAlarmID(),
                   getParentForChildren(),
                   isClean());
-          alarmId_ = null;
+          alarmID_ = null;
         }
-        return alarmIdBuilder_;
+        return alarmIDBuilder_;
+      }
+
+      private float subscriptionTimeoutS_ ;
+      /**
+       * <code>float subscription_timeout_s = 2;</code>
+       * @return The subscriptionTimeoutS.
+       */
+      @java.lang.Override
+      public float getSubscriptionTimeoutS() {
+        return subscriptionTimeoutS_;
+      }
+      /**
+       * <code>float subscription_timeout_s = 2;</code>
+       * @param value The subscriptionTimeoutS to set.
+       * @return This builder for chaining.
+       */
+      public Builder setSubscriptionTimeoutS(float value) {
+        
+        subscriptionTimeoutS_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>float subscription_timeout_s = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearSubscriptionTimeoutS() {
+        
+        subscriptionTimeoutS_ = 0F;
+        onChanged();
+        return this;
+      }
+
+      private float subscriptionFrequencyMs_ ;
+      /**
+       * <code>float subscription_frequency_ms = 3;</code>
+       * @return The subscriptionFrequencyMs.
+       */
+      @java.lang.Override
+      public float getSubscriptionFrequencyMs() {
+        return subscriptionFrequencyMs_;
+      }
+      /**
+       * <code>float subscription_frequency_ms = 3;</code>
+       * @param value The subscriptionFrequencyMs to set.
+       * @return This builder for chaining.
+       */
+      public Builder setSubscriptionFrequencyMs(float value) {
+        
+        subscriptionFrequencyMs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>float subscription_frequency_ms = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearSubscriptionFrequencyMs() {
+        
+        subscriptionFrequencyMs_ = 0F;
+        onChanged();
+        return this;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -18020,41 +17184,41 @@ public final class Monitoring {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:monitoring.AlarmID)
+      // @@protoc_insertion_point(builder_scope:monitoring.AlarmSubscription)
     }
 
-    // @@protoc_insertion_point(class_scope:monitoring.AlarmID)
-    private static final monitoring.Monitoring.AlarmID DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:monitoring.AlarmSubscription)
+    private static final monitoring.Monitoring.AlarmSubscription DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.AlarmID();
+      DEFAULT_INSTANCE = new monitoring.Monitoring.AlarmSubscription();
     }
 
-    public static monitoring.Monitoring.AlarmID getDefaultInstance() {
+    public static monitoring.Monitoring.AlarmSubscription getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<AlarmID>
-        PARSER = new com.google.protobuf.AbstractParser<AlarmID>() {
+    private static final com.google.protobuf.Parser<AlarmSubscription>
+        PARSER = new com.google.protobuf.AbstractParser<AlarmSubscription>() {
       @java.lang.Override
-      public AlarmID parsePartialFrom(
+      public AlarmSubscription parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new AlarmID(input, extensionRegistry);
+        return new AlarmSubscription(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<AlarmID> parser() {
+    public static com.google.protobuf.Parser<AlarmSubscription> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<AlarmID> getParserForType() {
+    public com.google.protobuf.Parser<AlarmSubscription> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public monitoring.Monitoring.AlarmID getDefaultInstanceForType() {
+    public monitoring.Monitoring.AlarmSubscription getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -18105,6 +17269,21 @@ public final class Monitoring {
      * <code>.monitoring.KpiValue kpi_value = 3;</code>
      */
     monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder();
+
+    /**
+     * <code>.context.Timestamp timestamp = 4;</code>
+     * @return Whether the timestamp field is set.
+     */
+    boolean hasTimestamp();
+    /**
+     * <code>.context.Timestamp timestamp = 4;</code>
+     * @return The timestamp.
+     */
+    context.ContextOuterClass.Timestamp getTimestamp();
+    /**
+     * <code>.context.Timestamp timestamp = 4;</code>
+     */
+    context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
   }
   /**
    * Protobuf type {@code monitoring.AlarmResponse}
@@ -18184,6 +17363,19 @@ public final class Monitoring {
 
               break;
             }
+            case 34: {
+              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+              if (timestamp_ != null) {
+                subBuilder = timestamp_.toBuilder();
+              }
+              timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(timestamp_);
+                timestamp_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -18306,6 +17498,32 @@ public final class Monitoring {
       return getKpiValue();
     }
 
+    public static final int TIMESTAMP_FIELD_NUMBER = 4;
+    private context.ContextOuterClass.Timestamp timestamp_;
+    /**
+     * <code>.context.Timestamp timestamp = 4;</code>
+     * @return Whether the timestamp field is set.
+     */
+    @java.lang.Override
+    public boolean hasTimestamp() {
+      return timestamp_ != null;
+    }
+    /**
+     * <code>.context.Timestamp timestamp = 4;</code>
+     * @return The timestamp.
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.Timestamp getTimestamp() {
+      return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+    }
+    /**
+     * <code>.context.Timestamp timestamp = 4;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+      return getTimestamp();
+    }
+
     private byte memoizedIsInitialized = -1;
     @java.lang.Override
     public final boolean isInitialized() {
@@ -18329,6 +17547,9 @@ public final class Monitoring {
       if (kpiValue_ != null) {
         output.writeMessage(3, getKpiValue());
       }
+      if (timestamp_ != null) {
+        output.writeMessage(4, getTimestamp());
+      }
       unknownFields.writeTo(output);
     }
 
@@ -18349,6 +17570,10 @@ public final class Monitoring {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(3, getKpiValue());
       }
+      if (timestamp_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, getTimestamp());
+      }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
@@ -18376,6 +17601,11 @@ public final class Monitoring {
         if (!getKpiValue()
             .equals(other.getKpiValue())) return false;
       }
+      if (hasTimestamp() != other.hasTimestamp()) return false;
+      if (hasTimestamp()) {
+        if (!getTimestamp()
+            .equals(other.getTimestamp())) return false;
+      }
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -18397,6 +17627,10 @@ public final class Monitoring {
         hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER;
         hash = (53 * hash) + getKpiValue().hashCode();
       }
+      if (hasTimestamp()) {
+        hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
+        hash = (53 * hash) + getTimestamp().hashCode();
+      }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
@@ -18544,6 +17778,12 @@ public final class Monitoring {
           kpiValue_ = null;
           kpiValueBuilder_ = null;
         }
+        if (timestampBuilder_ == null) {
+          timestamp_ = null;
+        } else {
+          timestamp_ = null;
+          timestampBuilder_ = null;
+        }
         return this;
       }
 
@@ -18581,6 +17821,11 @@ public final class Monitoring {
         } else {
           result.kpiValue_ = kpiValueBuilder_.build();
         }
+        if (timestampBuilder_ == null) {
+          result.timestamp_ = timestamp_;
+        } else {
+          result.timestamp_ = timestampBuilder_.build();
+        }
         onBuilt();
         return result;
       }
@@ -18639,6 +17884,9 @@ public final class Monitoring {
         if (other.hasKpiValue()) {
           mergeKpiValue(other.getKpiValue());
         }
+        if (other.hasTimestamp()) {
+          mergeTimestamp(other.getTimestamp());
+        }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
@@ -18981,6 +18229,125 @@ public final class Monitoring {
         }
         return kpiValueBuilder_;
       }
+
+      private context.ContextOuterClass.Timestamp timestamp_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
+      /**
+       * <code>.context.Timestamp timestamp = 4;</code>
+       * @return Whether the timestamp field is set.
+       */
+      public boolean hasTimestamp() {
+        return timestampBuilder_ != null || timestamp_ != null;
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 4;</code>
+       * @return The timestamp.
+       */
+      public context.ContextOuterClass.Timestamp getTimestamp() {
+        if (timestampBuilder_ == null) {
+          return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        } else {
+          return timestampBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 4;</code>
+       */
+      public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (timestampBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          timestamp_ = value;
+          onChanged();
+        } else {
+          timestampBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 4;</code>
+       */
+      public Builder setTimestamp(
+          context.ContextOuterClass.Timestamp.Builder builderForValue) {
+        if (timestampBuilder_ == null) {
+          timestamp_ = builderForValue.build();
+          onChanged();
+        } else {
+          timestampBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 4;</code>
+       */
+      public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (timestampBuilder_ == null) {
+          if (timestamp_ != null) {
+            timestamp_ =
+              context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
+          } else {
+            timestamp_ = value;
+          }
+          onChanged();
+        } else {
+          timestampBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 4;</code>
+       */
+      public Builder clearTimestamp() {
+        if (timestampBuilder_ == null) {
+          timestamp_ = null;
+          onChanged();
+        } else {
+          timestamp_ = null;
+          timestampBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 4;</code>
+       */
+      public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+        
+        onChanged();
+        return getTimestampFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 4;</code>
+       */
+      public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+        if (timestampBuilder_ != null) {
+          return timestampBuilder_.getMessageOrBuilder();
+        } else {
+          return timestamp_ == null ?
+              context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        }
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
+          getTimestampFieldBuilder() {
+        if (timestampBuilder_ == null) {
+          timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
+                  getTimestamp(),
+                  getParentForChildren(),
+                  isClean());
+          timestamp_ = null;
+        }
+        return timestampBuilder_;
+      }
       @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
@@ -19832,16 +19199,6 @@ public final class Monitoring {
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_monitoring_KpiDescriptor_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_BundleKpiDescriptor_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_BundleKpiDescriptor_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_EditedKpiDescriptor_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_EditedKpiDescriptor_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_monitoring_MonitorKpiRequest_descriptor;
   private static final 
@@ -19912,6 +19269,11 @@ public final class Monitoring {
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_monitoring_AlarmID_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_monitoring_AlarmSubscription_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_monitoring_AlarmSubscription_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_monitoring_AlarmResponse_descriptor;
   private static final 
@@ -19932,97 +19294,95 @@ public final class Monitoring {
   static {
     java.lang.String[] descriptorData = {
       "\n\020monitoring.proto\022\nmonitoring\032\rcontext." +
-      "proto\032\026kpi_sample_types.proto\"\376\001\n\rKpiDes" +
-      "criptor\022\027\n\017kpi_description\030\001 \001(\t\0228\n\017kpi_" +
-      "sample_type\030\002 \001(\0162\037.kpi_sample_types.Kpi" +
-      "SampleType\022$\n\tdevice_id\030\003 \001(\0132\021.context." +
-      "DeviceId\022(\n\013endpoint_id\030\004 \001(\0132\023.context." +
-      "EndPointId\022&\n\nservice_id\030\005 \001(\0132\022.context" +
-      ".ServiceId\022\"\n\010slice_id\030\006 \001(\0132\020.context.S" +
-      "liceId\"\254\002\n\023BundleKpiDescriptor\022\027\n\017kpi_de" +
-      "scription\030\001 \001(\t\022&\n\013kpi_id_list\030\002 \003(\0132\021.m" +
-      "onitoring.KpiId\0228\n\017kpi_sample_type\030\003 \001(\016" +
-      "2\037.kpi_sample_types.KpiSampleType\022$\n\tdev" +
-      "ice_id\030\004 \001(\0132\021.context.DeviceId\022(\n\013endpo" +
-      "int_id\030\005 \001(\0132\023.context.EndPointId\022&\n\nser" +
-      "vice_id\030\006 \001(\0132\022.context.ServiceId\022\"\n\010sli" +
-      "ce_id\030\007 \001(\0132\020.context.SliceId\"\317\002\n\023Edited" +
-      "KpiDescriptor\022!\n\006kpi_id\030\001 \001(\0132\021.monitori" +
-      "ng.KpiId\022\027\n\017kpi_description\030\002 \001(\t\022&\n\013kpi" +
-      "_id_list\030\003 \003(\0132\021.monitoring.KpiId\0228\n\017kpi" +
-      "_sample_type\030\004 \001(\0162\037.kpi_sample_types.Kp" +
-      "iSampleType\022$\n\tdevice_id\030\005 \001(\0132\021.context" +
-      ".DeviceId\022(\n\013endpoint_id\030\006 \001(\0132\023.context" +
-      ".EndPointId\022&\n\nservice_id\030\007 \001(\0132\022.contex" +
-      "t.ServiceId\022\"\n\010slice_id\030\010 \001(\0132\020.context." +
-      "SliceId\"l\n\021MonitorKpiRequest\022!\n\006kpi_id\030\001" +
-      " \001(\0132\021.monitoring.KpiId\022\033\n\023monitoring_wi" +
-      "ndow_s\030\002 \001(\002\022\027\n\017sampling_rate_s\030\003 \001(\002\"\241\001" +
-      "\n\010KpiQuery\022!\n\006kpi_id\030\001 \003(\0132\021.monitoring." +
-      "KpiId\022\033\n\023monitoring_window_s\030\002 \001(\002\022\027\n\017sa" +
-      "mpling_rate_s\030\003 \001(\002\022\026\n\016last_n_samples\030\004 " +
-      "\001(\r\022\022\n\nstart_date\030\005 \001(\t\022\020\n\010end_date\030\006 \001(" +
-      "\t\"&\n\005KpiId\022\035\n\006kpi_id\030\001 \001(\0132\r.context.Uui" +
-      "d\"d\n\003Kpi\022!\n\006kpi_id\030\001 \001(\0132\021.monitoring.Kp" +
-      "iId\022\021\n\ttimestamp\030\002 \001(\t\022\'\n\tkpi_value\030\003 \001(" +
-      "\0132\024.monitoring.KpiValue\"e\n\rKpiValueRange" +
-      "\022)\n\013kpiMinValue\030\001 \001(\0132\024.monitoring.KpiVa" +
-      "lue\022)\n\013kpiMaxValue\030\002 \001(\0132\024.monitoring.Kp" +
-      "iValue\"a\n\010KpiValue\022\020\n\006intVal\030\001 \001(\rH\000\022\022\n\010" +
-      "floatVal\030\002 \001(\002H\000\022\023\n\tstringVal\030\003 \001(\tH\000\022\021\n" +
-      "\007boolVal\030\004 \001(\010H\000B\007\n\005value\",\n\007KpiList\022!\n\010" +
-      "kpi_list\030\001 \003(\0132\017.monitoring.Kpi\"K\n\021KpiDe" +
-      "scriptorList\0226\n\023kpi_descriptor_list\030\001 \003(" +
-      "\0132\031.monitoring.KpiDescriptor\"\223\001\n\016SubsDes" +
+      "proto\032\026kpi_sample_types.proto\"\311\002\n\rKpiDes" +
       "criptor\022!\n\006kpi_id\030\001 \001(\0132\021.monitoring.Kpi" +
-      "Id\022\033\n\023sampling_duration_s\030\002 \001(\002\022\033\n\023sampl" +
-      "ing_interval_s\030\003 \001(\002\022\022\n\nstart_date\030\004 \001(\t" +
-      "\022\020\n\010end_date\030\005 \001(\t\"0\n\016SubscriptionID\022\036\n\007" +
-      "subs_id\030\001 \001(\0132\r.context.Uuid\"b\n\014SubsResp" +
-      "onse\022+\n\007subs_id\030\001 \001(\0132\032.monitoring.Subsc" +
-      "riptionID\022%\n\010kpi_list\030\002 \003(\0132\023.monitoring" +
-      ".KpiList\";\n\nSubsIDList\022-\n\tsubs_list\030\001 \003(" +
-      "\0132\032.monitoring.SubscriptionID\"\244\001\n\017AlarmD" +
-      "escriptor\022\031\n\021alarm_description\030\001 \001(\t\022\014\n\004" +
-      "name\030\002 \001(\t\022!\n\006kpi_id\030\003 \001(\0132\021.monitoring." +
-      "KpiId\0222\n\017kpi_value_range\030\004 \001(\0132\031.monitor" +
-      "ing.KpiValueRange\022\021\n\ttimestamp\030\005 \001(\t\"*\n\007" +
-      "AlarmID\022\037\n\010alarm_id\030\001 \001(\0132\r.context.Uuid" +
-      "\"m\n\rAlarmResponse\022%\n\010alarm_id\030\001 \001(\0132\023.mo" +
-      "nitoring.AlarmID\022\014\n\004text\030\002 \001(\t\022\'\n\tkpi_va" +
-      "lue\030\003 \001(\0132\024.monitoring.KpiValue\"6\n\013Alarm" +
-      "IDList\022\'\n\nalarm_list\030\001 \003(\0132\023.monitoring." +
-      "AlarmID2\271\t\n\021MonitoringService\022;\n\tCreateK" +
-      "pi\022\031.monitoring.KpiDescriptor\032\021.monitori" +
-      "ng.KpiId\"\000\022F\n\021EditKpiDescriptor\022\037.monito" +
-      "ring.EditedKpiDescriptor\032\016.context.Empty" +
-      "\"\000\0220\n\tDeleteKpi\022\021.monitoring.KpiId\032\016.con" +
-      "text.Empty\"\000\022G\n\024GetKpiDescriptorList\022\016.c" +
-      "ontext.Empty\032\035.monitoring.KpiDescriptorL" +
-      "ist\"\000\022G\n\017CreateBundleKpi\022\037.monitoring.Bu" +
-      "ndleKpiDescriptor\032\021.monitoring.KpiId\"\000\022B" +
-      "\n\020GetKpiDescriptor\022\021.monitoring.KpiId\032\031." +
-      "monitoring.KpiDescriptor\"\000\022/\n\nIncludeKpi" +
-      "\022\017.monitoring.Kpi\032\016.context.Empty\"\000\022=\n\nM" +
-      "onitorKpi\022\035.monitoring.MonitorKpiRequest" +
-      "\032\016.context.Empty\"\000\022;\n\014QueryKpiData\022\024.mon" +
-      "itoring.KpiQuery\032\023.monitoring.KpiList\"\000\022" +
-      "C\n\014SubscribeKpi\022\032.monitoring.SubsDescrip" +
-      "tor\032\023.monitoring.KpiList\"\0000\001\022M\n\021GetSubsD" +
-      "escriptor\022\032.monitoring.SubscriptionID\032\032." +
-      "monitoring.SubsDescriptor\"\000\022<\n\020GetSubscr" +
-      "iptions\022\016.context.Empty\032\026.monitoring.Sub" +
-      "sIDList\"\000\022C\n\023EditKpiSubscription\022\032.monit" +
-      "oring.SubsDescriptor\032\016.context.Empty\"\000\022D" +
-      "\n\016CreateKpiAlarm\022\033.monitoring.AlarmDescr" +
-      "iptor\032\023.monitoring.AlarmID\"\000\022=\n\014EditKpiA" +
-      "larm\022\033.monitoring.AlarmDescriptor\032\016.cont" +
-      "ext.Empty\"\000\0226\n\tGetAlarms\022\016.context.Empty" +
-      "\032\027.monitoring.AlarmIDList\"\000\022H\n\022GetAlarmD" +
-      "escriptor\022\023.monitoring.AlarmID\032\033.monitor" +
-      "ing.AlarmDescriptor\"\000\022L\n\026GetAlarmRespons" +
-      "eStream\022\023.monitoring.AlarmID\032\031.monitorin" +
-      "g.AlarmResponse\"\0000\001b\006proto3"
+      "Id\022\027\n\017kpi_description\030\002 \001(\t\022&\n\013kpi_id_li" +
+      "st\030\003 \003(\0132\021.monitoring.KpiId\0228\n\017kpi_sampl" +
+      "e_type\030\004 \001(\0162\037.kpi_sample_types.KpiSampl" +
+      "eType\022$\n\tdevice_id\030\005 \001(\0132\021.context.Devic" +
+      "eId\022(\n\013endpoint_id\030\006 \001(\0132\023.context.EndPo" +
+      "intId\022&\n\nservice_id\030\007 \001(\0132\022.context.Serv" +
+      "iceId\022\"\n\010slice_id\030\010 \001(\0132\020.context.SliceI" +
+      "d\"l\n\021MonitorKpiRequest\022!\n\006kpi_id\030\001 \001(\0132\021" +
+      ".monitoring.KpiId\022\033\n\023monitoring_window_s" +
+      "\030\002 \001(\002\022\027\n\017sampling_rate_s\030\003 \001(\002\"\323\001\n\010KpiQ" +
+      "uery\022!\n\006kpi_id\030\001 \003(\0132\021.monitoring.KpiId\022" +
+      "\033\n\023monitoring_window_s\030\002 \001(\002\022\027\n\017sampling" +
+      "_rate_s\030\003 \001(\002\022\026\n\016last_n_samples\030\004 \001(\r\022+\n" +
+      "\017start_timestamp\030\005 \001(\0132\022.context.Timesta" +
+      "mp\022)\n\rend_timestamp\030\006 \001(\0132\022.context.Time" +
+      "stamp\"&\n\005KpiId\022\035\n\006kpi_id\030\001 \001(\0132\r.context" +
+      ".Uuid\"x\n\003Kpi\022!\n\006kpi_id\030\001 \001(\0132\021.monitorin" +
+      "g.KpiId\022%\n\ttimestamp\030\002 \001(\0132\022.context.Tim" +
+      "estamp\022\'\n\tkpi_value\030\003 \001(\0132\024.monitoring.K" +
+      "piValue\"\250\001\n\rKpiValueRange\022)\n\013kpiMinValue" +
+      "\030\001 \001(\0132\024.monitoring.KpiValue\022)\n\013kpiMaxVa" +
+      "lue\030\002 \001(\0132\024.monitoring.KpiValue\022\017\n\007inRan" +
+      "ge\030\003 \001(\010\022\027\n\017includeMinValue\030\004 \001(\010\022\027\n\017inc" +
+      "ludeMaxValue\030\005 \001(\010\"\241\001\n\010KpiValue\022\022\n\010int32" +
+      "Val\030\001 \001(\005H\000\022\023\n\tuint32Val\030\002 \001(\rH\000\022\022\n\010int6" +
+      "4Val\030\003 \001(\003H\000\022\023\n\tuint64Val\030\004 \001(\004H\000\022\022\n\010flo" +
+      "atVal\030\005 \001(\002H\000\022\023\n\tstringVal\030\006 \001(\tH\000\022\021\n\007bo" +
+      "olVal\030\007 \001(\010H\000B\007\n\005value\",\n\007KpiList\022!\n\010kpi" +
+      "_list\030\001 \003(\0132\017.monitoring.Kpi\"K\n\021KpiDescr" +
+      "iptorList\0226\n\023kpi_descriptor_list\030\001 \003(\0132\031" +
+      ".monitoring.KpiDescriptor\"\362\001\n\016SubsDescri" +
+      "ptor\022+\n\007subs_id\030\001 \001(\0132\032.monitoring.Subsc" +
+      "riptionID\022!\n\006kpi_id\030\002 \001(\0132\021.monitoring.K" +
+      "piId\022\033\n\023sampling_duration_s\030\003 \001(\002\022\033\n\023sam" +
+      "pling_interval_s\030\004 \001(\002\022+\n\017start_timestam" +
+      "p\030\005 \001(\0132\022.context.Timestamp\022)\n\rend_times" +
+      "tamp\030\006 \001(\0132\022.context.Timestamp\"0\n\016Subscr" +
+      "iptionID\022\036\n\007subs_id\030\001 \001(\0132\r.context.Uuid" +
+      "\"b\n\014SubsResponse\022+\n\007subs_id\030\001 \001(\0132\032.moni" +
+      "toring.SubscriptionID\022%\n\010kpi_list\030\002 \003(\0132" +
+      "\023.monitoring.KpiList\";\n\nSubsIDList\022-\n\tsu" +
+      "bs_list\030\001 \003(\0132\032.monitoring.SubscriptionI" +
+      "D\"\337\001\n\017AlarmDescriptor\022%\n\010alarm_id\030\001 \001(\0132" +
+      "\023.monitoring.AlarmID\022\031\n\021alarm_descriptio" +
+      "n\030\002 \001(\t\022\014\n\004name\030\003 \001(\t\022!\n\006kpi_id\030\004 \003(\0132\021." +
+      "monitoring.KpiId\0222\n\017kpi_value_range\030\005 \003(" +
+      "\0132\031.monitoring.KpiValueRange\022%\n\ttimestam" +
+      "p\030\006 \001(\0132\022.context.Timestamp\"*\n\007AlarmID\022\037" +
+      "\n\010alarm_id\030\001 \001(\0132\r.context.Uuid\"|\n\021Alarm" +
+      "Subscription\022$\n\007alarmID\030\001 \001(\0132\023.monitori" +
+      "ng.AlarmID\022\036\n\026subscription_timeout_s\030\002 \001" +
+      "(\002\022!\n\031subscription_frequency_ms\030\003 \001(\002\"\224\001" +
+      "\n\rAlarmResponse\022%\n\010alarm_id\030\001 \001(\0132\023.moni" +
+      "toring.AlarmID\022\014\n\004text\030\002 \001(\t\022\'\n\tkpi_valu" +
+      "e\030\003 \001(\0132\024.monitoring.KpiValue\022%\n\ttimesta" +
+      "mp\030\004 \001(\0132\022.context.Timestamp\"6\n\013AlarmIDL" +
+      "ist\022\'\n\nalarm_list\030\001 \003(\0132\023.monitoring.Ala" +
+      "rmID2\233\t\n\021MonitoringService\0228\n\006SetKpi\022\031.m" +
+      "onitoring.KpiDescriptor\032\021.monitoring.Kpi" +
+      "Id\"\000\0220\n\tDeleteKpi\022\021.monitoring.KpiId\032\016.c" +
+      "ontext.Empty\"\000\022B\n\020GetKpiDescriptor\022\021.mon" +
+      "itoring.KpiId\032\031.monitoring.KpiDescriptor" +
+      "\"\000\022G\n\024GetKpiDescriptorList\022\016.context.Emp" +
+      "ty\032\035.monitoring.KpiDescriptorList\"\000\022/\n\nI" +
+      "ncludeKpi\022\017.monitoring.Kpi\032\016.context.Emp" +
+      "ty\"\000\022=\n\nMonitorKpi\022\035.monitoring.MonitorK" +
+      "piRequest\032\016.context.Empty\"\000\022;\n\014QueryKpiD" +
+      "ata\022\024.monitoring.KpiQuery\032\023.monitoring.K" +
+      "piList\"\000\022I\n\022SetKpiSubscription\022\032.monitor" +
+      "ing.SubsDescriptor\032\023.monitoring.KpiList\"" +
+      "\0000\001\022M\n\021GetSubsDescriptor\022\032.monitoring.Su" +
+      "bscriptionID\032\032.monitoring.SubsDescriptor" +
+      "\"\000\022<\n\020GetSubscriptions\022\016.context.Empty\032\026" +
+      ".monitoring.SubsIDList\"\000\022B\n\022DeleteSubscr" +
+      "iption\022\032.monitoring.SubscriptionID\032\016.con" +
+      "text.Empty\"\000\022A\n\013SetKpiAlarm\022\033.monitoring" +
+      ".AlarmDescriptor\032\023.monitoring.AlarmID\"\000\022" +
+      "6\n\tGetAlarms\022\016.context.Empty\032\027.monitorin" +
+      "g.AlarmIDList\"\000\022H\n\022GetAlarmDescriptor\022\023." +
+      "monitoring.AlarmID\032\033.monitoring.AlarmDes" +
+      "criptor\"\000\022V\n\026GetAlarmResponseStream\022\035.mo" +
+      "nitoring.AlarmSubscription\032\031.monitoring." +
+      "AlarmResponse\"\0000\001\0224\n\013DeleteAlarm\022\023.monit" +
+      "oring.AlarmID\032\016.context.Empty\"\000\0226\n\014GetSt" +
+      "reamKpi\022\021.monitoring.KpiId\032\017.monitoring." +
+      "Kpi\"\0000\001\0229\n\rGetInstantKpi\022\021.monitoring.Kp" +
+      "iId\032\023.monitoring.KpiList\"\000b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -20035,111 +19395,105 @@ public final class Monitoring {
     internal_static_monitoring_KpiDescriptor_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_KpiDescriptor_descriptor,
-        new java.lang.String[] { "KpiDescription", "KpiSampleType", "DeviceId", "EndpointId", "ServiceId", "SliceId", });
-    internal_static_monitoring_BundleKpiDescriptor_descriptor =
-      getDescriptor().getMessageTypes().get(1);
-    internal_static_monitoring_BundleKpiDescriptor_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_BundleKpiDescriptor_descriptor,
-        new java.lang.String[] { "KpiDescription", "KpiIdList", "KpiSampleType", "DeviceId", "EndpointId", "ServiceId", "SliceId", });
-    internal_static_monitoring_EditedKpiDescriptor_descriptor =
-      getDescriptor().getMessageTypes().get(2);
-    internal_static_monitoring_EditedKpiDescriptor_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_EditedKpiDescriptor_descriptor,
         new java.lang.String[] { "KpiId", "KpiDescription", "KpiIdList", "KpiSampleType", "DeviceId", "EndpointId", "ServiceId", "SliceId", });
     internal_static_monitoring_MonitorKpiRequest_descriptor =
-      getDescriptor().getMessageTypes().get(3);
+      getDescriptor().getMessageTypes().get(1);
     internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_MonitorKpiRequest_descriptor,
         new java.lang.String[] { "KpiId", "MonitoringWindowS", "SamplingRateS", });
     internal_static_monitoring_KpiQuery_descriptor =
-      getDescriptor().getMessageTypes().get(4);
+      getDescriptor().getMessageTypes().get(2);
     internal_static_monitoring_KpiQuery_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_KpiQuery_descriptor,
-        new java.lang.String[] { "KpiId", "MonitoringWindowS", "SamplingRateS", "LastNSamples", "StartDate", "EndDate", });
+        new java.lang.String[] { "KpiId", "MonitoringWindowS", "SamplingRateS", "LastNSamples", "StartTimestamp", "EndTimestamp", });
     internal_static_monitoring_KpiId_descriptor =
-      getDescriptor().getMessageTypes().get(5);
+      getDescriptor().getMessageTypes().get(3);
     internal_static_monitoring_KpiId_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_KpiId_descriptor,
         new java.lang.String[] { "KpiId", });
     internal_static_monitoring_Kpi_descriptor =
-      getDescriptor().getMessageTypes().get(6);
+      getDescriptor().getMessageTypes().get(4);
     internal_static_monitoring_Kpi_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_Kpi_descriptor,
         new java.lang.String[] { "KpiId", "Timestamp", "KpiValue", });
     internal_static_monitoring_KpiValueRange_descriptor =
-      getDescriptor().getMessageTypes().get(7);
+      getDescriptor().getMessageTypes().get(5);
     internal_static_monitoring_KpiValueRange_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_KpiValueRange_descriptor,
-        new java.lang.String[] { "KpiMinValue", "KpiMaxValue", });
+        new java.lang.String[] { "KpiMinValue", "KpiMaxValue", "InRange", "IncludeMinValue", "IncludeMaxValue", });
     internal_static_monitoring_KpiValue_descriptor =
-      getDescriptor().getMessageTypes().get(8);
+      getDescriptor().getMessageTypes().get(6);
     internal_static_monitoring_KpiValue_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_KpiValue_descriptor,
-        new java.lang.String[] { "IntVal", "FloatVal", "StringVal", "BoolVal", "Value", });
+        new java.lang.String[] { "Int32Val", "Uint32Val", "Int64Val", "Uint64Val", "FloatVal", "StringVal", "BoolVal", "Value", });
     internal_static_monitoring_KpiList_descriptor =
-      getDescriptor().getMessageTypes().get(9);
+      getDescriptor().getMessageTypes().get(7);
     internal_static_monitoring_KpiList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_KpiList_descriptor,
         new java.lang.String[] { "KpiList", });
     internal_static_monitoring_KpiDescriptorList_descriptor =
-      getDescriptor().getMessageTypes().get(10);
+      getDescriptor().getMessageTypes().get(8);
     internal_static_monitoring_KpiDescriptorList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_KpiDescriptorList_descriptor,
         new java.lang.String[] { "KpiDescriptorList", });
     internal_static_monitoring_SubsDescriptor_descriptor =
-      getDescriptor().getMessageTypes().get(11);
+      getDescriptor().getMessageTypes().get(9);
     internal_static_monitoring_SubsDescriptor_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_SubsDescriptor_descriptor,
-        new java.lang.String[] { "KpiId", "SamplingDurationS", "SamplingIntervalS", "StartDate", "EndDate", });
+        new java.lang.String[] { "SubsId", "KpiId", "SamplingDurationS", "SamplingIntervalS", "StartTimestamp", "EndTimestamp", });
     internal_static_monitoring_SubscriptionID_descriptor =
-      getDescriptor().getMessageTypes().get(12);
+      getDescriptor().getMessageTypes().get(10);
     internal_static_monitoring_SubscriptionID_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_SubscriptionID_descriptor,
         new java.lang.String[] { "SubsId", });
     internal_static_monitoring_SubsResponse_descriptor =
-      getDescriptor().getMessageTypes().get(13);
+      getDescriptor().getMessageTypes().get(11);
     internal_static_monitoring_SubsResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_SubsResponse_descriptor,
         new java.lang.String[] { "SubsId", "KpiList", });
     internal_static_monitoring_SubsIDList_descriptor =
-      getDescriptor().getMessageTypes().get(14);
+      getDescriptor().getMessageTypes().get(12);
     internal_static_monitoring_SubsIDList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_SubsIDList_descriptor,
         new java.lang.String[] { "SubsList", });
     internal_static_monitoring_AlarmDescriptor_descriptor =
-      getDescriptor().getMessageTypes().get(15);
+      getDescriptor().getMessageTypes().get(13);
     internal_static_monitoring_AlarmDescriptor_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_AlarmDescriptor_descriptor,
-        new java.lang.String[] { "AlarmDescription", "Name", "KpiId", "KpiValueRange", "Timestamp", });
+        new java.lang.String[] { "AlarmId", "AlarmDescription", "Name", "KpiId", "KpiValueRange", "Timestamp", });
     internal_static_monitoring_AlarmID_descriptor =
-      getDescriptor().getMessageTypes().get(16);
+      getDescriptor().getMessageTypes().get(14);
     internal_static_monitoring_AlarmID_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_AlarmID_descriptor,
         new java.lang.String[] { "AlarmId", });
+    internal_static_monitoring_AlarmSubscription_descriptor =
+      getDescriptor().getMessageTypes().get(15);
+    internal_static_monitoring_AlarmSubscription_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_monitoring_AlarmSubscription_descriptor,
+        new java.lang.String[] { "AlarmID", "SubscriptionTimeoutS", "SubscriptionFrequencyMs", });
     internal_static_monitoring_AlarmResponse_descriptor =
-      getDescriptor().getMessageTypes().get(17);
+      getDescriptor().getMessageTypes().get(16);
     internal_static_monitoring_AlarmResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_AlarmResponse_descriptor,
-        new java.lang.String[] { "AlarmId", "Text", "KpiValue", });
+        new java.lang.String[] { "AlarmId", "Text", "KpiValue", "Timestamp", });
     internal_static_monitoring_AlarmIDList_descriptor =
-      getDescriptor().getMessageTypes().get(18);
+      getDescriptor().getMessageTypes().get(17);
     internal_static_monitoring_AlarmIDList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_AlarmIDList_descriptor,
diff --git a/src/policy/target/generated-sources/grpc/monitoring/MonitoringService.java b/src/policy/target/generated-sources/grpc/monitoring/MonitoringService.java
index f826e1167d1ed56567fc470ba70cc09003617eda..6372600680d57d0b351e7dd67b88c84f9d8e8cff 100644
--- a/src/policy/target/generated-sources/grpc/monitoring/MonitoringService.java
+++ b/src/policy/target/generated-sources/grpc/monitoring/MonitoringService.java
@@ -8,18 +8,14 @@ comments = "Source: monitoring.proto")
 public interface MonitoringService extends MutinyService {
 
     
-    io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> createKpi(monitoring.Monitoring.KpiDescriptor request);
-    
-    io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> editKpiDescriptor(monitoring.Monitoring.EditedKpiDescriptor request);
+    io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> setKpi(monitoring.Monitoring.KpiDescriptor request);
     
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteKpi(monitoring.Monitoring.KpiId request);
     
-    io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptorList> getKpiDescriptorList(context.ContextOuterClass.Empty request);
-    
-    io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> createBundleKpi(monitoring.Monitoring.BundleKpiDescriptor request);
-    
     io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptor> getKpiDescriptor(monitoring.Monitoring.KpiId request);
     
+    io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptorList> getKpiDescriptorList(context.ContextOuterClass.Empty request);
+    
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> includeKpi(monitoring.Monitoring.Kpi request);
     
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> monitorKpi(monitoring.Monitoring.MonitorKpiRequest request);
@@ -30,20 +26,24 @@ public interface MonitoringService extends MutinyService {
     
     io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsIDList> getSubscriptions(context.ContextOuterClass.Empty request);
     
-    io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> editKpiSubscription(monitoring.Monitoring.SubsDescriptor request);
-    
-    io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmID> createKpiAlarm(monitoring.Monitoring.AlarmDescriptor request);
+    io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteSubscription(monitoring.Monitoring.SubscriptionID request);
     
-    io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> editKpiAlarm(monitoring.Monitoring.AlarmDescriptor request);
+    io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmID> setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request);
     
     io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmIDList> getAlarms(context.ContextOuterClass.Empty request);
     
     io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptor(monitoring.Monitoring.AlarmID request);
     
+    io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteAlarm(monitoring.Monitoring.AlarmID request);
+    
+    io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiList> getInstantKpi(monitoring.Monitoring.KpiId request);
+    
+    
+    io.smallrye.mutiny.Multi<monitoring.Monitoring.KpiList> setKpiSubscription(monitoring.Monitoring.SubsDescriptor request);
     
-    io.smallrye.mutiny.Multi<monitoring.Monitoring.KpiList> subscribeKpi(monitoring.Monitoring.SubsDescriptor request);
+    io.smallrye.mutiny.Multi<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request);
     
-    io.smallrye.mutiny.Multi<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(monitoring.Monitoring.AlarmID request);
+    io.smallrye.mutiny.Multi<monitoring.Monitoring.Kpi> getStreamKpi(monitoring.Monitoring.KpiId request);
     
     
 
diff --git a/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java b/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java
index c7f776e7bd0c56cabc7009e7b7bdb208669fb441..21f7f48acd6b6870584133dc3d665f681e78cf5e 100644
--- a/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java
+++ b/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java
@@ -16,25 +16,25 @@ public class MonitoringServiceBean extends MutinyMonitoringServiceGrpc.Monitorin
     }
 
     @Override
-    public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> createKpi(monitoring.Monitoring.KpiDescriptor request) {
+    public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> setKpi(monitoring.Monitoring.KpiDescriptor request) {
        try {
-         return delegate.createKpi(request);
+         return delegate.setKpi(request);
        } catch (UnsupportedOperationException e) {
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> editKpiDescriptor(monitoring.Monitoring.EditedKpiDescriptor request) {
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteKpi(monitoring.Monitoring.KpiId request) {
        try {
-         return delegate.editKpiDescriptor(request);
+         return delegate.deleteKpi(request);
        } catch (UnsupportedOperationException e) {
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteKpi(monitoring.Monitoring.KpiId request) {
+    public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptor> getKpiDescriptor(monitoring.Monitoring.KpiId request) {
        try {
-         return delegate.deleteKpi(request);
+         return delegate.getKpiDescriptor(request);
        } catch (UnsupportedOperationException e) {
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
@@ -48,115 +48,116 @@ public class MonitoringServiceBean extends MutinyMonitoringServiceGrpc.Monitorin
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> createBundleKpi(monitoring.Monitoring.BundleKpiDescriptor request) {
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> includeKpi(monitoring.Monitoring.Kpi request) {
        try {
-         return delegate.createBundleKpi(request);
+         return delegate.includeKpi(request);
        } catch (UnsupportedOperationException e) {
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptor> getKpiDescriptor(monitoring.Monitoring.KpiId request) {
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> monitorKpi(monitoring.Monitoring.MonitorKpiRequest request) {
        try {
-         return delegate.getKpiDescriptor(request);
+         return delegate.monitorKpi(request);
        } catch (UnsupportedOperationException e) {
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> includeKpi(monitoring.Monitoring.Kpi request) {
+    public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiList> queryKpiData(monitoring.Monitoring.KpiQuery request) {
        try {
-         return delegate.includeKpi(request);
+         return delegate.queryKpiData(request);
        } catch (UnsupportedOperationException e) {
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> monitorKpi(monitoring.Monitoring.MonitorKpiRequest request) {
+    public io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsDescriptor> getSubsDescriptor(monitoring.Monitoring.SubscriptionID request) {
        try {
-         return delegate.monitorKpi(request);
+         return delegate.getSubsDescriptor(request);
        } catch (UnsupportedOperationException e) {
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiList> queryKpiData(monitoring.Monitoring.KpiQuery request) {
+    public io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsIDList> getSubscriptions(context.ContextOuterClass.Empty request) {
        try {
-         return delegate.queryKpiData(request);
+         return delegate.getSubscriptions(request);
        } catch (UnsupportedOperationException e) {
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsDescriptor> getSubsDescriptor(monitoring.Monitoring.SubscriptionID request) {
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteSubscription(monitoring.Monitoring.SubscriptionID request) {
        try {
-         return delegate.getSubsDescriptor(request);
+         return delegate.deleteSubscription(request);
        } catch (UnsupportedOperationException e) {
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsIDList> getSubscriptions(context.ContextOuterClass.Empty request) {
+    public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmID> setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
        try {
-         return delegate.getSubscriptions(request);
+         return delegate.setKpiAlarm(request);
        } catch (UnsupportedOperationException e) {
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> editKpiSubscription(monitoring.Monitoring.SubsDescriptor request) {
+    public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmIDList> getAlarms(context.ContextOuterClass.Empty request) {
        try {
-         return delegate.editKpiSubscription(request);
+         return delegate.getAlarms(request);
        } catch (UnsupportedOperationException e) {
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmID> createKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
+    public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptor(monitoring.Monitoring.AlarmID request) {
        try {
-         return delegate.createKpiAlarm(request);
+         return delegate.getAlarmDescriptor(request);
        } catch (UnsupportedOperationException e) {
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> editKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteAlarm(monitoring.Monitoring.AlarmID request) {
        try {
-         return delegate.editKpiAlarm(request);
+         return delegate.deleteAlarm(request);
        } catch (UnsupportedOperationException e) {
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmIDList> getAlarms(context.ContextOuterClass.Empty request) {
+    public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiList> getInstantKpi(monitoring.Monitoring.KpiId request) {
        try {
-         return delegate.getAlarms(request);
+         return delegate.getInstantKpi(request);
        } catch (UnsupportedOperationException e) {
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
     }
+
     @Override
-    public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptor(monitoring.Monitoring.AlarmID request) {
+    public io.smallrye.mutiny.Multi<monitoring.Monitoring.KpiList> setKpiSubscription(monitoring.Monitoring.SubsDescriptor request) {
        try {
-         return delegate.getAlarmDescriptor(request);
+         return delegate.setKpiSubscription(request);
        } catch (UnsupportedOperationException e) {
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
     }
 
     @Override
-    public io.smallrye.mutiny.Multi<monitoring.Monitoring.KpiList> subscribeKpi(monitoring.Monitoring.SubsDescriptor request) {
+    public io.smallrye.mutiny.Multi<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request) {
        try {
-         return delegate.subscribeKpi(request);
+         return delegate.getAlarmResponseStream(request);
        } catch (UnsupportedOperationException e) {
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
     }
 
     @Override
-    public io.smallrye.mutiny.Multi<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(monitoring.Monitoring.AlarmID request) {
+    public io.smallrye.mutiny.Multi<monitoring.Monitoring.Kpi> getStreamKpi(monitoring.Monitoring.KpiId request) {
        try {
-         return delegate.getAlarmResponseStream(request);
+         return delegate.getStreamKpi(request);
        } catch (UnsupportedOperationException e) {
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
diff --git a/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java b/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java
index 35c98e8ff2c240e749e602c4d097c3bef81c8203..6b6dc38645931ad94287b4151019c3b42a1c098d 100644
--- a/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java
+++ b/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java
@@ -21,30 +21,22 @@ public class MonitoringServiceClient implements MonitoringService, MutinyClient<
     }
 
     @Override
-    public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> createKpi(monitoring.Monitoring.KpiDescriptor request) {
-       return stub.createKpi(request);
-    }
-    @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> editKpiDescriptor(monitoring.Monitoring.EditedKpiDescriptor request) {
-       return stub.editKpiDescriptor(request);
+    public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> setKpi(monitoring.Monitoring.KpiDescriptor request) {
+       return stub.setKpi(request);
     }
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteKpi(monitoring.Monitoring.KpiId request) {
        return stub.deleteKpi(request);
     }
     @Override
-    public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptorList> getKpiDescriptorList(context.ContextOuterClass.Empty request) {
-       return stub.getKpiDescriptorList(request);
-    }
-    @Override
-    public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> createBundleKpi(monitoring.Monitoring.BundleKpiDescriptor request) {
-       return stub.createBundleKpi(request);
-    }
-    @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptor> getKpiDescriptor(monitoring.Monitoring.KpiId request) {
        return stub.getKpiDescriptor(request);
     }
     @Override
+    public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptorList> getKpiDescriptorList(context.ContextOuterClass.Empty request) {
+       return stub.getKpiDescriptorList(request);
+    }
+    @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> includeKpi(monitoring.Monitoring.Kpi request) {
        return stub.includeKpi(request);
     }
@@ -65,16 +57,12 @@ public class MonitoringServiceClient implements MonitoringService, MutinyClient<
        return stub.getSubscriptions(request);
     }
     @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> editKpiSubscription(monitoring.Monitoring.SubsDescriptor request) {
-       return stub.editKpiSubscription(request);
-    }
-    @Override
-    public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmID> createKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
-       return stub.createKpiAlarm(request);
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteSubscription(monitoring.Monitoring.SubscriptionID request) {
+       return stub.deleteSubscription(request);
     }
     @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> editKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
-       return stub.editKpiAlarm(request);
+    public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmID> setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
+       return stub.setKpiAlarm(request);
     }
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmIDList> getAlarms(context.ContextOuterClass.Empty request) {
@@ -84,15 +72,28 @@ public class MonitoringServiceClient implements MonitoringService, MutinyClient<
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptor(monitoring.Monitoring.AlarmID request) {
        return stub.getAlarmDescriptor(request);
     }
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteAlarm(monitoring.Monitoring.AlarmID request) {
+       return stub.deleteAlarm(request);
+    }
+    @Override
+    public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiList> getInstantKpi(monitoring.Monitoring.KpiId request) {
+       return stub.getInstantKpi(request);
+    }
 
     @Override
-    public io.smallrye.mutiny.Multi<monitoring.Monitoring.KpiList> subscribeKpi(monitoring.Monitoring.SubsDescriptor request) {
-       return stub.subscribeKpi(request);
+    public io.smallrye.mutiny.Multi<monitoring.Monitoring.KpiList> setKpiSubscription(monitoring.Monitoring.SubsDescriptor request) {
+       return stub.setKpiSubscription(request);
     }
 
     @Override
-    public io.smallrye.mutiny.Multi<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(monitoring.Monitoring.AlarmID request) {
+    public io.smallrye.mutiny.Multi<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request) {
        return stub.getAlarmResponseStream(request);
     }
 
+    @Override
+    public io.smallrye.mutiny.Multi<monitoring.Monitoring.Kpi> getStreamKpi(monitoring.Monitoring.KpiId request) {
+       return stub.getStreamKpi(request);
+    }
+
 }
\ No newline at end of file
diff --git a/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java b/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
index d4ae3510a2f622b195854e4c7d197b8e3ff4d5fd..fe92a7814166b65b12db5d50bb4baaf525c59146 100644
--- a/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
+++ b/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
@@ -15,96 +15,96 @@ public final class MonitoringServiceGrpc {
 
   // Static method descriptors that strictly reflect the proto.
   private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiDescriptor,
-      monitoring.Monitoring.KpiId> getCreateKpiMethod;
+      monitoring.Monitoring.KpiId> getSetKpiMethod;
 
   @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "CreateKpi",
+      fullMethodName = SERVICE_NAME + '/' + "SetKpi",
       requestType = monitoring.Monitoring.KpiDescriptor.class,
       responseType = monitoring.Monitoring.KpiId.class,
       methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
   public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiDescriptor,
-      monitoring.Monitoring.KpiId> getCreateKpiMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiId> getCreateKpiMethod;
-    if ((getCreateKpiMethod = MonitoringServiceGrpc.getCreateKpiMethod) == null) {
+      monitoring.Monitoring.KpiId> getSetKpiMethod() {
+    io.grpc.MethodDescriptor<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiId> getSetKpiMethod;
+    if ((getSetKpiMethod = MonitoringServiceGrpc.getSetKpiMethod) == null) {
       synchronized (MonitoringServiceGrpc.class) {
-        if ((getCreateKpiMethod = MonitoringServiceGrpc.getCreateKpiMethod) == null) {
-          MonitoringServiceGrpc.getCreateKpiMethod = getCreateKpiMethod =
+        if ((getSetKpiMethod = MonitoringServiceGrpc.getSetKpiMethod) == null) {
+          MonitoringServiceGrpc.getSetKpiMethod = getSetKpiMethod =
               io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiId>newBuilder()
               .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "CreateKpi"))
+              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetKpi"))
               .setSampledToLocalTracing(true)
               .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
                   monitoring.Monitoring.KpiDescriptor.getDefaultInstance()))
               .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
                   monitoring.Monitoring.KpiId.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("CreateKpi"))
+              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("SetKpi"))
               .build();
         }
       }
     }
-    return getCreateKpiMethod;
+    return getSetKpiMethod;
   }
 
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.EditedKpiDescriptor,
-      context.ContextOuterClass.Empty> getEditKpiDescriptorMethod;
+  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
+      context.ContextOuterClass.Empty> getDeleteKpiMethod;
 
   @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "EditKpiDescriptor",
-      requestType = monitoring.Monitoring.EditedKpiDescriptor.class,
+      fullMethodName = SERVICE_NAME + '/' + "DeleteKpi",
+      requestType = monitoring.Monitoring.KpiId.class,
       responseType = context.ContextOuterClass.Empty.class,
       methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.EditedKpiDescriptor,
-      context.ContextOuterClass.Empty> getEditKpiDescriptorMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.EditedKpiDescriptor, context.ContextOuterClass.Empty> getEditKpiDescriptorMethod;
-    if ((getEditKpiDescriptorMethod = MonitoringServiceGrpc.getEditKpiDescriptorMethod) == null) {
+  public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
+      context.ContextOuterClass.Empty> getDeleteKpiMethod() {
+    io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, context.ContextOuterClass.Empty> getDeleteKpiMethod;
+    if ((getDeleteKpiMethod = MonitoringServiceGrpc.getDeleteKpiMethod) == null) {
       synchronized (MonitoringServiceGrpc.class) {
-        if ((getEditKpiDescriptorMethod = MonitoringServiceGrpc.getEditKpiDescriptorMethod) == null) {
-          MonitoringServiceGrpc.getEditKpiDescriptorMethod = getEditKpiDescriptorMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.EditedKpiDescriptor, context.ContextOuterClass.Empty>newBuilder()
+        if ((getDeleteKpiMethod = MonitoringServiceGrpc.getDeleteKpiMethod) == null) {
+          MonitoringServiceGrpc.getDeleteKpiMethod = getDeleteKpiMethod =
+              io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiId, context.ContextOuterClass.Empty>newBuilder()
               .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "EditKpiDescriptor"))
+              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteKpi"))
               .setSampledToLocalTracing(true)
               .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.EditedKpiDescriptor.getDefaultInstance()))
+                  monitoring.Monitoring.KpiId.getDefaultInstance()))
               .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
                   context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("EditKpiDescriptor"))
+              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("DeleteKpi"))
               .build();
         }
       }
     }
-    return getEditKpiDescriptorMethod;
+    return getDeleteKpiMethod;
   }
 
   private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
-      context.ContextOuterClass.Empty> getDeleteKpiMethod;
+      monitoring.Monitoring.KpiDescriptor> getGetKpiDescriptorMethod;
 
   @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "DeleteKpi",
+      fullMethodName = SERVICE_NAME + '/' + "GetKpiDescriptor",
       requestType = monitoring.Monitoring.KpiId.class,
-      responseType = context.ContextOuterClass.Empty.class,
+      responseType = monitoring.Monitoring.KpiDescriptor.class,
       methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
   public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
-      context.ContextOuterClass.Empty> getDeleteKpiMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, context.ContextOuterClass.Empty> getDeleteKpiMethod;
-    if ((getDeleteKpiMethod = MonitoringServiceGrpc.getDeleteKpiMethod) == null) {
+      monitoring.Monitoring.KpiDescriptor> getGetKpiDescriptorMethod() {
+    io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiDescriptor> getGetKpiDescriptorMethod;
+    if ((getGetKpiDescriptorMethod = MonitoringServiceGrpc.getGetKpiDescriptorMethod) == null) {
       synchronized (MonitoringServiceGrpc.class) {
-        if ((getDeleteKpiMethod = MonitoringServiceGrpc.getDeleteKpiMethod) == null) {
-          MonitoringServiceGrpc.getDeleteKpiMethod = getDeleteKpiMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiId, context.ContextOuterClass.Empty>newBuilder()
+        if ((getGetKpiDescriptorMethod = MonitoringServiceGrpc.getGetKpiDescriptorMethod) == null) {
+          MonitoringServiceGrpc.getGetKpiDescriptorMethod = getGetKpiDescriptorMethod =
+              io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiDescriptor>newBuilder()
               .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteKpi"))
+              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetKpiDescriptor"))
               .setSampledToLocalTracing(true)
               .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
                   monitoring.Monitoring.KpiId.getDefaultInstance()))
               .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("DeleteKpi"))
+                  monitoring.Monitoring.KpiDescriptor.getDefaultInstance()))
+              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetKpiDescriptor"))
               .build();
         }
       }
     }
-    return getDeleteKpiMethod;
+    return getGetKpiDescriptorMethod;
   }
 
   private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
@@ -138,68 +138,6 @@ public final class MonitoringServiceGrpc {
     return getGetKpiDescriptorListMethod;
   }
 
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.BundleKpiDescriptor,
-      monitoring.Monitoring.KpiId> getCreateBundleKpiMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "CreateBundleKpi",
-      requestType = monitoring.Monitoring.BundleKpiDescriptor.class,
-      responseType = monitoring.Monitoring.KpiId.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.BundleKpiDescriptor,
-      monitoring.Monitoring.KpiId> getCreateBundleKpiMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.BundleKpiDescriptor, monitoring.Monitoring.KpiId> getCreateBundleKpiMethod;
-    if ((getCreateBundleKpiMethod = MonitoringServiceGrpc.getCreateBundleKpiMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
-        if ((getCreateBundleKpiMethod = MonitoringServiceGrpc.getCreateBundleKpiMethod) == null) {
-          MonitoringServiceGrpc.getCreateBundleKpiMethod = getCreateBundleKpiMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.BundleKpiDescriptor, monitoring.Monitoring.KpiId>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "CreateBundleKpi"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.BundleKpiDescriptor.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.KpiId.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("CreateBundleKpi"))
-              .build();
-        }
-      }
-    }
-    return getCreateBundleKpiMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
-      monitoring.Monitoring.KpiDescriptor> getGetKpiDescriptorMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetKpiDescriptor",
-      requestType = monitoring.Monitoring.KpiId.class,
-      responseType = monitoring.Monitoring.KpiDescriptor.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
-      monitoring.Monitoring.KpiDescriptor> getGetKpiDescriptorMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiDescriptor> getGetKpiDescriptorMethod;
-    if ((getGetKpiDescriptorMethod = MonitoringServiceGrpc.getGetKpiDescriptorMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
-        if ((getGetKpiDescriptorMethod = MonitoringServiceGrpc.getGetKpiDescriptorMethod) == null) {
-          MonitoringServiceGrpc.getGetKpiDescriptorMethod = getGetKpiDescriptorMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiDescriptor>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetKpiDescriptor"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.KpiId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.KpiDescriptor.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetKpiDescriptor"))
-              .build();
-        }
-      }
-    }
-    return getGetKpiDescriptorMethod;
-  }
-
   private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.Kpi,
       context.ContextOuterClass.Empty> getIncludeKpiMethod;
 
@@ -294,34 +232,34 @@ public final class MonitoringServiceGrpc {
   }
 
   private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.SubsDescriptor,
-      monitoring.Monitoring.KpiList> getSubscribeKpiMethod;
+      monitoring.Monitoring.KpiList> getSetKpiSubscriptionMethod;
 
   @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "SubscribeKpi",
+      fullMethodName = SERVICE_NAME + '/' + "SetKpiSubscription",
       requestType = monitoring.Monitoring.SubsDescriptor.class,
       responseType = monitoring.Monitoring.KpiList.class,
       methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
   public static io.grpc.MethodDescriptor<monitoring.Monitoring.SubsDescriptor,
-      monitoring.Monitoring.KpiList> getSubscribeKpiMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.KpiList> getSubscribeKpiMethod;
-    if ((getSubscribeKpiMethod = MonitoringServiceGrpc.getSubscribeKpiMethod) == null) {
+      monitoring.Monitoring.KpiList> getSetKpiSubscriptionMethod() {
+    io.grpc.MethodDescriptor<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.KpiList> getSetKpiSubscriptionMethod;
+    if ((getSetKpiSubscriptionMethod = MonitoringServiceGrpc.getSetKpiSubscriptionMethod) == null) {
       synchronized (MonitoringServiceGrpc.class) {
-        if ((getSubscribeKpiMethod = MonitoringServiceGrpc.getSubscribeKpiMethod) == null) {
-          MonitoringServiceGrpc.getSubscribeKpiMethod = getSubscribeKpiMethod =
+        if ((getSetKpiSubscriptionMethod = MonitoringServiceGrpc.getSetKpiSubscriptionMethod) == null) {
+          MonitoringServiceGrpc.getSetKpiSubscriptionMethod = getSetKpiSubscriptionMethod =
               io.grpc.MethodDescriptor.<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.KpiList>newBuilder()
               .setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SubscribeKpi"))
+              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetKpiSubscription"))
               .setSampledToLocalTracing(true)
               .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
                   monitoring.Monitoring.SubsDescriptor.getDefaultInstance()))
               .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
                   monitoring.Monitoring.KpiList.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("SubscribeKpi"))
+              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("SetKpiSubscription"))
               .build();
         }
       }
     }
-    return getSubscribeKpiMethod;
+    return getSetKpiSubscriptionMethod;
   }
 
   private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.SubscriptionID,
@@ -386,97 +324,66 @@ public final class MonitoringServiceGrpc {
     return getGetSubscriptionsMethod;
   }
 
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.SubsDescriptor,
-      context.ContextOuterClass.Empty> getEditKpiSubscriptionMethod;
+  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.SubscriptionID,
+      context.ContextOuterClass.Empty> getDeleteSubscriptionMethod;
 
   @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "EditKpiSubscription",
-      requestType = monitoring.Monitoring.SubsDescriptor.class,
+      fullMethodName = SERVICE_NAME + '/' + "DeleteSubscription",
+      requestType = monitoring.Monitoring.SubscriptionID.class,
       responseType = context.ContextOuterClass.Empty.class,
       methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.SubsDescriptor,
-      context.ContextOuterClass.Empty> getEditKpiSubscriptionMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.SubsDescriptor, context.ContextOuterClass.Empty> getEditKpiSubscriptionMethod;
-    if ((getEditKpiSubscriptionMethod = MonitoringServiceGrpc.getEditKpiSubscriptionMethod) == null) {
+  public static io.grpc.MethodDescriptor<monitoring.Monitoring.SubscriptionID,
+      context.ContextOuterClass.Empty> getDeleteSubscriptionMethod() {
+    io.grpc.MethodDescriptor<monitoring.Monitoring.SubscriptionID, context.ContextOuterClass.Empty> getDeleteSubscriptionMethod;
+    if ((getDeleteSubscriptionMethod = MonitoringServiceGrpc.getDeleteSubscriptionMethod) == null) {
       synchronized (MonitoringServiceGrpc.class) {
-        if ((getEditKpiSubscriptionMethod = MonitoringServiceGrpc.getEditKpiSubscriptionMethod) == null) {
-          MonitoringServiceGrpc.getEditKpiSubscriptionMethod = getEditKpiSubscriptionMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.SubsDescriptor, context.ContextOuterClass.Empty>newBuilder()
+        if ((getDeleteSubscriptionMethod = MonitoringServiceGrpc.getDeleteSubscriptionMethod) == null) {
+          MonitoringServiceGrpc.getDeleteSubscriptionMethod = getDeleteSubscriptionMethod =
+              io.grpc.MethodDescriptor.<monitoring.Monitoring.SubscriptionID, context.ContextOuterClass.Empty>newBuilder()
               .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "EditKpiSubscription"))
+              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteSubscription"))
               .setSampledToLocalTracing(true)
               .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.SubsDescriptor.getDefaultInstance()))
+                  monitoring.Monitoring.SubscriptionID.getDefaultInstance()))
               .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
                   context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("EditKpiSubscription"))
+              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("DeleteSubscription"))
               .build();
         }
       }
     }
-    return getEditKpiSubscriptionMethod;
+    return getDeleteSubscriptionMethod;
   }
 
   private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmDescriptor,
-      monitoring.Monitoring.AlarmID> getCreateKpiAlarmMethod;
+      monitoring.Monitoring.AlarmID> getSetKpiAlarmMethod;
 
   @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "CreateKpiAlarm",
+      fullMethodName = SERVICE_NAME + '/' + "SetKpiAlarm",
       requestType = monitoring.Monitoring.AlarmDescriptor.class,
       responseType = monitoring.Monitoring.AlarmID.class,
       methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
   public static io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmDescriptor,
-      monitoring.Monitoring.AlarmID> getCreateKpiAlarmMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmID> getCreateKpiAlarmMethod;
-    if ((getCreateKpiAlarmMethod = MonitoringServiceGrpc.getCreateKpiAlarmMethod) == null) {
+      monitoring.Monitoring.AlarmID> getSetKpiAlarmMethod() {
+    io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmID> getSetKpiAlarmMethod;
+    if ((getSetKpiAlarmMethod = MonitoringServiceGrpc.getSetKpiAlarmMethod) == null) {
       synchronized (MonitoringServiceGrpc.class) {
-        if ((getCreateKpiAlarmMethod = MonitoringServiceGrpc.getCreateKpiAlarmMethod) == null) {
-          MonitoringServiceGrpc.getCreateKpiAlarmMethod = getCreateKpiAlarmMethod =
+        if ((getSetKpiAlarmMethod = MonitoringServiceGrpc.getSetKpiAlarmMethod) == null) {
+          MonitoringServiceGrpc.getSetKpiAlarmMethod = getSetKpiAlarmMethod =
               io.grpc.MethodDescriptor.<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmID>newBuilder()
               .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "CreateKpiAlarm"))
+              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetKpiAlarm"))
               .setSampledToLocalTracing(true)
               .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
                   monitoring.Monitoring.AlarmDescriptor.getDefaultInstance()))
               .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
                   monitoring.Monitoring.AlarmID.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("CreateKpiAlarm"))
+              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("SetKpiAlarm"))
               .build();
         }
       }
     }
-    return getCreateKpiAlarmMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmDescriptor,
-      context.ContextOuterClass.Empty> getEditKpiAlarmMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "EditKpiAlarm",
-      requestType = monitoring.Monitoring.AlarmDescriptor.class,
-      responseType = context.ContextOuterClass.Empty.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmDescriptor,
-      context.ContextOuterClass.Empty> getEditKpiAlarmMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmDescriptor, context.ContextOuterClass.Empty> getEditKpiAlarmMethod;
-    if ((getEditKpiAlarmMethod = MonitoringServiceGrpc.getEditKpiAlarmMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
-        if ((getEditKpiAlarmMethod = MonitoringServiceGrpc.getEditKpiAlarmMethod) == null) {
-          MonitoringServiceGrpc.getEditKpiAlarmMethod = getEditKpiAlarmMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.AlarmDescriptor, context.ContextOuterClass.Empty>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "EditKpiAlarm"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.AlarmDescriptor.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("EditKpiAlarm"))
-              .build();
-        }
-      }
-    }
-    return getEditKpiAlarmMethod;
+    return getSetKpiAlarmMethod;
   }
 
   private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
@@ -541,27 +448,27 @@ public final class MonitoringServiceGrpc {
     return getGetAlarmDescriptorMethod;
   }
 
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID,
+  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmSubscription,
       monitoring.Monitoring.AlarmResponse> getGetAlarmResponseStreamMethod;
 
   @io.grpc.stub.annotations.RpcMethod(
       fullMethodName = SERVICE_NAME + '/' + "GetAlarmResponseStream",
-      requestType = monitoring.Monitoring.AlarmID.class,
+      requestType = monitoring.Monitoring.AlarmSubscription.class,
       responseType = monitoring.Monitoring.AlarmResponse.class,
       methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID,
+  public static io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmSubscription,
       monitoring.Monitoring.AlarmResponse> getGetAlarmResponseStreamMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmResponse> getGetAlarmResponseStreamMethod;
+    io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmSubscription, monitoring.Monitoring.AlarmResponse> getGetAlarmResponseStreamMethod;
     if ((getGetAlarmResponseStreamMethod = MonitoringServiceGrpc.getGetAlarmResponseStreamMethod) == null) {
       synchronized (MonitoringServiceGrpc.class) {
         if ((getGetAlarmResponseStreamMethod = MonitoringServiceGrpc.getGetAlarmResponseStreamMethod) == null) {
           MonitoringServiceGrpc.getGetAlarmResponseStreamMethod = getGetAlarmResponseStreamMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmResponse>newBuilder()
+              io.grpc.MethodDescriptor.<monitoring.Monitoring.AlarmSubscription, monitoring.Monitoring.AlarmResponse>newBuilder()
               .setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
               .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetAlarmResponseStream"))
               .setSampledToLocalTracing(true)
               .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.AlarmID.getDefaultInstance()))
+                  monitoring.Monitoring.AlarmSubscription.getDefaultInstance()))
               .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
                   monitoring.Monitoring.AlarmResponse.getDefaultInstance()))
               .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetAlarmResponseStream"))
@@ -572,6 +479,99 @@ public final class MonitoringServiceGrpc {
     return getGetAlarmResponseStreamMethod;
   }
 
+  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID,
+      context.ContextOuterClass.Empty> getDeleteAlarmMethod;
+
+  @io.grpc.stub.annotations.RpcMethod(
+      fullMethodName = SERVICE_NAME + '/' + "DeleteAlarm",
+      requestType = monitoring.Monitoring.AlarmID.class,
+      responseType = context.ContextOuterClass.Empty.class,
+      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+  public static io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID,
+      context.ContextOuterClass.Empty> getDeleteAlarmMethod() {
+    io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID, context.ContextOuterClass.Empty> getDeleteAlarmMethod;
+    if ((getDeleteAlarmMethod = MonitoringServiceGrpc.getDeleteAlarmMethod) == null) {
+      synchronized (MonitoringServiceGrpc.class) {
+        if ((getDeleteAlarmMethod = MonitoringServiceGrpc.getDeleteAlarmMethod) == null) {
+          MonitoringServiceGrpc.getDeleteAlarmMethod = getDeleteAlarmMethod =
+              io.grpc.MethodDescriptor.<monitoring.Monitoring.AlarmID, context.ContextOuterClass.Empty>newBuilder()
+              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteAlarm"))
+              .setSampledToLocalTracing(true)
+              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  monitoring.Monitoring.AlarmID.getDefaultInstance()))
+              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  context.ContextOuterClass.Empty.getDefaultInstance()))
+              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("DeleteAlarm"))
+              .build();
+        }
+      }
+    }
+    return getDeleteAlarmMethod;
+  }
+
+  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
+      monitoring.Monitoring.Kpi> getGetStreamKpiMethod;
+
+  @io.grpc.stub.annotations.RpcMethod(
+      fullMethodName = SERVICE_NAME + '/' + "GetStreamKpi",
+      requestType = monitoring.Monitoring.KpiId.class,
+      responseType = monitoring.Monitoring.Kpi.class,
+      methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
+  public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
+      monitoring.Monitoring.Kpi> getGetStreamKpiMethod() {
+    io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi> getGetStreamKpiMethod;
+    if ((getGetStreamKpiMethod = MonitoringServiceGrpc.getGetStreamKpiMethod) == null) {
+      synchronized (MonitoringServiceGrpc.class) {
+        if ((getGetStreamKpiMethod = MonitoringServiceGrpc.getGetStreamKpiMethod) == null) {
+          MonitoringServiceGrpc.getGetStreamKpiMethod = getGetStreamKpiMethod =
+              io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi>newBuilder()
+              .setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
+              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetStreamKpi"))
+              .setSampledToLocalTracing(true)
+              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  monitoring.Monitoring.KpiId.getDefaultInstance()))
+              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  monitoring.Monitoring.Kpi.getDefaultInstance()))
+              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetStreamKpi"))
+              .build();
+        }
+      }
+    }
+    return getGetStreamKpiMethod;
+  }
+
+  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
+      monitoring.Monitoring.KpiList> getGetInstantKpiMethod;
+
+  @io.grpc.stub.annotations.RpcMethod(
+      fullMethodName = SERVICE_NAME + '/' + "GetInstantKpi",
+      requestType = monitoring.Monitoring.KpiId.class,
+      responseType = monitoring.Monitoring.KpiList.class,
+      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+  public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
+      monitoring.Monitoring.KpiList> getGetInstantKpiMethod() {
+    io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiList> getGetInstantKpiMethod;
+    if ((getGetInstantKpiMethod = MonitoringServiceGrpc.getGetInstantKpiMethod) == null) {
+      synchronized (MonitoringServiceGrpc.class) {
+        if ((getGetInstantKpiMethod = MonitoringServiceGrpc.getGetInstantKpiMethod) == null) {
+          MonitoringServiceGrpc.getGetInstantKpiMethod = getGetInstantKpiMethod =
+              io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiList>newBuilder()
+              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetInstantKpi"))
+              .setSampledToLocalTracing(true)
+              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  monitoring.Monitoring.KpiId.getDefaultInstance()))
+              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  monitoring.Monitoring.KpiList.getDefaultInstance()))
+              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetInstantKpi"))
+              .build();
+        }
+      }
+    }
+    return getGetInstantKpiMethod;
+  }
+
   /**
    * Creates a new async stub that supports all call types for the service
    */
@@ -622,23 +622,23 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public void createKpi(monitoring.Monitoring.KpiDescriptor request,
+    public void setKpi(monitoring.Monitoring.KpiDescriptor request,
         io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getCreateKpiMethod(), responseObserver);
+      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiMethod(), responseObserver);
     }
 
     /**
      */
-    public void editKpiDescriptor(monitoring.Monitoring.EditedKpiDescriptor request,
+    public void deleteKpi(monitoring.Monitoring.KpiId request,
         io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getEditKpiDescriptorMethod(), responseObserver);
+      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteKpiMethod(), responseObserver);
     }
 
     /**
      */
-    public void deleteKpi(monitoring.Monitoring.KpiId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteKpiMethod(), responseObserver);
+    public void getKpiDescriptor(monitoring.Monitoring.KpiId request,
+        io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor> responseObserver) {
+      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetKpiDescriptorMethod(), responseObserver);
     }
 
     /**
@@ -648,20 +648,6 @@ public final class MonitoringServiceGrpc {
       io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetKpiDescriptorListMethod(), responseObserver);
     }
 
-    /**
-     */
-    public void createBundleKpi(monitoring.Monitoring.BundleKpiDescriptor request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getCreateBundleKpiMethod(), responseObserver);
-    }
-
-    /**
-     */
-    public void getKpiDescriptor(monitoring.Monitoring.KpiId request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetKpiDescriptorMethod(), responseObserver);
-    }
-
     /**
      */
     public void includeKpi(monitoring.Monitoring.Kpi request,
@@ -685,9 +671,9 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public void subscribeKpi(monitoring.Monitoring.SubsDescriptor request,
+    public void setKpiSubscription(monitoring.Monitoring.SubsDescriptor request,
         io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSubscribeKpiMethod(), responseObserver);
+      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiSubscriptionMethod(), responseObserver);
     }
 
     /**
@@ -706,23 +692,16 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public void editKpiSubscription(monitoring.Monitoring.SubsDescriptor request,
+    public void deleteSubscription(monitoring.Monitoring.SubscriptionID request,
         io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getEditKpiSubscriptionMethod(), responseObserver);
+      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteSubscriptionMethod(), responseObserver);
     }
 
     /**
      */
-    public void createKpiAlarm(monitoring.Monitoring.AlarmDescriptor request,
+    public void setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request,
         io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmID> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getCreateKpiAlarmMethod(), responseObserver);
-    }
-
-    /**
-     */
-    public void editKpiAlarm(monitoring.Monitoring.AlarmDescriptor request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getEditKpiAlarmMethod(), responseObserver);
+      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiAlarmMethod(), responseObserver);
     }
 
     /**
@@ -741,34 +720,55 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public void getAlarmResponseStream(monitoring.Monitoring.AlarmID request,
+    public void getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request,
         io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmResponse> responseObserver) {
       io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmResponseStreamMethod(), responseObserver);
     }
 
+    /**
+     */
+    public void deleteAlarm(monitoring.Monitoring.AlarmID request,
+        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteAlarmMethod(), responseObserver);
+    }
+
+    /**
+     */
+    public void getStreamKpi(monitoring.Monitoring.KpiId request,
+        io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
+      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetStreamKpiMethod(), responseObserver);
+    }
+
+    /**
+     */
+    public void getInstantKpi(monitoring.Monitoring.KpiId request,
+        io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiList> responseObserver) {
+      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetInstantKpiMethod(), responseObserver);
+    }
+
     @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
       return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
           .addMethod(
-            getCreateKpiMethod(),
+            getSetKpiMethod(),
             io.grpc.stub.ServerCalls.asyncUnaryCall(
               new MethodHandlers<
                 monitoring.Monitoring.KpiDescriptor,
                 monitoring.Monitoring.KpiId>(
-                  this, METHODID_CREATE_KPI)))
+                  this, METHODID_SET_KPI)))
           .addMethod(
-            getEditKpiDescriptorMethod(),
+            getDeleteKpiMethod(),
             io.grpc.stub.ServerCalls.asyncUnaryCall(
               new MethodHandlers<
-                monitoring.Monitoring.EditedKpiDescriptor,
+                monitoring.Monitoring.KpiId,
                 context.ContextOuterClass.Empty>(
-                  this, METHODID_EDIT_KPI_DESCRIPTOR)))
+                  this, METHODID_DELETE_KPI)))
           .addMethod(
-            getDeleteKpiMethod(),
+            getGetKpiDescriptorMethod(),
             io.grpc.stub.ServerCalls.asyncUnaryCall(
               new MethodHandlers<
                 monitoring.Monitoring.KpiId,
-                context.ContextOuterClass.Empty>(
-                  this, METHODID_DELETE_KPI)))
+                monitoring.Monitoring.KpiDescriptor>(
+                  this, METHODID_GET_KPI_DESCRIPTOR)))
           .addMethod(
             getGetKpiDescriptorListMethod(),
             io.grpc.stub.ServerCalls.asyncUnaryCall(
@@ -776,20 +776,6 @@ public final class MonitoringServiceGrpc {
                 context.ContextOuterClass.Empty,
                 monitoring.Monitoring.KpiDescriptorList>(
                   this, METHODID_GET_KPI_DESCRIPTOR_LIST)))
-          .addMethod(
-            getCreateBundleKpiMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                monitoring.Monitoring.BundleKpiDescriptor,
-                monitoring.Monitoring.KpiId>(
-                  this, METHODID_CREATE_BUNDLE_KPI)))
-          .addMethod(
-            getGetKpiDescriptorMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                monitoring.Monitoring.KpiId,
-                monitoring.Monitoring.KpiDescriptor>(
-                  this, METHODID_GET_KPI_DESCRIPTOR)))
           .addMethod(
             getIncludeKpiMethod(),
             io.grpc.stub.ServerCalls.asyncUnaryCall(
@@ -812,12 +798,12 @@ public final class MonitoringServiceGrpc {
                 monitoring.Monitoring.KpiList>(
                   this, METHODID_QUERY_KPI_DATA)))
           .addMethod(
-            getSubscribeKpiMethod(),
+            getSetKpiSubscriptionMethod(),
             io.grpc.stub.ServerCalls.asyncServerStreamingCall(
               new MethodHandlers<
                 monitoring.Monitoring.SubsDescriptor,
                 monitoring.Monitoring.KpiList>(
-                  this, METHODID_SUBSCRIBE_KPI)))
+                  this, METHODID_SET_KPI_SUBSCRIPTION)))
           .addMethod(
             getGetSubsDescriptorMethod(),
             io.grpc.stub.ServerCalls.asyncUnaryCall(
@@ -833,26 +819,19 @@ public final class MonitoringServiceGrpc {
                 monitoring.Monitoring.SubsIDList>(
                   this, METHODID_GET_SUBSCRIPTIONS)))
           .addMethod(
-            getEditKpiSubscriptionMethod(),
+            getDeleteSubscriptionMethod(),
             io.grpc.stub.ServerCalls.asyncUnaryCall(
               new MethodHandlers<
-                monitoring.Monitoring.SubsDescriptor,
+                monitoring.Monitoring.SubscriptionID,
                 context.ContextOuterClass.Empty>(
-                  this, METHODID_EDIT_KPI_SUBSCRIPTION)))
+                  this, METHODID_DELETE_SUBSCRIPTION)))
           .addMethod(
-            getCreateKpiAlarmMethod(),
+            getSetKpiAlarmMethod(),
             io.grpc.stub.ServerCalls.asyncUnaryCall(
               new MethodHandlers<
                 monitoring.Monitoring.AlarmDescriptor,
                 monitoring.Monitoring.AlarmID>(
-                  this, METHODID_CREATE_KPI_ALARM)))
-          .addMethod(
-            getEditKpiAlarmMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                monitoring.Monitoring.AlarmDescriptor,
-                context.ContextOuterClass.Empty>(
-                  this, METHODID_EDIT_KPI_ALARM)))
+                  this, METHODID_SET_KPI_ALARM)))
           .addMethod(
             getGetAlarmsMethod(),
             io.grpc.stub.ServerCalls.asyncUnaryCall(
@@ -871,9 +850,30 @@ public final class MonitoringServiceGrpc {
             getGetAlarmResponseStreamMethod(),
             io.grpc.stub.ServerCalls.asyncServerStreamingCall(
               new MethodHandlers<
-                monitoring.Monitoring.AlarmID,
+                monitoring.Monitoring.AlarmSubscription,
                 monitoring.Monitoring.AlarmResponse>(
                   this, METHODID_GET_ALARM_RESPONSE_STREAM)))
+          .addMethod(
+            getDeleteAlarmMethod(),
+            io.grpc.stub.ServerCalls.asyncUnaryCall(
+              new MethodHandlers<
+                monitoring.Monitoring.AlarmID,
+                context.ContextOuterClass.Empty>(
+                  this, METHODID_DELETE_ALARM)))
+          .addMethod(
+            getGetStreamKpiMethod(),
+            io.grpc.stub.ServerCalls.asyncServerStreamingCall(
+              new MethodHandlers<
+                monitoring.Monitoring.KpiId,
+                monitoring.Monitoring.Kpi>(
+                  this, METHODID_GET_STREAM_KPI)))
+          .addMethod(
+            getGetInstantKpiMethod(),
+            io.grpc.stub.ServerCalls.asyncUnaryCall(
+              new MethodHandlers<
+                monitoring.Monitoring.KpiId,
+                monitoring.Monitoring.KpiList>(
+                  this, METHODID_GET_INSTANT_KPI)))
           .build();
     }
   }
@@ -894,26 +894,26 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public void createKpi(monitoring.Monitoring.KpiDescriptor request,
+    public void setKpi(monitoring.Monitoring.KpiDescriptor request,
         io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId> responseObserver) {
       io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getCreateKpiMethod(), getCallOptions()), request, responseObserver);
+          getChannel().newCall(getSetKpiMethod(), getCallOptions()), request, responseObserver);
     }
 
     /**
      */
-    public void editKpiDescriptor(monitoring.Monitoring.EditedKpiDescriptor request,
+    public void deleteKpi(monitoring.Monitoring.KpiId request,
         io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
       io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getEditKpiDescriptorMethod(), getCallOptions()), request, responseObserver);
+          getChannel().newCall(getDeleteKpiMethod(), getCallOptions()), request, responseObserver);
     }
 
     /**
      */
-    public void deleteKpi(monitoring.Monitoring.KpiId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+    public void getKpiDescriptor(monitoring.Monitoring.KpiId request,
+        io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor> responseObserver) {
       io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getDeleteKpiMethod(), getCallOptions()), request, responseObserver);
+          getChannel().newCall(getGetKpiDescriptorMethod(), getCallOptions()), request, responseObserver);
     }
 
     /**
@@ -924,22 +924,6 @@ public final class MonitoringServiceGrpc {
           getChannel().newCall(getGetKpiDescriptorListMethod(), getCallOptions()), request, responseObserver);
     }
 
-    /**
-     */
-    public void createBundleKpi(monitoring.Monitoring.BundleKpiDescriptor request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getCreateBundleKpiMethod(), getCallOptions()), request, responseObserver);
-    }
-
-    /**
-     */
-    public void getKpiDescriptor(monitoring.Monitoring.KpiId request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetKpiDescriptorMethod(), getCallOptions()), request, responseObserver);
-    }
-
     /**
      */
     public void includeKpi(monitoring.Monitoring.Kpi request,
@@ -966,10 +950,10 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public void subscribeKpi(monitoring.Monitoring.SubsDescriptor request,
+    public void setKpiSubscription(monitoring.Monitoring.SubsDescriptor request,
         io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiList> responseObserver) {
       io.grpc.stub.ClientCalls.asyncServerStreamingCall(
-          getChannel().newCall(getSubscribeKpiMethod(), getCallOptions()), request, responseObserver);
+          getChannel().newCall(getSetKpiSubscriptionMethod(), getCallOptions()), request, responseObserver);
     }
 
     /**
@@ -990,26 +974,18 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public void editKpiSubscription(monitoring.Monitoring.SubsDescriptor request,
+    public void deleteSubscription(monitoring.Monitoring.SubscriptionID request,
         io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
       io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getEditKpiSubscriptionMethod(), getCallOptions()), request, responseObserver);
+          getChannel().newCall(getDeleteSubscriptionMethod(), getCallOptions()), request, responseObserver);
     }
 
     /**
      */
-    public void createKpiAlarm(monitoring.Monitoring.AlarmDescriptor request,
+    public void setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request,
         io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmID> responseObserver) {
       io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getCreateKpiAlarmMethod(), getCallOptions()), request, responseObserver);
-    }
-
-    /**
-     */
-    public void editKpiAlarm(monitoring.Monitoring.AlarmDescriptor request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getEditKpiAlarmMethod(), getCallOptions()), request, responseObserver);
+          getChannel().newCall(getSetKpiAlarmMethod(), getCallOptions()), request, responseObserver);
     }
 
     /**
@@ -1030,11 +1006,35 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public void getAlarmResponseStream(monitoring.Monitoring.AlarmID request,
+    public void getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request,
         io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmResponse> responseObserver) {
       io.grpc.stub.ClientCalls.asyncServerStreamingCall(
           getChannel().newCall(getGetAlarmResponseStreamMethod(), getCallOptions()), request, responseObserver);
     }
+
+    /**
+     */
+    public void deleteAlarm(monitoring.Monitoring.AlarmID request,
+        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+      io.grpc.stub.ClientCalls.asyncUnaryCall(
+          getChannel().newCall(getDeleteAlarmMethod(), getCallOptions()), request, responseObserver);
+    }
+
+    /**
+     */
+    public void getStreamKpi(monitoring.Monitoring.KpiId request,
+        io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
+      io.grpc.stub.ClientCalls.asyncServerStreamingCall(
+          getChannel().newCall(getGetStreamKpiMethod(), getCallOptions()), request, responseObserver);
+    }
+
+    /**
+     */
+    public void getInstantKpi(monitoring.Monitoring.KpiId request,
+        io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiList> responseObserver) {
+      io.grpc.stub.ClientCalls.asyncUnaryCall(
+          getChannel().newCall(getGetInstantKpiMethod(), getCallOptions()), request, responseObserver);
+    }
   }
 
   /**
@@ -1053,16 +1053,9 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public monitoring.Monitoring.KpiId createKpi(monitoring.Monitoring.KpiDescriptor request) {
+    public monitoring.Monitoring.KpiId setKpi(monitoring.Monitoring.KpiDescriptor request) {
       return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getCreateKpiMethod(), getCallOptions(), request);
-    }
-
-    /**
-     */
-    public context.ContextOuterClass.Empty editKpiDescriptor(monitoring.Monitoring.EditedKpiDescriptor request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getEditKpiDescriptorMethod(), getCallOptions(), request);
+          getChannel(), getSetKpiMethod(), getCallOptions(), request);
     }
 
     /**
@@ -1074,23 +1067,16 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public monitoring.Monitoring.KpiDescriptorList getKpiDescriptorList(context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetKpiDescriptorListMethod(), getCallOptions(), request);
-    }
-
-    /**
-     */
-    public monitoring.Monitoring.KpiId createBundleKpi(monitoring.Monitoring.BundleKpiDescriptor request) {
+    public monitoring.Monitoring.KpiDescriptor getKpiDescriptor(monitoring.Monitoring.KpiId request) {
       return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getCreateBundleKpiMethod(), getCallOptions(), request);
+          getChannel(), getGetKpiDescriptorMethod(), getCallOptions(), request);
     }
 
     /**
      */
-    public monitoring.Monitoring.KpiDescriptor getKpiDescriptor(monitoring.Monitoring.KpiId request) {
+    public monitoring.Monitoring.KpiDescriptorList getKpiDescriptorList(context.ContextOuterClass.Empty request) {
       return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetKpiDescriptorMethod(), getCallOptions(), request);
+          getChannel(), getGetKpiDescriptorListMethod(), getCallOptions(), request);
     }
 
     /**
@@ -1116,10 +1102,10 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public java.util.Iterator<monitoring.Monitoring.KpiList> subscribeKpi(
+    public java.util.Iterator<monitoring.Monitoring.KpiList> setKpiSubscription(
         monitoring.Monitoring.SubsDescriptor request) {
       return io.grpc.stub.ClientCalls.blockingServerStreamingCall(
-          getChannel(), getSubscribeKpiMethod(), getCallOptions(), request);
+          getChannel(), getSetKpiSubscriptionMethod(), getCallOptions(), request);
     }
 
     /**
@@ -1138,23 +1124,16 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public context.ContextOuterClass.Empty editKpiSubscription(monitoring.Monitoring.SubsDescriptor request) {
+    public context.ContextOuterClass.Empty deleteSubscription(monitoring.Monitoring.SubscriptionID request) {
       return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getEditKpiSubscriptionMethod(), getCallOptions(), request);
+          getChannel(), getDeleteSubscriptionMethod(), getCallOptions(), request);
     }
 
     /**
      */
-    public monitoring.Monitoring.AlarmID createKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
+    public monitoring.Monitoring.AlarmID setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
       return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getCreateKpiAlarmMethod(), getCallOptions(), request);
-    }
-
-    /**
-     */
-    public context.ContextOuterClass.Empty editKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getEditKpiAlarmMethod(), getCallOptions(), request);
+          getChannel(), getSetKpiAlarmMethod(), getCallOptions(), request);
     }
 
     /**
@@ -1174,10 +1153,32 @@ public final class MonitoringServiceGrpc {
     /**
      */
     public java.util.Iterator<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(
-        monitoring.Monitoring.AlarmID request) {
+        monitoring.Monitoring.AlarmSubscription request) {
       return io.grpc.stub.ClientCalls.blockingServerStreamingCall(
           getChannel(), getGetAlarmResponseStreamMethod(), getCallOptions(), request);
     }
+
+    /**
+     */
+    public context.ContextOuterClass.Empty deleteAlarm(monitoring.Monitoring.AlarmID request) {
+      return io.grpc.stub.ClientCalls.blockingUnaryCall(
+          getChannel(), getDeleteAlarmMethod(), getCallOptions(), request);
+    }
+
+    /**
+     */
+    public java.util.Iterator<monitoring.Monitoring.Kpi> getStreamKpi(
+        monitoring.Monitoring.KpiId request) {
+      return io.grpc.stub.ClientCalls.blockingServerStreamingCall(
+          getChannel(), getGetStreamKpiMethod(), getCallOptions(), request);
+    }
+
+    /**
+     */
+    public monitoring.Monitoring.KpiList getInstantKpi(monitoring.Monitoring.KpiId request) {
+      return io.grpc.stub.ClientCalls.blockingUnaryCall(
+          getChannel(), getGetInstantKpiMethod(), getCallOptions(), request);
+    }
   }
 
   /**
@@ -1196,26 +1197,26 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.KpiId> createKpi(
+    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.KpiId> setKpi(
         monitoring.Monitoring.KpiDescriptor request) {
       return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getCreateKpiMethod(), getCallOptions()), request);
+          getChannel().newCall(getSetKpiMethod(), getCallOptions()), request);
     }
 
     /**
      */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> editKpiDescriptor(
-        monitoring.Monitoring.EditedKpiDescriptor request) {
+    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> deleteKpi(
+        monitoring.Monitoring.KpiId request) {
       return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getEditKpiDescriptorMethod(), getCallOptions()), request);
+          getChannel().newCall(getDeleteKpiMethod(), getCallOptions()), request);
     }
 
     /**
      */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> deleteKpi(
+    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.KpiDescriptor> getKpiDescriptor(
         monitoring.Monitoring.KpiId request) {
       return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getDeleteKpiMethod(), getCallOptions()), request);
+          getChannel().newCall(getGetKpiDescriptorMethod(), getCallOptions()), request);
     }
 
     /**
@@ -1226,22 +1227,6 @@ public final class MonitoringServiceGrpc {
           getChannel().newCall(getGetKpiDescriptorListMethod(), getCallOptions()), request);
     }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.KpiId> createBundleKpi(
-        monitoring.Monitoring.BundleKpiDescriptor request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getCreateBundleKpiMethod(), getCallOptions()), request);
-    }
-
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.KpiDescriptor> getKpiDescriptor(
-        monitoring.Monitoring.KpiId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetKpiDescriptorMethod(), getCallOptions()), request);
-    }
-
     /**
      */
     public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> includeKpi(
@@ -1284,26 +1269,18 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> editKpiSubscription(
-        monitoring.Monitoring.SubsDescriptor request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getEditKpiSubscriptionMethod(), getCallOptions()), request);
-    }
-
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.AlarmID> createKpiAlarm(
-        monitoring.Monitoring.AlarmDescriptor request) {
+    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> deleteSubscription(
+        monitoring.Monitoring.SubscriptionID request) {
       return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getCreateKpiAlarmMethod(), getCallOptions()), request);
+          getChannel().newCall(getDeleteSubscriptionMethod(), getCallOptions()), request);
     }
 
     /**
      */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> editKpiAlarm(
+    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.AlarmID> setKpiAlarm(
         monitoring.Monitoring.AlarmDescriptor request) {
       return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getEditKpiAlarmMethod(), getCallOptions()), request);
+          getChannel().newCall(getSetKpiAlarmMethod(), getCallOptions()), request);
     }
 
     /**
@@ -1321,26 +1298,42 @@ public final class MonitoringServiceGrpc {
       return io.grpc.stub.ClientCalls.futureUnaryCall(
           getChannel().newCall(getGetAlarmDescriptorMethod(), getCallOptions()), request);
     }
+
+    /**
+     */
+    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> deleteAlarm(
+        monitoring.Monitoring.AlarmID request) {
+      return io.grpc.stub.ClientCalls.futureUnaryCall(
+          getChannel().newCall(getDeleteAlarmMethod(), getCallOptions()), request);
+    }
+
+    /**
+     */
+    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.KpiList> getInstantKpi(
+        monitoring.Monitoring.KpiId request) {
+      return io.grpc.stub.ClientCalls.futureUnaryCall(
+          getChannel().newCall(getGetInstantKpiMethod(), getCallOptions()), request);
+    }
   }
 
-  private static final int METHODID_CREATE_KPI = 0;
-  private static final int METHODID_EDIT_KPI_DESCRIPTOR = 1;
-  private static final int METHODID_DELETE_KPI = 2;
+  private static final int METHODID_SET_KPI = 0;
+  private static final int METHODID_DELETE_KPI = 1;
+  private static final int METHODID_GET_KPI_DESCRIPTOR = 2;
   private static final int METHODID_GET_KPI_DESCRIPTOR_LIST = 3;
-  private static final int METHODID_CREATE_BUNDLE_KPI = 4;
-  private static final int METHODID_GET_KPI_DESCRIPTOR = 5;
-  private static final int METHODID_INCLUDE_KPI = 6;
-  private static final int METHODID_MONITOR_KPI = 7;
-  private static final int METHODID_QUERY_KPI_DATA = 8;
-  private static final int METHODID_SUBSCRIBE_KPI = 9;
-  private static final int METHODID_GET_SUBS_DESCRIPTOR = 10;
-  private static final int METHODID_GET_SUBSCRIPTIONS = 11;
-  private static final int METHODID_EDIT_KPI_SUBSCRIPTION = 12;
-  private static final int METHODID_CREATE_KPI_ALARM = 13;
-  private static final int METHODID_EDIT_KPI_ALARM = 14;
-  private static final int METHODID_GET_ALARMS = 15;
-  private static final int METHODID_GET_ALARM_DESCRIPTOR = 16;
-  private static final int METHODID_GET_ALARM_RESPONSE_STREAM = 17;
+  private static final int METHODID_INCLUDE_KPI = 4;
+  private static final int METHODID_MONITOR_KPI = 5;
+  private static final int METHODID_QUERY_KPI_DATA = 6;
+  private static final int METHODID_SET_KPI_SUBSCRIPTION = 7;
+  private static final int METHODID_GET_SUBS_DESCRIPTOR = 8;
+  private static final int METHODID_GET_SUBSCRIPTIONS = 9;
+  private static final int METHODID_DELETE_SUBSCRIPTION = 10;
+  private static final int METHODID_SET_KPI_ALARM = 11;
+  private static final int METHODID_GET_ALARMS = 12;
+  private static final int METHODID_GET_ALARM_DESCRIPTOR = 13;
+  private static final int METHODID_GET_ALARM_RESPONSE_STREAM = 14;
+  private static final int METHODID_DELETE_ALARM = 15;
+  private static final int METHODID_GET_STREAM_KPI = 16;
+  private static final int METHODID_GET_INSTANT_KPI = 17;
 
   private static final class MethodHandlers<Req, Resp> implements
       io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
@@ -1359,30 +1352,22 @@ public final class MonitoringServiceGrpc {
     @java.lang.SuppressWarnings("unchecked")
     public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
       switch (methodId) {
-        case METHODID_CREATE_KPI:
-          serviceImpl.createKpi((monitoring.Monitoring.KpiDescriptor) request,
+        case METHODID_SET_KPI:
+          serviceImpl.setKpi((monitoring.Monitoring.KpiDescriptor) request,
               (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId>) responseObserver);
           break;
-        case METHODID_EDIT_KPI_DESCRIPTOR:
-          serviceImpl.editKpiDescriptor((monitoring.Monitoring.EditedKpiDescriptor) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
-          break;
         case METHODID_DELETE_KPI:
           serviceImpl.deleteKpi((monitoring.Monitoring.KpiId) request,
               (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
           break;
-        case METHODID_GET_KPI_DESCRIPTOR_LIST:
-          serviceImpl.getKpiDescriptorList((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptorList>) responseObserver);
-          break;
-        case METHODID_CREATE_BUNDLE_KPI:
-          serviceImpl.createBundleKpi((monitoring.Monitoring.BundleKpiDescriptor) request,
-              (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId>) responseObserver);
-          break;
         case METHODID_GET_KPI_DESCRIPTOR:
           serviceImpl.getKpiDescriptor((monitoring.Monitoring.KpiId) request,
               (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor>) responseObserver);
           break;
+        case METHODID_GET_KPI_DESCRIPTOR_LIST:
+          serviceImpl.getKpiDescriptorList((context.ContextOuterClass.Empty) request,
+              (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptorList>) responseObserver);
+          break;
         case METHODID_INCLUDE_KPI:
           serviceImpl.includeKpi((monitoring.Monitoring.Kpi) request,
               (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
@@ -1395,8 +1380,8 @@ public final class MonitoringServiceGrpc {
           serviceImpl.queryKpiData((monitoring.Monitoring.KpiQuery) request,
               (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiList>) responseObserver);
           break;
-        case METHODID_SUBSCRIBE_KPI:
-          serviceImpl.subscribeKpi((monitoring.Monitoring.SubsDescriptor) request,
+        case METHODID_SET_KPI_SUBSCRIPTION:
+          serviceImpl.setKpiSubscription((monitoring.Monitoring.SubsDescriptor) request,
               (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiList>) responseObserver);
           break;
         case METHODID_GET_SUBS_DESCRIPTOR:
@@ -1407,18 +1392,14 @@ public final class MonitoringServiceGrpc {
           serviceImpl.getSubscriptions((context.ContextOuterClass.Empty) request,
               (io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsIDList>) responseObserver);
           break;
-        case METHODID_EDIT_KPI_SUBSCRIPTION:
-          serviceImpl.editKpiSubscription((monitoring.Monitoring.SubsDescriptor) request,
+        case METHODID_DELETE_SUBSCRIPTION:
+          serviceImpl.deleteSubscription((monitoring.Monitoring.SubscriptionID) request,
               (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
           break;
-        case METHODID_CREATE_KPI_ALARM:
-          serviceImpl.createKpiAlarm((monitoring.Monitoring.AlarmDescriptor) request,
+        case METHODID_SET_KPI_ALARM:
+          serviceImpl.setKpiAlarm((monitoring.Monitoring.AlarmDescriptor) request,
               (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmID>) responseObserver);
           break;
-        case METHODID_EDIT_KPI_ALARM:
-          serviceImpl.editKpiAlarm((monitoring.Monitoring.AlarmDescriptor) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
-          break;
         case METHODID_GET_ALARMS:
           serviceImpl.getAlarms((context.ContextOuterClass.Empty) request,
               (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmIDList>) responseObserver);
@@ -1428,9 +1409,21 @@ public final class MonitoringServiceGrpc {
               (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmDescriptor>) responseObserver);
           break;
         case METHODID_GET_ALARM_RESPONSE_STREAM:
-          serviceImpl.getAlarmResponseStream((monitoring.Monitoring.AlarmID) request,
+          serviceImpl.getAlarmResponseStream((monitoring.Monitoring.AlarmSubscription) request,
               (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmResponse>) responseObserver);
           break;
+        case METHODID_DELETE_ALARM:
+          serviceImpl.deleteAlarm((monitoring.Monitoring.AlarmID) request,
+              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
+          break;
+        case METHODID_GET_STREAM_KPI:
+          serviceImpl.getStreamKpi((monitoring.Monitoring.KpiId) request,
+              (io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi>) responseObserver);
+          break;
+        case METHODID_GET_INSTANT_KPI:
+          serviceImpl.getInstantKpi((monitoring.Monitoring.KpiId) request,
+              (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiList>) responseObserver);
+          break;
         default:
           throw new AssertionError();
       }
@@ -1492,24 +1485,24 @@ public final class MonitoringServiceGrpc {
         if (result == null) {
           serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
               .setSchemaDescriptor(new MonitoringServiceFileDescriptorSupplier())
-              .addMethod(getCreateKpiMethod())
-              .addMethod(getEditKpiDescriptorMethod())
+              .addMethod(getSetKpiMethod())
               .addMethod(getDeleteKpiMethod())
-              .addMethod(getGetKpiDescriptorListMethod())
-              .addMethod(getCreateBundleKpiMethod())
               .addMethod(getGetKpiDescriptorMethod())
+              .addMethod(getGetKpiDescriptorListMethod())
               .addMethod(getIncludeKpiMethod())
               .addMethod(getMonitorKpiMethod())
               .addMethod(getQueryKpiDataMethod())
-              .addMethod(getSubscribeKpiMethod())
+              .addMethod(getSetKpiSubscriptionMethod())
               .addMethod(getGetSubsDescriptorMethod())
               .addMethod(getGetSubscriptionsMethod())
-              .addMethod(getEditKpiSubscriptionMethod())
-              .addMethod(getCreateKpiAlarmMethod())
-              .addMethod(getEditKpiAlarmMethod())
+              .addMethod(getDeleteSubscriptionMethod())
+              .addMethod(getSetKpiAlarmMethod())
               .addMethod(getGetAlarmsMethod())
               .addMethod(getGetAlarmDescriptorMethod())
               .addMethod(getGetAlarmResponseStreamMethod())
+              .addMethod(getDeleteAlarmMethod())
+              .addMethod(getGetStreamKpiMethod())
+              .addMethod(getGetInstantKpiMethod())
               .build();
         }
       }
diff --git a/src/policy/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java b/src/policy/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java
index 46f442b743ee176a83a416fe13711beda6baf937..d663b38c923a2b5401642db4e697e16be4720f05 100644
--- a/src/policy/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java
+++ b/src/policy/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java
@@ -36,13 +36,8 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
         }
 
         
-        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> createKpi(monitoring.Monitoring.KpiDescriptor request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::createKpi);
-        }
-
-        
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> editKpiDescriptor(monitoring.Monitoring.EditedKpiDescriptor request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::editKpiDescriptor);
+        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> setKpi(monitoring.Monitoring.KpiDescriptor request) {
+            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::setKpi);
         }
 
         
@@ -51,18 +46,13 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
         }
 
         
-        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptorList> getKpiDescriptorList(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getKpiDescriptorList);
-        }
-
-        
-        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> createBundleKpi(monitoring.Monitoring.BundleKpiDescriptor request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::createBundleKpi);
+        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptor> getKpiDescriptor(monitoring.Monitoring.KpiId request) {
+            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getKpiDescriptor);
         }
 
         
-        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptor> getKpiDescriptor(monitoring.Monitoring.KpiId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getKpiDescriptor);
+        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptorList> getKpiDescriptorList(context.ContextOuterClass.Empty request) {
+            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getKpiDescriptorList);
         }
 
         
@@ -91,18 +81,13 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
         }
 
         
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> editKpiSubscription(monitoring.Monitoring.SubsDescriptor request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::editKpiSubscription);
-        }
-
-        
-        public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmID> createKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::createKpiAlarm);
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteSubscription(monitoring.Monitoring.SubscriptionID request) {
+            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::deleteSubscription);
         }
 
         
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> editKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::editKpiAlarm);
+        public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmID> setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
+            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::setKpiAlarm);
         }
 
         
@@ -116,15 +101,30 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
         }
 
         
-        public io.smallrye.mutiny.Multi<monitoring.Monitoring.KpiList> subscribeKpi(monitoring.Monitoring.SubsDescriptor request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToMany(request, delegateStub::subscribeKpi);
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteAlarm(monitoring.Monitoring.AlarmID request) {
+            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::deleteAlarm);
+        }
+
+        
+        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiList> getInstantKpi(monitoring.Monitoring.KpiId request) {
+            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getInstantKpi);
+        }
+
+        
+        public io.smallrye.mutiny.Multi<monitoring.Monitoring.KpiList> setKpiSubscription(monitoring.Monitoring.SubsDescriptor request) {
+            return io.quarkus.grpc.runtime.ClientCalls.oneToMany(request, delegateStub::setKpiSubscription);
         }
 
         
-        public io.smallrye.mutiny.Multi<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(monitoring.Monitoring.AlarmID request) {
+        public io.smallrye.mutiny.Multi<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request) {
             return io.quarkus.grpc.runtime.ClientCalls.oneToMany(request, delegateStub::getAlarmResponseStream);
         }
 
+        
+        public io.smallrye.mutiny.Multi<monitoring.Monitoring.Kpi> getStreamKpi(monitoring.Monitoring.KpiId request) {
+            return io.quarkus.grpc.runtime.ClientCalls.oneToMany(request, delegateStub::getStreamKpi);
+        }
+
     }
 
     
@@ -143,17 +143,17 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
 
 
         
-        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> createKpi(monitoring.Monitoring.KpiDescriptor request) {
+        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> setKpi(monitoring.Monitoring.KpiDescriptor request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> editKpiDescriptor(monitoring.Monitoring.EditedKpiDescriptor request) {
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteKpi(monitoring.Monitoring.KpiId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteKpi(monitoring.Monitoring.KpiId request) {
+        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptor> getKpiDescriptor(monitoring.Monitoring.KpiId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
@@ -163,98 +163,98 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
         }
 
         
-        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> createBundleKpi(monitoring.Monitoring.BundleKpiDescriptor request) {
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> includeKpi(monitoring.Monitoring.Kpi request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptor> getKpiDescriptor(monitoring.Monitoring.KpiId request) {
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> monitorKpi(monitoring.Monitoring.MonitorKpiRequest request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> includeKpi(monitoring.Monitoring.Kpi request) {
+        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiList> queryKpiData(monitoring.Monitoring.KpiQuery request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> monitorKpi(monitoring.Monitoring.MonitorKpiRequest request) {
+        public io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsDescriptor> getSubsDescriptor(monitoring.Monitoring.SubscriptionID request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiList> queryKpiData(monitoring.Monitoring.KpiQuery request) {
+        public io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsIDList> getSubscriptions(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsDescriptor> getSubsDescriptor(monitoring.Monitoring.SubscriptionID request) {
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteSubscription(monitoring.Monitoring.SubscriptionID request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsIDList> getSubscriptions(context.ContextOuterClass.Empty request) {
+        public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmID> setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> editKpiSubscription(monitoring.Monitoring.SubsDescriptor request) {
+        public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmIDList> getAlarms(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmID> createKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
+        public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptor(monitoring.Monitoring.AlarmID request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> editKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteAlarm(monitoring.Monitoring.AlarmID request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmIDList> getAlarms(context.ContextOuterClass.Empty request) {
+        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiList> getInstantKpi(monitoring.Monitoring.KpiId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptor(monitoring.Monitoring.AlarmID request) {
+        public io.smallrye.mutiny.Multi<monitoring.Monitoring.KpiList> setKpiSubscription(monitoring.Monitoring.SubsDescriptor request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Multi<monitoring.Monitoring.KpiList> subscribeKpi(monitoring.Monitoring.SubsDescriptor request) {
+        public io.smallrye.mutiny.Multi<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Multi<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(monitoring.Monitoring.AlarmID request) {
+        public io.smallrye.mutiny.Multi<monitoring.Monitoring.Kpi> getStreamKpi(monitoring.Monitoring.KpiId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
             return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
                     .addMethod(
-                            monitoring.MonitoringServiceGrpc.getCreateKpiMethod(),
+                            monitoring.MonitoringServiceGrpc.getSetKpiMethod(),
                             asyncUnaryCall(
                                     new MethodHandlers<
                                             monitoring.Monitoring.KpiDescriptor,
                                             monitoring.Monitoring.KpiId>(
-                                            this, METHODID_CREATE_KPI, compression)))
+                                            this, METHODID_SET_KPI, compression)))
                     .addMethod(
-                            monitoring.MonitoringServiceGrpc.getEditKpiDescriptorMethod(),
+                            monitoring.MonitoringServiceGrpc.getDeleteKpiMethod(),
                             asyncUnaryCall(
                                     new MethodHandlers<
-                                            monitoring.Monitoring.EditedKpiDescriptor,
+                                            monitoring.Monitoring.KpiId,
                                             context.ContextOuterClass.Empty>(
-                                            this, METHODID_EDIT_KPI_DESCRIPTOR, compression)))
+                                            this, METHODID_DELETE_KPI, compression)))
                     .addMethod(
-                            monitoring.MonitoringServiceGrpc.getDeleteKpiMethod(),
+                            monitoring.MonitoringServiceGrpc.getGetKpiDescriptorMethod(),
                             asyncUnaryCall(
                                     new MethodHandlers<
                                             monitoring.Monitoring.KpiId,
-                                            context.ContextOuterClass.Empty>(
-                                            this, METHODID_DELETE_KPI, compression)))
+                                            monitoring.Monitoring.KpiDescriptor>(
+                                            this, METHODID_GET_KPI_DESCRIPTOR, compression)))
                     .addMethod(
                             monitoring.MonitoringServiceGrpc.getGetKpiDescriptorListMethod(),
                             asyncUnaryCall(
@@ -262,20 +262,6 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
                                             context.ContextOuterClass.Empty,
                                             monitoring.Monitoring.KpiDescriptorList>(
                                             this, METHODID_GET_KPI_DESCRIPTOR_LIST, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getCreateBundleKpiMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.BundleKpiDescriptor,
-                                            monitoring.Monitoring.KpiId>(
-                                            this, METHODID_CREATE_BUNDLE_KPI, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getGetKpiDescriptorMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.KpiId,
-                                            monitoring.Monitoring.KpiDescriptor>(
-                                            this, METHODID_GET_KPI_DESCRIPTOR, compression)))
                     .addMethod(
                             monitoring.MonitoringServiceGrpc.getIncludeKpiMethod(),
                             asyncUnaryCall(
@@ -298,12 +284,12 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
                                             monitoring.Monitoring.KpiList>(
                                             this, METHODID_QUERY_KPI_DATA, compression)))
                     .addMethod(
-                            monitoring.MonitoringServiceGrpc.getSubscribeKpiMethod(),
+                            monitoring.MonitoringServiceGrpc.getSetKpiSubscriptionMethod(),
                             asyncServerStreamingCall(
                                     new MethodHandlers<
                                             monitoring.Monitoring.SubsDescriptor,
                                             monitoring.Monitoring.KpiList>(
-                                            this, METHODID_SUBSCRIBE_KPI, compression)))
+                                            this, METHODID_SET_KPI_SUBSCRIPTION, compression)))
                     .addMethod(
                             monitoring.MonitoringServiceGrpc.getGetSubsDescriptorMethod(),
                             asyncUnaryCall(
@@ -319,26 +305,19 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
                                             monitoring.Monitoring.SubsIDList>(
                                             this, METHODID_GET_SUBSCRIPTIONS, compression)))
                     .addMethod(
-                            monitoring.MonitoringServiceGrpc.getEditKpiSubscriptionMethod(),
+                            monitoring.MonitoringServiceGrpc.getDeleteSubscriptionMethod(),
                             asyncUnaryCall(
                                     new MethodHandlers<
-                                            monitoring.Monitoring.SubsDescriptor,
+                                            monitoring.Monitoring.SubscriptionID,
                                             context.ContextOuterClass.Empty>(
-                                            this, METHODID_EDIT_KPI_SUBSCRIPTION, compression)))
+                                            this, METHODID_DELETE_SUBSCRIPTION, compression)))
                     .addMethod(
-                            monitoring.MonitoringServiceGrpc.getCreateKpiAlarmMethod(),
+                            monitoring.MonitoringServiceGrpc.getSetKpiAlarmMethod(),
                             asyncUnaryCall(
                                     new MethodHandlers<
                                             monitoring.Monitoring.AlarmDescriptor,
                                             monitoring.Monitoring.AlarmID>(
-                                            this, METHODID_CREATE_KPI_ALARM, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getEditKpiAlarmMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.AlarmDescriptor,
-                                            context.ContextOuterClass.Empty>(
-                                            this, METHODID_EDIT_KPI_ALARM, compression)))
+                                            this, METHODID_SET_KPI_ALARM, compression)))
                     .addMethod(
                             monitoring.MonitoringServiceGrpc.getGetAlarmsMethod(),
                             asyncUnaryCall(
@@ -357,31 +336,52 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
                             monitoring.MonitoringServiceGrpc.getGetAlarmResponseStreamMethod(),
                             asyncServerStreamingCall(
                                     new MethodHandlers<
-                                            monitoring.Monitoring.AlarmID,
+                                            monitoring.Monitoring.AlarmSubscription,
                                             monitoring.Monitoring.AlarmResponse>(
                                             this, METHODID_GET_ALARM_RESPONSE_STREAM, compression)))
+                    .addMethod(
+                            monitoring.MonitoringServiceGrpc.getDeleteAlarmMethod(),
+                            asyncUnaryCall(
+                                    new MethodHandlers<
+                                            monitoring.Monitoring.AlarmID,
+                                            context.ContextOuterClass.Empty>(
+                                            this, METHODID_DELETE_ALARM, compression)))
+                    .addMethod(
+                            monitoring.MonitoringServiceGrpc.getGetStreamKpiMethod(),
+                            asyncServerStreamingCall(
+                                    new MethodHandlers<
+                                            monitoring.Monitoring.KpiId,
+                                            monitoring.Monitoring.Kpi>(
+                                            this, METHODID_GET_STREAM_KPI, compression)))
+                    .addMethod(
+                            monitoring.MonitoringServiceGrpc.getGetInstantKpiMethod(),
+                            asyncUnaryCall(
+                                    new MethodHandlers<
+                                            monitoring.Monitoring.KpiId,
+                                            monitoring.Monitoring.KpiList>(
+                                            this, METHODID_GET_INSTANT_KPI, compression)))
                     .build();
         }
     }
 
-    private static final int METHODID_CREATE_KPI = 0;
-    private static final int METHODID_EDIT_KPI_DESCRIPTOR = 1;
-    private static final int METHODID_DELETE_KPI = 2;
+    private static final int METHODID_SET_KPI = 0;
+    private static final int METHODID_DELETE_KPI = 1;
+    private static final int METHODID_GET_KPI_DESCRIPTOR = 2;
     private static final int METHODID_GET_KPI_DESCRIPTOR_LIST = 3;
-    private static final int METHODID_CREATE_BUNDLE_KPI = 4;
-    private static final int METHODID_GET_KPI_DESCRIPTOR = 5;
-    private static final int METHODID_INCLUDE_KPI = 6;
-    private static final int METHODID_MONITOR_KPI = 7;
-    private static final int METHODID_QUERY_KPI_DATA = 8;
-    private static final int METHODID_SUBSCRIBE_KPI = 9;
-    private static final int METHODID_GET_SUBS_DESCRIPTOR = 10;
-    private static final int METHODID_GET_SUBSCRIPTIONS = 11;
-    private static final int METHODID_EDIT_KPI_SUBSCRIPTION = 12;
-    private static final int METHODID_CREATE_KPI_ALARM = 13;
-    private static final int METHODID_EDIT_KPI_ALARM = 14;
-    private static final int METHODID_GET_ALARMS = 15;
-    private static final int METHODID_GET_ALARM_DESCRIPTOR = 16;
-    private static final int METHODID_GET_ALARM_RESPONSE_STREAM = 17;
+    private static final int METHODID_INCLUDE_KPI = 4;
+    private static final int METHODID_MONITOR_KPI = 5;
+    private static final int METHODID_QUERY_KPI_DATA = 6;
+    private static final int METHODID_SET_KPI_SUBSCRIPTION = 7;
+    private static final int METHODID_GET_SUBS_DESCRIPTOR = 8;
+    private static final int METHODID_GET_SUBSCRIPTIONS = 9;
+    private static final int METHODID_DELETE_SUBSCRIPTION = 10;
+    private static final int METHODID_SET_KPI_ALARM = 11;
+    private static final int METHODID_GET_ALARMS = 12;
+    private static final int METHODID_GET_ALARM_DESCRIPTOR = 13;
+    private static final int METHODID_GET_ALARM_RESPONSE_STREAM = 14;
+    private static final int METHODID_DELETE_ALARM = 15;
+    private static final int METHODID_GET_STREAM_KPI = 16;
+    private static final int METHODID_GET_INSTANT_KPI = 17;
 
     private static final class MethodHandlers<Req, Resp> implements
             io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
@@ -402,17 +402,11 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
         @java.lang.SuppressWarnings("unchecked")
         public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
             switch (methodId) {
-                case METHODID_CREATE_KPI:
+                case METHODID_SET_KPI:
                     io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.KpiDescriptor) request,
                             (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId>) responseObserver,
                             compression,
-                            serviceImpl::createKpi);
-                    break;
-                case METHODID_EDIT_KPI_DESCRIPTOR:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.EditedKpiDescriptor) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
-                            compression,
-                            serviceImpl::editKpiDescriptor);
+                            serviceImpl::setKpi);
                     break;
                 case METHODID_DELETE_KPI:
                     io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.KpiId) request,
@@ -420,24 +414,18 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
                             compression,
                             serviceImpl::deleteKpi);
                     break;
-                case METHODID_GET_KPI_DESCRIPTOR_LIST:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptorList>) responseObserver,
-                            compression,
-                            serviceImpl::getKpiDescriptorList);
-                    break;
-                case METHODID_CREATE_BUNDLE_KPI:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.BundleKpiDescriptor) request,
-                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId>) responseObserver,
-                            compression,
-                            serviceImpl::createBundleKpi);
-                    break;
                 case METHODID_GET_KPI_DESCRIPTOR:
                     io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.KpiId) request,
                             (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor>) responseObserver,
                             compression,
                             serviceImpl::getKpiDescriptor);
                     break;
+                case METHODID_GET_KPI_DESCRIPTOR_LIST:
+                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request,
+                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptorList>) responseObserver,
+                            compression,
+                            serviceImpl::getKpiDescriptorList);
+                    break;
                 case METHODID_INCLUDE_KPI:
                     io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.Kpi) request,
                             (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
@@ -456,11 +444,11 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
                             compression,
                             serviceImpl::queryKpiData);
                     break;
-                case METHODID_SUBSCRIBE_KPI:
+                case METHODID_SET_KPI_SUBSCRIPTION:
                     io.quarkus.grpc.runtime.ServerCalls.oneToMany((monitoring.Monitoring.SubsDescriptor) request,
                             (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiList>) responseObserver,
                             compression,
-                            serviceImpl::subscribeKpi);
+                            serviceImpl::setKpiSubscription);
                     break;
                 case METHODID_GET_SUBS_DESCRIPTOR:
                     io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.SubscriptionID) request,
@@ -474,23 +462,17 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
                             compression,
                             serviceImpl::getSubscriptions);
                     break;
-                case METHODID_EDIT_KPI_SUBSCRIPTION:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.SubsDescriptor) request,
+                case METHODID_DELETE_SUBSCRIPTION:
+                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.SubscriptionID) request,
                             (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
                             compression,
-                            serviceImpl::editKpiSubscription);
+                            serviceImpl::deleteSubscription);
                     break;
-                case METHODID_CREATE_KPI_ALARM:
+                case METHODID_SET_KPI_ALARM:
                     io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.AlarmDescriptor) request,
                             (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmID>) responseObserver,
                             compression,
-                            serviceImpl::createKpiAlarm);
-                    break;
-                case METHODID_EDIT_KPI_ALARM:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.AlarmDescriptor) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
-                            compression,
-                            serviceImpl::editKpiAlarm);
+                            serviceImpl::setKpiAlarm);
                     break;
                 case METHODID_GET_ALARMS:
                     io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request,
@@ -505,11 +487,29 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
                             serviceImpl::getAlarmDescriptor);
                     break;
                 case METHODID_GET_ALARM_RESPONSE_STREAM:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToMany((monitoring.Monitoring.AlarmID) request,
+                    io.quarkus.grpc.runtime.ServerCalls.oneToMany((monitoring.Monitoring.AlarmSubscription) request,
                             (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmResponse>) responseObserver,
                             compression,
                             serviceImpl::getAlarmResponseStream);
                     break;
+                case METHODID_DELETE_ALARM:
+                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.AlarmID) request,
+                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
+                            compression,
+                            serviceImpl::deleteAlarm);
+                    break;
+                case METHODID_GET_STREAM_KPI:
+                    io.quarkus.grpc.runtime.ServerCalls.oneToMany((monitoring.Monitoring.KpiId) request,
+                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi>) responseObserver,
+                            compression,
+                            serviceImpl::getStreamKpi);
+                    break;
+                case METHODID_GET_INSTANT_KPI:
+                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.KpiId) request,
+                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiList>) responseObserver,
+                            compression,
+                            serviceImpl::getInstantKpi);
+                    break;
                 default:
                     throw new java.lang.AssertionError();
             }
diff --git a/src/policy/target/kubernetes/kubernetes.yml b/src/policy/target/kubernetes/kubernetes.yml
deleted file mode 100644
index 680929bc031df90594a743eb96316d3c99508cef..0000000000000000000000000000000000000000
--- a/src/policy/target/kubernetes/kubernetes.yml
+++ /dev/null
@@ -1,89 +0,0 @@
----
-apiVersion: v1
-kind: Service
-metadata:
-  annotations:
-    app.quarkus.io/commit-id: 7d24cfdf286fcca1ff04620ee026933bedd8960e
-    app.quarkus.io/build-timestamp: 2022-08-04 - 22:13:18 +0000
-  labels:
-    app.kubernetes.io/name: policyservice
-    app: policyservice
-  name: policyservice
-spec:
-  ports:
-    - name: http
-      port: 8080
-      targetPort: 8080
-    - name: grpc
-      port: 6060
-      targetPort: 6060
-  selector:
-    app.kubernetes.io/name: policyservice
-  type: ClusterIP
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  annotations:
-    app.quarkus.io/commit-id: 7d24cfdf286fcca1ff04620ee026933bedd8960e
-    app.quarkus.io/build-timestamp: 2022-08-04 - 22:13:18 +0000
-  labels:
-    app: policyservice
-    app.kubernetes.io/name: policyservice
-  name: policyservice
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app.kubernetes.io/name: policyservice
-  template:
-    metadata:
-      annotations:
-        app.quarkus.io/commit-id: 7d24cfdf286fcca1ff04620ee026933bedd8960e
-        app.quarkus.io/build-timestamp: 2022-08-04 - 22:13:18 +0000
-      labels:
-        app: policyservice
-        app.kubernetes.io/name: policyservice
-    spec:
-      containers:
-        - env:
-            - name: KUBERNETES_NAMESPACE
-              valueFrom:
-                fieldRef:
-                  fieldPath: metadata.namespace
-            - name: CONTEXT_SERVICE_HOST
-              value: contextservice
-            - name: SERVICE_SERVICE_HOST
-              value: serviceservice
-            - name: MONITORING_SERVICE_HOST
-              value: monitoringservice
-          image: registry.gitlab.com/teraflow-h2020/controller/policy:0.1.0
-          imagePullPolicy: Always
-          livenessProbe:
-            failureThreshold: 3
-            httpGet:
-              path: /q/health/live
-              port: 8080
-              scheme: HTTP
-            initialDelaySeconds: 2
-            periodSeconds: 10
-            successThreshold: 1
-            timeoutSeconds: 10
-          name: policyservice
-          ports:
-            - containerPort: 8080
-              name: http
-              protocol: TCP
-            - containerPort: 6060
-              name: grpc
-              protocol: TCP
-          readinessProbe:
-            failureThreshold: 3
-            httpGet:
-              path: /q/health/ready
-              port: 8080
-              scheme: HTTP
-            initialDelaySeconds: 2
-            periodSeconds: 10
-            successThreshold: 1
-            timeoutSeconds: 10