diff --git a/commons/connector/oura/oura_activity_class.avsc b/commons/connector/oura/oura_activity_class.avsc new file mode 100644 index 00000000..b5a37490 --- /dev/null +++ b/commons/connector/oura/oura_activity_class.avsc @@ -0,0 +1,14 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraActivityClass", + "type": "record", + "doc": "Oura Activity class in 5-minute intervals as defined in https://cloud.ouraring.com/v2/docs#operation/Single_daily_activity_Document_v2_usercollection_daily_activity__document_id__get.", + "fields": [ + {"name": "time", "type": "double", "doc": "Start time of the activity in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "Unique identifier of the Oura activity record the activity class data is taken from.", "default": null}, + {"name": "type", "type": + {"name": "OuraActivityClassType", "type": "enum", "symbols": ["NON_WEAR", "REST", "INACTIVE", "LOW_ACTIVITY", "MEDIUM_ACTIVITY", "HIGH_ACTIVITY", "UNKNOWN"], "doc": "Activity class type as computed by Oura."}, + "doc": "Activity classification at a 5-minute interval. UNKNOWN when this data is not provided.", "default": "UNKNOWN" } + ] +} diff --git a/commons/connector/oura/oura_daily_activity.avsc b/commons/connector/oura/oura_daily_activity.avsc new file mode 100644 index 00000000..f33dc8ee --- /dev/null +++ b/commons/connector/oura/oura_daily_activity.avsc @@ -0,0 +1,38 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraDailyActivity", + "type": "record", + "doc": "The Daily Activity scope includes daily activity summary values and detailed activity levels. Activity levels are expressed in metabolic equivalent of task minutes (MET mins). Oura tracks activity based on the movement.", + "fields": [ + {"name": "time", "type": "double", "doc": "Start time of the activity in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "Unique identifier of the activity from Oura.", "default": null}, + {"name": "score", "type": ["null", "int"], "doc": "Activity score in range [1, 100]. Null if unknown.", "default": null}, + {"name": "activeCalories", "type": ["null", "int"], "doc": "Active calories expended (in kilocalories). Null if unknown.", "default": null}, + {"name": "averageMetMinutes", "type": ["null", "float"], "doc": "Average metabolic equivalent (MET) in minutes. Null if unknown.", "default": null}, + {"name": "contributorMeetDailyTargets", "type": ["null", "int"], "doc": "Contribution of meeting previous 7-day daily activity targets in range [1, 100] to the activity score. Null if unknown.", "default": null}, + {"name": "contributorMoveEveryHour", "type": ["null", "int"], "doc": "Contribution of previous 24-hour inactivity alerts in range [1, 100] to the activity score. Null if unknown.", "default": null}, + {"name": "contributorRecoveryTime", "type": ["null", "int"], "doc": "Contribution of previous 7-day recovery time in range [1, 100] to the activity score. Null if unknown.", "default": null}, + {"name": "contributorStayActive", "type": ["null", "int"], "doc": "Contribution of previous 24-hour activity in range [1, 100] to the activity score. Null if unknown.", "default": null}, + {"name": "contributorTrainingFrequency", "type": ["null", "int"], "doc": "Contribution of previous 7-day exercise frequency in range [1, 100] to the activity score. Null if unknown.", "default": null}, + {"name": "contributorTrainingVolume", "type": ["null", "int"], "doc": "Contribution of previous 7-day exercise volume in range [1, 100] to the activity score. Null if unknown.", "default": null}, + {"name": "equivalentWalkingDistance", "type": ["null", "int"], "doc": "Equivalent walking distance (in meters) of energy expenditure. Null if unknown.", "default": null}, + {"name": "highActivityMetMinutes", "type": ["null", "int"], "doc": "High activity metabolic equivalent (MET) in minutes. Null if unknown.", "default": null}, + {"name": "highActivityTime", "type": ["null", "int"], "doc": "High activity metabolic equivalent (MET) in seconds. Null if unknown.", "default": null}, + {"name": "inactivityAlerts", "type": ["null", "int"], "doc": "Number of inactivity alerts received. Null if unknown.", "default": null}, + {"name": "lowActivityMetMinutes", "type": ["null", "int"], "doc": "Low activity metabolic equivalent (MET) in minutes. Null if unknown.", "default": null}, + {"name": "lowActivityTime", "type": ["null", "int"], "doc": "Low activity metabolic equivalent (MET) in seconds. Null if unknown.", "default": null}, + {"name": "mediumActivityMetMinutes", "type": ["null", "int"], "doc": "Medium activity metabolic equivalent (MET) in minutes. Null if unknown.", "default": null}, + {"name": "mediumActivityTime", "type": ["null", "int"], "doc": "Medium activity metabolic equivalent (MET) in seconds. Null if unknown.", "default": null}, + {"name": "metersToTarget", "type": ["null", "int"], "doc": "Remaining meters to target. Null if unknown.", "default": null}, + {"name": "nonWearTime", "type": ["null", "int"], "doc": "The time (in seconds) in which the ring was not worn. Null if unknown.", "default": null}, + {"name": "restingTime", "type": ["null", "int"], "doc": "Resting time (in seconds). Null if unknown.", "default": null}, + {"name": "sedentaryMetMinutes", "type": ["null", "int"], "doc": "Sedentary metabolic equivalent (MET) in minutes. Null if unknown.", "default": null}, + {"name": "sedentaryTime", "type": ["null", "int"], "doc": "Sedentary metabolic equivalent (MET) in seconds. Null if unknown.", "default": null}, + {"name": "steps", "type": ["null", "int"], "doc": "Total number of steps taken. Null if unknown.", "default": null}, + {"name": "targetCalories", "type": ["null", "int"], "doc": "Daily activity target (in kilocalories). Null if unknown.", "default": null}, + {"name": "targetMeters", "type": ["null", "int"], "doc": "Daily activity target (in meters). Null if unknown.", "default": null}, + {"name": "totalCalories", "type": ["null", "int"], "doc": "Total calories expended (in kilocalories). Null if unknown.", "default": null}, + {"name": "day", "type": ["null", "string"], "doc": "The YYYY-MM-DD formatted local date indicating when the daily activity occurred. Null if unknown.", "default": null} + ] +} diff --git a/commons/connector/oura/oura_daily_readiness.avsc b/commons/connector/oura/oura_daily_readiness.avsc new file mode 100644 index 00000000..6d992981 --- /dev/null +++ b/commons/connector/oura/oura_daily_readiness.avsc @@ -0,0 +1,23 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraDailyReadiness", + "type": "record", + "doc": "This includes the daily readiness summary values. Readiness tells how ready you are for the day.", + "fields": [ + {"name": "time", "type": "double", "doc": "Time the daily readiness record belongs to in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "Unique identifier of the readiness data from Oura.", "default": null}, + {"name": "contributorActivityBalance", "type": ["null", "int"], "doc": "Contribution of cumulative activity balance in range [1, 100] to the readiness score. Null if unknown.", "default": null}, + {"name": "contributorBodyTemperature", "type": ["null", "int"], "doc": "Contribution of body temperature in range [1, 100] to the readiness score. Null if unknown.", "default": null}, + {"name": "contributorHrvBalance", "type": ["null", "int"], "doc": "Contribution of heart rate variability balance in range [1, 100] to the readiness score. Null if unknown.", "default": null}, + {"name": "contributorPreviousDayActivity", "type": ["null", "int"], "doc": "Contribution of previous day's activity in range [1, 100] to the readiness score. Null if unknown.", "default": null}, + {"name": "contributorPreviousNight", "type": ["null", "int"], "doc": "Contribution of previous night's sleep in range [1, 100] to the readiness score. Null if unknown.", "default": null}, + {"name": "contributorRecoveryIndex", "type": ["null", "int"], "doc": "Contribution of previous 7-day exercise volume in range [1, 100] to the readiness score. Null if unknown.", "default": null}, + {"name": "contributorRestingHeartRate", "type": ["null", "int"], "doc": "Contribution of resting heart rate in range [1, 100] to the readiness score. Null if unknown.", "default": null}, + {"name": "contributorSleepBalance", "type": ["null", "int"], "doc": "Contribution of sleep balance in range [1, 100] to the readiness score. Null if unknown.", "default": null}, + {"name": "day", "type": ["null", "string"], "doc": "Day that the daily readiness belongs to. Null if unknown.", "default": null}, + {"name": "score", "type": ["null", "int"], "doc": "Daily readiness score in range [1, 100]. Null if unknown.", "default": null}, + {"name": "temperatureDeviation", "type": ["null", "float"], "doc": "Temperature deviation in degrees Celsius. Null if unknown.", "default": null}, + {"name": "temperatureTrendDeviation", "type": ["null", "float"], "doc": "Temperature trend deviation in degrees Celsius. Null if unknown.", "default": null} + ] +} diff --git a/commons/connector/oura/oura_daily_sleep.avsc b/commons/connector/oura/oura_daily_sleep.avsc new file mode 100644 index 00000000..d6917787 --- /dev/null +++ b/commons/connector/oura/oura_daily_sleep.avsc @@ -0,0 +1,20 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraDailySleep", + "type": "record", + "doc": "This includes the daily sleep summary values. Sleep period is a nearly continuous, longish period of time spent lying down in bed.", + "fields": [ + {"name": "time", "type": "double", "doc": "Start time of the sleep in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "Unique identifier of the sleep data from Oura.", "default": null}, + {"name": "contributorDeepSleep", "type": ["null", "int"], "doc": "Contribution of deep sleep in range [1, 100] to the sleep score. Null if unknown.", "default": null}, + {"name": "contributorEfficiency", "type": ["null", "int"], "doc": "Contribution of sleep efficiency in range [1, 100] to the sleep score. Null if unknown.", "default": null}, + {"name": "contributorLatency", "type": ["null", "int"], "doc": "Contribution of sleep latency in range [1, 100] to the sleep score. Null if unknown.", "default": null}, + {"name": "contributorRemSleep", "type": ["null", "int"], "doc": "Contribution of REM sleep in range [1, 100] to the sleep score. Null if unknown.", "default": null}, + {"name": "contributorRestfulness", "type": ["null", "int"], "doc": "Contribution of sleep restfulness in range [1, 100] to the sleep score. Null if unknown.", "default": null}, + {"name": "contributorTiming", "type": ["null", "int"], "doc": "Contribution of sleep timing in range [1, 100] to the sleep score. Null if unknown.", "default": null}, + {"name": "contributorTotalSleep", "type": ["null", "int"], "doc": "Contribution of total sleep in range [1, 100] to the sleep score. Null if unknown.", "default": null}, + {"name": "day", "type": ["null", "string"], "doc": "Day that the daily sleep belongs to. Null if unknown.", "default": null}, + {"name": "score", "type": ["null", "int"], "doc": "Daily sleep score in range [1, 100]. Null if unknown.", "default": null} + ] +} diff --git a/commons/connector/oura/oura_daily_spo2.avsc b/commons/connector/oura/oura_daily_spo2.avsc new file mode 100644 index 00000000..da2508ca --- /dev/null +++ b/commons/connector/oura/oura_daily_spo2.avsc @@ -0,0 +1,13 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraDailySpo2", + "type": "record", + "doc": "This includes the daily blood oxygen saturation (spO2) average. Data only available for Gen 3 rings.", + "fields": [ + {"name": "time", "type": "double", "doc": "Start time of the sleep in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "Unique identifier of the spO2 data from Oura.", "default": null}, + {"name": "spo2AveragePercentage", "type": ["null", "float"], "doc": "The average oxygen saturation percentage value over a single day.", "default": null}, + {"name": "day", "type": ["null", "string"], "doc": "Day that the daily oxygen saturation data belongs to. Null if unknown.", "default": null} + ] +} diff --git a/commons/connector/oura/oura_heart_rate.avsc b/commons/connector/oura/oura_heart_rate.avsc new file mode 100644 index 00000000..f4134cee --- /dev/null +++ b/commons/connector/oura/oura_heart_rate.avsc @@ -0,0 +1,15 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraHeartRate", + "type": "record", + "doc": "The Heart Rate data scope includes time-series heart rate data throughout the day and night. Heart rate is provided at 5-minute increments.", + "fields": [ + {"name": "time", "type": "double", "doc": "Timestamp of the heart rate in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "Unique identifier of the Oura session or sleep record the heart rate data is taken from.", "default": null}, + {"name": "bpm", "type": ["null", "int"], "doc": "Heart rate in beats per minute.", "default": null}, + {"name": "source", "type": + {"name": "OuraHeartRateSource", "type": "enum", "symbols": ["AWAKE", "REST", "SLEEP", "SESSION", "LIVE", "WORKOUT", "UNKNOWN"], "doc": "Heart rate source type as computed by Oura."}, + "doc": "Heart rate source type as computed by Oura. UNKNOWN when this data is not provided (e.g. samples from sleep API).", "default": "UNKNOWN" } + ] +} diff --git a/commons/connector/oura/oura_heart_rate_variability.avsc b/commons/connector/oura/oura_heart_rate_variability.avsc new file mode 100644 index 00000000..b6693571 --- /dev/null +++ b/commons/connector/oura/oura_heart_rate_variability.avsc @@ -0,0 +1,12 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraHeartRateVariability", + "type": "record", + "doc": "This describes the heart rate variability provided by the Oura Ring.", + "fields": [ + {"name": "time", "type": "double", "doc": "Start time of the hrv in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "Unique identifier of the Oura session or sleep record the hrv data is taken from.", "default": null}, + {"name": "hrv", "type": ["null", "float"], "doc": "The HRV value in milliseconds.", "default": null} + ] +} diff --git a/commons/connector/oura/oura_met.avsc b/commons/connector/oura/oura_met.avsc new file mode 100644 index 00000000..f998a5d1 --- /dev/null +++ b/commons/connector/oura/oura_met.avsc @@ -0,0 +1,12 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraMet", + "type": "record", + "doc": "This describes the metabolic equivalent data (MET) during an activity. MET is a common measure used to express the energy expenditure and intensity of different physical activities.", + "fields": [ + {"name": "time", "type": "double", "doc": "Start time of the activity in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "Unique identifier of the Oura activity record the met data is taken from.", "default": null}, + {"name": "met", "type": ["null", "float"], "doc": "Activity metabolic equivalent (MET) in seconds.", "default": null} + ] +} diff --git a/commons/connector/oura/oura_motion_count.avsc b/commons/connector/oura/oura_motion_count.avsc new file mode 100644 index 00000000..8eccf1bb --- /dev/null +++ b/commons/connector/oura/oura_motion_count.avsc @@ -0,0 +1,12 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraMotionCount", + "type": "record", + "doc": "This describes motion count during a session.", + "fields": [ + {"name": "time", "type": "double", "doc": "Start time of the session in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "Unique identifier of the Oura session the motion count data is taken from.", "default": null}, + {"name": "motionCount", "type": ["null", "int"], "doc": "Motion count during a session.", "default": null} + ] +} diff --git a/commons/connector/oura/oura_personal_info.avsc b/commons/connector/oura/oura_personal_info.avsc new file mode 100644 index 00000000..5b77a9c8 --- /dev/null +++ b/commons/connector/oura/oura_personal_info.avsc @@ -0,0 +1,16 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraPersonalInfo", + "type": "record", + "doc": "This describes personal information (e.g. age, email, weight, and height) about the user. You can access the id on the personal_info route with any access token (no scopes are required).", + "fields": [ + {"name": "time", "type": "double", "doc": "Timestamp of the record."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "ID of the record.", "default": null}, + {"name": "age", "type": ["null", "int"], "doc": "Age of the user.", "default": null}, + {"name": "weight", "type": ["null", "float"], "doc": "Weight of the user.", "default": null}, + {"name": "height", "type": ["null", "float"], "doc": "Height of the user.", "default": null}, + {"name": "biologicalSex", "type": ["null", "string"], "doc": "Biological sex of the user.", "default": null}, + {"name": "email", "type": ["null", "string"], "doc": "Email of the user.", "default": null} + ] +} diff --git a/commons/connector/oura/oura_recommended_sleep_time.avsc b/commons/connector/oura/oura_recommended_sleep_time.avsc new file mode 100644 index 00000000..b6dcfb88 --- /dev/null +++ b/commons/connector/oura/oura_recommended_sleep_time.avsc @@ -0,0 +1,21 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraRecommendedSleepTime", + "type": "record", + "doc": "Oura recommendations for the optimal bedtime window that is calculated based on sleep data.", + "fields": [ + {"name": "time", "type": "double", "doc": "Start time of the recomended sleep time period in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "Unique identifier of the Oura sleep time recommendation.", "default": null}, + {"name": "day", "type": ["null", "string"], "doc": "Day that the sleep recommendation record belongs to. Null if unknown.", "default": null}, + {"name": "optimalBedtimeStartOffset", "type": ["null", "int"], "doc": "Recommended optimal bedtime start offset from midnight. Null if unknown.", "default": null}, + {"name": "optimalBedtimeEndOffset", "type": ["null", "int"], "doc": "Recommended optimal bedtime end offset from midnight. Null if unknown.", "default": null}, + {"name": "optimalBedtimeTimezoneOffset", "type": ["null", "int"], "doc": "Timezone offset in second from GMT of the day. Null if unknown.", "default": null}, + {"name": "recommendation", "type": + {"name": "OuraSleepRecommendation", "type": "enum", "symbols": ["IMPROVE_EFFICIENCY", "EARLIER_BEDTIME", "LATER_BEDTIME", "EARLIER_WAKE_UP_TIME", "LATER_WAKE_UP_TIME", "FOLLOW_OPTIMAL_BEDTIME", "UNKNOWN"], "doc": "Sleep phase type as computed by Oura."}, + "doc": "Oura recommendation action type for bedtime.", "default": "UNKNOWN" }, + {"name": "status", "type": + {"name": "OuraSleepStatus", "type": "enum", "symbols": ["NOT_ENOUGH_NIGHTS", "NOT_ENOUGH_RECENT_NIGHTS", "BAD_SLEEP_QUALITY", "ONLY_RECOMMENDED_FOUND", "OPTIMAL_FOUND", "UNKNOWN"], "doc": "Sleep phase type as computed by Oura."}, + "doc": "Oura sleep time status type. This is used to inform sleep time recommendation.", "default": "UNKNOWN" } + ] +} diff --git a/commons/connector/oura/oura_rest_mode_period.avsc b/commons/connector/oura/oura_rest_mode_period.avsc new file mode 100644 index 00000000..517fdc78 --- /dev/null +++ b/commons/connector/oura/oura_rest_mode_period.avsc @@ -0,0 +1,14 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraRestModePeriod", + "type": "record", + "doc": "The Rest Mode scope includes information about rest mode periods.", + "fields": [ + {"name": "time", "type": "double", "doc": "Start time of the rest mode period in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "endTime", "type": "double", "doc": "End time of the rest mode period in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "Unique identifier of the rest mode period from Oura.", "default": null}, + {"name": "startDay", "type": ["null", "string"], "doc": "Start date of the rest mode period. Null if unknown.", "default": null}, + {"name": "endDay", "type": ["null", "string"], "doc": "End date of the rest mode period. Null if unknown.", "default": null} + ] +} diff --git a/commons/connector/oura/oura_ring_configuration.avsc b/commons/connector/oura/oura_ring_configuration.avsc new file mode 100644 index 00000000..d1f00fbe --- /dev/null +++ b/commons/connector/oura/oura_ring_configuration.avsc @@ -0,0 +1,23 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraRingConfiguration", + "type": "record", + "doc": "The Ring Configuration scope includes information about the user's ring(s). This includes the model, size, color, etc.", + "fields": [ + {"name": "time", "type": "double", "doc": "Timestamp of the record in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "Unique identifier of the ring configuration from Oura.", "default": null}, + {"name": "color", "type": + {"name": "OuraRingColor", "type": "enum", "symbols": ["GLOSSY_BLACK", "STEALTH_BLACK", "ROSE", "SILVER", "GLOSSY_GOLD", "UNKNOWN"], "doc": "Oura ring colors."}, + "doc": "Oura ring color.", "default": "UNKNOWN" }, + {"name": "design", "type": + {"name": "OuraRingDesign", "type": "enum", "symbols": ["HERITAGE", "HORIZON", "UNKNOWN"], "doc": "Oura ring designs."}, + "doc": "Oura ring design.", "default": "UNKNOWN" }, + {"name": "firmwareVersion", "type": ["null", "string"], "doc": "Firmware version of the ring. Null if unknown.", "default": null}, + {"name": "hardwareType", "type": + {"name": "OuraRingHardwareType", "type": "enum", "symbols": ["GEN1", "GEN2", "GEN2M", "GEN3", "UNKNOWN"], "doc": "Oura ring hardware type."}, + "doc": "Oura ring hardware types.", "default": "UNKNOWN" }, + {"name": "setUpAt", "type": ["null", "double"], "doc": "Timestamp indicating when the ring was set up. Null if unknown.", "default": null}, + {"name": "size", "type": ["null", "int"], "doc": "US size of the Oura ring. Null if unknown.", "default": null} + ] +} diff --git a/commons/connector/oura/oura_session.avsc b/commons/connector/oura/oura_session.avsc new file mode 100644 index 00000000..3943b697 --- /dev/null +++ b/commons/connector/oura/oura_session.avsc @@ -0,0 +1,18 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraSession", + "type": "record", + "doc": "The Sessions data scope provides information on how users engage with guided and unguided sessions in the Oura app, including the user’s biometric trends during the sessions.", + "fields": [ + {"name": "time", "type": "double", "doc": "Start time of the session in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "endTime", "type": "double", "doc": "End time of the session in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "Unique identifier of the session from Oura.", "default": null}, + {"name": "type", "type": + {"name": "OuraMomentType", "type": "enum", "symbols": ["BREATHING", "MEDITATION", "NAP", "RELAXATION", "REST", "BODY_STATUS", "UNKNOWN"], "doc": "Possible Oura Moment types."}, + "doc": "Oura Moment type. UNKNOWN when this data is not provided by Oura.", "default": "UNKNOWN" }, + {"name": "mood", "type": + {"name": "OuraMomentMood", "type": "enum", "symbols": ["BAD", "WORSE", "SAME", "GOOD", "GREAT", "UNKNOWN"], "doc": "Possible Oura Moment moods."}, + "doc": "Oura Moment mood. UNKNOWN when this data is not provided by Oura.", "default": "UNKNOWN" } + ] +} diff --git a/commons/connector/oura/oura_sleep.avsc b/commons/connector/oura/oura_sleep.avsc new file mode 100644 index 00000000..10055cac --- /dev/null +++ b/commons/connector/oura/oura_sleep.avsc @@ -0,0 +1,48 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraSleep", + "type": "record", + "doc": "Oura Sleep data for the specified Oura user within a given timeframe. A user can have multiple sleep periods per day.", + "fields": [ + {"name": "time", "type": "double", "doc": "Start time of the sleep in seconds."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "ID of the sleep record.", "default": null}, + {"name": "averageBreath", "type": ["null", "float"], "doc": "Average breathing rate during sleep as breaths/second.", "default": null}, + {"name": "averageHeartRate", "type": ["null", "float"], "doc": "Average heart rate during sleep as beats/minute.", "default": null}, + {"name": "averageHrv", "type": ["null", "int"], "doc": "Average heart rate variability during sleep.", "default": null}, + {"name": "awakeTime", "type": ["null", "int"], "doc": "Duration spent awake in seconds.", "default": null}, + {"name": "bedtimeEnd", "type": ["null", "string"], "doc": "Bedtime end of the sleep.", "default": null}, + {"name": "bedtimeStart", "type": ["null", "string"], "doc": "Bedtime start of the sleep.", "default": null}, + {"name": "day", "type": ["null", "string"], "doc": "Day that the sleep belongs to.", "default": null}, + {"name": "deepSleepDuration", "type": ["null", "int"], "doc": "Duration spent in deep sleep in seconds.", "default": null}, + {"name": "efficiency", "type": ["null", "int"], "doc": "Sleep efficiency rating in range [1, 100].", "default": null}, + {"name": "latency", "type": ["null", "int"], "doc": "Sleep latency in seconds. This is the time it took for the user to fall asleep after going to bed.", "default": null}, + {"name": "lightSleepDuration", "type": ["null", "int"], "doc": "Duration spent in light sleep in seconds.", "default": null}, + {"name": "lowBatteryAlert", "type": ["null", "boolean"], "doc": "Flag indicating if a low battery alert occurred.", "default": null}, + {"name": "lowestHeartRate", "type": ["null", "int"], "doc": "Lowest heart rate during sleep.", "default": null}, + {"name": "period", "type": ["null", "int"], "doc": "ECore sleep period identifier.", "default": null}, + {"name": "readinessContributorActivityBalance", "type": ["null", "int"], "doc": "Contribution of cumulative activity balance to the readiness score in range [1, 100].", "default": null}, + {"name": "readinessContributorBodyTemperature", "type": ["null", "int"], "doc": "Contribution of cumulative activity balance to the readiness score in range [1, 100].", "default": null}, + {"name": "readinessContributorHrvBalance", "type": ["null", "int"], "doc": "Contribution of cumulative activity balance to the readiness score in range [1, 100].", "default": null}, + {"name": "readinessContributorPreviousDayActivity", "type": ["null", "int"], "doc": "Contribution of cumulative activity balance to the readiness score in range [1, 100].", "default": null}, + {"name": "readinessContributorPreviousNight", "type": ["null", "int"], "doc": "Contribution of cumulative activity balance to the readiness score in range [1, 100].", "default": null}, + {"name": "readinessContributorRecoveryIndex", "type": ["null", "int"], "doc": "Contribution of cumulative activity balance to the readiness score in range [1, 100].", "default": null}, + {"name": "readinessContributorRestingHeartRate", "type": ["null", "int"], "doc": "Contribution of cumulative activity balance to the readiness score in range [1, 100].", "default": null}, + {"name": "readinessContributorSleepBalance", "type": ["null", "int"], "doc": "Contribution of cumulative activity balance to the readiness score in range [1, 100].", "default": null}, + {"name": "readinessScore", "type": ["null", "int"], "doc": "Readiness score for this sleep.", "default": null}, + {"name": "readinessTemperatureDeviation", "type": ["null", "int"], "doc": "Readiness temperature deviation in degrees Celsius.", "default": null}, + {"name": "readinessTemperatureTrendDeviation", "type": ["null", "int"], "doc": "Readiness trend deviation in degrees Celsius.", "default": null}, + {"name": "readinessScoreDelta", "type": ["null", "int"], "doc": "Effect on readiness score caused by this sleep period.", "default": null}, + {"name": "remSleepDuration", "type": ["null", "int"], "doc": "Duration spent in REM sleep in seconds.", "default": null}, + {"name": "restlessPeriods", "type": ["null", "int"], "doc": "Number of restless periods during sleep.", "default": null}, + {"name": "sleepScoreDelta", "type": ["null", "int"], "doc": "Effect on sleep score caused by this sleep period.", "default": null}, + {"name": "sleepAlgorithmVersion", "type": + {"name": "OuraSleepAlgorithmVersion", "type": "enum", "symbols": ["V1", "V2"], "doc": "Oura Sleep algorithm version."}, + "doc": "Version of the sleep algorithm used to calculate the sleep data.", "default": "V2" }, + {"name": "timeInBed", "type": ["null", "int"], "doc": "Duration spent in bed in seconds.", "default": null}, + {"name": "totalSleepDuration", "type": ["null", "int"], "doc": "Total sleep duration in seconds.", "default": null}, + {"name": "type", "type": + {"name": "OuraSleepType", "type": "enum", "symbols": ["DELETED", "SLEEP", "LONG_SLEEP", "LATE_NAP", "REST", "UNKNOWN"], "doc": "Sleep type as computed by Oura."}, + "doc": "Possible sleep period types. UNKNOWN when this data is not provided.", "default": "UNKNOWN" } + ] +} diff --git a/commons/connector/oura/oura_sleep_movement.avsc b/commons/connector/oura/oura_sleep_movement.avsc new file mode 100644 index 00000000..39063145 --- /dev/null +++ b/commons/connector/oura/oura_sleep_movement.avsc @@ -0,0 +1,14 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraSleepMovement", + "type": "record", + "doc": "Oura Sleep movement in 30-second intervals as defined in https://cloud.ouraring.com/v2/docs#operation/Single_sleep_Document_v2_usercollection_sleep__document_id__get.", + "fields": [ + {"name": "time", "type": "double", "doc": "Start time of the sleep movement in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "Unique identifier of the Oura sleep record the sleep movement data is taken from.", "default": null}, + {"name": "movement", "type": + {"name": "OuraSleepMovementType", "type": "enum", "symbols": ["NO_MOTION", "RESTLESS", "TOSSING_AND_TURNING", "ACTIVE", "UNKNOWN"], "doc": "Sleep movement type as computed by Oura."}, + "doc": "Sleep movement at a 30-second interval. UNKNOWN when this data is not provided (e.g. samples from sleep API).", "default": "UNKNOWN" } + ] +} diff --git a/commons/connector/oura/oura_sleep_phase.avsc b/commons/connector/oura/oura_sleep_phase.avsc new file mode 100644 index 00000000..eb8a4386 --- /dev/null +++ b/commons/connector/oura/oura_sleep_phase.avsc @@ -0,0 +1,14 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraSleepPhase", + "type": "record", + "doc": "Oura Sleep phases in 5-minute intervals as defined in https://cloud.ouraring.com/v2/docs#operation/Single_sleep_Document_v2_usercollection_sleep__document_id__get.", + "fields": [ + {"name": "time", "type": "double", "doc": "Start time of the sleep phase in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "Unique identifier of the Oura sleep record the sleep stage data is taken from.", "default": null}, + {"name": "phase", "type": + {"name": "OuraSleepPhaseType", "type": "enum", "symbols": ["DEEP", "LIGHT", "REM", "AWAKE", "UNKNOWN"], "doc": "Sleep phase type as computed by Oura."}, + "doc": "Sleep phase at a 5-minute interval. UNKNOWN when this data is not provided (e.g. samples from sleep API).", "default": "UNKNOWN" } + ] +} diff --git a/commons/connector/oura/oura_tag.avsc b/commons/connector/oura/oura_tag.avsc new file mode 100644 index 00000000..4f05061a --- /dev/null +++ b/commons/connector/oura/oura_tag.avsc @@ -0,0 +1,14 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraTag", + "type": "record", + "doc": "This describes the tags that Oura users enter within the Oura mobile app. Tags are a growing list of activities, environment factors, symptoms, emotions, and other aspects that provide broader context into what’s happening with users beyond the objective data generated by the Oura Ring.", + "fields": [ + {"name": "time", "type": "double", "doc": "Timestamp of the note containing the Oura tags."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "Tag id of the record.", "default": null}, + {"name": "day", "type": ["null", "string"], "doc": "ID of the note or tag group.", "default": null}, + {"name": "text", "type": ["null", "string"], "doc": "Textual contents of the note.", "default": null}, + {"name": "tag", "type": ["null", "string"], "doc": "Tag part of this tag group/note.", "default": null} + ] +} diff --git a/commons/connector/oura/oura_workout.avsc b/commons/connector/oura/oura_workout.avsc new file mode 100644 index 00000000..324929e1 --- /dev/null +++ b/commons/connector/oura/oura_workout.avsc @@ -0,0 +1,23 @@ +{ + "namespace": "org.radarcns.connector.oura", + "name": "OuraWorkout", + "type": "record", + "doc": "The Workout data scope includes information about user workouts. This is a diverse, growing list of workouts that help inform how the user is training and exercising.", + "fields": [ + {"name": "time", "type": "double", "doc": "Start time of the workout in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "endTime", "type": "double", "doc": "End time of the workout in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."}, + {"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."}, + {"name": "id", "type": ["null", "string"], "doc": "Unique identifier of the workout from Oura.", "default": null}, + {"name": "activity", "type": ["null", "string"], "doc": "Type of the workout activity.", "default": null}, + {"name": "calories", "type": ["null", "float"], "doc": "Energy burned in kilocalories during the workout. Null if unknown.", "default": null}, + {"name": "day", "type": ["null", "string"], "doc": "Day when the workout occurred. Null if unknown.", "default": null}, + {"name": "distance", "type": ["null", "float"], "doc": "Distance traveled in meters during the workout. Null if unknown.", "default": null}, + {"name": "intensity", "type": + {"name": "OuraWorkoutIntensity", "type": "enum", "symbols": ["EASY", "MODERATE", "HARD", "UNKNOWN"], "doc": "Workout intensity as computed by Oura."}, + "doc": "Workout intensity as computed by Oura. UNKNOWN when this data is not provided by Oura.", "default": "UNKNOWN" }, + {"name": "label", "type": ["null", "string"], "doc": "User-defined label for the workout. Null if unknown.", "default": null}, + {"name": "source", "type": + {"name": "OuraWorkoutSource", "type": "enum", "symbols": ["MANUAL", "AUTODETECTED", "CONFIRMED", "WORKOUT_HEART_RATE", "UNKNOWN"], "doc": "Workout source type as computed by Oura."}, + "doc": "Workout source type as computed by Oura. UNKNOWN when this data is not provided by Oura.", "default": "UNKNOWN" } + ] +} diff --git a/commons/passive/google/google_activity_transition_event.avsc b/commons/passive/google/google_activity_transition_event.avsc new file mode 100644 index 00000000..dda10c76 --- /dev/null +++ b/commons/passive/google/google_activity_transition_event.avsc @@ -0,0 +1,22 @@ +{ + "namespace": "org.radarcns.passive.google", + "type": "record", + "name": "GoogleActivityTransitionEvent", + "doc": "Represents an activity transition event, for example start to walk, stop running etc.", + "fields": [ + { "name": "time", "type": "double", "doc": "The UNIX epoch time (s) for the moment when the activity takes place.." }, + { "name": "timeReceived", "type": "double", "doc": "Device receiver timestamp in UTC (s)." }, + { "name": "activity", "type": ["null",{ + "name": "ActivityType", + "type": "enum", + "doc": "The detected activity of the device. \nIN_VEHICLE indicates the device is in a vehicle, such as a car. \nON_BICYCLE indicates the device is on a bicycle. \n ON_FOOT indicates the device is on a user who is walking or running. \nRUNNING indicates the device is on a user who is running. This is a sub-activity of ON_FOOT. \nSTILL indicates the device is still (not moving). \nWALKING indicates the device is on a user who is walking. This is a sub-activity of ON_FOOT.", + "symbols": ["IN_VEHICLE", "ON_BICYCLE", "ON_FOOT", "RUNNING", "STILL", "WALKING", "UNKNOWN"] + }], "doc": "Gets the type of the activity of the transition.", "default": null }, + { "name": "transition", "type": { + "name": "TransitionType", + "type": "enum", + "doc": "Represents the transition associated with an activity listed in ActivityType. For instance start to walk, stop running etc. \nENTER represents user enters the given activity from ActivityType. \nEXIT represents user exits the given activity from ActivityType.", + "symbols": ["ENTER", "EXIT", "UNKNOWN"] + }, "doc": "Represents the transition associated with an activity listed in ActivityType.", "default": "UNKNOWN" } + ] +} diff --git a/commons/passive/google/google_places_info.avsc b/commons/passive/google/google_places_info.avsc new file mode 100644 index 00000000..2302ee89 --- /dev/null +++ b/commons/passive/google/google_places_info.avsc @@ -0,0 +1,26 @@ +{ + "namespace": "org.radarcns.passive.google", + "type": "record", + "name": "GooglePlacesInfo", + "doc": "Information of places where the user’s device is last known to be located along with an indication of the relative likelihood for each place.", + "fields": [ + { "name": "time", "type": "double", "doc": "Device timestamp in UTC (s)." }, + { "name": "timeReceived", "type": "double", "doc": "Device receiver timestamp in UTC (s)." }, + { "name": "type1", "type": ["null", { + "name": "PlacesType", + "type": "enum", + "doc": "The predefined categories or tags assigned to different places based on their characteristics. These types can represent various categories such as restaurants, cafes, museums, parks, hotels, airports, hospitals, and more.", + "symbols": [ "ACCOUNTING", "ADMINISTRATIVE_AREA_LEVEL_1", "ADMINISTRATIVE_AREA_LEVEL_2", "ADMINISTRATIVE_AREA_LEVEL_3", "ADMINISTRATIVE_AREA_LEVEL_4", "ADMINISTRATIVE_AREA_LEVEL_5", "AIRPORT", "AMUSEMENT_PARK", "AQUARIUM", "ARCHIPELAGO", "ART_GALLERY", "ATM", "BAKERY", "BANK", "BAR", "BEAUTY_SALON", "BICYCLE_STORE", "BOOK_STORE", "BOWLING_ALLEY", "BUS_STATION", "CAFE", "CAMPGROUND", "CAR_DEALER", "CAR_RENTAL", "CAR_REPAIR", "CAR_WASH", "CASINO", "CEMETERY", "CHURCH", "CITY_HALL", "CLOTHING_STORE", "COLLOQUIAL_AREA", "CONTINENT", "CONVENIENCE_STORE", "COUNTRY", "COURTHOUSE", "DENTIST", "DEPARTMENT_STORE", "DOCTOR", "DRUGSTORE", "ELECTRICIAN", "ELECTRONICS_STORE", "EMBASSY", "ESTABLISHMENT", "FINANCE", "FIRE_STATION", "FLOOR", "FLORIST", "FOOD", "FUNERAL_HOME", "FURNITURE_STORE", "GAS_STATION", "GENERAL_CONTRACTOR", "GEOCODE", "GROCERY_OR_SUPERMARKET", "GYM", "HAIR_CARE", "HARDWARE_STORE", "HEALTH", "HINDU_TEMPLE", "HOME_GOODS_STORE", "HOSPITAL", "INSURANCE_AGENCY", "INTERSECTION", "JEWELRY_STORE", "LAUNDRY", "LAWYER", "LIBRARY", "LIGHT_RAIL_STATION", "LIQUOR_STORE", "LOCAL_GOVERNMENT_OFFICE", "LOCALITY", "LOCKSMITH", "LODGING", "MEAL_DELIVERY", "MEAL_TAKEAWAY", "MOSQUE", "MOVIE_RENTAL", "MOVIE_THEATER", "MOVING_COMPANY", "MUSEUM", "NATURAL_FEATURE", "NEIGHBORHOOD", "NIGHT_CLUB", "PAINTER", "PARK", "PARKING", "PET_STORE", "PHARMACY", "PHYSIOTHERAPIST", "PLACE_OF_WORSHIP", "PLUMBER", "PLUS_CODE", "POINT_OF_INTEREST", "POLICE", "POLITICAL", "POST_BOX", "POST_OFFICE", "POSTAL_CODE_PREFIX", "POSTAL_CODE_SUFFIX", "POSTAL_CODE", "POSTAL_TOWN", "PREMISE", "PRIMARY_SCHOOL", "REAL_ESTATE_AGENCY", "RESTAURANT", "ROOFING_CONTRACTOR", "ROOM", "ROUTE", "RV_PARK", "SCHOOL", "SECONDARY_SCHOOL", "SHOE_STORE", "SHOPPING_MALL", "SPA", "STADIUM", "STORAGE", "STORE", "STREET_ADDRESS", "STREET_NUMBER", "SUBLOCALITY_LEVEL_1", "SUBLOCALITY_LEVEL_2", "SUBLOCALITY_LEVEL_3", "SUBLOCALITY_LEVEL_4", "SUBLOCALITY_LEVEL_5", "SUBLOCALITY", "SUBPREMISE", "SUBWAY_STATION", "SUPERMARKET", "SYNAGOGUE", "TAXI_STAND", "TOURIST_ATTRACTION", "TOWN_SQUARE", "TRAIN_STATION", "TRANSIT_STATION", "TRAVEL_AGENCY", "UNIVERSITY", "VETERINARY_CARE", "ZOO"] + }], "doc": "Categorizing places based on their characteristics or attributes, this field represents the first type, if any, among the retrieved place categories.", "default": null + }, + { "name": "type2", "type": ["null", "org.radarcns.passive.google.PlacesType"], "doc": "Categorizing places based on their characteristics or attributes, this field represents the second type, if any, among the retrieved place categories.", "default": null }, + { "name": "type3", "type": ["null", "org.radarcns.passive.google.PlacesType"], "doc": "Categorizing places based on their characteristics or attributes, this field represents the third type, if any, among the retrieved place categories.", "default": null }, + { "name": "type4", "type": ["null", "org.radarcns.passive.google.PlacesType"], "doc": "Categorizing places based on their characteristics or attributes, this field represents the fourth type, if any, among the retrieved place categories.", "default": null }, + { "name": "city", "type": ["null", "string"], "doc": "The city returned corresponds to the current location of the user's device.", "default": null }, + { "name": "state", "type": ["null", "string"], "doc": "The state returned corresponds to the current location of the user's device.", "default": null }, + { "name": "country", "type": ["null", "string"], "doc": "The country returned corresponds to the current location of the user's device.", "default": null }, + { "name": "placeId", "type": ["null", "string"], "doc": "A unique identifier assigned to each place in the Google Places database. It serves as a specific reference or key to a particular place entry and is used to retrieve detailed information about that place. By default, it is not retrieved to respect the user's privacy. To retrieve place IDs, Firebase parameters need to be explicitly set.", "default": null }, + { "name": "likelihood", "type": "double", "doc": "The likelihood provides a relative probability of the place being the best match within the list of returned places for a single request. A higher value means a greater probability that the place is the best match. It's value ranges between 0.0 and 1.0." }, + { "name": "fromBroadcast", "type": "boolean", "doc": "Whether the data was generated as a result of a change in device location (true) or as part of a fixed scheduled intervals (false)." } + ] +} diff --git a/commons/passive/google/google_sleep_segment_event.avsc b/commons/passive/google/google_sleep_segment_event.avsc index e690fe43..6fc46f9c 100644 --- a/commons/passive/google/google_sleep_segment_event.avsc +++ b/commons/passive/google/google_sleep_segment_event.avsc @@ -7,11 +7,11 @@ { "name": "time", "type": "double", "doc": "The UNIX epoch time (s) for the moment when the user goes to sleep." }, { "name": "timeReceived", "type": "double", "doc": "Device receiver timestamp in UTC (s)." }, { "name": "endTime", "type": "double", "doc": "The UNIX epoch time (s) for the moment when the user wakes up." }, - { "name": "status", "type": { + { "name": "status", "type": [ "null", { "name": "SleepClassificationStatus", "type": "enum", "doc": "The status of the sleep segment detection. \nSUCCESSFUL indicates successful detection of sleep segment in the past day.\nNOT_DETECTED indicates Sleep segment is not detected in the past day, or there isn't enough confidence that the user slept during the past day. This could happen for a variety of reasons, including the following: too much missing data, the user sleeps with the light, the user interacts with their device often, or the user's device doesn't support the sensors needed for sleep detection. \nMISSING_DATA indicates sleep segment was detected, but there was some missing data near the detected sleep segment. This could happen for a variety of reasons, including the following: the user turned off their device, the user delayed logging into their device after a system reboot or system upgrade, or an event occurred that paused the detection.", "symbols": ["SUCCESSFUL", "MISSING_DATA", "NOT_DETECTED", "UNKNOWN"] - }, "doc": "Status that indicates whether the system succeeded in detecting sleep.", "default": "UNKNOWN" } + }], "doc": "Status that indicates whether the system succeeded in detecting sleep.", "default": null } ] } diff --git a/commons/passive/phone/phone_usage_event.avsc b/commons/passive/phone/phone_usage_event.avsc index 99ed6459..592b3cb4 100644 --- a/commons/passive/phone/phone_usage_event.avsc +++ b/commons/passive/phone/phone_usage_event.avsc @@ -13,7 +13,7 @@ "name": "UsageEventType", "type": "enum", "doc": "Android activity usage event type.", - "symbols": ["FOREGROUND", "BACKGROUND", "CONFIG", "SHORTCUT", "INTERACTION", "OTHER", "UNKNOWN"] + "symbols": ["FOREGROUND", "BACKGROUND", "CONFIG", "SHORTCUT", "INTERACTION", "FOREGROUND_SERVICE_START", "FOREGROUND_SERVICE_STOP", "STANDBY_BUCKET_CHANGED", "STOPPED", "OTHER", "UNKNOWN"] }, "doc": "Whether the event brought app to foreground or background or neither.", "default": "UNKNOWN" } ] } diff --git a/java-sdk/build.gradle.kts b/java-sdk/build.gradle.kts index c125ce17..6ae361c9 100644 --- a/java-sdk/build.gradle.kts +++ b/java-sdk/build.gradle.kts @@ -9,7 +9,7 @@ plugins { } allprojects { - version = "0.8.4" + version = "0.8.5" group = "org.radarbase" } diff --git a/specifications/connector/radar-oura-connector.yml b/specifications/connector/radar-oura-connector.yml new file mode 100644 index 00000000..7034e6f6 --- /dev/null +++ b/specifications/connector/radar-oura-connector.yml @@ -0,0 +1,63 @@ +name: RADAR-OURA-CONNECTOR +vendor: RADAR-base +model: radar-connect-oura-source +version: 0.0.1 +doc: Spec for Radar Oura connector. Schemas should be registered in the connector. +data: + - doc: The daily activity summary values and detailed activity levels. + topic: connect_oura_daily_activity + value_schema: .connector.oura.OuraDailyActivity + - doc: The daily readiness summary values. + topic: connect_oura_daily_readiness + value_schema: .connector.oura.OuraDailyReadiness + - doc: The daily sleep summary values. + topic: connect_oura_daily_sleep + value_schema: .connector.oura.OuraDailySleep + - doc: Timeseries heart rate data. + topic: connect_oura_heart_rate + value_schema: .connector.oura.OuraHeartRate + - doc: Timeseries heart rate variability data. + topic: connect_oura_heart_rate_variability + value_schema: .connector.oura.OuraHeartRateVariability + - doc: Timeseries MET (metabolic equivalent) data. This describes MET data during an activity. + topic: connect_oura_met + value_schema: .connector.oura.OuraMet + - doc: Timeseries motion count data. This describes motion count during a session. + topic: connect_oura_motion_count + value_schema: .connector.oura.OuraMotionCount + - doc: The tag data scope provides information on the tags the users enter in the mobile app, which includes activities, symptoms, etc. + topic: connect_oura_tag + value_schema: .connector.oura.OuraTag + - doc: The Sessions data scope provides information on how users engage with guided and unguided sessions in the Oura app. + topic: connect_oura_session + value_schema: .connector.oura.OuraSession + - doc: The sleep data for the specified Oura user within a given timeframe. A user can have multiple sleep periods per day. + topic: connect_oura_sleep + value_schema: .connector.oura.OuraSleep + - doc: The workout data scope includes information about user workouts. + topic: connect_oura_workout + value_schema: .connector.oura.OuraWorkout + - doc: The personal info scope includes personal information (e.g. age, email, weight, and height) about the user. + topic: connect_oura_personal_info + value_schema: .connector.oura.OuraPersonalInfo + - doc: Sleep data with 5-minute granularity. 'Sleep Phase' levels include deep, light, rem, and awake. + topic: connect_oura_sleep_phase + value_schema: .connector.oura.OuraSleepPhase + - doc: Sleep movement data with 30-second granularity. 'Sleep Movement' levels include no motion, restless, tossing and turning, and active. + topic: connect_oura_sleep_movement + value_schema: .connector.oura.OuraSleepMovement + - doc: Activity data with 5-minute granularity. 'Activity Classes' include non-wear, rest, inactive, high, low, and medium activity. + topic: connect_oura_activity_class + value_schema: .connector.oura.OuraActivityClass + - doc: The daily spO2 data of the user. This contains the spO2 average. + topic: connect_oura_daily_spo2 + value_schema: .connector.oura.OuraDailySpo2 + - doc: The Rest Mode scope includes information about rest mode periods. + topic: connect_oura_rest_mode_period + value_schema: .connector.oura.OuraRestModePeriod + - doc: The Ring Configuration scope includes information about the user's ring(s). This includes the model, size, color, etc. + topic: connect_oura_ring_configuration + value_schema: .connector.oura.OuraRingConfiguration + - doc: This includes recommendations for the optimal bedtime window that is calculated based on sleep data. + topic: connect_oura_recommended_sleep_time + value_schema: .connector.oura.OuraRecommendedSleepTime \ No newline at end of file diff --git a/specifications/passive/google_activity-1.0.0.yml b/specifications/passive/google_activity-1.0.0.yml new file mode 100644 index 00000000..591e297e --- /dev/null +++ b/specifications/passive/google_activity-1.0.0.yml @@ -0,0 +1,14 @@ +#======================================= Google Activity ==========================================# +vendor: GOOGLE +model: ACTIVITY +version: 1.0.0 +data: + #Google Activity Recognition + - type: ACTIVITY_TRANSITION_EVENT + app_provider: .google.GoogleActivityProvider + unit: NON_DIMENSIONAL + processing_state: RAW + topic: android_google_activity_transition_event + value_schema: .passive.google.GoogleActivityTransitionEvent + sample_rate: + dynamic: true diff --git a/specifications/passive/google_places-1.0.0.yml b/specifications/passive/google_places-1.0.0.yml new file mode 100644 index 00000000..9b60951d --- /dev/null +++ b/specifications/passive/google_places-1.0.0.yml @@ -0,0 +1,16 @@ +#======================================== Google Places =============================================# +vendor: GOOGLE +model: PLACES +version: 1.0.0 +data: + #Google Places + - type: GOOGLE_PLACES + app_provider: .google.GooglePlacesProvider + unit: NON_DIMENSIONAL + processing_state: RAW + topic: android_google_places_info + value_schema: .passive.google.GooglePlacesInfo + sample_rate: + interval: 600 + configurable: true + dynamic: true