API概要
ドキュメントはこちら。このAPIを使用することで、Fitbitが管理している各種Activityデータを時系列に取得できる。取得できるActivityデータは大きくactivity系とtracker系の2種類に分類され、それぞれ以下のように分類されている。
Fitbitデバイスの運動計測機能をtrackerと呼び、純粋に運動計測機能により取得したデータをtracker系で取得するようだ。また、その上位層として、手動入力値等の追加データを含むデータをactivity系で取得するようだ。
activity系
key | means of value |
---|---|
activities/calories | 消費カロリーの集計値。基礎代謝(BMR)とtracker系消費カロリー、および手動入力された消費カロリーの合計 |
activities/caloriesBMR | 基礎代謝(BMR)の集計値。Fitbitデバイスが計測したデータに基づき計算された値 |
activities/steps | 歩数 |
activities/distance | 距離 |
activities/floors | 縦方向の移動の階数表現 |
activities/elevation | 縦方向の移動距離 |
activities/minutesSedentary | 強度により4個に分類された運動強度のうち1レベル目(最弱)の運動時間 |
activities/minutesLightlyActive | 2レベル目の運動時間 |
activities/minutesFairlyActive | 3レベル目の運動時間 |
activities/minutesVeryActive | 4レベル目の運動時間(最強) |
activities/activityCalories | Sedentaryレベル以上の運動強度について1分毎に計算された消費カロリー。基礎代謝(BMR)や手動入力を含む。 |
tracker系
key | means of value |
---|---|
activities/tracker/calories | Fitbit trackerにより計測された基礎代謝を含む消費カロリー。手動入力は含まない。 |
activities/tracker/steps | Fitbit trackerにより計測された歩数 |
activities/tracker/distance | Fitbit trackerにより計測された距離 |
activities/tracker/floors | Fitbit trackerにより計測された縦方向の移動の階数表現 |
activities/tracker/elevation | Fitbit trackerにより計測された縦方向の移動距離 |
activities/tracker/minutesSedentary | 強度により4個に分類された運動強度のうち1レベル目(最弱)の運動時間 |
activities/tracker/minutesLightlyActive | 2レベル目の運動時間 |
activities/tracker/minutesFairlyActive | 3レベル目の運動時間 |
activities/tracker/minutesVeryActive | 4レベル目の運動時間(最強) |
activities/tracker/activityCalories | Fitbit trackerにより計測されたSedentaryレベル以上の運動強度について1分毎に計算された消費カロリー。基礎代謝(BMR)を含む。手動入力は含まない。 |
Fitbit Charge/Fitbit Charge HR 保護カバー (Dark Purple)
API詳細
RESTfulAPIの書式は2通りある。以下は取得日付が1日のみの場合。
1 |
GET /1/user/[user-id]/[resource-path]/date/[date]/[period].json |
開始日時、終了日時を指定し、2日以上の時系列データを取得することもできる。
1 |
GET /1/user/[user-id]/[resource-path]/date/[base-date]/[end-date].json |
いずれの形式ともに、resource-pathとして、API概要にて示した key 値を指定する。
実行例
それでは実行例を紹介する。まず、今日(today, 2016/06/09) の activities/calories を取得してみる。 activities-calories-intraday という1日分の非常に詳細なデータも付いてくるが本エントリでは省略する。次回紹介。
1 |
/1/user/-/activities/calories/date/today/1d.json |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Array ( [activities-calories] => Array ( [0] => Array ( [dateTime] => 2016-06-09 [value] => 1082 ) ) [activities-calories-intraday] => Array ( [dataset] => Array ( … ) ) ) |
次に、今日(today)と、1週間(1w) を合わせて activities/calories を取得してみる。すると、今日を末日とする1週間分の消費カロリーを取得できた。1w を指定した場合、1日分の詳細データ activities-calories-intraday は出力されなかった。
1 |
/1/user/-/activities/calories/date/today/1w.json |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
Array ( [activities-calories] => Array ( [0] => Array ( [dateTime] => 2016-06-03 [value] => 2805 ) [1] => Array ( [dateTime] => 2016-06-04 [value] => 2653 ) [2] => Array ( [dateTime] => 2016-06-05 [value] => 2834 ) [3] => Array ( [dateTime] => 2016-06-06 [value] => 2734 ) [4] => Array ( [dateTime] => 2016-06-07 [value] => 2822 ) [5] => Array ( [dateTime] => 2016-06-08 [value] => 2652 ) [6] => Array ( [dateTime] => 2016-06-09 [value] => 1098 ) ) ) |
基礎代謝(BMR)を期間を指定して取得してみる。一定値ではなかった!。Fitbitはtrackerから基礎代謝を計算で求めているということのようだ。すごいすごい。
1 |
/1/user/-/activities/tracker/calories/date/2016-06-05/2016-06-06.json |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Array ( [activities-caloriesBMR] => Array ( [0] => Array ( [dateTime] => 2016-06-05 [value] => 1603 ) [1] => Array ( [dateTime] => 2016-06-06 [value] => 1604 ) [2] => Array ( [dateTime] => 2016-06-07 [value] => 1594 ) [3] => Array ( [dateTime] => 2016-06-08 [value] => 1603 ) ) ) |
activities/tracker/calories を1日だけ取得してみる。today を指定すると1日分の詳細データが含まれていたが、期間指定により1日分を指定すると詳細データが含まれない。今回のケースでは、activities/calories と activities/tracker/calories は同一値(2834)である。
1 |
/1/user/-/activities/tracker/calories/date/2016-06-05/2016-06-05.json |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Array ( [activities-tracker-calories] => Array ( [0] => Array ( [dateTime] => 2016-06-05 [value] => 2834 ) ) ) |