syntax = "proto3"; package device; import "context.proto"; import "kpi_manager.proto"; import "kpi_sample_types.proto"; service TelemetryFrontendService { rpc StartCollector (Collector ) returns (CollectorId ) {} rpc StopCollector (CollectorId ) returns (context.Empty) {} rpc SelectCollectors(CollectorFilter) returns (CollectorList) {} } message CollectorId { context.Uuid collector_id = 1; } message Collector { CollectorId collector_id = 1; // The Collector ID kpi_manager.KpiId kpi_id = 2; // The KPI Id to be associated to the collected samples float duration_s = 3; // Terminate data collection after duration[seconds]; duration==0 means indefinitely float interval_s = 4; // Interval between collected samples } message CollectorFilter { // Collector 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 Collectors repeated CollectorId collector_id = 1; repeated kpi_manager.KpiId kpi_id = 2; repeated kpi_sample_types.KpiSampleType kpi_sample_type = 3; repeated context.DeviceId device_id = 4; repeated context.EndPointId endpoint_id = 5; repeated context.ServiceId service_id = 6; repeated context.SliceId slice_id = 7; repeated context.ConnectionId connection_id = 8; repeated context.LinkId link_id = 9; } message CollectorList { repeated Collector collector_list = 1; }