syntax = "proto3"; option go_package= "metric"; option java_package = "com.bluvision.cloud.metric"; message BeaconAggregateMap { map results = 1; } // BeaconAggregate represents a record from beacon minute facts message BeaconAggregate { int64 dateKey = 1; string dateStringKey = 2; int64 projectId = 3; string beaconId64 = 4; int64 blufiId = 5; double temperatureTotal=6; int64 temperatureCount=7; double temperaturePeakVal =8; double temperatureMinVal =9; double temperatureAvg=10; double xAccelTotal=11; int64 xAccelCount=12; double xAccelPeakVal =13; double xAccelMinVal =14; double xAccelAvg=15; double yAccelTotal=16; int64 yAccelCount=17; double yAccelPeakVal =18; double yAccelMinVal =19; double yAccelAvg=20; double zAccelTotal=21; int64 zAccelCount=22; double zAccelPeakVal =23; double zAccelMinVal =24; double zAccelAvg=25; double rssiTotal=26; int64 rssiCount=27; double rssiPeakVal =28; double rssiMinVal =29; double rssiAvg=30; double batteryTotal=31; int64 batteryCount=32; double batteryPeakVal =33; double batteryMinVal =34; double batteryAvg=35; double lumsTotal=36; int64 lumsCount=37; double lumsPeakVal =38; double lumsMinVal =39; double lumsAvg=40; double bpmTotal=41; int64 bpmCount=42; double bpmPeakVal =43; double bpmMinVal =44; double bpmAvg=50; double frameCountTotal=51; int64 frameCountCount=52; double frameCountPeakVal =53; double frameCountMinVal =54; double frameCountAvg=55; double measuredPowerTotal=56; int64 measuredPowerCount=57; double measuredPowerPeakVal =58; double measuredPowerMinVal =59; double measuredPowerAvg=60; double xMagTotal=61; int64 xMagCount=62; double xMagPeakVal =63; double xMagMinVal =64; double xMagAvg=65; double yMagTotal=66; int64 yMagCount=67; double yMagPeakVal =68; double yMagMinVal =69; double yMagAvg=70; double zMagTotal=71; int64 zMagCount=72; double zMagPeakVal =73; double zMagMinVal =74; double zMagAvg=75; int64 totalPacketCount = 76; int64 eddystoneTlmPacketCount = 77; int64 eddystoneUidPacketCount = 78; int64 eddystoneUrlPacketCount = 79; int64 hearratePacketCount = 80; int64 ibeaconPacketCount=81; int64 magPacketCount=82; int64 probePacketCount=83; int64 sbv1PacketCount=84; int64 sbv2PacketCount=85; int64 slightPacketCount=86; int64 ssnsPacketCount=87; string environmentName = 88; string recordTimestamp = 89; double magStateTotal=90; int64 magStateCount=91; double magStatePeakVal =92; double magStateMinVal =93; double magStateAvg=94; int64 motionPacketCount=95; // NEW double xAccelSqTotal= 96; double xAccelRms=97; double xAccelPkPk=98; double yAccelSqTotal=99; double yAccelRms=100; double yAccelPkPk=101; double zAccelSqTotal=102; double zAccelRms=103; double zAccelPkPk=104; double xHsRmsTotal=105; int64 xHsCount=106; double xHsRmsAvg=107; double xHsPeak=108; double xHsPeakToPeak=109; double yHsRmsTotal=110; int64 yHsCount=111; double yHsRmsAvg=112; double yHsPeak=113; double yHsPeakToPeak=114; double zHsRmsTotal=115; int64 zHsCount=116; double zHsRmsAvg=117; double zHsPeak=118; double zHsPeakToPeak=119; double hsPacketCount=120; double xHsRmsPeak=121; double yHsRmsPeak=122; double zHsRmsPeak=123; // Velocity double xVRmsTotal=124; int64 xVRmsCount=125; double xVRmsAvg=126; double xVRmsPeak=127; double xVPeak=128; double xVPeakToPeak=129; double yVRmsTotal=130; int64 yVRmsCount=131; double yVRmsAvg=132; double yVRmsPeak=133; double yVPeak=134; double yVPeakToPeak=135; double zVRmsTotal=136; int64 zVRmsCount=137; double zVRmsAvg=138; double zVRmsPeak=139; double zVPeak=140; double zVPeakToPeak=141; } message AggregateMetricsResponse { repeated BeaconAggregate results = 1; } enum HistoryMetric { TEMP = 0; RSSI =1; PER_BLUFI_RSSI=2; LUMS=3; X_ACCEL=4; Y_ACCEL=5; Z_ACCEL=6; X_MAG=7; Y_MAG=8; Z_MAG=9; MAG_STATE=10; BATTERY=11; X_ACCEL_HS=12; Y_ACCEL_HS=13; Z_ACCEL_HS=14; X_VELOCITY=15; Y_VELOCITY=16; Z_VELOCITY=17; } // hint to indicate how long client is willing to wait and how accurate results are expected enum MetricQueryHint { // query both cache and long term storage for result ALL = 0; // only hit cache CACHE = 1; // only hit long term storage STORAGE = 2; } enum MetricInterval { SECOND = 0; MINUTE =1; HOUR=2; DAY=3; MONTH=4; YEAR=5; } message AggregateMetricsRequest { int64 projectId = 1; repeated string beaconIds = 2; repeated string blufiIds = 3; MetricInterval interval=4; HistoryMetric metric=5; string startDate = 6; string endDate = 7; string format = 8; bool download = 9; } // This also has a *models representation because we gen sdk from bluzone. message BeaconHistoryMetricValue { double avg = 1; int64 count = 2; string ID = 3; // unix time seconds 1465914840 int64 key = 4; // ISO format 2016-06-14T14:34:00Z string keyAsString=5; string metric = 6; double peak = 7; double sum = 8; double min = 9; double peakToPeak = 10; double rms = 11; double sqSum = 12; double rmsPeak = 13; } // This also has a *models representation because we gen sdk from bluzone. message BeaconHistoryMetricGroup { double batteryAvg = 1; double batteryCount=2; double batteryPeak = 3; double batterySum = 4; string ID = 5; int64 key = 6; string keyAsString=7; double lumsAvg=8; double lumsCount = 9; double lumsPeak= 10; double lumsSum = 11; double magStateAvg = 12; double magStateCount = 13; double magStatePeak = 14; double magstateSum = 15; double rssiAvg = 16; double rssiCount = 17; double rssiPeak = 18; double rssiSum = 19; double tempAvg = 20; double tempCount = 21; double tempPeak = 22; double tempSum = 23; double xAccelAvg = 24; double xAccelCount = 25; double xAccelPeak = 26; double xAccelSum = 27; double xMagAvg = 28; double xMagCount = 29; double xMagPeak = 30; double xMagSum = 31; double yAccelAvg = 32; double yAccelCount = 33; double yAccelPeak = 34; double yAccelSum = 35; double yMagAvg = 36; double yMagCount = 37; double yMagPeak = 38; double yMagSum = 39; double zAccelAvg = 40; double zAccelCount = 41; double zAccelPeak = 42; double zAccelSum = 43; double zMagAvg = 44; double zMagCount = 45; double zMagPeak = 46; double zMagSum = 47; double xAccelMin = 48; double xAccelPeakToPeak = 49; double xAccelRms = 50; double xAccelSqSum = 51; double yAccelMin = 52; double yAccelPeakToPeak = 53; double yAccelRms = 54; double yAccelSqSum = 55; double zAccelMin = 56; double zAccelPeakToPeak = 57; double zAccelRms = 58; double zAccelSqSum = 59; double xHsCount = 60; double xHsRmsAvg = 61; double xHsRmsSum = 62; double xHsPeak = 63; double xHsPeakToPeak = 64; double yHsCount = 65; double yHsRmsAvg = 66; double yHsRmsSum = 67; double yHsPeak = 68; double yHsPeakToPeak = 69; double zHsCount = 70; double zHsRmsAvg = 71; double zHsRmsSum = 72; double zHsPeak = 73; double zHsPeakToPeak = 74; double xHsRmsPeak=75; double yHsRmsPeak=76; double zHsRmsPeak=77; double xVRmsAvg=78; double xVRmsCount=79; double xVRmsPeak=80; double xVRmsSum=81; double xVPeak=82; double xVPeakToPeak=83; double yVRmsAvg=84; double yVRmsCount=85; double yVRmsPeak=86; double yVRmsSum=87; double yVPeak=88; double yVPeakToPeak=89; double zVRmsAvg=90; double zVRmsCount=91; double zVRmsPeak=92; double zVRmsSum=93; double zVPeak=94; double zVPeakToPeak=95; } message MetricByRangeRequest { int64 projectId = 1; string beaconId = 2; repeated string blufiIds = 3; HistoryMetric metric = 4; MetricInterval interval = 5; int64 beginMillis = 6; int64 endMillis = 7; bool useZeros = 8; // way to indicate how long they are willing to wait. MetricQueryHint queryHint = 9; // date to start from takes prec over beginMillis string startDate = 10; // date to end on takes prec over endMillis string endDate = 11; } message MetricByRangeResponse { repeated BeaconHistoryMetricValue results = 1; } message AllMetricByRangeRequest { int64 projectId = 1; repeated string beaconIds =2; MetricInterval interval = 3; int64 beginMillis = 4; int64 endMillis = 5; bool useZeros = 6; // way to indicate how long they are willing to wait. MetricQueryHint queryHint = 7; // date to start from takes prec over beginMillis string startDate = 8; // date to end on takes prec over endMillis string endDate = 9; } message AllMetricByRangeResponse{ repeated BeaconHistoryMetricGroup results = 1; } message DeleteMetricByRangeRequest { int64 projectId = 1; repeated string beaconIds =2; // date to start from takes prec over beginMillis string startDate = 3; // date to end on takes prec over endMillis string endDate = 4; } message DeleteMetricByRangeResponse{ int64 results = 1; } message HealthResponse { string result = 1; } // ListStorageKeysRequest is a request for s3 keys we have // stored the raw data for in s3. message ListStorageKeysRequest { int64 projectId = 1; string startDate = 2; string endDate = 3; // dataTypes are the packet data types you want. repeated string dataTypes = 4; repeated string beaconIds = 5; } message ListStorageKeysResponse { repeated string keys = 1; } message DownloadStorageRequest { int64 projectId = 1; string startDate = 2; string endDate = 3; // dataTypes are the packet data types you want. repeated string dataTypes = 4; repeated string beaconIds = 5; } message DownloadStorageResponse { string result = 1; } // request for accel data message AccelSecondDataRequest{ int64 projectId = 1; string startDate = 2; string endDate = 3; repeated string beaconIds = 4; bool allowAll = 5; } message AccelSecondDataResponse{ string result = 1; } // AggregateProjectScanHistoryRequest message AggregateProjectScanHistoryRequest { int64 projectId = 1; string startDate = 2; string endDate = 3; repeated string beaconIds = 4; // should we delete the existing cache data so our records are corrected bool purgeExisting = 5; } // AggregateProjectScanHistoryResponse message AggregateProjectScanHistoryResponse { string result = 1; } // DeleteMetricHistoryCacheRequest message DeleteMetricHistoryCacheRequest { int64 projectId = 1; repeated string beaconIds = 4; } // DeleteMetricHistoryCacheResponse message DeleteMetricHistoryCacheResponse { string result =1; } // AggregateBatchRequest requests aggregation of the file located at bucket and key // callback is provided for http notification of results. message AggregateBatchRequest { int64 projectId = 1; string beaconId = 2; int64 rcmImportId = 3; int64 blufiId = 4; string blufiSid64 = 5; string blufiMacAddress = 6; string bucket = 7; string key = 8; bool raw = 9; // TBD: most likely respond with results. string callback = 10; } message AggregateBatchResponse { string result =1 ; } message AggregateAllProjectRequest { int64 projectId = 1; } message AggregateAllProjectResponse { string result =1 ; } message AggregateByRcmIdRequest { int64 projectId = 1; int64 rcmImportId = 2; } message AggregateByRcmIdResponse { string result =1 ; } message BeaconRawMetricMap { map results=1; } message BeaconRawMetric { int64 dateKey=1; string dateStringKey=2; int64 projectId=3; string beaconId64=4; int64 blufiId=5; BeaconConditionSummary conditionSummary=6; BeaconNano nano=7; BeaconTemperature temperature=8; } message BeaconConditionSummary { double xPeak=1; double xPeakToPeak=2; double xRms=3; double yPeak=4; double YPeakToPeak=5; double yRms=6; double zPeak=7; double zPeakToPeak=8; double zRms=9; bool highRes=10; bool adv=11; int64 sourceTime=12; int64 started=13; double xVPeak=14; double xVPeakToPeak=15; double xVRms=16; double yVPeak=17; double YVPeakToPeak=18; double yVRms=19; double zVPeak=20; double zVPeakToPeak=21; double zVRms=22; } message BeaconNano { double xAccel = 1; double yAccel = 2; double zAccel = 3; int32 fullScale = 4; int64 timeNano = 5; int64 deviceJobId = 6; string sessionId = 7; int32 base = 8; } message BeaconTemperature { double temperature = 1; } message RawMetricRequest { int64 projectId = 1; repeated string beaconIds = 2; int64 beginMillis = 3; int64 endMillis = 4; // way to indicate how long they are willing to wait. MetricQueryHint queryHint = 5; string dataType = 6; string startDate = 7; string endDate = 8; string format = 9; repeated RawMetricFilter filters = 10; bool download = 11; int64 deviceJobId = 12; string sessionId = 13; } message RawMetricResponse { repeated BeaconRawMetric results=1; } enum RawMetricFilter { LOW_RES = 0; HIGH_RES = 1; ADV = 2; NON_ADV = 3; } message ClusterDataRequest { int64 projectId = 1; string beaconId = 2; int64 policyId = 3; int64 beginMillis = 4; int64 endMillis = 5; int32 xClusterIndex = 6; int32 yClusterIndex = 7; int32 zClusterIndex = 8; bool highRes = 9; bool download = 10; } message ClusterData { int32 xClusterIndex = 1; int32 yClusterIndex = 2; int32 zClusterIndex = 3; BeaconRawMetric metric = 4; } message ClusterDataResponse { repeated ClusterData results = 1; } message SaveClusterInvalidDataRequest { int64 projectId = 1; string beaconId = 2; int64 policyId = 3; bool highRes = 4; repeated int64 timestamps = 5; } message SaveClusterInvalidDataResponse { int32 recordsAdded = 1; int32 recordsTotal = 2; }