syntax = "proto3"; package core; enum TelemetryDataType { FLOAT_32 = 0; FLOAT_64 = 1; } message TelemetryValue { oneof value { float float_32 = 1; double float_64 = 2; } } message UUID { string value = 1; } // UTC since UNIX message Timestamp { sfixed64 secs = 1; sfixed32 nanos = 2; } message TelemetryDefinitionRequest { string name = 1; TelemetryDataType data_type = 2; } message TelemetryDefinitionResponse { UUID uuid = 1; } message TelemetryItem { UUID uuid = 1; TelemetryValue value = 2; Timestamp timestamp = 3; } message TelemetryInsertResponse { } service TelemetryService { rpc NewTelemetry (TelemetryDefinitionRequest) returns (TelemetryDefinitionResponse); rpc InsertTelemetry (stream TelemetryItem) returns (stream TelemetryInsertResponse); }