diff --git a/kpi_manager.proto b/kpi_manager.proto
new file mode 100644
index 0000000000000000000000000000000000000000..1ef447fb3affcd85a290d49a18d0581ea955867a
--- /dev/null
+++ b/kpi_manager.proto
@@ -0,0 +1,46 @@
+syntax = "proto3";
+package monitoring;
+
+import "context.proto";
+import "kpi_sample_types.proto";
+
+service KpiManagerService {
+  rpc GetKpiDescriptor   (KpiId              ) returns (KpiDescriptor    ) {}
+  rpc SetKpiDescriptor   (KpiDescriptor      ) returns (KpiId            ) {}
+  rpc DeleteKpiDescriptor(KpiId              ) returns (context.Empty    ) {}
+  rpc SelectKpiDescriptor(KpiDescriptorFilter) returns (KpiDescriptorList) {}
+}
+
+message KpiId {
+  context.Uuid kpi_id = 1;
+}
+
+message KpiDescriptor {
+  KpiId                          kpi_id          = 1;
+  string                         kpi_description = 2;
+  kpi_sample_types.KpiSampleType kpi_sample_type = 3;
+  context.DeviceId               device_id       = 4;
+  context.EndPointId             endpoint_id     = 5;
+  context.ServiceId              service_id      = 6;
+  context.SliceId                slice_id        = 7;
+  context.ConnectionId           connection_id   = 8;
+  context.LinkId                 link_id         = 9;
+}
+
+message KpiDescriptorFilter {
+  // KPI Descriptors that fulfill the filter are those that match ALL the following fields.
+  // An empty list means: any value is accepted.
+  // All fields empty means: list all KPI Descriptors
+  repeated KpiId                          kpi_id          = 1;
+  repeated kpi_sample_types.KpiSampleType kpi_sample_type = 2;
+  repeated context.DeviceId               device_id       = 3;
+  repeated context.EndPointId             endpoint_id     = 4;
+  repeated context.ServiceId              service_id      = 5;
+  repeated context.SliceId                slice_id        = 6;
+  repeated context.ConnectionId           connection_id   = 7;
+  repeated context.LinkId                 link_id         = 8;
+}
+
+message KpiDescriptorList {
+  repeated KpiDescriptor kpi_descriptor_list = 1;
+}