מפרטים ל-API

בקטע "מפרט ה-API" יש סקירה כללית מפורטת של הרכיבים הטכניים שחיוניים לשילוב עם הפלטפורמה, כולל היקפי הרשאות, הגדרות של סוגי נתונים ומבנים של נקודות קצה. ה-API הזה מייצג התפתחות אסטרטגית של Fitbit Web API הקודם, שנבנה מחדש על תשתית מודרנית כדי להבטיח חוויית פיתוח יציבה ועקבית יותר.

היקפים

אתם צריכים לעדכן את בקשת ההרשאה כדי להשתמש בהיקפי ההרשאות של Google Health API. היקפי ההרשאות קובעים אם האפליקציה תומכת בפעולות קריאה או כתיבה. פועלים לפי ההוראות להטמעת היקף ההרשאות, שבהן מפורט איך לבקש רק את היקפי ההרשאות הנדרשים, להגדיר גישת כתיבה רק כששולחים נתונים ולטפל בהסכמה חלקית בצורה חלקה.

היקפי ההרשאות של Google Health API הם כתובת URL מסוג HTTP שמתחילה ב-https://www.googleapis.com/auth/googlehealth.{scope}. לדוגמה, https://www.googleapis.com/auth/googlehealth.activity_and_fitness.writeonly.

מיפויים של היקף ההרשאות

ככה היקפי ההרשאות של Fitbit Web API ממופים להיקפי ההרשאות של Google Health API:

טבלה: מיפוי היקפים של Fitbit Web API ל-Google Health API
היקפי ההרשאות של Fitbit Web API היקפי ההרשאות של Google Health API
פעילות ‎.activity_and_fitness.readonly
‎.activity_and_fitness.writeonly
blood_glucose ‎.health_metrics_and_measurements.readonly
‎.health_metrics_and_measurements.writeonly
cardio_fitness ‎.activity_and_fitness.readonly
‎.activity_and_fitness.writeonly
אלקטרוקרדיוגרמה ‎.ecg.readonly
קצב הלב ‎.health_metrics_and_measurements.readonly
‎.health_metrics_and_measurements.writeonly
irregular_rhythm_notifications ‎.irn.readonly
location ‎.location.readonly
תזונה ‎.nutrition.readonly
‎.nutrition.writeonly
oxygen_saturation ‎.health_metrics_and_measurements.readonly
‎.health_metrics_and_measurements.writeonly
פרופיל ‎.profile.readonly
‎.profile.writeonly
respiratory_rate ‎.health_metrics_and_measurements.readonly
‎.health_metrics_and_measurements.writeonly
הגדרות ‎.settings.readonly
.settings.writeonly
שינה ‎.sleep.readonly
.sleep.writeonly
טמפרטורה ‎.health_metrics_and_measurements.readonly
‎.health_metrics_and_measurements.writeonly
משקל ‎.health_metrics_and_measurements.readonly
‎.health_metrics_and_measurements.writeonly

סוגי נתונים

ברשימה הבאה מפורטים סוגי הנתונים של Google Health API ואיך הם ממופים ל-Fitbit Web API.

טבלה: מיפוי סוגי הנתונים של Fitbit Web API ל-Google Health API
סוג הנתונים של Fitbit Web API סוג הנתונים של Google Health API
  dataType
תיאור
קלוריות בפעילות קלוריות שנשרפו בפעילות
  active-energy-burned
מייצג את הקלוריות שנשרפו במהלך תקופות פעילות, כולל BMR לתקופות האלה. ב-Google Health API, אפשר לשחזר את זה על ידי הוספת BMR לסוג הנתונים active-energy-burned (שעוקב רק אחרי שריפת קלוריות בפעילות, לא כולל קצב בסיסי).
דקות טווח דופק דקות טווח דופק
  active-zone-minutes
מכיל שינויים ברמות הפעילות של המשתמש רמת הפעילות
  activity-level
מתעד את רמת הפעילות של המשתמש (למשל, יושבני או פעיל) במהלך פרק זמן מסוים.
גובה Altitude
  altitude
פעילות caloriesBMR אנרגיה בסיסית שנשרפה
  basal-energy-burned
הקלוריות שנשרפו כתוצאה מקצב חילוף החומרים הבסיסי (BMR) במהלך תקופה מסוימת.
רמת סוכר בדם רמת סוכר בדם
  blood-glucose
אחוז השומן בגוף אחוז שומן בגוף
  body-fat
