इस पेज पर, REST API के नियमों के बारे में खास जानकारी दी गई है. साथ ही, Google Health API के सामान्य टास्क और उनके उदाहरणों की इंडेक्स भी दी गई है.
REST API के नियम
Google Health API, Google API Improvement Proposals (AIP) के स्टैंडर्ड फ़ॉलो करता है. खास तौर पर, AIP-127 (HTTP और gRPC ट्रांसकोडिंग) और AIP-131 से AIP-135 (स्टैंडर्ड तरीके). इन स्टैंडर्ड से यह तय होता है कि किसी प्रोटो मैसेज से एचटीटीपी अनुरोध में डेटा को कैसे मैप किया जाता है.
क्वेरी पैरामीटर
क्वेरी पैरामीटर का इस्तेमाल तब किया जाता है, जब डेटा यूआरएल का हिस्सा होता है. यह मुख्य रूप से GET अनुरोधों (किसी संसाधन को फ़ेच करना) या LIST अनुरोधों (फ़िल्टर करना/पेज नंबर डालना) के लिए है. हालांकि, इसका इस्तेमाल DELETE कार्रवाइयों के लिए भी किया जाता है.
- प्लेसमेंट: इसे यूआरएल में
?के बाद जोड़ा जाता है. - सिंटैक्स: की-वैल्यू पेयर,
&से अलग किए जाते हैं. - मैपिंग: अनुरोध मैसेज में मौजूद हर फ़ील्ड, यूआरएल पाथ टेंप्लेट का हिस्सा नहीं होता. इसे क्वेरी पैरामीटर पर मैप किया जाता है.
- सबसे सही विकल्प: सामान्य टाइप (स्ट्रिंग, पूर्णांक, enum) और दोहराए गए फ़ील्ड के लिए.
सिंटैक्स का उदाहरण:
GET https://health.googleapis.com/v4/users/me/dataTypes/data-type/dataPoints?page_size=10&filter=data_type.interval.start_time >= "2025-10-01T00:00:00Z"
अनुरोध का मुख्य भाग
अनुरोध के मुख्य हिस्से का इस्तेमाल तब किया जाता है, जब डेटा किसी संसाधन की स्थिति में बदलाव करता है या यूआरएल के लिए बहुत बड़ा होता है. बॉडी में आम तौर पर, संसाधन का JSON फ़ॉर्मैट होता है. आम तौर पर, इसका इस्तेमाल POST, PATCH, और PUT कार्रवाइयों के लिए किया जाता है.
- प्लेसमेंट: एचटीटीपी पेलोड में (यूआरएल में नहीं दिखता).
- सिंटैक्स: इसे JSON ऑब्जेक्ट के तौर पर फ़ॉर्मैट किया जाता है.
- मैपिंग: इसे
google.api.httpएनोटेशन में तय किया जाता है.body: "*"का मतलब है कि पूरा मैसेज ही मुख्य हिस्सा है.body: "resource_name"का मतलब है कि प्रोटो में सिर्फ़ एक फ़ील्ड, बॉडी है.
- सबसे सही: मुश्किल ऑब्जेक्ट, नेस्ट किए गए मैसेज, और संवेदनशील डेटा के लिए.
सिंटैक्स का उदाहरण:
POST https://health.googleapis.com/v4/users/me/dataTypes/data-type/dataPoints:rollUp
Content-Type: application/json
{
"range": {
"startTime": "2025-11-05T00:00:00Z",
"endTime": "2025-11-13T00:00:00Z"
},
"windowSize": "3600s"
}हाइब्रिड केस
एआईपी-134 के मुताबिक Update तरीके या PATCH ऑपरेशन में, दोनों का इस्तेमाल किया जाता है.
यूआरएल में संसाधन का नाम होता है, मुख्य हिस्से में अपडेट किया गया संसाधन डेटा होता है, और क्वेरी पैरामीटर (आम तौर पर update_mask) यह तय करता है कि किन फ़ील्ड को बदलना है.
PATCH https://health.googleapis.com/v4/projects/project-id/subscribers/subscriber-id
Content-Type: application/json
{
"endpointUri": "https://myapp.com/new-webhooks/health"
}
एक नज़र में मुख्य अंतर
| सुविधा | क्वेरी पैरामीटर | अनुरोध का मुख्य भाग |
|---|---|---|
| एआईपी के दिशा-निर्देश | इस कुकी का इस्तेमाल, खोजने, फ़िल्टर करने, और पढ़ने की कार्रवाइयों के लिए किया जाता है. | इसका इस्तेमाल लिखने की कार्रवाइयों के लिए किया जाता है. |
| वीडियो किसको दिखे | यह ब्राउज़र के इतिहास और सर्वर लॉग में दिखता है. | यूआरएल से छिपाया गया है. |
| जटिलता | यह सुविधा, फ़्लैट या दोहराए गए स्ट्रक्चर के लिए उपलब्ध है. | यह डीपली नेस्ट किए गए JSON ऑब्जेक्ट के साथ काम करता है. |
| एन्कोडिंग | इसे यूआरएल के हिसाब से कोड में बदला जाना चाहिए. उदाहरण के लिए, स्पेस की जगह %20 का इस्तेमाल किया जाता है. |
JSON फ़ॉर्मैट में कोड में बदलने का स्टैंडर्ड तरीका. |
तारीख
Google Health API में सभी तारीखें, YYYY-MM-DD फ़ॉर्मैट में दिखती हैं. Nutrition API, तारीख की वैल्यू के लिए आईएसओ-8601 स्टैंडर्ड का इस्तेमाल करता है. इसके लिए, ये शर्तें पूरी होनी चाहिए:
- साल, चार अंकों में
YYYY - साल की वैल्यू 0000-9999 के बीच होनी चाहिए
- ISO-8601 स्टैंडर्ड या अन्य ईपॉक के हिसाब से, शुरू होने की तारीख से जुड़ी पाबंदियों को लागू नहीं किया जाता
हेडर
Google Health API के एंडपॉइंट को लागू करने के लिए, सही हेडर और ऐक्सेस टोकन का इस्तेमाल करना ज़रूरी है. GET और POST, दोनों तरह के अनुरोधों के लिए इस हेडर का इस्तेमाल करने का सुझाव दिया जाता है:
Authorization: Bearer access-token Accept: application/json
एपीआई टास्क इंडेक्स
इस सेक्शन में, Google Health API से जुड़े सामान्य कामों की इंडेक्स दी गई है. साथ ही, हर काम के उदाहरण दिए गए हैं.
Fitbit या Google का यूज़र आईडी पाना
Google OAuth 2.0 के ज़रिए उपयोगकर्ता की सहमति मिलने के बाद, टोकन रिस्पॉन्स में Fitbit या Google का यूज़र आईडी शामिल नहीं होता. User-ID पाने के लिए, getIdentity एंडपॉइंट को कॉल करें. getIdentity
Fitbit के लेगसी वर्शन के यूज़र आईडी और Google के यूज़र आईडी, दोनों को दिखाता है.
हमारा सुझाव है कि जैसे ही कोई नया उपयोगकर्ता OAuth के ज़रिए सहमति देता है, वैसे ही getIdentity एंडपॉइंट को कॉल करें और दोनों उपयोगकर्ता आईडी सेव करें. इससे आपको इंटिग्रेशन में पुराने और नए सिस्टम के साथ काम करने की सुविधा मिलती है.
उदाहरण के लिए:
अनुरोध
GET https://health.googleapis.com/v4/users/me/identity Authorization: Bearer access-token Accept: application/json
जवाब
{
"name": "users/me/identity",
"legacyUserId": "A1B2C3",
"healthUserId": "111111256096816351"
}पूरे दिन में इकट्ठा किया गया इंट्राडे या ज़्यादा जानकारी वाला डेटा पाना
किसी खास डेटा टाइप के लिए, list
एंडपॉइंट का इस्तेमाल करें. इससे आपको दिन के दौरान इकट्ठा किया गया डेटा मिलेगा. यह डेटा, उस डेटा टाइप के लिए तय किए गए समय अंतराल के हिसाब से मिलेगा.
उदाहरण के लिए:
अनुरोध
GET https://health.googleapis.com/v4/users/me/dataTypes/steps/dataPoints Authorization: Bearer access-token Accept: application/json
जवाब
{
"dataPoints": [
{
"dataSource": {
"recordingMethod": "PASSIVELY_MEASURED",
"device": {
"manufacturer": "",
"displayName": "Charge 6"
},
"platform": "FITBIT"
},
"steps": {
"interval": {
"startTime": "2026-03-04T07:05:00Z",
"startUtcOffset": "0s",
"endTime": "2026-03-04T07:06:00Z",
"endUtcOffset": "0s",
"civilStartTime": {
"date": {
"year": 2026,
"month": 3,
"day": 4
},
"time": {
"hours": 7,
"minutes": 5
}
},
"civilEndTime": {
"date": {
"year": 2026,
"month": 3,
"day": 4
},
"time": {
"hours": 7,
"minutes": 6
}
}
},
"count": "40"
}
},
...
],
"nextPageToken": "Xm5h-6L0viZxIlRuWjx5bmvy98zj85uG34tuMn16mu2pntsnZI32iqhq"
}सिविल टाइम के हिसाब से, किसी इंटरवल के शुरू होने के समय के हिसाब से डेटा फ़िल्टर करना
list पैरामीटर के साथ list एंडपॉइंट का इस्तेमाल करके, डेटा को सिविल टाइम या किसी इंटरवल के हिसाब से फ़िल्टर करें.filter
उदाहरण के लिए:
अनुरोध
GET https://health.googleapis.com/v4/users/me/dataTypes/steps/dataPoints?filter=steps.interval.civil_start_time >= "2026-03-04T00:00:00" Authorization: Bearer access-token Accept: application/json
जवाब
{
"dataPoints": [
{
"dataSource": {
"recordingMethod": "PASSIVELY_MEASURED",
"device": {
"manufacturer": "",
"displayName": "Charge 6"
},
"platform": "FITBIT"
},
"steps": {
"interval": {
"startTime": "2026-03-04T07:05:00Z",
"startUtcOffset": "0s",
"endTime": "2026-03-04T07:06:00Z",
"endUtcOffset": "0s",
"civilStartTime": {
"date": {
"year": 2026,
"month": 3,
"day": 4
},
"time": {
"hours": 7,
"minutes": 5
}
},
"civilEndTime": {
"date": {
"year": 2026,
"month": 3,
"day": 4
},
"time": {
"hours": 7,
"minutes": 6
}
}
},
"count": "40"
}
...
],
"nextPageToken": "Xm5h-6L0viZxIlRuQjp5bml1bZ4ve2dhNmZvMnt4Yn7qIGQhbHN3YQ"
}सैंपल ऑब्ज़र्वेशन के फ़िज़िकल टाइम के हिसाब से डेटा फ़िल्टर करना
list पैरामीटर के साथ list एंडपॉइंट का इस्तेमाल करके, सैंपल के हिसाब से डेटा को फ़िल्टर करें.filter
उदाहरण के लिए:
अनुरोध
GET https://health.googleapis.com/v4/users/me/dataTypes/body-fat/dataPoints?filter=body_fat.sample_time.physical_time >= "2026-03-01T00:00:00Z" Authorization: Bearer access-token Accept: application/json
जवाब
{
"dataPoints": [
{
"name": "users/2515055256096816351/dataTypes/body-fat/dataPoints/1234567890",
"dataSource": {
"recordingMethod": "UNKNOWN",
"application": {
"packageName": "",
"webClientId": "",
"googleWebClientId": "google-web-client-id"
},
"platform": "GOOGLE_WEB_API"
},
"-->bodyFat<--": {
"sampleTime": {
"physicalTime": "2026-03-10T10:00:00Z",
"utcOffset": "0s",
"civilTime": {
"date": {
"year": 2026,
"month": 3,
"day": 10
},
"time": {
"hours": 10
}
}
},
"percentage": 20
}
}
"nextPageToken": ""
}डेटा सोर्स के हिसाब से डेटा फ़िल्टर करना. जैसे, पहनने लायक डिवाइस
मिलान की गई स्ट्रीम में "डेटा सोर्स फ़ैमिली" के हिसाब से डेटा पाने के लिए, reconcile
एंडपॉइंट का इस्तेमाल करें.
यहां 2026-03-03 के बाद, सिर्फ़ ट्रैकर से रिकॉर्ड की गई नींद को फ़िल्टर करने का उदाहरण दिया गया है:
अनुरोध
GET https://health.googleapis.com/v4/users/me/dataTypes/sleep/dataPoints:reconcile?dataSourceFamily=users/me/dataSourceFamilies/google-wearables&filter=sleep.interval.civil_end_time >= "2026-03-03" Authorization: Bearer access-token Accept: application/json
जवाब
{
"dataPoints": [
{
"name": "users/2515055256096816351/dataTypes/sleep/dataPoints/2724123844716220216",
"dataSource": {
"recordingMethod": "DERIVED",
"device": {
"displayName": "Charge 6"
},
"platform": "FITBIT"
},
"sleep": {
"interval": {
"startTime": "2026-03-03T20:57:30Z",
"startUtcOffset": "0s",
"endTime": "2026-03-04T04:41:30Z",
"endUtcOffset": "0s"
},
"type": "STAGES",
"stages": [
{
"startTime": "2026-03-03T20:57:30Z",
"startUtcOffset": "0s",
"endTime": "2026-03-03T20:59:30Z",
"endUtcOffset": "0s",
"type": "AWAKE",
"createTime": "2026-03-04T04:43:40.937183Z",
"updateTime": "2026-03-04T04:43:40.937183Z"
},
…
{
"startTime": "2026-03-04T04:07:30Z",
"startUtcOffset": "0s",
"endTime": "2026-03-04T04:41:30Z",
"endUtcOffset": "0s",
"type": "AWAKE",
"createTime": "2026-03-04T04:43:40.937183Z",
"updateTime": "2026-03-04T04:43:40.937183Z"
}
],
"metadata": {
"stagesStatus": "SUCCEEDED",
"processed": true,
"main": true
},
"summary": {
"minutesInSleepPeriod": "464",
"minutesAfterWakeUp": "0",
"minutesToFallAsleep": "0",
"minutesAsleep": "407",
"minutesAwake": "57",
"stagesSummary": [
{
"type": "AWAKE",
"minutes": "56",
"count": "12"
},
{
"type": "LIGHT",
"minutes": "198",
"count": "19"
},
{
"type": "DEEP",
"minutes": "114",
"count": "10"
},
{
"type": "REM",
"minutes": "94",
"count": "4"
}
]
},
"createTime": "2026-03-04T04:43:40.337983Z",
"updateTime": "2026-03-04T04:43:40.937183Z"
}
}
],
"nextPageToken": ""
}किसी समयावधि के डेटा पॉइंट को एग्रीगेट करना
rollUp
एंडपॉइंट का इस्तेमाल करके, डेटा पॉइंट का एग्रीगेट वापस पाएं. यह एग्रीगेट, सेकंड में तय की गई विंडो पर आधारित होता है. साथ ही, यह datetime रेंज पर आधारित होता है. यह रेंज, उपयोगकर्ताओं के स्थानीय समय (यूटीसी में) के हिसाब से तय की जाती है.
rollUp एंडपॉइंट को कॉल करते समय, आपको अनुरोध का मुख्य हिस्सा देना होगा. इसमें उपयोगकर्ता के स्थानीय समय के हिसाब से, तारीख की ज़रूरी सीमा की जानकारी होनी चाहिए. उदाहरण के लिए:
अनुरोध
POST https://health.googleapis.com/v4/users/me/dataTypes/steps/dataPoints:rollUp
Authorization: Bearer access-token
Accept: application/json
{
"range": {
"startTime": "2026-02-17T17:00:00Z",
"endTime": "2026-02-17T17:59:59Z"
},
"windowSize": "30s"
}जवाब
{
"rollupDataPoints": [
{
"startTime": "2026-02-17T17:55:00Z",
"endTime": "2026-02-17T17:55:30Z",
"steps": {
"countSum": "41"
}
},
{
"startTime": "2026-02-17T17:54:00Z",
"endTime": "2026-02-17T17:54:30Z",
"steps": {
"countSum": "31"
}
},
...
]
}एक दिन या एक से ज़्यादा दिनों का एग्रीगेट किया गया डेटा
dailyRollUp
एंडपॉइंट का इस्तेमाल तब किया जाना चाहिए, जब आपको एक दिन या कई दिनों के डेटा को इकट्ठा करना हो. इसे windowSize कहा जाता है. अनुरोध के मुख्य हिस्से में, ज़रूरी समयावधि के लिए बंद-खुले समय की सीमा दें. डेटा टाइप के हिसाब से, आपको तय समयसीमा के दौरान कुल या औसत वैल्यू मिलेगी.
उदाहरण के लिए:
अनुरोध
POST https://health.googleapis.com/v4/users/me/dataTypes/steps/dataPoints:dailyRollUp
Authorization: Bearer access-token
Accept: application/json
{
"range": {
"start": {
"date": {
"year": 2026,
"month": 2,
"day": 26
},
"time": {
"hours": 0,
"minutes": 0,
"seconds": 0,
"nanos": 0
}
},
"end": {
"date": {
"year": 2026,
"month": 2,
"day": 26
},
"time": {
"hours": 23,
"minutes": 59,
"seconds": 59,
"nanos": 0
}
}
},
"windowSizeDays": 1
}जवाब
{
"rollupDataPoints": [
{
"civilStartTime": {
"date": {
"year": 2026,
"month": 2,
"day": 26
},
"time": {}
},
"civilEndTime": {
"date": {
"year": 2026,
"month": 2,
"day": 26
},
"time": {
"hours": 23,
"minutes": 59,
"seconds": 59
}
},
"steps": {
"countSum": "3822"
}
}
]
}उपयोगकर्ता की सेहत से जुड़ा डेटा डालना या अपडेट करना
उपयोगकर्ता के Fitbit ऐप्लिकेशन के डेटा को डालने या अपडेट करने के लिए, patch
एंडपॉइंट का इस्तेमाल करें.
यहां एक उदाहरण दिया गया है, जिसमें किसी व्यक्ति ने "Scales R Us" कंपनी के "HumanScale" नाम के स्केल पर, अपने शरीर में मौजूद फ़ैट को रिकॉर्ड किया है. उपयोगकर्ता के शरीर में वसा की नई रीडिंग 10 मार्च, 2026 को 20% है.
अनुरोध
PATCH https://health.googleapis.com/v4/users/me/dataTypes/body-fat/dataPoints/1234567890
Authorization: Bearer access-token
content-length: 329
{
"name": "bodyFatName",
"dataSource": {
"recordingMethod": "ACTIVELY_MEASURED",
"device": {
"formFactor": "SCALE",
"manufacturer": "Scales R Us",
"displayName": "HumanScale"
}
},
"bodyFat": {
"sampleTime": {
"physicalTime": "2026-03-10T10:00:00Z"
},
"percentage": 20
}
}जवाब
{
"done": true,
"response": {
"@type": "type.googleapis.com/google.devicesandservices.health.v4main.DataPoint",
"name": "users/2515055256096816351/dataTypes/body-fat/dataPoints/1234567890",
"dataSource": {
"recordingMethod": "ACTIVELY_MEASURED",
"device": {
"formFactor": "SCALE",
"manufacturer": "Scales R Us",
"displayName": "HumanScale"
},
"application": {
"googleWebClientId": "618308034039.apps.googleusercontent.com"
},
"platform": "GOOGLE_WEB_API"
},
"bodyFat": {
"sampleTime": {
"physicalTime": "2026-03-10T10:00:00Z"
},
"percentage": 20
}
}
}उपयोगकर्ता का स्वास्थ्य से जुड़ा डेटा मिटाना
उपयोगकर्ता के Fitbit ऐप्लिकेशन के डेटा की एक ऐरे को मिटाने के लिए, batchDelete
एंडपॉइंट का इस्तेमाल करें.
यहां एक उदाहरण दिया गया है, जिसमें किसी व्यक्ति ने पहले स्केल पर अपने शरीर में मौजूद फ़ैट को रिकॉर्ड किया था. हालांकि, अब उसे यह रिकॉर्ड मिटाना है. मांसपेशियों के शुरुआती और आखिरी छोर और गतिविधि की ओरिजनल जानकारी से user-id और data-point-id का इस्तेमाल करना:
अनुरोध
POST https://health.googleapis.com/v4/users/me/dataTypes/body-fat/dataPoints:batchDelete
Authorization: Bearer access-token
Accept: application/json
content-length: 93
{
"names": [
"users/2515055256096816351/dataTypes/body-fat/dataPoints/1234567890"
]
}जवाब
{
"done": true,
"response": {
"@type": "type.googleapis.com/google.devicesandservices.health.v4main.BatchDeleteDataPointsResponse"
}
}