בטבלה הבאה מופיעה רשימה מלאה של סוגי הנתונים, עם כמה עמודות שיעזרו לכם להבין את הייצוג של כל סוג ב-Google Health API, וגם את ההיקף שבו כל סוג זמין.
סוג הנתוניםdataType
הפרמטר filter |
פעולות זמינות |
היקף |
|---|---|---|
|
אנרגיה שנשרפה בזמן פעילות
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
דקות פעילות
active-minutesactive_minutes
סוג הרשומה: מרווח
מכשירים תואמים
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
דקות טווח פעילות
active-zone-minutesactive_zone_minutes
סוג הרשומה: מרווח
מכשירים תואמים
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
רמת הפעילות
|
רשימה, התאמה | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
גובה
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
סוכר בדם
|
list, get, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Body Fat
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
קלוריות שנשרפו בטווח הדופק
|
איחוד לתצוגה אחת, איחוד יומי לתצוגה אחת | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
טמפרטורת ליבה
|
list, get, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Daily Heart Rate Variability
daily-heart-rate-variabilitydaily_heart_rate_variability
סוג הרשומה: יומי
מכשירים תואמים
|
רשימה, התאמה | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Daily Heart Rate Zones
|
רשימה, התאמה | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Daily Oxygen Saturation
daily-oxygen-saturationdaily_oxygen_saturation
סוג הרשומה: יומי
מכשירים תואמים
|
רשימה, התאמה | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
קצב נשימה יומי
daily-respiratory-ratedaily_respiratory_rate
סוג הרשומה: יומי
מכשירים תואמים
|
רשימה, התאמה | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
הדופק היומי במנוחה
daily-resting-heart-ratedaily_resting_heart_rate
סוג הרשומה: יומי
מכשירים תואמים
|
רשימה, התאמה | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Daily Sleep Temperature Derivations
daily-sleep-temperature-derivationsdaily_sleep_temperature_derivations
סוג הרשומה: יומי
מכשירים תואמים
|
רשימה, התאמה | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Daily VO2 Max
daily-vo2-maxdaily_vo2_max
סוג הרשומה: יומי
מכשירים תואמים
|
רשימה, התאמה | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
מרחק
distancedistance
סוג הרשומה: מרווח
מכשירים תואמים
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Electrocardiogram (ECG)
electrocardiogramelectrocardiogram
סוג הרשומה: סשן
מכשירים תואמים
|
list | .ecg.readonly |
תרגיל
exerciseexercise
סוג הרשומה: סשן
מכשירים תואמים
|
list, get, reconcile, create, update, batchDelete | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
קומות
|
התאמה, איחוד לתצוגה אחת, סיכום יומי | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
אוכל
|
list, get | .nutrition.readonly.nutrition.writeonly |
יחידת מידה של מזון
food-measurement-unitfood_measurement_unit
סוג הרשומה: אוכל
מכשירים תואמים
|
list, get | .nutrition.readonly.nutrition.writeonly |
דופק
heart-rateheart_rate
סוג הרשומה: Sample
מכשירים תואמים
|
list, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
שונות קצב הלב
heart-rate-variabilityheart_rate_variability
סוג הרשומה: Sample
מכשירים תואמים
|
רשימה, התאמה | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
גובה
|
list, get, reconcile, create, update, batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
יומן מאזן הנוזלים
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
|
התראה על הפרעת קצב (IRN)
|
list | .irn.readonly |
Menstrual Period
menstrual-periodmenstrual_period
סוג הרשומה: מרווח
|
create, update, batchDelete | .reproductive_health.writeonly |
מצבי רוח
moodsmoods
סוג הרשומה: Sample
|
create, update, batchDelete | .mindfulness.writeonly |
יומן תזונה
nutrition-lognutrition_log
סוג הרשומה: Sample
מכשירים תואמים
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
בדיקת ביוץ
ovulation-testovulation_test
סוג הרשומה: Sample
|
create, update, batchDelete | .reproductive_health.writeonly |
רמת החמצן בדם
oxygen-saturationoxygen_saturation
סוג הרשומה: Sample
מכשירים תואמים
|
רשימה, התאמה | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
סיכום השינה של קצב הנשימה
respiratory-rate-sleep-summaryrespiratory_rate_sleep_summary
סוג הרשומה: Sample
מכשירים תואמים
|
רשימה, התאמה | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Run VO2 Max
run-vo2-maxrun_vo2_max
סוג הרשומה: Sample
מכשירים תואמים
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
תקופה של חוסר פעילות
sedentary-periodsedentary_period
סוג הרשומה: מרווח
מכשירים תואמים
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
שינה
sleepsleep
סוג הרשומה: סשן
מכשירים תואמים
|
list, get, reconcile, create, update, batchDelete | .sleep.readonly.sleep.writeonly |
שלבים
stepssteps
סוג הרשומה: מרווח
מכשירים תואמים
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
נתונים של אורך הבריכה
swim-lengths-dataswim_lengths_data
סוג הרשומה: מרווח
מכשירים תואמים
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
תסמינים
symptomssymptoms
סוג הרשומה: Sample
|
create, update, batchDelete | .logged_symptoms.writeonly |
|
Time in Heart Rate Zone
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
סך הקלוריות
total-caloriestotal_calories
סוג הרשומה: מרווח
מכשירים תואמים
|
איחוד לתצוגה אחת, איחוד יומי לתצוגה אחת | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
VO2 Max
vo2-maxvo2_max
סוג הרשומה: Sample
מכשירים תואמים
|
רשימה, התאמה | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
משקל
|
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 ימים לכל שאר סוגי הנתונים.
- טווח שאילתות מקסימלי של 14 ימים עבור
זמינות הנתונים
העדכונים של נתוני המשתמש זמינים רק אחרי שהמשתמש מסנכרן את מנהל מעקב אחר פעילות שלו או מזין נתונים חדשים באופן ידני באפליקציה לנייד של 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 יום לכל שאר סוגי הנתונים המצטברים.
- טווח מקסימלי של 14 ימים ל-
בהתאם לנפח הנתונים ההיסטוריים שנדרשים לאפליקציה, כדי לאחזר את מערך הנתונים כולו צריך להשתמש בדפדוף בין הדפים באופן רציף. חשוב לזכור את זה כשמתכננים את תהליך סנכרון הנתונים של האפליקציה.
כדי להבטיח ביצועים אופטימליים ולמנוע שגיאות ב-API, כדאי לפעול לפי ההנחיות הבאות כששולחים שאילתות לגבי נתונים היסטוריים:
סנכרון נתונים בשלבים (טעינה חמה לעומת הפעלה מההתחלה)
- טעינה ראשונית של נתונים 'פעילים': במהלך רצף הטעינה העיקרי, המערכת מאחזרת ומציגה רק את הנתונים מ-7 עד 14 הימים האחרונים. כך המשתמשים יכולים לראות את הנתונים באופן מיידי בלי לחכות לשאילתות ארוכות.
- טעינה "קרה" ברקע: אחזור של נתונים היסטוריים ישנים יותר מועבר לתור אסינכרוני בעדיפות נמוכה יותר או לתהליך ברקע אחרי שהממשק הראשי מוצג.
חלוקת שאילתות לחלקים לצורך צבירה
- מכיוון שבנקודות הקצה של סיכום הנתונים וסיכום הנתונים היומי יש מגבלה על טווח התאריכים (14 או 90 ימים, בהתאם לסוג הנתונים), צריך לפצל שאילתות גדולות של צבירת נתונים היסטוריים למרווחים קטנים יותר שמוגדרים ברצף, במסגרת המגבלות האלה.
- כדי לכבד את מגבלות הריצה המקבילה ולשמור על אינדיקטורים יציבים של התקדמות ממשק המשתמש, מומלץ להריץ את שאילתות המשנה האלה בקבוצות או ברצף.
שימוש בסיכומי נתונים מצטברים שהוגדרו מראש
ארגון מחדש של לוחות הבקרה של הסקירה הכללית ושל תרשימי המגמות כך שישתמשו בנקודות קצה של סיכום שעברו צבירה מראש (כמו DailyRollUpDataPoints). כך יצטמצם באופן משמעותי העומס על המחשוב בשרת העורפי וזמן העברת הנתונים ללקוח.
טיפול בשגיאות בצורה גמישה (ניסיונות חוזרים חכמים)
- צריך להטמיע טיפול קפדני בהשהיה מעריכית לפני ניסיון חוזר (exponential backoff) כשנתקלים במגבלות קצב (
429 Too Many Requests) ובפסק זמן של שער השרת (504 Gateway Timeout). אסור לנסות שוב מיד לשלוח מטען ייעודי גדול שנכשל. ניסיונות חוזרים מיידיים מגבירים את העומס על השרתים ומחמירים את הירידה בביצועי המערכת.
גישה של צד שלישי
מכשירי Fitbit לא יכולים לתקשר ישירות עם אפליקציות או שירותים של צד שלישי. המכשירים האלה מיועדים לתקשורת ולסנכרון בלעדיים עם האפליקציה לנייד של Fitbit.
המכשיר מסנכרן את הנתונים באופן אוטומטי במהלך היום, בכל פעם שאפליקציית Fitbit פתוחה, או כל 15 דקות אם ה-Bluetooth פעיל והאפליקציה פועלת ברקע. אחרי שתהליך הסנכרון הזה יסתיים, הנתונים יהיו זמינים לשירותי צד שלישי דרך Google Health API.
סטנדרטים של מרחק
מרחקי פעילות גופנית, כמו elevationGainMillimeters, נמדדים במילימטרים כיחידת המידה הסטנדרטית מהסיבות הבאות:
- שמירה על דיוק הנתונים: הסיבה הכי חשובה לשימוש במילימטרים היא לוודא שלא נאבד דיוק בנתונים שאנחנו קוראים ומספקים. שימוש ביחידה מדויקת כמו מילימטרים מאפשר לנו להציג מדידות ברמת דיוק גבוהה.
- סטנדרטיזציה: מילימטרים הם יחידת המידה הסטנדרטית שמוגדרת בשירותים שלנו. העקביות הזו עוזרת להבטיח חוויה אחידה למפתחים שמשתמשים בחלקים שונים של ה-API.
- תמיכה רחבה במערכות מדידה: שימוש ביחידת בסיס כמו מילימטרים מאפשר למפתחים להמיר בקלות לכל יחידה אחרת, בלי קשר למערכת המדידה שבה הם משתמשים (מטרית, אימפריאלית או אחרת).
משך יום משתנה
ב-Health API, הטיפול בזמן מתבצע לפי הזמן של המשתמש כדי להתחשב באורכי ימים משתנים שנגרמים בגלל שעון קיץ או נסיעות. כל נקודת נתונים מאוחסנת עם חותמת זמן פיזית ב-UTC ועם ההפרש מ-UTC שהיה פעיל בזמן האירוע. כך המערכת יכולה:
- מיפוי האירוע לנקודת זמן פיזית מדויקת.
- השעה מתוקנת לפי ההקשר המקומי של המשתמש לצורך צבירה.
שעון קיץ
כששעון הקיץ מתחיל, יש "חזרה לאחור" שגורמת לכך שהיום האזרחי נמשך 25 שעות, והסיכום של התאריך הזה יכיל נתונים של 25 שעות. הזזת השעון קדימה גורמת ליום אזרחי של 23 שעות, שבו השעה מוחזרת לשעון רגיל.
נסיעות
מסעות שחוצים אזורי זמן יכולים לגרום לשינויים משמעותיים עוד יותר במשך הפיזי של יום אזרחי אחד.
משתמשים בנקודת הקצה dailyRollUp כדי לגשר על הפערים בין אזורי הזמן. המערכת משייכת את הנתונים באופן אוטומטי ליום ביומן שבו הם נרשמו, לפי הזמן המקומי של המשתמש. כך היא למעשה "תופרת" את היום למרות שינויים באזור הזמן.