جدول زیر شامل لیست کامل انواع دادهها است، به همراه چندین ستون که به شما در درک نحوه نمایش هر نوع در API گوگل هلث و همچنین دامنه دسترسی هر کدام کمک میکند.
فیلدهای نوع داده
جدول انواع دادههای API گوگل هلث شامل چندین ستون فیلد است که به شما در درک نحوه نمایش و الزامات هر نوع داده کمک میکند. این ستونها به شرح زیر هستند:
| میدان | توضیحات |
|---|---|
dataType | شناسهای که با خط فاصله از هم جدا شده است (برای مثال، active-minutes ) که در URLهای نقطه پایانی استفاده میشود. |
پارامتر filter | شناسهای که با خط تیره (_) از هم جدا شده است (برای مثال، active_minutes ) که به عنوان مقدار پارامتر فیلتر dataType در درخواستهای جمعآوری روزانه و جمعآوری استفاده میشود. |
| نوع رکورد | ساختار و قالب دادههای ضبطشده را نشان میدهد. در باطن، این با نمایش منابع نقاط داده همسو است. مقادیر ممکن عبارتند از:
|
| عملیات موجود | متدهای API پشتیبانی شده برای این نوع داده (مانند list ، create و rollUp ) را فهرست میکند. |
| محدوده | دامنه(های) OAuth مورد نیاز برای دسترسی به نوع داده. |
| پشتیبانی از وبهوک | نشان میدهد که این نوع داده از اعلانهای بلادرنگ با استفاده از وبهوکها هنگام همگامسازی دادههای جدید پشتیبانی میکند. |
| پشتیبانی از صفرهای واقعی | نشان میدهد که این نوع داده از ثبت مقادیر صفر صریح برای تمایز بین یک مقدار صفر فعال (مانند صفر دقیقه فعال) در مقابل دادههای مفقود یا ثبت نشده پشتیبانی میکند. |
| دستگاههای سازگار | فهرستی قابل گسترش از دستگاههای فیزیکی که میتوانند این نوع دادهها را ضبط و با API گوگل هلث (با استفاده از برنامه Fitbit) همگامسازی کنند. |
| نوع داده | موجود است عملیات | محدوده |
|---|---|---|
| انرژی فعال سوزانده شده نوع داده: active-energy-burnedپارامتر فیلتر: active_energy_burned نوع رکورد: فاصلهای | فهرست کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
| دقایق فعال نوع داده: active-minutesپارامتر فیلتر: active_minutes نوع رکورد: فاصلهای دستگاههای سازگار
| فهرست کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
| صورتجلسات منطقه فعال نوع داده: active-zone-minutesپارامتر فیلتر: active_zone_minutes نوع رکورد: فاصلهای دستگاههای سازگار
| فهرست کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
| سطح فعالیت | فهرست کردن، تطبیق دادن | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
| ارتفاع نوع داده: altitudeپارامتر فیلتر: altitude نوع رکورد: فاصلهای | فهرست کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
| قند خون نوع داده: blood-glucoseپارامتر فیلتر: blood_glucose نوع رکورد: نمونه راهنمای پشتیبانی از وب هوک برای موارد حیاتی | فهرست کردن، دریافت کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
| چربی بدن نوع داده: body-fatپارامتر فیلتر: body_fat نوع رکورد: نمونه دستگاههای سازگار
| فهرست کردن، دریافت کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه، ایجاد کردن، بهروزرسانی کردن، حذف دستهای | .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 نوع رکورد: نمونه | فهرست کردن، دریافت کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
| تغییرپذیری روزانه ضربان قلب نوع داده: 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 نوع ثبت: روزانه راهنمای پشتیبانی از وب هوک برای موارد حیاتی | فهرست کردن، تطبیق دادن | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
| اشباع اکسیژن روزانه نوع داده: 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 نوع ثبت: روزانه دستگاههای سازگار
| فهرست کردن، تطبیق دادن | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
| حداکثر اکسیژن مصرفی روزانه (VO2 Max) نوع داده: daily-vo2-maxپارامتر فیلتر: daily_vo2_max نوع ثبت: روزانه دستگاههای سازگار
| فهرست کردن، تطبیق دادن | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
| فاصله نوع داده: distanceپارامتر فیلتر: distance نوع رکورد: فاصلهای دستگاههای سازگار
| فهرست کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
| الکتروکاردیوگرام (ECG) نوع داده: electrocardiogramپارامتر فیلتر: electrocardiogram نوع رکورد: جلسه دستگاههای سازگار
| فهرست | .ecg.readonly |
| ورزش نوع داده: exerciseپارامتر فیلتر: exercise نوع رکورد: جلسه دستگاههای سازگار
| لیست کردن، دریافت کردن، تطبیق دادن، ایجاد کردن، بهروزرسانی کردن، حذف دستهای | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
| طبقات نوع داده: floorsپارامتر فیلتر: floors نوع رکورد: فاصلهای | آشتی دادن، جمع کردن، روزانه جمع کردن | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
| غذا | فهرست کردن، دریافت کردن | .nutrition.readonly.nutrition.writeonly |
| واحد اندازهگیری غذا نوع داده: food-measurement-unitپارامتر فیلتر: food_measurement_unit نوع رکورد: غذا دستگاههای سازگار
| فهرست کردن، دریافت کردن | .nutrition.readonly.nutrition.writeonly |
| ضربان قلب نوع داده: heart-rateپارامتر فیلتر: heart_rate نوع رکورد: نمونه راهنمای پشتیبانی از وب هوک برای موارد حیاتی دستگاههای سازگار
| فهرست کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
| تغییرپذیری ضربان قلب نوع داده: heart-rate-variabilityپارامتر فیلتر: heart_rate_variability نوع رکورد: نمونه دستگاههای سازگار
| فهرست کردن، تطبیق دادن | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
| ارتفاع | لیست کردن، دریافت کردن، تطبیق دادن، ایجاد کردن، بهروزرسانی کردن، حذف دستهای | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
| گزارش هیدراتاسیون | فهرست کردن، دریافت کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه، ایجاد کردن، بهروزرسانی کردن، حذف دستهای | .nutrition.readonly.nutrition.writeonly |
| اعلان ریتم نامنظم نوع داده: irregular-rhythm-notificationپارامتر فیلتر: irregular_rhythm_notification نوع رکورد: جلسه | فهرست | .irn.readonly |
| دوره قاعدگی | ایجاد، بهروزرسانی، حذف دستهای | .reproductive_health.writeonly |
| خلق و خو | ایجاد، بهروزرسانی، حذف دستهای | .mindfulness.writeonly |
| گزارش تغذیه نوع داده: nutrition-logپارامتر فیلتر: nutrition_log نوع رکورد: نمونه دستگاههای سازگار
| فهرست کردن، دریافت کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه، ایجاد کردن، بهروزرسانی کردن، حذف دستهای | .nutrition.readonly.nutrition.writeonly |
| آزمایش تخمک گذاری | ایجاد، بهروزرسانی، حذف دستهای | .reproductive_health.writeonly |
| اشباع اکسیژن نوع داده: oxygen-saturationپارامتر فیلتر: oxygen_saturation نوع رکورد: نمونه دستگاههای سازگار
| فهرست کردن، تطبیق دادن | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
| خلاصه خواب با نرخ تنفس نوع داده: respiratory-rate-sleep-summaryپارامتر فیلتر: respiratory_rate_sleep_summary نوع رکورد: نمونه دستگاههای سازگار
| فهرست کردن، تطبیق دادن | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
| حداکثر اکسیژن مصرفی (VO2 Max) را بدوید نوع داده: run-vo2-maxپارامتر فیلتر: run_vo2_max نوع رکورد: نمونه دستگاههای سازگار
| فهرست کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
| دوره کم تحرکی نوع داده: sedentary-periodپارامتر فیلتر: sedentary_period نوع رکورد: فاصلهای دستگاههای سازگار
| فهرست کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
| خواب نوع داده: sleepپارامتر فیلتر: sleep نوع رکورد: جلسه دستگاههای سازگار
| لیست کردن، دریافت کردن، تطبیق دادن، ایجاد کردن، بهروزرسانی کردن، حذف دستهای | .sleep.readonly.sleep.writeonly |
| مراحل نوع داده: stepsپارامتر فیلتر: steps نوع رکورد: فاصلهای دستگاههای سازگار
| فهرست کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
| دادههای طول شنا نوع داده: swim-lengths-dataپارامتر فیلتر: swim_lengths_data نوع رکورد: فاصلهای دستگاههای سازگار
| فهرست کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
| علائم | ایجاد، بهروزرسانی، حذف دستهای | .logged_symptoms.writeonly |
| زمان در منطقه ضربان قلب نوع داده: time-in-heart-rate-zoneپارامتر فیلتر: time_in_heart_rate_zone نوع رکورد: فاصلهای | فهرست کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه | .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 نوع رکورد: نمونه دستگاههای سازگار
| فهرست کردن، تطبیق دادن | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
| وزن نوع داده: weightپارامتر فیلتر: weight نوع رکورد: نمونه دستگاههای سازگار
| فهرست کردن، دریافت کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه، ایجاد کردن، بهروزرسانی کردن، حذف دستهای | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
محدودیتهای پرسوجو
هنگام کوئری گرفتن از نقاط داده، رولآپها یا رولآپهای روزانه از API، محدودیتهای زیر را در نظر داشته باشید:
- الزامات فیلتر: برخی از انواع دادههای مشتقشده فقط خواندنی، مانند
total-calories، به فیلتری نیاز دارند که زمان شروع بازه (با استفاده از زمان فیزیکی یا مدنی) را مشخص کند. - محدودیتهای محدوده پرسوجو: نقاط پایانی تجمیع Rollup و Daily Rollup، حداکثر محدودیتهای محدوده پرسوجو را بر اساس نوع داده اعمال میکنند:
- حداکثر بازه پرسوجو برای
calories-in-heart-rate-zone،heart-rate،active-minutesوtotal-calories۱۴ روز است. - حداکثر بازه زمانی پرسوجو برای سایر انواع دادهها ۹۰ روز است.
- حداکثر بازه پرسوجو برای
در دسترس بودن دادهها
بهروزرسانی دادههای کاربر تنها پس از همگامسازی ردیاب فعالیت یا وارد کردن دستی دادههای جدید در برنامه موبایل یا وب Fitbit امکانپذیر است. دستگاه Fitbit و برنامه موبایل Fitbit میتوانند به طور خودکار هر ۱۵ دقیقه، زمانی که برنامه Fitbit روی دستگاه تلفن همراه باز است و هر دو دارای اتصال داده فعال و در محدوده بلوتوث هستند، همگامسازی شوند. اگر کاربر فعالیت را با استفاده از MobileTrack ردیابی میکند، MobileTrack تا زمانی که برنامه باز باشد، هر ساعت همگامسازی میشود.
پرسوجو از دادههای تاریخی
یکی از مزایای اصلی API گوگل هلث، قابلیت ردیابی عملکرد کاربر و نظارت بر علائم حیاتی سلامت او در بازههای زمانی طولانی است. میتوانید دادههای کاربر را از زمانی که ثبت شده است، جستجو کنید؛ این API هیچ محدودیت یا قیدی بر میزان دادههای تاریخی که برنامه شما میتواند مصرف کند، اعمال نمیکند.
با این حال، جستجوی دادههای تاریخی هنوز هم توسط محدودیتهای نرخ استاندارد اداره میشود. برای مدیریت پایداری سیستم و جلوگیری از بارگذاری بیش از حد، API سلامت گوگل از صفحهبندی خودکار با اندازههای صفحه خاص برای هر نقطه پایانی استفاده میکند. به مرزها و رفتار زیر توجه کنید:
- صفحهبندی خودکار: اگر شما یک بازه طولانی از دادهها را جستجو کنید، API فقط صفحه اول نتایج را تا حداکثر اندازه صفحه برای آن نقطه پایانی، همراه با
nextPageTokenبرمیگرداند. برای درخواست صفحات بعدی باید ازnextPageTokenاستفاده کنید. - اندازههای متغیر صفحه: محدودیتهای محدودیت به نقطه پایانی و نوع داده بستگی دارد. برای اکثر انواع داده، اندازه صفحه حداکثر 10000 است. با این حال، برای انواع داده خاصی مانند
exerciseوsleep، اندازه پیشفرض و حداکثر صفحه 25 است. به عنوان مثال، اگر یک کلاینت تمام دادههای خواب را برای 10 سال گذشته درخواست کند، API همچنان فقط 25 جلسه خواب را در صفحه اول برمیگرداند. - محدودیتهای محدوده تاریخ جمعبندی: برای نقاط پایانی جمعبندی و تجمیع دادهها (مانند
rollUpوdailyRollUp)، محدودههای تاریخ پرسوجو بر اساس نوع داده محدود میشوند:- حداکثر بازه زمانی ۱۴ روز برای
calories-in-heart-rate-zone،heart-rate،active-minutesوtotal-calories. - حداکثر بازه زمانی ۹۰ روز برای سایر انواع دادههای rollup.
- حداکثر بازه زمانی ۱۴ روز برای
بسته به حجم دادههای تاریخی مورد نیاز برنامه شما، بازیابی کل مجموعه دادهها نیاز به صفحهبندی متوالی صفحات دارد. این نکته را هنگام طراحی فرآیند همگامسازی دادههای برنامه خود در نظر داشته باشید.
برای اطمینان از عملکرد بهینه و جلوگیری از خطاهای API، هنگام جستجوی دادههای تاریخی، این دستورالعملها را دنبال کنید:
همگامسازی مرحلهای دادهها (بار گرم در مقابل بار سرد)
- بارگذاری "داغ" اولیه: در طول توالی بارگذاری اولیه، فقط دادههای ۷ تا ۱۴ روز اخیر را دریافت و رندر کنید. این تضمین میکند که کاربران دادهها را فوراً و بدون انتظار برای کوئریهای طولانی مدت مشاهده میکنند.
- بارگذاری «سرد» پسزمینه: بازیابی دادههای قدیمیتر را پس از رندر شدن رابط کاربری اصلی، به یک صف ناهمزمان و با اولویت پایینتر یا فرآیند پسزمینه واگذار کنید.
قطعهبندی پرسوجو برای تجمیع
- از آنجا که نقاط پایانی rollup و daily rollup حداکثر محدوده تاریخ (۱۴ یا ۹۰ روز بسته به نوع داده) را اعمال میکنند، شما باید پرسوجوهای تجمیع تاریخی بزرگ را به فواصل زمانی کوچکتر و متوالی در این محدودهها تقسیم کنید.
- این زیرپرسوجوها را با خیال راحت دستهبندی یا مرتب کنید تا محدودیتهای همزمانی رعایت شود و شاخصهای پیشرفت رابط کاربری ثابتی حفظ شوند.
از رولآپهای از پیش تجمیعشده استفاده کنید
داشبوردهای نمای کلی و نمودارهای روند را برای استفاده از نقاط پایانی از پیش تجمیعشده و خلاصه (مانند DailyRollUpDataPoints ) بازسازی کنید. این کار به طور چشمگیری سربار محاسباتی در backend و زمان انتقال شبکه به کلاینت را کاهش میدهد.
مدیریت خطای انعطافپذیر (تلاشهای مجدد هوشمند)
- هنگام مواجهه با محدودیتهای نرخ (
429 Too Many Requests) و زمانهای وقفه دروازه سرور (504 Gateway Timeout) ، مدیریت دقیق بازگشت نمایی را پیادهسازی کنید. هرگز بلافاصله بارهای بزرگ و ناموفق را دوباره امتحان نکنید. تلاشهای مجدد فوری، ازدحام backend را چند برابر کرده و باعث تخریب سیستم میشوند.
دسترسی شخص ثالث
دستگاههای Fitbit نمیتوانند مستقیماً با برنامهها یا سرویسهای شخص ثالث ارتباط برقرار کنند. این دستگاهها طوری طراحی شدهاند که منحصراً با برنامه تلفن همراه Fitbit ارتباط برقرار کرده و همگامسازی شوند.
دستگاه بهطور خودکار در طول روز، هر زمان که برنامه Fitbit باز باشد، یا هر ۱۵ دقیقه اگر بلوتوث فعال باشد و برنامه در پسزمینه اجرا شود، دادهها را همگامسازی میکند. پس از اتمام این فرآیند همگامسازی، دادهها از طریق API گوگل هلث برای سرویسهای شخص ثالث در دسترس قرار میگیرند.
استانداردهای فاصله
فواصل تمرینی، مانند elevationGainMillimeters ، به دلایل زیر به عنوان واحد استاندارد بر حسب میلیمتر اندازهگیری میشوند:
- حفظ دقت دادهها : مهمترین دلیل استفاده از میلیمتر، اطمینان از این است که هیچ دقتی در دادههایی که میخوانیم و ارائه میدهیم از دست ندهیم. استفاده از یک واحد دقیق مانند میلیمتر به ما این امکان را میدهد که اندازهگیریها را با دقت بالا نمایش دهیم.
- استانداردسازی : میلیمتر واحد استاندارد طراحیشده در سراسر سرویسهای ما است. این سازگاری به تضمین یک تجربه یکسان برای توسعهدهندگان در تعامل با بخشهای مختلف API کمک میکند.
- پشتیبانی گسترده از سیستمهای اندازهگیری : استفاده از یک واحد پایه مانند میلیمتر، تبدیل به هر واحد انتخابی دیگری را برای توسعهدهندگان، صرف نظر از اینکه با سیستمهای اندازهگیری متریک، امپریال یا سایر سیستمها کار میکنند، ساده میکند.
طول متغیر روز
مدیریت زمان توسط Health API، زمان کاربر را برای در نظر گرفتن طولهای متغیر روز ناشی از تغییر ساعت تابستانی یا سفر، در اولویت قرار میدهد. هر نقطه داده با یک مهر زمانی فیزیکی UTC و همچنین انحراف UTC فعال در زمان رویداد ذخیره میشود. این به سیستم اجازه میدهد تا:
- رویداد را به یک لحظه فیزیکی دقیق نگاشت کنید.
- برای تجمیع، زمان را با توجه به زمینه محلی کاربر اصلاح کنید.
ساعت تابستانی
وقتی زمان تابستانی تغییر میکند، یک «عقبنشینی» منجر به یک روز مدنی ۲۵ ساعته میشود و فهرست مربوط به آن تاریخ شامل ۲۵ ساعت داده خواهد بود. یک «جلو بردن» منجر به یک روز مدنی ۲۳ ساعته میشود که در آن زمان به زمان استاندارد برمیگردد.
سفر
سفر در مناطق زمانی مختلف میتواند تغییرات قابل توجهتری را در مدت زمان فیزیکی یک روز مدنی ایجاد کند.
از نقطه پایانی dailyRollUp برای تطبیق تفاوتهای منطقه زمانی استفاده کنید. این نقطه به طور خودکار دادهها را به روز تقویمی که در آن ثبت شدهاند، طبق زمان محلی کاربر نسبت میدهد و عملاً روز را با وجود تغییرات منطقه زمانی به هم "میچسباند".