caloriesOut בכל טווח דופק קלוריות בטווח הדופק
  calories-in-heart-rate-zone
טמפרטורה (ליבה) טמפרטורת הגוף
  core-body-temperature
סיכום HRV שונות קצב הלב היומית
  daily-heart-rate-variability
סיכום הסטורציה רמת החמצן בדם ביום
  daily-oxygen-saturation
סיכום יומי של נתונים סטטיסטיים של רמת החמצן בדם (SpO2) שמחושבים על סמך מדידות שינה מאומתות.
הדופק במנוחה הדופק היומי במנוחה
  daily-resting-heart-rate
טמפרטורת העור סטיות יומיות בטמפרטורת השינה
  daily-sleep-temperature-derivations
מרחק מרחק
  distance
אק"ג (אלקטרוקרדיוגרמה) אק"ג (ECG)
  electrocardiogram
פעילות מוקלטת פעילות גופנית
  exercise
אימונים מתועדים, כולל זמני התחלה וסיום, סוגי פעילויות ומדדי אימון.
קומות קומות
  floors
אוכל אוכל
  food
יחידת מידה של מזון יחידת מידה של מזון
  food-measurement-unit
דופק דופק
  heart-rate
HRV במהלך היום שונות קצב הלב
  heart-rate-variability
התראות על הפרעת קצב (IRN) התראות על הפרעת קצב (AFib)
  irregular-rhythm-notification
יומן האוכל יומן תזונה
  nutrition-log
סטורציה במהלך היום רמת החמצן בדם
  oxygen-saturation
הפונקציה מחזירה רק מדידות SpO2 מאומתות ברמת הדקה, ולא כוללת קריאות שסומנו כלא חוקיות בגלל ארטיפקטים של תנועה או רמת סמך נמוכה של החיישן. מכיוון ש-Fitbit Web API החריג רק את ערך הזקיף של 50%, Google Health API מחזיר פחות נקודות על הגרף לאותו טווח תאריכים. פרטים נוספים זמינים במאמר סינון רמת החמצן בדם.
ערך VO2 Max כשהמשתמש רץ צריכת החמצן המרבית (VO2 max) בריצה
  run-vo2-max
סדרת זמני פעילות – דקות ללא פעילות תקופת חוסר פעילות
  sedentary-period
שינה שינה
  sleep
שלבים שלבים
  steps
סדרת זמנים של פעילות: חתירות בשחייה נתוני בריכות שחייה
  swim-lengths-data
פעילות caloriesOut סה"כ קלוריות
  total-calories
המספר הכולל של קלוריות שנשרפו על ידי משתמש במהלך פרק זמן מסוים, כולל קצב חילוף החומרים הבסיסי (BMR) והאנרגיה הפעילה שנשרפה.
ערך צריכת החמצן המרבית (VO2 max) צריכת החמצן המרבית (VO2 max)
  vo2-max
משקל משקל
  weight

חישובים

המיפויים והכללים ב-Google Health API שונים מאלה שב-Fitbit Web API.

סינון לפי רמת החמצן בדם

כששולחים שאילתה לגבי רמת החמצן בדם (oxygen-saturation) ברמת הדקה, Google Health API מחיל סינון מחמיר יותר של תקינות הנתונים בהשוואה ל-Fitbit Web API הקודם:

  • גרסאות 1 ו-3 של Fitbit Web API הקודם החריגו רק דגימות SpO2 עם ערך זקיף של 50%.
  • ‫Google Health API (גרסה 4) לא כולל דגימות SpO2 שסומנו כלא תקינות על ידי אלגוריתם האימות. דקה מסומנת כלא תקינה כשתנועת הזרוע או התאמה רופפת לפרק כף היד גורמות לאות של החיישן האופטי להיות לא אמין, כשציון המהימנות יורד מתחת ל-50%, במהלך 3 הדקות מיד לפני ואחרי קריאה לא תקינה, או כשפרק זמן תקין נמשך פחות מ-4 דקות רצופות.

מכיוון ש-Google Health API מסיר את כל המדידות הלא חוקיות, ולא רק את ערך הזקיף של 50%, הוא מחזיר פחות oxygen-saturation נקודות על הגרף מאשר Fitbit Web API לאותו טווח תאריכים, וצפויים פערים בכיסוי של דקה אחר דקה. הקריאות שמוחזרות ברמת הדקה תואמות לנקודות הנתונים המאומתות שמשמשות לחישוב סיכום השינה של המשתמש ב-daily-oxygen-saturation. מידע נוסף זמין במאמר סינון SpO2 ברמת הדקה ותוקף הנתונים.

