syntax = "proto3";
package kpi_value_api;

import "context.proto";
import "kpi_manager.proto";

service KpiValueAPIService {
	rpc StoreKpiValues  (KpiValueList)   returns (context.Empty) {}
	rpc SelectKpiValues (KpiValueFilter) returns (KpiValueList)  {}
}

message KpiValue {
	kpi_manager.KpiId kpi_id         = 1;
	context.Timestamp timestamp      = 2;
	KpiValueType      kpi_value_type = 3;
}

message KpiValueList {
	repeated KpiValue kpi_value_list = 1;
}

message KpiValueType {
  oneof value {
    int32  int32Val  = 1;
    uint32 uint32Val = 2;
    int64  int64Val  = 3;
    uint64 uint64Val = 4;
    float  floatVal  = 5;
    string stringVal = 6;
    bool   boolVal   = 7;
  }
}

message KpiValueFilter {
	repeated kpi_manager.KpiId kpi_id          = 1;
	repeated context.Timestamp start_timestamp = 2;
	repeated context.Timestamp end_timestamp   = 3;
}
