סוגי נתונים ב-Google Health API

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

טבלה: סוגי נתונים של Google Health API
סוג הנתונים
  dataType הפרמטר
  filter
פעולות
זמינות
היקף
אנרגיה שנשרפה בזמן פעילות
active-energy-burned
active_energy_burned
סוג הרשומה: מרווח
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
דקות פעילות
active-minutes
active_minutes
סוג הרשומה: מרווח

מכשירים תואמים

  • Fitbit Air
  • Fitbit Alta
  • Fitbit Alta HR
  • Fitbit Blaze
  • Fitbit Charge 2
  • Fitbit Charge 3
  • Fitbit Flex 2
  • Fitbit Inspire
  • Fitbit Inspire HR
  • Pixel Watch 4
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
דקות טווח פעילות
active-zone-minutes
active_zone_minutes
סוג הרשומה: מרווח

מכשירים תואמים

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
רמת הפעילות
activity-level
activity_level
סוג הרשומה: מרווח
רשימה, התאמה .activity_and_fitness.readonly
.activity_and_fitness.writeonly
גובה
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
סוכר בדם
blood-glucose
blood_glucose
סוג הרשומה: Sample
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Body Fat
body-fat
body_fat
סוג הרשומה: Sample

מכשירים תואמים

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
קלוריות שנשרפו בטווח הדופק
calories-in-heart-rate-zone
calories_in_heart_rate_zone
סוג הרשומה: מרווח
איחוד לתצוגה אחת, איחוד יומי לתצוגה אחת .activity_and_fitness.readonly
.activity_and_fitness.writeonly
טמפרטורת ליבה
core-body-temperature
core_body_temperature
סוג הרשומה: Sample
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Daily Heart Rate Variability
daily-heart-rate-variability
daily_heart_rate_variability
סוג הרשומה: יומי

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Daily Heart Rate Zones
daily-heart-rate-zones
daily_heart_rate_zones
סוג הרשומה: יומי
רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Daily Oxygen Saturation
daily-oxygen-saturation
daily_oxygen_saturation
סוג הרשומה: יומי

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
קצב נשימה יומי
daily-respiratory-rate
daily_respiratory_rate
סוג הרשומה: יומי

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
הדופק היומי במנוחה
daily-resting-heart-rate
daily_resting_heart_rate
סוג הרשומה: יומי

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Daily Sleep Temperature Derivations
daily-sleep-temperature-derivations
daily_sleep_temperature_derivations
סוג הרשומה: יומי

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Daily VO2 Max
daily-vo2-max
daily_vo2_max
סוג הרשומה: יומי

מכשירים תואמים

רשימה, התאמה .activity_and_fitness.readonly
.activity_and_fitness.writeonly
מרחק
distance
distance
סוג הרשומה: מרווח

מכשירים תואמים

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Electrocardiogram (ECG)
electrocardiogram
electrocardiogram
סוג הרשומה: סשן

מכשירים תואמים

list .ecg.readonly
תרגיל
exercise
exercise
סוג הרשומה: סשן

מכשירים תואמים

list, get, reconcile, create, update, batchDelete .activity_and_fitness.readonly
.activity_and_fitness.writeonly
קומות
התאמה, איחוד לתצוגה אחת, סיכום יומי .activity_and_fitness.readonly
.activity_and_fitness.writeonly
אוכל
food
food
סוג הרשומה: אוכל
list, get .nutrition.readonly
.nutrition.writeonly
יחידת מידה של מזון
food-measurement-unit
food_measurement_unit
סוג הרשומה: אוכל

מכשירים תואמים

list, get .nutrition.readonly
.nutrition.writeonly
דופק
heart-rate
heart_rate
סוג הרשומה: Sample

מכשירים תואמים

list, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
שונות קצב הלב
heart-rate-variability
heart_rate_variability
סוג הרשומה: Sample

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
גובה
height
height
סוג הרשומה: Sample
list, get, reconcile, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
יומן מאזן הנוזלים
hydration-log
hydration_log
סוג הרשומה: סשן
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
התראה על הפרעת קצב (IRN)
irregular-rhythm-notification
irregular_rhythm_notification
סוג הרשומה: סשן
list .irn.readonly
Menstrual Period
menstrual-period
menstrual_period
סוג הרשומה: מרווח
create, update, batchDelete .reproductive_health.writeonly
מצבי רוח
moods
moods
סוג הרשומה: Sample
create, update, batchDelete .mindfulness.writeonly
יומן תזונה
nutrition-log
nutrition_log
סוג הרשומה: Sample

מכשירים תואמים

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
בדיקת ביוץ
ovulation-test
ovulation_test
סוג הרשומה: Sample
create, update, batchDelete .reproductive_health.writeonly
רמת החמצן בדם
oxygen-saturation
oxygen_saturation
סוג הרשומה: Sample

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
סיכום השינה של קצב הנשימה
respiratory-rate-sleep-summary
respiratory_rate_sleep_summary
סוג הרשומה: Sample

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Run VO2 Max
run-vo2-max
run_vo2_max
סוג הרשומה: Sample