רמת הפעילות, MET וספי הצעדים

ב-Google Health API, רמת הפעילות של המשתמש בכל דקה נגזרת מהשווה ערך מטבולי (MET) ומספירת הצעדים שלו.

רמת הפעילות מכשירי דופק מכשירים שלא מודדים דופק
לא פעיל ‫≤ 1.5 MET ‫≤ 1.5 MET
פעילות קלה > 1.5 METs ו-≤ 4.2 METs > 1.5 MET ו-‎≤ 3.5 MET
פעילות בינונית > 4.2 יחידות MET ו-< 6.0 יחידות MET
(אלא אם מתקיימים התנאים של פעילות אינטנסיבית)
> 3.5 יחידות MET ו-< 6.0 יחידות MET
(אלא אם מתקיימים התנאים של פעילות גבוהה)
פעילות רבה ‫6.0 יחידות MET או יותר, או 5.0 יחידות MET או יותר עם קצב של 150 צעדים לדקה או יותר ‫6.0 יחידות MET או יותר, או 5.0 יחידות MET או יותר עם קצב של 150 צעדים לדקה או יותר

דקות הפעילות מורכבות משילוב של דקות MODERATELY_ACTIVE ודקות VERY_ACTIVE. עם זאת, דקה פעילה נספרת רק אם היא מתרחשת במהלך רצף של 10 דקות לפחות, עם הפסקות של שתי דקות לכל היותר של פעילות נמוכה יותר.

דקות של חוסר פעילות ושינה

דקות של חוסר פעילות לא כוללות את זמן השינה. בסיכומים היומיים, דקות המנוחה מחושבות על ידי הפחתת דקות השינה ודקות הפעילות (פעילות קלה, פעילות מתונה ופעילות מאומצת) מסך הדקות ביום (1,440 דקות):

Sedentary Minutes = 1440 - Sleep Minutes - Lightly Active Minutes - Moderately Active Minutes - Very Active Minutes

מדד מסת הגוף (BMI)

ב-Google Health API אין סוג נתונים מובנה של BMI, ולכן האפליקציות צריכות לחשב את מדד מסת הגוף בצד הלקוח באמצעות רשומות של גובה ומשקל:

  1. אחזור המשקל של המשתמש בגרמים מהשדה weightGrams בסוג הנתונים משקל. ממירים את הערך לקילוגרמים (מחלקים ב-1,000) או לפאונדים (מחלקים ב-453.59237).
  2. אחזור הגובה של המשתמש במילימטרים מהשדה heightMillimeters בסוג הנתונים גובה. ממירים את הערך הזה למטרים (מחלקים ב-1,000) או לאינצ'ים (מחלקים ב-25.4).
  3. כדי לחשב את ערך ה-BMI, משתמשים באחת מהנוסחאות הבאות:
    • נוסחת המדד: BMI = weight (kg) / [height (m)]^2
    • נוסחה אימפריאלית: BMI = (weight (lbs) / [height (in)]^2) * 703

ערכי ה-BMI שמתקבלים תואמים לקטגוריות הבאות:

קטגוריית משקל טווח BMI
תת-משקל פחות מ-18.5
משקל תקין ‫18.5 עד 24.9
עודף משקל ‫25 עד 29.9
השמנת יתר ‫30 ומעלה

קצב חילוף החומרים הבסיסי (BMR)

קצב חילוף החומרים הבסיסי (BMR) הוא המספר המינימלי של קלוריות שנדרשות לתפקודים בסיסיים של הגוף במנוחה. מכיוון ש-Google Health API לא חושף סוג נתונים מובנה של BMR, אפליקציות צריכות לחשב אותו בצד הלקוח באמצעות נוסחת האריס-בנדיקט. למידע נוסף, קראו את המאמר על משוואת האריס-בנדיקט בוויקיפדיה.

