Hi, I'm Bob. BobAPI is a personal data warehouse of my self-tracking data, which I am making available via a personal API.
You can learn more about my motivation for building BobAPI here.
This is still very much a work in progress, so this information is subject to change. Your mileage may vary :)
BobAPI uses OAuth, which requires obtaining a valid access token. This is then used to authorize API requests. At this time, you'll need to contact me for access and I will set you up with client OAuth credentials.
POST https://api.bobapi.com/v1/oauth/token
For simplicity, use a "client credentials" grant type. The response will contain an access token and refresh token.
Example Request:
curl -i -H "Content-Type: application/json" \
-X POST https://api.bobapi.com/v1/oauth/token \
-u CLIENT_ID:CLIENT_SECRET \
-d '{"grant_type": "client_credentials"}'Response:
{
"access_token": "TsT5OjbzRn431zqMLgV3Ib",
"refresh_token": "38doloxA4umeDZm4kVBDRr",
"expires_in": 157766400,
"token_type": "Bearer"
}
In the event an access token has expired, use the refresh token previously received to request a new access token:
Example Request:
curl -i -H "Content-Type: application/json" \
-X POST https://api.bobapi.com/v1/oauth/token \
-u CLIENT_ID:CLIENT_SECRET \
-d '{"grant_type": "refresh_token", "refresh_token": REFRESH_TOKEN}'
Once you have a valid access token, you can use it to make requests to API endpoints using bearer tokens, i.e.:
curl -i https://api.bobapi.com/v1/users/bob/glucose \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib' Additionally, all measurement endpoints accept the following optional parameters:
| Name | Value |
|---|---|
| limit | Specifies the number of records to retrieve. Example: "limit=10" |
| offset | Specifies the starting record for results to return. Example: specifying "offset=0" will start offset from 0 record, "offset=4" will start offset from 4th record, etc |
| start_date | Specifies starting date for results in YYYY-MM-DD format. Example: "start_date=2015-06-15" |
| end_date | Specifies end date for results in YYYY-MM-DD format. Example: "end_date=2015-07-31" |
| start_time | Specifies a start timestamp in UTC (YYYY-MM-DDTHH:MM:SS.00Z) format |
| end_time | Specifies an end timestamp in UTC (YYYY-MM-DDTHH:MM:SS.00Z) format |
| source | Returns results only for specific source. Example: "source=withings" |
GET https://api.bobapi.com/v1/users/bob
Returns profile and latest summary measurements.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/ \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
{
"username": "bob",
"name": "Bob T",
"tz": "America/New_York",
"gender": "m",
"age": 44,
"height": "71.5",
"heightUnits": "in",
"weight": "169.8",
"weightUnits": "lb",
"bodyfat": "19.8",
"bodyfatUnits": "%"
}
GET https://api.bobapi.com/v1/users/bob/bloodoxygens
Returns all blood oxygen (SPO2) measurements.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/bloodoxygens/?limit=50 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
[
{
"id": "57b7688472e175b9e5f7f3d1",
"ts": "2016-03-24T02:00:00.000Z",
"tz": "America/New_York",
"value": 99,
"units": "%",
"sourceId": "FaceLake Pulse Oximeter",
"notes": "Reading taken after workout",
"createdAt": "2016-08-19T20:13:56.756Z",
"updatedAt": "2016-08-19T20:13:56.756Z"
},
...
]
GET https://api.bobapi.com/v1/users/bob/bloodoxygens/:id
GET https://api.bobapi.com/v1/users/bob/bloodoxygens/latest
Returns a specific (or latest) blood oxygen (SPO2) measurement.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/bloodoxygens/53b7604272e175b4e5f7ef09 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
{
"id": "53b7604272e175b4e5f7ef09",
"ts": "2016-03-24T02:00:00.000Z",
"tz": "America/New_York",
"value": 99,
"units": "%",
"sourceId": "FaceLake Pulse Oximeter",
"notes": "Reading taken after workout",
"createdAt": "2016-08-19T20:13:56.756Z",
"updatedAt": "2016-08-19T20:13:56.756Z"
}
GET https://api.bobapi.com/v1/users/bob/bloodpressure
Returns all blood pressure measurements.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/bloodpressures/?limit=50 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
[
{
"id": "57b7688472e175b9e5f7f2ba",
"ts": "2012-12-30T14:26:00.000Z",
"tz": "America/New_York",
"systolic": 128,
"systolicUnits": "mmHg",
"diastolic": 71,
"diastolicUnits": "mmHg",
"sourceId": "withings",
"notes": "Reading taken at home, before lunch",
"createdAt": "2016-08-19T20:13:56.157Z",
"updatedAt": "2016-08-19T20:13:56.157Z"
},
...
]
GET https://api.bobapi.com/v1/users/bob/bloodpressures/:id
GET https://api.bobapi.com/v1/users/bob/bloodpressures/latest
Returns a specific (or latest) blood pressure measurement.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/bloodpressures/53b7604272e175b4e5f7ef09 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
{
"id": "53b7604272e175b4e5f7ef09",
"ts": "2012-12-30T14:26:00.000Z",
"tz": "America/New_York",
"systolic": 128,
"systolicUnits": "mmHg",
"diastolic": 71,
"diastolicUnits": "mmHg",
"sourceId": "withings",
"notes": "Reading taken at home, before lunch",
"createdAt": "2016-08-19T20:13:56.157Z",
"updatedAt": "2016-08-19T20:13:56.157Z"
}
GET https://api.bobapi.com/v1/users/bob/gsrs
Returns all galvanic skin response (GSR) measurements.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/gsrs/?limit=50 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
[
{
"id": "57ee9ee2dd97fbe82c8017e3",
"ts": "2016-08-05T09:54:00.000Z",
"tz": "America/New_York",
"value": 0.0000538,
"units": "uS/cm",
"type": "avg",
"sourceId": "basis",
"updatedAt": "2016-08-30T17:20:09.377Z",
"createdAt": "2016-08-30T17:20:09.377Z"
},
...
]
GET https://api.bobapi.com/v1/users/bob/gsrs/:id
GET https://api.bobapi.com/v1/users/bob/gsrs/latest
Returns a specific (or latest) galvanic skin response (GSR) measurement.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/gsrs/53b7604272e175b4e5f7ef09 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
{
"id": "57ee9ee2dd97fbe82c8017e3",
"ts": "2016-08-05T09:54:00.000Z",
"tz": "America/New_York",
"value": 0.0000538,
"units": "uS/cm",
"type": "avg",
"sourceId": "basis",
"updatedAt": "2016-08-30T17:20:09.377Z",
"createdAt": "2016-08-30T17:20:09.377Z"
}
GET https://api.bobapi.com/v0/users/bob/glucose
Returns all glucose measurements.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/glucose/?limit=50 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
[
{
"id": "57c7688372e185b9e5f7f15d",
"ts": "2013-09-09T12:11:00.000Z",
"tz": "America/New_York",
"value": 95,
"units": "mg/dL",
"type": "fasting",
"notes": "Begin taking oxaloacetate",
"sourceId": "Freestyle Lite",
"createdAt": "2016-08-19T20:13:55.543Z",
"updatedAt": "2016-08-19T20:13:55.543Z"
},
...
]
GET https://api.bobapi.com/v1/users/bob/glucose/:id
GET https://api.bobapi.com/v1/users/bob/glucose/latest
Returns a specific (or latest) glucose measurement.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/glucose/57c7688372e185b9e5f7f15d \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
{
"id": "57c7688372e185b9e5f7f15d",
"ts": "2013-09-09T12:11:00.000Z",
"tz": "America/New_York",
"value": 95,
"units": "mg/dL",
"type": "fasting",
"notes": "Begin taking oxaloacetate",
"sourceId": "Freestyle Lite",
"createdAt": "2016-08-19T20:13:55.543Z",
"updatedAt": "2016-08-19T20:13:55.543Z"
}
GET https://api.bobapi.com/v1/users/bob/heartrates
Returns all heart rate measurements.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/heartrates/?limit=50 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
[
{
"id": "57b7688472e175b9e5f7f2c0",
"ts": "2014-12-15T12:45:00.000Z",
"tz": "America/New_York",
"value": 46,
"units": "bpm",
"type": "avg",
"hrv": [
{
"lf": 1512,
"rr": 1.255,
"lfhf": 1.61,
"score": 67,
"duration": 180,
"hf": 939,
"method": "lying",
"rmssd": 44
}
],
"notes": "Reading taken upon waking",
"sourceId": "sweetbeathrv",
"updatedAt": "2016-08-19T20:13:56.161Z",
"createdAt": "2016-08-19T20:13:56.161Z",
},
{
"id": "57acebd372e175b9e5f7703e",
"ts": "2014-12-16T11:21:00.000Z",
"tz": "America/New_York",
"value": 48.54,
"units": "bpm",
"type": "avg",
"hrv": [
{
"lf" : 0.024,
"hf" : 0.0298,
"sdnn" : 73.32,
"rmssd" : 38.08
"pnn50" : 16.28,
"lfhf" : 0.8,
"avnn" : 1226.14,
"score" : 7.37,
"duration" : 1
}
],
"notes": "fast day 4",
"sourceId": "hrv4training",
"createdAt": "2016-08-19T20:13:56.161Z",
"updatedAt": "2016-08-19T20:13:56.161Z"
},
...
]
GET https://api.bobapi.com/v1/users/bob/heartrates/:id
GET https://api.bobapi.com/v1/users/bob/heartrates/latest
Returns a specific (or latest) heart rate measurement.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/heartrates/53b7604272e175b4e5f7ef09 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
{
"id": "57acebd372e175b9e5f7703e",
"ts": "2014-12-16T11:21:00.000Z",
"tz": "America/New_York",
"value": 48.54,
"units": "bpm",
"type": "avg",
"hrv": [
{
"lf" : 0.024,
"hf" : 0.0298,
"sdnn" : 73.32,
"rmssd" : 38.08
"pnn50" : 16.28,
"lfhf" : 0.8,
"avnn" : 1226.14,
"score" : 7.37,
"duration" : 1
}
],
"notes": "fast day 4",
"sourceId": "hrv4training",
"createdAt": "2016-08-19T20:13:56.161Z",
"updatedAt": "2016-08-19T20:13:56.161Z"
}
GET https://api.bobapi.com/v0/users/bob/ketones
Returns all ketone measurements.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/ketones/?limit=50 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
[
{
"id": "57b7688472e175b9e5f7f3ca",
"ts": "2013-09-09T12:11:00.000Z",
"tz": "America/New_York",
"value": 3.7,
"units": "mmol/L",
"sourceId": "Precision Xtra",
"notes": "Fasting Mimicking Diet experiment day 3",
"createdAt": "2016-08-19T20:13:56.752Z",
"updatedAt": "2016-08-19T20:13:56.752Z"
},
...
]
GET https://api.bobapi.com/v1/users/bob/ketones/:id
GET https://api.bobapi.com/v1/users/bob/ketones/latest
Returns a specific (or latest) ketone measurement.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/ketones/57c7688372e185b9e5f7f15d \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
{
"id": "57b7688472e175b9e5f7f3ca",
"ts": "2013-09-09T12:11:00.000Z",
"tz": "America/New_York",
"value": 3.7,
"units": "mmol/L",
"sourceId": "Precision Xtra",
"notes": "Fasting Mimicking Diet experiment day 3",
"createdAt": "2016-08-19T20:13:56.752Z",
"updatedAt": "2016-08-19T20:13:56.752Z"
}
GET https://api.bobapi.com/v0/users/bob/ph
Returns all pH measurements.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/ph/?limit=50 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
[
{
"id": "57b7688472e175b9e5f7f292",
"ts": "2016-01-12T12:30:00.000Z",
"tz": "America/New_York",
"value": 6.25,
"type": "urine",
"sourceId": "test strip",
"createdAt": "2016-08-19T20:13:56.063Z",
"updatedAt": "2016-08-19T20:13:56.063Z"
},
...
]
GET https://api.bobapi.com/v1/users/bob/ph/:id
GET https://api.bobapi.com/v1/users/bob/ph/latest
Returns a specific (or latest) pH measurement.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/ph/57c7688372e185b9e5f7f15d \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
{
"id": "57b7688472e175b9e5f7f292",
"ts": "2016-01-12T12:30:00.000Z",
"tz": "America/New_York",
"value": 6.25,
"type": "urine",
"sourceId": "test strip",
"createdAt": "2016-08-19T20:13:56.063Z",
"updatedAt": "2016-08-19T20:13:56.063Z"
}
GET https://api.bobapi.com/v0/users/bob/temperatures
Returns all temperature measurements.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/temperatures/?limit=50 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
[
{
"id": "57b7688472e175b9e5f7f444",
"ts": "2015-02-27T13:14:00.000Z",
"tz": "America/New_York",
"value": 98.2,
"units": "F",
"type": "oral",
"sourceId": "kinsa",
"notes": "Basal reading",
"createdAt": "2016-08-19T20:13:56.961Z",
"updatedAt": "2016-08-19T20:13:56.961Z"
},
...
]
GET https://api.bobapi.com/v1/users/bob/temperatures/:id
GET https://api.bobapi.com/v1/users/bob/temperatures/latest
Returns a specific (or latest) temperature measurement.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/temperatures/57c7688372e185b9e5f7f15d \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
{
"id": "57b7688472e175b9e5f7f444",
"ts": "2015-02-27T13:14:00.000Z",
"tz": "America/New_York",
"value": 98.2,
"units": "F",
"type": "oral",
"sourceId": "kinsa",
"notes": "Basal reading",
"createdAt": "2016-08-19T20:13:56.961Z",
"updatedAt": "2016-08-19T20:13:56.961Z"
}
GET https://api.bobapi.com/v1/users/bob/weights
Returns all weight measurements.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/weights/?limit=50 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
[
{
"id": "53b7604272e175b4e5f7ef09"
"ts": "2016-06-05T12:41:00.000Z",
"tz": "America/New_York",
"weight": 170.8,
"weightUnits": "lb",
"bodyfat": 20.9,
"bodyfatUnits": "%",
"leanMass": 79.1,
"leanMassUnits": "%",
"skeletalMuscleMass": 37.0,
"skeletalMuscleMassUnits": "%",
"bmi": 22.9,
"bmiUnits": "kg/m2",
"sourceId": "omron",
"notes": "fasting mimicking diet",
"createdAt": "2016-08-19T20:13:54.305Z",
"updatedAt": "2016-08-19T20:13:54.305Z",
},
...
]
GET https://api.bobapi.com/v1/users/bob/weights/:id
GET https://api.bobapi.com/v1/users/bob/weights/latest
Returns a specific weight measurement.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/weight/53b7604272e175b4e5f7ef09 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
{
"id": "58b7688272e145b9e4f7ef17"
"ts": "2013-02-07T12:41:00.000Z",
"tz": "America/New_York",
"weight": 175.6,
"weightUnits": "lb",
"bodyfat": 22.6,
"bodyfatUnits": "%",
"leanMass": 77.4,
"leanMassUnits": "%",
"skeletalMuscleMass": 36.1,
"skeletalMuscleMassUnits": "%",
"bmi": 24.4,
"bmiUnits": "kg/m2",
"notes": "Ate a late dinner!",
"sourceId": "withings",
"createdAt": "2016-08-19T20:13:54.305Z",
"updatedAt": "2016-08-19T20:13:54.305Z",
}
GET https://api.bobapi.com/v0/users/bob/activities
Returns all activity measurements.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/activities/?limit=50 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
[
{
"id": "57acbfc9899008df0083ce8b",
"startTs": "2013-10-19T03:00:00.000Z",
"startTz": "America/New_York",
"endTs": "2013-10-19T03:14:28.000Z",
"endTz": "America/New_York",
"duration": 868,
"distance": 771,
"steps": 1215,
"calories": 45,
"type": "wlk",
"trackPoints": [
{
"id": "57acbfc9899008df0083cec4",
"lat": "40.7258626434",
"lon": "-73.9690668521",
"ts": "2013-10-19T03:00:00.000Z"
},
...
],
"sourceId": "moves",
"notes": "Walking dog",
"createdAt": "2016-08-11T18:11:21.201Z",
"updatedAt": "2016-08-11T18:11:21.201Z"
},
...
]
GET https://api.bobapi.com/v1/users/bob/activities/:id
Returns a specific activity measurement.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/activities/57c7688372e185b9e5f7f15d \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
{
"id": "57acbfc9899008df0083ce8b",
"startTs": "2013-10-19T03:00:00.000Z",
"startTz": "America/New_York",
"endTs": "2013-10-19T03:14:28.000Z",
"endTz": "America/New_York",
"duration": 868,
"distance": 771,
"steps": 1215,
"calories": 45,
"type": "wlk",
"trackPoints": [
{
"id": "57acbfc9899008df0083cec4",
"lat": "40.7258626434",
"lon": "-73.9690668521",
"ts": "2013-10-19T03:00:00.000Z"
},
...
],
"sourceId": "moves",
"notes": "Walking dog",
"createdAt": "2016-08-11T18:11:21.201Z",
"updatedAt": "2016-08-11T18:11:21.201Z"
}
GET https://api.bobapi.com/v0/users/bob/locations
Returns all location measurements.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/locations/?limit=50 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
[
{
"id": "57acbfc8899008df0083ce74",
"startTs": "2013-10-17T00:44:52.000Z",
"startTz": "America/New_York",
"endTs": "2013-10-17T02:14:29.000Z",
"endTz": "America/New_York",
"name": "Mccarren Park Soccer Pitch/Football Field & Running Track",
"location": [
{
"lat": 40.7198758007751,
"lon": -73.95146369934082
}
],
"type": "foursquare",
"sourceId": "moves",
"createdAt": "2016-08-11T18:11:20.073Z",
"updatedAt": "2016-08-11T18:11:20.073Z"
},
...
]
GET https://api.bobapi.com/v1/users/bob/locations/:id
Returns a specific location measurement.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/locations/57c7688372e185b9e5f7f15d \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
{
"id": "57acbfc8899008df0083ce74",
"startTs": "2013-10-17T00:44:52.000Z",
"startTz": "America/New_York",
"endTs": "2013-10-17T02:14:29.000Z",
"endTz": "America/New_York",
"name": "Mccarren Park Soccer Pitch/Football Field & Running Track",
"location": [
{
"lat": 40.7198758007751,
"lon": -73.95146369934082
}
],
"type": "foursquare",
"sourceId": "moves",
"createdAt": "2016-08-11T18:11:20.073Z",
"updatedAt": "2016-08-11T18:11:20.073Z"
}
GET https://api.bobapi.com/v0/users/bob/sleeps
Returns all sleep measurements.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/sleeps/?limit=50 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
[
{
"id": "57eec146dd97fbe82c9f5780",
"startTs": "2015-03-22T09:06:00.000Z",
"startTz": "America/New_York",
"endTs": "2015-03-22T12:01:00.000Z",
"endTz": "America/New_York",
"deepMins": 42,
"lightMins": 89,
"remMins": 44,
"unknownMins": 0,
"interruptMins": 0,
"totalMins": 175,
"interruptions": 0,
"tossTurns": 14,
"quality": 94,
"sourceId": "basis",
"date": "2015-03-22",
"events": [
{
"startTs": "2015-03-22T09:14:00.000Z",
"startTz": "America/New_York",
"endTs": "2015-03-22T09:14:00.000Z",
"endTz": "America/New_York",
"type": "toss_and_turn"
},
{
"startTs": "2015-03-22T09:35:00.000Z",
"startTz": "America/New_York",
"endTs": "2015-03-22T09:35:00.000Z",
"endTz": "America/New_York",
"type": "toss_and_turn"
},
...
],
"stages": [
{
"totalMins": 37,
"startTs": "2015-03-22T09:06:00.000Z",
"startTz": "America/New_York",
"endTs": "2015-03-22T09:43:00.000Z",
"type": "light"
},
{
"totalMins": 10,
"startTs": "2015-03-22T09:43:00.000Z",
"startTz": "America/New_York",
"endTs": "2015-03-22T09:53:00.000Z",
"type": "deep"
},
{
"totalMins": 4,
"startTs": "2015-03-22T09:53:00.000Z",
"startTz": "America/New_York",
"endTs": "2015-03-22T09:57:00.000Z",
"type": "rem"
},
...
],
"createdAt": "2016-08-30T19:47:34.535Z",
"updatedAt": "2016-08-30T19:47:34.535Z"
},
...
]
GET https://api.bobapi.com/v1/users/bob/sleeps/:id
GET https://api.bobapi.com/v1/users/bob/sleeps/latest
Returns a specific (or latest) sleep measurement.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/sleeps/57c7688372e185b9e5f7f15d \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
{
"id": "57eec146dd97fbe82c9f5780",
"startTs": "2015-03-22T09:06:00.000Z",
"startTz": "America/New_York",
"endTs": "2015-03-22T12:01:00.000Z",
"endTz": "America/New_York",
"deepMins": 42,
"lightMins": 89,
"remMins": 44,
"unknownMins": 0,
"interruptMins": 0,
"totalMins": 175,
"interruptions": 0,
"tossTurns": 14,
"quality": 94,
"sourceId": "basis",
"date": "2015-03-22",
"events": [
{
"startTs": "2015-03-22T09:14:00.000Z",
"startTz": "America/New_York",
"endTs": "2015-03-22T09:14:00.000Z",
"endTz": "America/New_York",
"type": "toss_and_turn"
},
{
"startTs": "2015-03-22T09:35:00.000Z",
"startTz": "America/New_York",
"endTs": "2015-03-22T09:35:00.000Z",
"endTz": "America/New_York",
"type": "toss_and_turn"
},
...
],
"stages": [
{
"totalMins": 37,
"startTs": "2015-03-22T09:06:00.000Z",
"startTz": "America/New_York",
"endTs": "2015-03-22T09:43:00.000Z",
"type": "light"
},
{
"totalMins": 10,
"startTs": "2015-03-22T09:43:00.000Z",
"startTz": "America/New_York",
"endTs": "2015-03-22T09:53:00.000Z",
"type": "deep"
},
{
"totalMins": 4,
"startTs": "2015-03-22T09:53:00.000Z",
"startTz": "America/New_York",
"endTs": "2015-03-22T09:57:00.000Z",
"type": "rem"
},
...
],
"createdAt": "2016-08-30T19:47:34.535Z",
"updatedAt": "2016-08-30T19:47:34.535Z"
}
GET https://api.bobapi.com/v0/users/bob/steps
Returns all steps measurements.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/steps/?limit=50 \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
[
{
"id": "57ee8ec7dd97fbe82c821699",
"ts": "2015-04-05T04:18:00.000Z",
"tz": "America/New_York",
"value": 132,
"sourceId": "basis",
"createdAt": "2015-04-30T15:24:07.227Z",
"updatedAt": "2016-04-30T15:24:07.227Z"
},
...
]
GET https://api.bobapi.com/v1/users/bob/steps/:id
GET https://api.bobapi.com/v1/users/bob/steps/:latest
Returns a specific (or latest) steps measurement.
Example Request:
curl -i https://api.bobapi.com/v1/users/bob/steps/57c7688372e185b9e5f7f15d \
-H 'Authorization: Bearer TsT5OjbzRn431zqMLgV3Ib'Response:
{
"id": "57ee8ec7dd97fbe82c821699",
"ts": "2015-04-05T04:18:00.000Z",
"tz": "America/New_York",
"value": 132,
"sourceId": "basis",
"createdAt": "2015-04-30T15:24:07.227Z",
"updatedAt": "2016-04-30T15:24:07.227Z"
}