מכשירים תואמים

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
תקופה של חוסר פעילות
sedentary-period
sedentary_period
סוג הרשומה: מרווח

מכשירים תואמים

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
שינה
sleep
sleep
סוג הרשומה: סשן

מכשירים תואמים

list, get, reconcile, create, update, batchDelete .sleep.readonly
.sleep.writeonly
שלבים
steps
steps
סוג הרשומה: מרווח

מכשירים תואמים

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
נתונים של אורך הבריכה
swim-lengths-data
swim_lengths_data
סוג הרשומה: מרווח

מכשירים תואמים

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
תסמינים
symptoms
symptoms
סוג הרשומה: Sample
create, update, batchDelete .logged_symptoms.writeonly
Time in Heart Rate Zone
time-in-heart-rate-zone
time_in_heart_rate_zone
סוג הרשומה: מרווח
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
סך הקלוריות
total-calories
total_calories
סוג הרשומה: מרווח

מכשירים תואמים

איחוד לתצוגה אחת, איחוד יומי לתצוגה אחת .activity_and_fitness.readonly
.activity_and_fitness.writeonly
VO2 Max
vo2-max
vo2_max
סוג הרשומה: Sample

מכשירים תואמים

רשימה, התאמה .activity_and_fitness.readonly
.activity_and_fitness.writeonly
משקל
weight
weight
סוג הרשומה: Sample

מכשירים תואמים

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly

מגבלות על שאילתות

כששולחים שאילתות ל-API לגבי נקודות נתונים, סיכומי נתונים או סיכומי נתונים יומיים, חשוב לזכור את המגבלות הבאות:

  • דרישות סינון: חלק מסוגי הנתונים הנגזרים לקריאה בלבד, כמו total-calories, דורשים מסנן שמציין את שעת ההתחלה של המרווח (באמצעות זמן פיזי או זמן אזרחי).
  • מגבלות על טווח השאילתה: נקודות הקצה של צבירת נתונים (rollup) וצבירת נתונים יומית (daily rollup) אוכפות מגבלות על טווח השאילתה בהתאם לסוג הנתונים:
    • טווח שאילתות מקסימלי של 14 ימים עבור calories-in-heart-rate-zone,‏ heart-rate,‏ active-minutes ו-total-calories.
    • טווח שאילתות מקסימלי של 90 ימים לכל שאר סוגי הנתונים.

זמינות הנתונים

העדכונים של נתוני המשתמש זמינים רק אחרי שהמשתמש מסנכרן את מנהל מעקב אחר פעילות שלו או מזין נתונים חדשים באופן ידני באפליקציה לנייד של Fitbit או באפליקציית אינטרנט. מכשיר Fitbit ואפליקציית Fitbit לנייד יכולים להסתנכרן אוטומטית כל 15 דקות כשאפליקציית Fitbit פתוחה במכשיר הנייד ושני המכשירים מחוברים באופן פעיל לנתונים ונמצאים בטווח ה-Bluetooth. אם המשתמש עוקב אחרי הפעילות באמצעות MobileTrack, הנתונים מסתנכרנים כל שעה כל עוד האפליקציה פתוחה.

שליחת שאילתות לגבי נתונים היסטוריים

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

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

  • חלוקה אוטומטית לדפים: אם שולחים שאילתה לגבי טווח ארוך של נתונים, ה-API יחזיר רק את הדף הראשון של התוצאות עד למגבלת גודל הדף של נקודת הקצה הזו, יחד עם nextPageToken. כדי לבקש דפים נוספים, צריך להשתמש ב-nextPageToken.
  • גדלים משתנים של דפים: מגבלות הקיבולת תלויות בנקודת הקצה ובסוג הנתונים. ברוב סוגי הנתונים, גודל הדף מוגבל ל-10,000. עם זאת, עבור סוגי נתונים מסוימים כמו exercise ו-sleep, גודל הדף המקסימלי וגודל הדף שמוגדר כברירת מחדל מוגבל ל-25. לדוגמה, אם לקוח מבקש את כל נתוני השינה מ-10 השנים האחרונות, ה-API עדיין יחזיר רק 25 סשנים של שינה בדף הראשון.
  • הגבלות על טווח התאריכים של נתוני סיכום: בנקודות קצה של סיכום וצבירה של נתונים (כמו rollUp ו-dailyRollUp), טווחי התאריכים של השאילתות מוגבלים על סמך סוג הנתונים:
    • טווח מקסימלי של 14 ימים ל-calories-in-heart-rate-zone, heart-rate,‏ active-minutes ו-total-calories.
    • טווח מקסימלי של 90 יום לכל שאר סוגי הנתונים המצטברים.

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