כדי לבצע את החישוב הזה:

  1. אחזור משקל המשתמש בגרמים מהשדה weightGrams בסוג הנתונים Weight והמרה לקילוגרמים (חלוקה ב-1,000). כדי להמיר פאונד לקילוגרם, מחלקים ב-2.2.
  2. אחזרו את גובה המשתמש במילימטרים מהשדה heightMillimeters בסוג הנתונים גובה והמירו לסנטימטרים (חלקו ב-10). כדי להמיר אינצ'ים לסנטימטרים, מכפילים ב-2.54.
  3. אחזור הגיל של המשתמש בשנים מהשדה age במשאב Profile.
  4. אחזרו את המין הביולוגי באופן עצמאי (לדוגמה, על ידי הצגת בקשה למשתמש או שמירה שלו במסד הנתונים שלכם), כי Google Health API לא חושף את השדה הזה.
  5. משתמשים באחת מהנוסחאות הבאות, בהתאם למין הביולוגי של המשתמש:
    • גברים: BMR = 66 + (13.7 x weight_kg) + (5 x height_cm) - (6.8 x age_years)
    • נשים: BMR = 655 + (9.6 x weight_kg) + (1.8 x height_cm) - (4.7 x age_years)

הוצאת האנרגיה היומית הכוללת (TDEE)

הוצאת האנרגיה היומית הכוללת (TDEE) היא אומדן של מספר הקלוריות הכולל שאדם שורף ביום, והיא מביאה בחשבון גם את ה-BMR וגם את הפעילות הגופנית. כדי להעריך את ה-TDEE של המשתמש, מכפילים את ערך ה-BMR בפקטור הפעילות שמתאים לסגנון החיים שלו:

רמת הפעילות תיאור מכפיל
לא פעיל מעט פעילות גופנית או ללא פעילות גופנית בכלל. BMR x 1.2
פעילות קלה יום אחד עד 3 ימים של פעילות גופנית בשבוע. BMR x 1.375
פעילות בינונית 3-5 ימי אימון בשבוע. BMR x 1.55
פעיל מאוד 6-7 ימי אימון בשבוע. BMR x 1.725
פעילות גופנית אינטנסיבית אימון קשה מאוד או עבודה פיזית. BMR x 1.9

נקודות קצה (endpoints)

נקודות הקצה של REST משתמשות בתחביר עקבי לכל סוגי הנתונים.

  • נקודת קצה (endpoint) של שירות: כתובת ה-URL הבסיסית של HTTP משתנה ל-https://health.googleapis.com.
  • תחביר נקודת הקצה: Google Health API תומך במספר מוגבל של נקודות קצה, שרוב סוגי הנתונים הנתמכים יכולים להשתמש בהן. כך יש תחביר עקבי לכל סוגי הנתונים וקל יותר להשתמש בנקודות הקצה.
  • מזהה משתמש: צריך לציין את מזהה המשתמש או את me בתחביר של נקודת הקצה. כשמשתמשים ב-me, מזהה המשתמש נגזר מטוקן הגישה.

דוגמה: הנה דוגמה לנקודת הקצה GET Profile שנקראת באמצעות Google Health API

thought GET https://health.googleapis.com/v4/users/me/profile

מיפויים של נקודות קצה (endpoint)

בטבלה סוגי נתונים ב-Google Health API מפורטים סוגי הנתונים הזמינים והשיטות של ה-API שנתמכות בהם.

סוג נקודת הקצה ל-Fitbit Web API Google Health API
‫GET (יומן | סיכום | סיכום יומי) כשמבקשים נתונים של יום אחד שיטת dailyRollUp (POST .../dataPoints:dailyRollUp) עם windowSizeDays: 1
GET (Intraday)‎ כשמבקשים נתונים מפורטים אמצעי תשלום אחד (list)
GET (סדרת זמנים) לפי תאריך או מרווח זמן השיטה rollUp או dailyRollUp, כולל טווח תאריכים
GET (רשימת יומנים) אמצעי תשלום אחד (list)
יומני CREATE ו-UPDATE אמצעי תשלום אחד (patch)
מחיקת יומנים אמצעי תשלום אחד (batchDelete)
פרופיל GET users.getProfile מחזירה את המידע הספציפי של המשתמש
users.getSettings מחזירה את היחידות ואזורי הזמן של המשתמש
עדכון הפרופיל users.updateProfile משנה את המידע הספציפי של המשתמש
users.updateSettings משנה את היחידות ואת אזורי הזמן של המשתמש
קבלת מזהה משתמש ‫users.getIdentity מחזיר את מזהה המשתמש הקודם ב-Fitbit ואת מזהה המשתמש ב-Google.
קבלת מכשירים ‫users.pairedDevices מחזירה את רשימת המכשירים המותאמים
יצירת מינויים ‫projects.subscribers.subscriptions.create יוצר מינוי באופן ידני
מחיקת המינויים ‫projects.subscribers.subscriptions.delete מחיקת מינוי
קבלת רשימת מינויים ‫projects.subscribers.subscriptions.list מציג את כל המינויים