syntax = "proto3"; option go_package = "proto"; package plugins; message TsdbQuery { TimeRange timeRange = 1; DatasourceInfo datasource = 2; repeated Query queries = 3; } message Query { string refId = 1; int64 maxDataPoints = 2; int64 intervalMs = 3; string modelJson = 4; } message TimeRange { string fromRaw = 1; string toRaw = 2; int64 fromEpochMs = 3; int64 toEpochMs = 4; } message Response { repeated QueryResult results = 1; } message QueryResult { string error = 1; string refId = 2; string metaJson = 3; repeated TimeSeries series = 4; repeated Table tables = 5; } message Table { repeated TableColumn columns = 1; repeated TableRow rows = 2; } message TableColumn { string name = 1; } message TableRow { repeated RowValue values = 1; } message RowValue { enum Kind { // Field type null. TYPE_NULL = 0; // Field type double. TYPE_DOUBLE = 1; // Field type int64. TYPE_INT64 = 2; // Field type bool. TYPE_BOOL = 3; // Field type string. TYPE_STRING = 4; // Field type bytes. TYPE_BYTES = 5; }; Kind kind = 1; double doubleValue = 2; int64 int64Value = 3; bool boolValue = 4; string stringValue = 5; bytes bytesValue = 6; } message DatasourceInfo { int64 id = 1; int64 orgId = 2; string name = 3; string type = 4; string url = 5; string jsonData = 6; string secureJsonData = 7; } message TimeSeries { string name = 1; map tags = 2; repeated Point points = 3; } message Point { int64 timestamp = 1; double value = 2; } service TsdbPlugin { rpc Query(TsdbQuery) returns (Response); }