כדי להבטיח ביצועים אופטימליים ולמנוע שגיאות ב-API, כדאי לפעול לפי ההנחיות הבאות כששולחים שאילתות לגבי נתונים היסטוריים:

סנכרון נתונים בשלבים (טעינה חמה לעומת הפעלה מההתחלה)

  • טעינה ראשונית של נתונים 'פעילים': במהלך רצף הטעינה העיקרי, המערכת מאחזרת ומציגה רק את הנתונים מ-7 עד 14 הימים האחרונים. כך המשתמשים יכולים לראות את הנתונים באופן מיידי בלי לחכות לשאילתות ארוכות.
  • טעינה "קרה" ברקע: אחזור של נתונים היסטוריים ישנים יותר מועבר לתור אסינכרוני בעדיפות נמוכה יותר או לתהליך ברקע אחרי שהממשק הראשי מוצג.

חלוקת שאילתות לחלקים לצורך צבירה

  • מכיוון שבנקודות הקצה של סיכום הנתונים וסיכום הנתונים היומי יש מגבלה על טווח התאריכים (14 או 90 ימים, בהתאם לסוג הנתונים), צריך לפצל שאילתות גדולות של צבירת נתונים היסטוריים למרווחים קטנים יותר שמוגדרים ברצף, במסגרת המגבלות האלה.
  • כדי לכבד את מגבלות הריצה המקבילה ולשמור על אינדיקטורים יציבים של התקדמות ממשק המשתמש, מומלץ להריץ את שאילתות המשנה האלה בקבוצות או ברצף.

שימוש בסיכומי נתונים מצטברים שהוגדרו מראש

ארגון מחדש של לוחות הבקרה של הסקירה הכללית ושל תרשימי המגמות כך שישתמשו בנקודות קצה של סיכום שעברו צבירה מראש (כמו DailyRollUpDataPoints). כך יצטמצם באופן משמעותי העומס על המחשוב בשרת העורפי וזמן העברת הנתונים ללקוח.

טיפול בשגיאות בצורה גמישה (ניסיונות חוזרים חכמים)

  • צריך להטמיע טיפול קפדני בהשהיה מעריכית לפני ניסיון חוזר (exponential backoff) כשנתקלים במגבלות קצב (429 Too Many Requests) ובפסק זמן של שער השרת (504 Gateway Timeout). אסור לנסות שוב מיד לשלוח מטען ייעודי גדול שנכשל. ניסיונות חוזרים מיידיים מגבירים את העומס על השרתים ומחמירים את הירידה בביצועי המערכת.

גישה של צד שלישי

מכשירי Fitbit לא יכולים לתקשר ישירות עם אפליקציות או שירותים של צד שלישי. המכשירים האלה מיועדים לתקשורת ולסנכרון בלעדיים עם האפליקציה לנייד של Fitbit.

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

סטנדרטים של מרחק

מרחקי פעילות גופנית, כמו elevationGainMillimeters, נמדדים במילימטרים כיחידת המידה הסטנדרטית מהסיבות הבאות:

  1. שמירה על דיוק הנתונים: הסיבה הכי חשובה לשימוש במילימטרים היא לוודא שלא נאבד דיוק בנתונים שאנחנו קוראים ומספקים. שימוש ביחידה מדויקת כמו מילימטרים מאפשר לנו להציג מדידות ברמת דיוק גבוהה.
  2. סטנדרטיזציה: מילימטרים הם יחידת המידה הסטנדרטית שמוגדרת בשירותים שלנו. העקביות הזו עוזרת להבטיח חוויה אחידה למפתחים שמשתמשים בחלקים שונים של ה-API.
  3. תמיכה רחבה במערכות מדידה: שימוש ביחידת בסיס כמו מילימטרים מאפשר למפתחים להמיר בקלות לכל יחידה אחרת, בלי קשר למערכת המדידה שבה הם משתמשים (מטרית, אימפריאלית או אחרת).

משך יום משתנה

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

  • מיפוי האירוע לנקודת זמן פיזית מדויקת.
  • השעה מתוקנת לפי ההקשר המקומי של המשתמש לצורך צבירה.

שעון קיץ

כששעון הקיץ מתחיל, יש "חזרה לאחור" שגורמת לכך שהיום האזרחי נמשך 25 שעות, והסיכום של התאריך הזה יכיל נתונים של 25 שעות. הזזת השעון קדימה גורמת ליום אזרחי של 23 שעות, שבו השעה מוחזרת לשעון רגיל.

נסיעות

מסעות שחוצים אזורי זמן יכולים לגרום לשינויים משמעותיים עוד יותר במשך הפיזי של יום אזרחי אחד.

משתמשים בנקודת הקצה dailyRollUp כדי לגשר על הפערים בין אזורי הזמן. המערכת משייכת את הנתונים באופן אוטומטי ליום ביומן שבו הם נרשמו, לפי הזמן המקומי של המשתמש. כך היא למעשה "תופרת" את היום למרות שינויים באזור הזמן.