एपीआई स्पेसिफ़िकेशन सेक्शन में, प्लैटफ़ॉर्म के साथ इंटिग्रेट करने के लिए ज़रूरी तकनीकी कॉम्पोनेंट के बारे में पूरी जानकारी दी गई है. इसमें अनुमति के स्कोप, डेटा टाइप की परिभाषाएं, और एंडपॉइंट स्ट्रक्चर शामिल हैं. यह एपीआई, लेगसी Fitbit Web API का एक बेहतर वर्शन है. इसे आधुनिक इन्फ़्रास्ट्रक्चर पर फिर से बनाया गया है, ताकि डेवलपर को ज़्यादा बेहतर और एक जैसा अनुभव मिल सके.
स्कोप
Google Health API के स्कोप इस्तेमाल करने के लिए, आपको अनुमति के अनुरोध को अपडेट करना होगा. स्कोप से यह तय होता है कि आपका ऐप्लिकेशन, डेटा को पढ़ने या उसमें बदलाव करने की सुविधा देता है या नहीं. स्कोप लागू करने के निर्देशों का पालन करें. इनमें बताया गया है कि सिर्फ़ ज़रूरी स्कोप का अनुरोध करें, डेटा भेजते समय ही राइट ऐक्सेस कॉन्फ़िगर करें, और कुछ डेटा के ऐक्सेस की अनुमति को सही तरीके से मैनेज करें.
Google Health API के स्कोप, एचटीटीपी यूआरएल होते हैं. ये 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 के स्कोप |
|---|---|
| गतिविधि | .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.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 के डेटा टाइपdataType |
ब्यौरा |
|---|---|---|
| गतिविधि के दौरान खर्च हुई कैलोरी | खर्च की गई ऐक्टिव एनर्जीactive-energy-burned
|
इससे पता चलता है कि शारीरिक गतिविधि के दौरान कितनी कैलोरी खर्च हुई. इसमें उन समयावधियों के लिए बीएमआर भी शामिल होता है. Google Health API में, active-energy-burned डेटा टाइप (यह सिर्फ़ गतिविधि को ट्रैक करता है, बेसल रेट को नहीं) में बीएमआर जोड़कर, इस डेटा को फिर से जनरेट किया जा सकता है. |
| ऐक्टिव ज़ोन मिनट | ऐक्टिव ज़ोन मिनटactive-zone-minutes
|
|
| इसमें उपयोगकर्ता की गतिविधि के लेवल में हुए बदलावों की जानकारी होती है | गतिविधि का लेवलactivity-level
|
यह किसी खास समयावधि में उपयोगकर्ता की गतिविधि के लेवल को कैप्चर करता है. जैसे, सुस्त या सक्रिय. |
| ऊंचाई | ऊंचाईaltitude
|
|
गतिविधि caloriesBMR |
आराम करते समय खर्च हुई कैलोरीbasal-energy-burned
|
किसी तय समयावधि में, बेसल मेटाबॉलिक रेट (बीएमआर) की वजह से बर्न हुई कैलोरी. |
| ब्लड ग्लूकोज़ | ब्लड ग्लूकोज़blood-glucose
|
|
| बॉडी फ़ैट से जुड़ा डेटा | बॉडी फ़ैटbody-fat
|
|
धड़कन की दर वाले हर ज़ोन में caloriesOut |
धड़कन की दर वाले ज़ोन में बर्न की गई कैलोरीcalories-in-heart-rate-zone
|
|
| तापमान (शरीर के अंदरूनी अंगों का) | शरीर का तापमानcore-body-temperature
|
|
| एचआरवी की खास जानकारी | धड़कन की दर में रोज़ाना होने वाले उतार-चढ़ावdaily-heart-rate-variability
|
|
| SpO2 की खास जानकारी | ऑक्सीजन की रोज़ाना मात्राdaily-oxygen-saturation
|
नींद के दौरान रिकॉर्ड किए गए डेटा के आधार पर, खून में ऑक्सीजन की मात्रा (SpO2) के आंकड़ों की रोज़ाना की खास जानकारी. |
| आराम करते समय धड़कन की दर | आराम करते समय धड़कन की रोज़ाना की दरdaily-resting-heart-rate
|
|
| त्वचा का तापमान | सोते समय शरीर के तापमान में होने वाले बदलावों का रोज़ाना का डेटाdaily-sleep-temperature-derivations
|
|
| दूरी | दूरीdistance
|
|
| इलेक्ट्रोकार्डियोग्राम (ईसीजी रीडिंग) | इलेक्ट्रोकार्डियोग्राम (ईसीजी रीडिंग)electrocardiogram
|
|
| रिकॉर्ड की गई गतिविधि | कसरतexercise
|
रिकॉर्ड की गई कसरत या एक्सरसाइज़ सेशन. इनमें कसरत शुरू/खत्म होने का समय, गतिविधि के टाइप, और सेशन की मेट्रिक शामिल हैं. |
| फ़्लोर | फ़्लोरfloors
|
|
| खाना | खानाfood
|
|
| खाने की चीज़ों को मापने की इकाई | खाने को मापने की इकाईfood-measurement-unit
|
|
| धड़कन की दर | धड़कन की दरheart-rate
|
|
| एचआरवी इंट्राडे | धड़कन की दर में उतार-चढ़ावheart-rate-variability
|
|
| दिल की धड़कन अनियमित होने पर मिलने वाली सूचनाएं (आईआरएन) | दिल की धड़कन अनियमित होने पर मिलने वाली सूचनाएंirregular-rhythm-notification
|
|
| खाने से जुड़ा डेटा लॉग करें | पोषण से जुड़ा डेटा लॉग करेंnutrition-log
|
|
| SpO2 इंट्राडे | ऑक्सीजन की मात्राoxygen-saturation
|
यह सिर्फ़ मिनट के हिसाब से पुष्टि किए गए SpO2 मेज़रमेंट दिखाता है. साथ ही, उन रीडिंग को शामिल नहीं करता जिन्हें मोशन आर्टफ़ैक्ट या सेंसर के कम कॉन्फ़िडेंस की वजह से अमान्य के तौर पर फ़्लैग किया गया है. Fitbit Web API ने सिर्फ़ 50% सेंटिनल वैल्यू को बाहर रखा है. इसलिए, Google Health API उसी समयसीमा के लिए कम डेटा पॉइंट दिखाता है. ज़्यादा जानकारी के लिए, ऑक्सीजन की मात्रा को फ़िल्टर करना लेख पढ़ें. |
| उपयोगकर्ता के दौड़ने के दौरान, वीओ2 मैक्स की वैल्यू | दौड़ने के दौरान वीओ2 मैक्सrun-vo2-max
|
|
| गतिविधि की टाइम सीरीज़ में सुस्त रहने का समय (मिनट में) | बैठे रहने की अवधिsedentary-period
|
|
| नींद | सोने के समय का तापमानsleep
|
|
| चरण | तरीकाsteps
|
|
| गतिविधि की टाइम सीरीज़ में स्विमिंग स्ट्रोक का डेटा | तैराकी की लंबाई का डेटाswim-lengths-data
|
|
गतिविधि caloriesOut |
कुल कैलोरीtotal-calories
|
किसी समयावधि के दौरान, उपयोगकर्ता की बर्न की गई कैलोरी की कुल संख्या. इसमें बेसल मेटाबॉलिक रेट और ऐक्टिव एनर्जी बर्न शामिल है. |
| वीओ2 मैक्स की वैल्यू | वीओ2 मैक्सvo2-max
|
|
| वज़न | वज़नweight
|
उत्सर्जन का आकलन
Google Health API में मैपिंग और नियम, Fitbit Web API से अलग होते हैं.
ऑक्सीजन की मात्रा के डेटा को फ़िल्टर करना
हर मिनट के हिसाब से खून में ऑक्सीजन की मात्रा (oxygen-saturation) की क्वेरी करने पर, Google Health API, डेटा की वैधता के लिए ज़्यादा सख्त फ़िल्टर लागू करता है. यह फ़िल्टर, Fitbit Web API के लेगसी वर्शन के मुकाबले ज़्यादा सख्त होता है:
- Fitbit Web API के लेगसी वर्शन (v1 और v3) में, सिर्फ़ 50% की सेंटिनल वैल्यू वाले SpO2 सैंपल शामिल नहीं किए जाते थे.
- Google Health API (v4) में, SpO2 के वे सभी सैंपल शामिल नहीं होते हैं जिन्हें पुष्टि करने वाले एल्गोरिदम ने अमान्य के तौर पर फ़्लैग किया है. किसी मिनट को अमान्य तब माना जाता है, जब हाथ के हिलने-डुलने या कलाई पर स्मार्टवॉच के ढीले होने की वजह से, ऑप्टिकल सेंसर का सिग्नल भरोसेमंद न हो. ऐसा तब भी होता है, जब कॉन्फ़िडेंस स्कोर 50% से कम हो जाता है. इसके अलावा, अमान्य रीडिंग से ठीक तीन मिनट पहले और बाद में या जब मान्य रीडिंग लगातार चार मिनट से कम समय तक चलती है, तब भी मिनट को अमान्य माना जाता है.
Google Health API, 50% सेंटिनल वैल्यू के बजाय सभी अमान्य माप हटा देता है. इसलिए, यह Fitbit Web API की तुलना में, समान समयसीमा के लिए कम oxygen-saturation डेटा पॉइंट दिखाता है. साथ ही, हर मिनट के कवरेज में अंतर होने की उम्मीद है. मिनट के हिसाब से मिली रीडिंग, उपयोगकर्ता की daily-oxygen-saturation नींद के बारे में खास जानकारी का हिसाब लगाने के लिए इस्तेमाल किए गए, पुष्टि किए गए डेटा पॉइंट से मेल खाती हैं. ज़्यादा जानकारी के लिए, हर मिनट के हिसाब से SpO2 डेटा को फ़िल्टर करना और डेटा की वैधता लेख पढ़ें.
गतिविधि का लेवल, एमईटी, और कदमों की संख्या के थ्रेशोल्ड
Google Health API में, उपयोगकर्ता की हर मिनट की गतिविधि का लेवल, उसके मेटाबॉलिक इक्विवैलेंट ऑफ़ टास्क (एमईटी) और कदमों की संख्या से तय होता है.
| गतिविधि का लेवल | धड़कन की दर मापने वाले डिवाइस | धड़कन की दर का डेटा रिकॉर्ड न करने वाले डिवाइस |
|---|---|---|
| बैठे रहने की आदत | ≤ 1.5 एमईटी | ≤ 1.5 एमईटी |
| कम ऐक्टिव | > 1.5 एमईटी और ≤ 4.2 एमईटी | > 1.5 एमईटी और ≤ 3.5 एमईटी |
| कुछ हद तक सक्रिय | > 4.2 एमईटी और < 6.0 एमईटी (जब तक बहुत ज़्यादा ऐक्टिव होने की शर्तें पूरी न हों) |
> 3.5 एमईटी और < 6.0 एमईटी (जब तक बहुत ज़्यादा ऐक्टिव होने की शर्तें पूरी न हों) |
| बहुत ज़्यादा | 6.0 एमईटी या इससे ज़्यादा या 5.0 एमईटी या इससे ज़्यादा, जिसमें हर मिनट 150 कदम या इससे ज़्यादा चलने की दर हो | 6.0 एमईटी या इससे ज़्यादा या 5.0 एमईटी या इससे ज़्यादा, जिसमें हर मिनट 150 कदम या इससे ज़्यादा चलने की दर हो |
ऐक्टिव मिनट में, MODERATELY_ACTIVE और VERY_ACTIVE मिनट शामिल होते हैं. हालांकि, ज़्यादा मेहनत वाली गतिविधि के लिए ऐक्टिव मिनट तभी क्रेडिट किया जाता है, जब वह कम से कम 10 मिनट तक लगातार की गई हो. इसमें कम मेहनत वाली गतिविधि के लिए, ज़्यादा से ज़्यादा दो मिनट का गैप हो सकता है.
आराम करने और सोने का समय
सुस्ती के मिनटों में, सोने का समय शामिल नहीं होता. हर दिन के रोलअप में, सुस्ती वाले मिनटों का हिसाब लगाने के लिए, दिन के कुल मिनटों (1,440 मिनट) में से, सोने के मिनट और ऐक्टिव मिनट (हल्की गतिविधि, सामान्य गतिविधि, और तेज़ गतिविधि) घटाए जाते हैं:
Sedentary Minutes = 1440 - Sleep Minutes - Lightly Active Minutes -
Moderately Active Minutes - Very Active Minutes
बॉडी मास इंडेक्स (बीएमआई)
Google Health API, पहले से मौजूद बीएमआई डेटा टाइप को सार्वजनिक नहीं करता. इसलिए, ऐप्लिकेशन को लंबाई और वज़न के रिकॉर्ड का इस्तेमाल करके, क्लाइंट-साइड पर बॉडी मास इंडेक्स का हिसाब लगाना होगा:
- वज़न डेटा टाइप में
weightGramsफ़ील्ड से, उपयोगकर्ता का वज़न ग्राम में पाएं. इसे किलोग्राम (1,000 से भाग दें) या पाउंड (453.59237 से भाग दें) में बदलें. - लंबाई डेटा टाइप के
heightMillimetersफ़ील्ड से, उपयोगकर्ता की लंबाई मिलीमीटर में हासिल करें. इसे मीटर (1,000 से भाग दें) या इंच (25.4 से भाग दें) में बदलें. - बीएमआई की वैल्यू का हिसाब लगाने के लिए, इनमें से किसी एक फ़ॉर्मूले का इस्तेमाल करें:
- मेट्रिक का फ़ॉर्मूला:
BMI = weight (kg) / [height (m)]^2 - इंपीरियल फ़ॉर्मूला:
BMI = (weight (lbs) / [height (in)]^2) * 703
- मेट्रिक का फ़ॉर्मूला:
बीएमआई की वैल्यू के हिसाब से, लोगों को इन कैटगरी में बांटा जाता है:
| वज़न की कैटगरी | बीएमआई रेंज |
|---|---|
| सामान्य से कम वज़न | 18.5 से कम |
| सही वज़न | 18.5 से 24.9 |
| सामान्य से ज़्यादा वज़न | 25 से 29.9 |
| मोटापा | 30 या इससे ज़्यादा |
बेसल मेटाबॉलिक रेट (बीएमआर)
बेसल मेटाबॉलिक रेट (बीएमआर) का मतलब है कि आराम करते समय, शरीर के बुनियादी फ़ंक्शन के लिए कितनी कैलोरी की ज़रूरत होती है. Google Health API, पहले से मौजूद बीएमआर डेटा टाइप को ज़ाहिर नहीं करता. इसलिए, ऐप्लिकेशन को हैरिस-बेनेडिक्ट फ़ॉर्मूला का इस्तेमाल करके, क्लाइंट-साइड पर इसका हिसाब लगाना होगा. ज़्यादा जानने के लिए, Wikipedia पर हैरिस-बेनेडिक्ट इक्वेशन वाला लेख पढ़ें.
यह कैलकुलेशन करने के लिए:
- वज़न डेटा टाइप में मौजूद
weightGramsफ़ील्ड से, उपयोगकर्ता का वज़न ग्राम में पाएं और उसे किलोग्राम में बदलें (1,000 से भाग दें). पाउंड को किलोग्राम में बदलने के लिए, पाउंड की संख्या को 2.2 से भाग दें. - लंबाई डेटा टाइप के
heightMillimetersफ़ील्ड से, उपयोगकर्ता की लंबाई मिलीमीटर में हासिल करें और उसे सेंटीमीटर में बदलें (10 से भाग दें). इंच को सेंटीमीटर में बदलने के लिए, 2.54 से गुणा करें. - Profile संसाधन में मौजूद
ageफ़ील्ड से, उपयोगकर्ता की उम्र सालों में फ़ेच करें. - जैविक लिंग की जानकारी अलग से हासिल करें. उदाहरण के लिए, उपयोगकर्ता से पूछकर या अपने डेटाबेस में इसे सेव करके. ऐसा इसलिए, क्योंकि Google Health API इस फ़ील्ड को ज़ाहिर नहीं करता.
- उपयोगकर्ता के बायोलॉजिकल सेक्स के आधार पर, इनमें से किसी एक फ़ॉर्मूले का इस्तेमाल करें:
- पुरुष:
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)
- पुरुष:
टोटल डेली एनर्जी एक्सपेंडिचर (टीडीईई)
टोटल डेली एनर्जी एक्सपेंडिचर (टीडीईई) से यह अनुमान लगाया जाता है कि कोई व्यक्ति एक दिन में कितनी कैलोरी बर्न करता है. इसमें बीएमआर और शारीरिक गतिविधि, दोनों शामिल हैं. उपयोगकर्ता के टीडीईई का अनुमान लगाने के लिए, बीएमआर वैल्यू को उसकी लाइफ़स्टाइल के हिसाब से, गतिविधि के फ़ैक्टर से गुणा करें:
| गतिविधि का लेवल | ब्यौरा | मल्टीप्लायर |
|---|---|---|
| बैठे रहने की आदत | बहुत कम या बिलकुल भी कसरत न करना. | BMR x 1.2 |
| कम ऐक्टिव | हर हफ़्ते एक से तीन दिन कसरत करना. | BMR x 1.375 |
| कुछ हद तक ऐक्टिव | हर हफ़्ते तीन से पांच दिन कसरत करना. | BMR x 1.55 |
| बहुत ज़्यादा ऐक्टिव | हफ़्ते में छह से सात दिन कसरत करना. | BMR x 1.725 |
| ज़्यादा ऐक्टिव | बहुत ज़्यादा कसरत या शारीरिक मेहनत वाला काम. | BMR x 1.9 |
एंडपॉइंट
REST एंडपॉइंट, सभी तरह के डेटा के लिए एक जैसा सिंटैक्स इस्तेमाल करते हैं.
- सेवा एंडपॉइंट: बेस एचटीटीपी यूआरएल बदलकर https://health.googleapis.com हो जाता है.
- एंडपॉइंट सिंटैक्स: Google Health API, सीमित संख्या में एंडपॉइंट के साथ काम करता है. इनका इस्तेमाल, ज़्यादातर डेटा टाइप के साथ किया जा सकता है. इससे सभी तरह के डेटा के लिए एक जैसा सिंटैक्स मिलता है. साथ ही, एंडपॉइंट इस्तेमाल करना आसान हो जाता है.
- यूज़र आइडेंटिफ़ायर: एंडपॉइंट सिंटैक्स में, यूज़र आईडी या me में से किसी एक को शामिल करना ज़रूरी है. me का इस्तेमाल करने पर, यूज़र आईडी का अनुमान ऐक्सेस टोकन से लगाया जाता है.
उदाहरण: यहां Google Health API का इस्तेमाल करके कॉल किए गए GET Profile एंडपॉइंट का उदाहरण दिया गया है
GET https://health.googleapis.com/v4/users/me/profile
एंडपॉइंट मैपिंग
उपलब्ध डेटा टाइप और उनके साथ काम करने वाले एपीआई के तरीकों की सूची के लिए, Google Health API के डेटा टाइप टेबल देखें.
| Fitbit Web API एंडपॉइंट का टाइप | Google Health API |
|---|---|
| GET (लॉग | खास जानकारी | रोज़ की खास जानकारी), जहां आपको एक दिन के डेटा का अनुरोध करना है | dailyRollup तरीका, जिसमें windowSize = 1 दिन |
| GET (इंट्राडे), जहां आपको ज़्यादा जानकारी वाले डेटा का अनुरोध करना है | list तरीका |
| तारीख या इंटरवल के हिसाब से GET (टाइम सीरीज़) | तारीख की सीमा के साथ rollUp या dailyRollUp तरीका |
| GET (लॉग लिस्ट) | list तरीका |
| लॉग बनाना और अपडेट करना | patch तरीका |
| DELETE लॉग | batchDelete तरीका |
| GET Profile | 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 सभी सदस्यताओं की सूची दिखाता है |