Modules JSON Export
{
"subflows": [
{
"flow": [
{
"id": 122,
"module": "json:ParseJSON",
"version": 1,
"parameters": {
"type": ""
},
"mapper": {
"json": "[\n {\n \"data\": {\n \"metrics\": [\n {\n \"units\": \"min\",\n \"data\": [\n {\n \"qty\": 175.2,\n \"date\": \"2024-04-15 00:00:00 +0200\",\n \"source\": \"Maxime’s Apple Watch|Maxime’s iPhone (2)\"\n },\n {\n \"qty\": 157.2,\n \"source\": \"Maxime’s Apple Watch|Maxime’s iPhone (2)\",\n \"date\": \"2024-04-16 00:00:00 +0200\"\n },\n {\n \"date\": \"2024-04-17 00:00:00 +0200\",\n \"source\": \"Maxime’s Apple Watch|Maxime’s iPhone (2)\",\n \"qty\": 42\n }\n ],\n \"name\": \"apple_stand_time\"\n },\n {\n \"name\": \"environmental_audio_exposure\",\n \"units\": \"dBASPL\",\n \"data\": [\n {\n \"date\": \"2024-04-15 00:00:00 +0200\",\n \"qty\": 65.32677315827898\n },\n {\n \"qty\": 67.72967896245953,\n \"date\": \"2024-04-16 00:00:00 +0200\"\n },\n {\n \"date\": \"2024-04-17 00:00:00 +0200\",\n \"qty\": 57.53758667137109\n }\n ]\n },\n {\n \"data\": [\n {\n \"date\": \"2024-04-15 00:00:00 +0200\",\n \"source\": \"Maxime’s Apple Watch\",\n \"qty\": 7820.55833648738\n },\n {\n \"qty\": 7840.295105315788,\n \"source\": \"Maxime’s Apple Watch\",\n \"date\": \"2024-04-16 00:00:00 +0200\"\n },\n {\n \"source\": \"Maxime’s Apple Watch\",\n \"date\": \"2024-04-17 00:00:00 +0200\",\n \"qty\": 2883.743318197767\n }\n ],\n \"name\": \"basal_energy_burned\",\n \"units\": \"kJ\"\n },\n {\n \"data\": [\n {\n \"Max\": 188,\n \"date\": \"2024-04-15 00:00:00 +0200\",\n \"Min\": 44,\n \"source\": \"Maxime’s Apple Watch|Oura\",\n \"Avg\": 70.31713024401918\n },\n {\n \"Avg\": 68.09904099697327,\n \"source\": \"Maxime’s Apple Watch|Oura\",\n \"Min\": 46,\n \"date\": \"2024-04-16 00:00:00 +0200\",\n \"Max\": 187\n },\n {\n \"Max\": 121,\n \"Min\": 45,\n \"Avg\": 53.31467240624592,\n \"source\": \"Maxime’s Apple Watch|Oura\",\n \"date\": \"2024-04-17 00:00:00 +0200\"\n }\n ],\n \"units\": \"count/min\",\n \"name\": \"heart_rate\"\n },\n {\n \"units\": \"min\",\n \"name\": \"apple_exercise_time\",\n \"data\": [\n {\n \"qty\": 149,\n \"source\": \"Maxime’s Apple Watch|Maxime’s iPhone (2)\",\n \"date\": \"2024-04-15 00:00:00 +0200\"\n },\n {\n \"source\": \"Maxime’s Apple Watch|Maxime’s iPhone (2)\",\n \"qty\": 126,\n \"date\": \"2024-04-16 00:00:00 +0200\"\n },\n {\n \"qty\": 33,\n \"source\": \"Maxime’s Apple Watch|Maxime’s iPhone (2)\",\n \"date\": \"2024-04-17 00:00:00 +0200\"\n }\n ]\n },\n {\n \"units\": \"count/min\",\n \"name\": \"resting_heart_rate\",\n \"data\": [\n {\n \"date\": \"2024-04-15 00:00:00 +0200\",\n \"qty\": 54\n },\n {\n \"qty\": 49,\n \"date\": \"2024-04-16 00:00:00 +0200\"\n },\n {\n \"date\": \"2024-04-17 00:00:00 +0200\",\n \"qty\": 55\n }\n ]\n },\n {\n \"units\": \"count/min\",\n \"name\": \"cardio_recovery\",\n \"data\": [\n {\n \"date\": \"2024-04-15 00:00:00 +0200\",\n \"qty\": 46.906116489353515\n },\n {\n \"date\": \"2024-04-17 00:00:00 +0200\",\n \"qty\": 47.76198855717249\n }\n ]\n },\n {\n \"data\": [\n {\n \"date\": \"2024-04-15 00:00:00 +0200\",\n \"qty\": 1371.327000000008,\n \"source\": \"Maxime’s Apple Watch|Oura\"\n },\n {\n \"source\": \"Maxime’s Apple Watch|Oura\",\n \"date\": \"2024-04-16 00:00:00 +0200\",\n \"qty\": 1262.67600000001\n },\n {\n \"source\": \"Maxime’s Apple Watch|Oura\",\n \"qty\": 205.75899999999965,\n \"date\": \"2024-04-17 00:00:00 +0200\"\n }\n ],\n \"units\": \"kcal\",\n \"name\": \"active_energy\"\n },\n {\n \"data\": [\n {\n \"qty\": 66.10866383644904,\n \"date\": \"2024-04-15 00:00:00 +0200\"\n },\n {\n \"date\": \"2024-04-16 00:00:00 +0200\",\n \"qty\": 83.756633292232\n },\n {\n \"date\": \"2024-04-17 00:00:00 +0200\",\n \"qty\": 67.26853073582659\n }\n ],\n \"name\": \"heart_rate_variability\",\n \"units\": \"ms\"\n },\n {\n \"name\": \"walking_heart_rate_average\",\n \"data\": [\n {\n \"qty\": 101,\n \"date\": \"2024-04-15 00:00:00 +0200\"\n },\n {\n \"qty\": 99.5,\n \"date\": \"2024-04-16 00:00:00 +0200\"\n },\n {\n \"qty\": 97,\n \"date\": \"2024-04-17 00:00:00 +0200\"\n }\n ],\n \"units\": \"count/min\"\n },\n {\n \"units\": \"count\",\n \"name\": \"flights_climbed\",\n \"data\": [\n {\n \"qty\": 13,\n \"source\": \"Maxime’s Apple Watch|Maxime’s iPhone (2)\",\n \"date\": \"2024-04-15 00:00:00 +0200\"\n },\n {\n \"source\": \"Maxime’s Apple Watch|Maxime’s iPhone (2)\",\n \"date\": \"2024-04-16 00:00:00 +0200\",\n \"qty\": 9.56444420698298\n },\n {\n \"qty\": 3,\n \"source\": \"Maxime’s Apple Watch|Maxime’s iPhone (2)\",\n \"date\": \"2024-04-17 00:00:00 +0200\"\n }\n ]\n },\n {\n \"units\": \"km\",\n \"data\": [\n {\n \"source\": \"Maxime’s Apple Watch|Maxime’s iPhone (2)\",\n \"date\": \"2024-04-15 00:00:00 +0200\",\n \"qty\": 8.802214880212675\n },\n {\n \"qty\": 5.272870946800336,\n \"source\": \"Maxime’s Apple Watch|Maxime’s iPhone (2)\",\n \"date\": \"2024-04-16 00:00:00 +0200\"\n },\n {\n \"qty\": 3.146839464826975,\n \"source\": \"Maxime’s Apple Watch|Maxime’s iPhone (2)\",\n \"date\": \"2024-04-17 00:00:00 +0200\"\n }\n ],\n \"name\": \"walking_running_distance\"\n },\n {\n \"data\": [\n {\n \"date\": \"2024-04-15 00:00:00 +0200\",\n \"qty\": 47.355000000000004\n },\n {\n \"date\": \"2024-04-17 00:00:00 +0200\",\n \"qty\": 47.41\n }\n ],\n \"units\": \"ml/(kg·min)\",\n \"name\": \"vo2_max\"\n },\n {\n \"data\": [\n {\n \"date\": \"2024-04-16 00:00:00 +0200\",\n \"qty\": 500\n }\n ],\n \"units\": \"m\",\n \"name\": \"six_minute_walking_test_distance\"\n },\n {\n \"name\": \"walking_asymmetry_percentage\",\n \"units\": \"%\",\n \"data\": [\n {\n \"qty\": 0.06666666666666667,\n \"date\": \"2024-04-15 00:00:00 +0200\"\n },\n {\n \"date\": \"2024-04-16 00:00:00 +0200\",\n \"qty\": 1.4000000000000001\n },\n {\n \"qty\": 0,\n \"date\": \"2024-04-17 00:00:00 +0200\"\n }\n ]\n },\n {\n \"data\": [\n {\n \"date\": \"2024-04-15 00:00:00 +0200\",\n \"qty\": 5.116320000000001\n },\n {\n \"qty\": 4.809599999999999,\n \"date\": \"2024-04-16 00:00:00 +0200\"\n },\n {\n \"qty\": 5.22,\n \"date\": \"2024-04-17 00:00:00 +0200\"\n }\n ],\n \"name\": \"walking_speed\",\n \"units\": \"km/hr\"\n },\n {\n \"name\": \"respiratory_rate\",\n \"units\": \"count/min\",\n \"data\": [\n {\n \"date\": \"2024-04-15 00:00:00 +0200\",\n \"qty\": 12.875\n },\n {\n \"qty\": 12.5,\n \"date\": \"2024-04-16 00:00:00 +0200\"\n },\n {\n \"date\": \"2024-04-17 00:00:00 +0200\",\n \"qty\": 12.125\n }\n ]\n },\n {\n \"name\": \"stair_speed_down\",\n \"units\": \"m/s\",\n \"data\": [\n {\n \"qty\": 0.5449947938323021,\n \"date\": \"2024-04-15 00:00:00 +0200\"\n },\n {\n \"date\": \"2024-04-17 00:00:00 +0200\",\n \"qty\": 0.5194099247455597\n }\n ]\n },\n {\n \"data\": [\n {\n \"date\": \"2024-04-15 00:00:00 +0200\",\n \"qty\": 77.64\n },\n {\n \"date\": \"2024-04-16 00:00:00 +0200\",\n \"qty\": 73.1\n },\n {\n \"date\": \"2024-04-17 00:00:00 +0200\",\n \"qty\": 78.5\n }\n ],\n \"name\": \"walking_step_length\",\n \"units\": \"cm\"\n },\n {\n \"name\": \"stair_speed_up\",\n \"units\": \"m/s\",\n \"data\": [\n {\n \"qty\": 0.32970589995384214,\n \"date\": \"2024-04-15 00:00:00 +0200\"\n },\n {\n \"date\": \"2024-04-16 00:00:00 +0200\",\n \"qty\": 0.5345882177352905\n },\n {\n \"date\": \"2024-04-17 00:00:00 +0200\",\n \"qty\": 0.3882029553254445\n }\n ]\n },\n {\n \"units\": \"%\",\n \"name\": \"walking_double_support_percentage\",\n \"data\": [\n {\n \"date\": \"2024-04-15 00:00:00 +0200\",\n \"qty\": 25.73478260869565\n },\n {\n \"qty\": 26.625,\n \"date\": \"2024-04-16 00:00:00 +0200\"\n },\n {\n \"qty\": 25.750000000000007,\n \"date\": \"2024-04-17 00:00:00 +0200\"\n }\n ]\n },\n {\n \"name\": \"step_count\",\n \"units\": \"count\",\n \"data\": [\n {\n \"qty\": 11018,\n \"date\": \"2024-04-15 00:00:00 +0200\",\n \"source\": \"Maxime’s Apple Watch|Maxime’s iPhone (2)|Oura\"\n },\n {\n \"date\": \"2024-04-16 00:00:00 +0200\",\n \"source\": \"Maxime’s Apple Watch|Maxime’s iPhone (2)|Oura\",\n \"qty\": 7589\n },\n {\n \"source\": \"Maxime’s Apple Watch|Maxime’s iPhone (2)|Oura\",\n \"date\": \"2024-04-17 00:00:00 +0200\",\n \"qty\": 3707\n }\n ]\n },\n {\n \"units\": \"mL\",\n \"name\": \"dietary_water\",\n \"data\": [\n {\n \"source\": \"Hidrate\",\n \"qty\": 2740,\n \"date\": \"2024-04-15 00:00:00 +0200\"\n },\n {\n \"qty\": 2100,\n \"date\": \"2024-04-16 00:00:00 +0200\",\n \"source\": \"Hidrate\"\n }\n ]\n },\n {\n \"name\": \"apple_stand_hour\",\n \"units\": \"count\",\n \"data\": [\n {\n \"date\": \"2024-04-15 00:00:00 +0200\",\n \"qty\": 13\n },\n {\n \"qty\": 14,\n \"date\": \"2024-04-16 00:00:00 +0200\"\n },\n {\n \"qty\": 2,\n \"date\": \"2024-04-17 00:00:00 +0200\"\n }\n ]\n },\n {\n \"units\": \"dBASPL\",\n \"data\": [\n {\n \"qty\": 61.80808572463909,\n \"date\": \"2024-04-15 00:00:00 +0200\"\n },\n {\n \"qty\": 61.13966854774309,\n \"date\": \"2024-04-16 00:00:00 +0200\"\n },\n {\n \"date\": \"2024-04-17 00:00:00 +0200\",\n \"qty\": 52.59199673288058\n }\n ],\n \"name\": \"headphone_audio_exposure\"\n },\n {\n \"units\": \"hr\",\n \"name\": \"sleep_analysis\",\n \"data\": [\n {\n \"inBedEnd\": \"2024-04-15 07:14:04 +0200\",\n \"sleepStart\": \"2024-04-14 21:28:34 +0200\",\n \"deep\": 1.65,\n \"date\": \"2024-04-15 07:00:34 +0200\",\n \"sleepEnd\": \"2024-04-15 07:14:04 +0200\",\n \"source\": \"Oura\",\n \"inBedStart\": \"2024-04-14 21:28:34 +0200\",\n \"asleep\": 0,\n \"inBed\": 9.758333333333333,\n \"rem\": 2.275,\n \"core\": 4.733333333333335,\n \"awake\": 1.0666666666666667\n },\n {\n \"core\": 3.5666666666666673,\n \"date\": \"2024-04-16 06:59:58 +0200\",\n \"rem\": 1.9333333333333336,\n \"asleep\": 0,\n \"awake\": 1.7666666666666666,\n \"source\": \"Oura\",\n \"sleepStart\": \"2024-04-15 21:48:58 +0200\",\n \"sleepEnd\": \"2024-04-16 07:16:58 +0200\",\n \"inBedStart\": \"2024-04-15 21:48:58 +0200\",\n \"deep\": 2.1916666666666664,\n \"inBedEnd\": \"2024-04-16 07:16:58 +0200\",\n \"inBed\": 9.466666666666667\n },\n {\n \"inBedEnd\": \"2024-04-17 07:00:58 +0200\",\n \"date\": \"2024-04-17 06:55:03 +0200\",\n \"sleepEnd\": \"2024-04-17 07:15:03 +0200\",\n \"source\": \"Maxime’s iPhone (2)|Oura\",\n \"sleepStart\": \"2024-04-16 22:13:03 +0200\",\n \"asleep\": 0,\n \"deep\": 1.2833333333333334,\n \"rem\": 2.008333333333333,\n \"core\": 3.8166666666666664,\n \"awake\": 1.8999999999999997,\n \"inBedStart\": \"2024-04-16 21:26:52 +0200\",\n \"inBed\": 9.155843916667832\n }\n ]\n },\n {\n \"data\": [\n {\n \"date\": \"2024-04-15 00:00:00 +0200\",\n \"qty\": 3.7899122865576493\n },\n {\n \"date\": \"2024-04-16 00:00:00 +0200\",\n \"qty\": 3.370777486156842\n },\n {\n \"qty\": 2.695698925243911,\n \"date\": \"2024-04-17 00:00:00 +0200\"\n }\n ],\n \"name\": \"physical_effort\",\n \"units\": \"kcal/hr·kg\"\n }\n ]\n }\n }\n]"
},
"metadata": {
"designer": {
"x": -2001,
"y": -3424
},
"restore": {
"parameters": {
"type": {
"label": "Choose a data structure"
}
}
},
"parameters": [
{
"name": "type",
"type": "udt",
"label": "Data structure"
}
],
"expect": [
{
"name": "json",
"type": "text",
"label": "JSON string",
"required": true
}
]
}
},
{
"id": 137,
"module": "builtin:BasicFeeder",
"version": 1,
"parameters": {},
"mapper": {
"array": "{{122.data.metrics}}"
},
"metadata": {
"designer": {
"x": -1757,
"y": -3425,
"name": "Iterate Metrics"
},
"restore": {
"expect": {
"array": {
"mode": "edit"
}
}
},
"expect": [
{
"name": "array",
"type": "array",
"label": "Array",
"mode": "edit",
"spec": []
}
]
}
},
{
"id": 138,
"module": "util:TextAggregator",
"version": 1,
"parameters": {
"rowSeparator": "other",
"otherRowSeparator": ";",
"feeder": 137
},
"mapper": {
"value": "{{137.name}}"
},
"metadata": {
"designer": {
"x": -1513,
"y": -3424,
"name": "Get Metric Headers"
},
"restore": {
"parameters": {
"rowSeparator": {
"label": "Other"
}
},
"extra": {
"feeder": {
"label": "Iterate Metrics"
}
}
},
"parameters": [
{
"name": "rowSeparator",
"type": "select",
"label": "Row separator",
"validate": {
"enum": [
"\n",
"\t",
"other"
]
}
},
{
"name": "otherRowSeparator",
"type": "text",
"label": "Separator"
}
],
"expect": [
{
"name": "value",
"type": "text",
"label": "Text"
}
],
"advanced": true
}
},
{
"id": 126,
"module": "builtin:BasicRepeater",
"version": 1,
"parameters": {},
"mapper": {
"start": "1",
"repeats": "{{length(122.data.metrics[].data)}}",
"step": "1"
},
"metadata": {
"designer": {
"x": -1268,
"y": -3426,
"name": "Number of Days"
},
"restore": {},
"expect": [
{
"name": "start",
"type": "number",
"label": "Initial value",
"required": true
},
{
"name": "repeats",
"type": "number",
"label": "Repeats",
"validate": {
"min": 0,
"max": 10000
},
"required": true
},
{
"name": "step",
"type": "number",
"label": "Step",
"required": true
}
]
}
},
{
"id": 128,
"module": "builtin:BasicFeeder",
"version": 1,
"parameters": {},
"mapper": {
"array": "{{122.data.metrics}}"
},
"metadata": {
"designer": {
"x": -1022,
"y": -3425,
"name": "Iterate Metrics"
},
"restore": {
"expect": {
"array": {
"mode": "edit"
}
}
},
"expect": [
{
"name": "array",
"type": "array",
"label": "Array",
"mode": "edit",
"spec": []
}
]
}
},
{
"id": 131,
"module": "util:TextAggregator",
"version": 1,
"parameters": {
"rowSeparator": "other",
"otherRowSeparator": ";",
"feeder": 128
},
"mapper": {
"value": "{{122.data.metrics[128.`__IMTINDEX__`].data[126.i].qty}}"
},
"metadata": {
"designer": {
"x": -778,
"y": -3425,
"name": "Get Day Metrics"
},
"restore": {
"parameters": {
"rowSeparator": {
"label": "Other"
}
},
"extra": {
"feeder": {
"label": "Iterate Metrics"
}
}
},
"parameters": [
{
"name": "rowSeparator",
"type": "select",
"label": "Row separator",
"validate": {
"enum": [
"\n",
"\t",
"other"
]
}
},
{
"name": "otherRowSeparator",
"type": "text",
"label": "Separator"
}
],
"expect": [
{
"name": "value",
"type": "text",
"label": "Text"
}
],
"advanced": true
}
},
{
"id": 136,
"module": "util:TextAggregator",
"version": 1,
"parameters": {
"rowSeparator": "\n",
"feeder": 126
},
"mapper": {
"value": "{{122.data.metrics[1].data[126.i].date}};{{131.text}}"
},
"metadata": {
"designer": {
"x": -531,
"y": -3425,
"name": "Combine Days"
},
"restore": {
"parameters": {
"rowSeparator": {
"label": "New row"
}
},
"extra": {
"feeder": {
"label": "Number of Days"
}
}
},
"parameters": [
{
"name": "rowSeparator",
"type": "select",
"label": "Row separator",
"validate": {
"enum": [
"\n",
"\t",
"other"
]
}
}
],
"expect": [
{
"name": "value",
"type": "text",
"label": "Text"
}
],
"advanced": true
}
},
{
"id": 139,
"module": "util:ComposeTransformer",
"version": 1,
"parameters": {},
"mapper": {
"value": "date;{{138.text}}{{newline}}{{136.text}}"
},
"metadata": {
"designer": {
"x": -288,
"y": -3426,
"name": "Combine to CSV",
"messages": [
{
"category": "last",
"severity": "warning",
"message": "A transformer should not be the last module in the route."
}
]
},
"restore": {},
"expect": [
{
"name": "value",
"type": "text",
"label": "Text"
}
]
}
}
]
}
],
"metadata": {
"version": 1
}
}