Bu sayfada, REST API kurallarına genel bakışın yanı sıra yaygın Google Health API görevlerinin ve her birine ait örneklerin dizini yer almaktadır.
REST API kuralları
Google Health API, Google API Geliştirme Önerileri (AIP) standartlarına, özellikle AIP-127 (HTTP ve gRPC Kod Dönüştürme) ile AIP-131'den AIP-135'e (Standart Yöntemler) kadar olan standartlara uyar. Bu standartlar, verilerin bir proto mesajından HTTP isteğine nasıl eşleneceğini tanımlar.
Sorgu parametreleri
Veriler URL'nin bir parçası olduğunda sorgu parametreleri kullanılır. Bu, öncelikle GET istekleri (kaynak getirme) veya LIST istekleri (filtreleme/sayfalara ayırma) için kullanılır ancak DELETE işlemleri için de kullanılır.
- Yerleşim: URL'ye
?işaretinden sonra eklenir. - Söz dizimi:
&ile ayrılmış anahtar/değer çiftleri. - Eşleme: İstek mesajındaki URL yolu şablonunun parçası olmayan her alan bir sorgu parametresiyle eşlenir.
- En uygun kullanım alanları: Basit türler (dizeler, tam sayılar, numaralandırmalar) ve yinelenen alanlar.
Örnek söz dizimi:
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"
İstek metni
İstek gövdesi, veriler bir kaynağın durumunu değiştirdiğinde veya URL için çok büyük olduğunda kullanılır. Gövde genellikle kaynağın kendisinin JSON gösterimidir. Genellikle POST, PATCH ve PUT işlemleri için kullanılır.
- Yerleşim: HTTP yükünün içinde (URL'de görünmez).
- Söz dizimi: JSON nesnesi olarak biçimlendirilir.
- Eşleme:
google.api.httpek açıklamasında tanımlanır.body: "*", iletinin tamamının gövde olduğu anlamına gelir.body: "resource_name", proto'daki yalnızca belirli bir alanın gövde olduğu anlamına gelir.
- En uygun olduğu alanlar: Karmaşık nesneler, iç içe yerleştirilmiş mesajlar ve hassas veriler.
Örnek söz dizimi:
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"
}Karma durum
AIP-134 uyumlu bir Update yönteminde veya bir PATCH işleminde her ikisi de kullanılır.
URL, kaynak adını içerir. Gövde, güncellenen kaynak verilerini içerir. Bir sorgu parametresi (genellikle update_mask), hangi alanların değiştirileceğini belirtir.
PATCH https://health.googleapis.com/v4/projects/project-id/subscribers/subscriber-id
Content-Type: application/json
{
"endpointUri": "https://myapp.com/new-webhooks/health"
}
Bir bakışta temel farklar
| Özellik | Sorgu Parametreleri | İstek Metni |
|---|---|---|
| AIP Rehberi | Arama, filtreleme ve okuma işlemleri için kullanılır. | Yazma işlemleri için kullanılır. |
| Görünürlük | Tarayıcı geçmişinde ve sunucu günlüklerinde görünür. | URL'de gizlenir. |
| Karmaşıklık | Düz veya tekrarlanan yapılarla sınırlıdır. | Derinlemesine iç içe yerleştirilmiş JSON nesnelerini destekler. |
| Kodlama | URL olarak kodlanmalıdır (örneğin, boşluklar %20 olur). |
Standart JSON kodlaması. |
Tarihler
Google Health API'sindeki tüm tarihler YYYY-MM-DD biçiminde gösterilir. Beslenme API'si, tarih değerleri için ISO-8601 standardını aşağıdaki koşullarla destekler:
- 4 haneli bir yıl
YYYY - 0000-9999 aralığındaki yıl değerleri
- ISO-8601 standardı veya başka bir sıfır zaman tarafından belirtilen başlangıç tarihi kısıtlamaları uygulanmaz.
Üst bilgiler
Google Health API uç noktalarını yürütmek için uygun başlıkların ve erişim jetonunun kullanılması gerekir. Hem GET hem de POST istekleri için aşağıdaki başlık önerilir:
Authorization: Bearer access-token Accept: application/json
API görev dizini
Bu bölümde, yaygın Google Health API görevlerinin bir dizini ve her birine ait örnekler yer almaktadır.
Fitbit veya Google kullanıcı kimliğini edinme
Kullanıcı, Google OAuth 2.0 aracılığıyla izin verdikten sonra jeton yanıtı, Fitbit veya Google kullanıcı kimliğini içermez. User-ID'yi almak için getIdentity uç noktasını çağırın. getIdentity
hem eski Fitbit kullanıcı kimliğini hem de Google kullanıcı kimliğini döndürür.
Yeni bir kullanıcı OAuth üzerinden izin verdiği anda getIdentity uç noktasını çağırmanızı ve her iki kullanıcı kimliğini de saklamanızı öneririz. Bu, entegrasyonunuzda geriye ve ileriye dönük uyumluluk sağlar.
Örneğin:
İstek
GET https://health.googleapis.com/v4/users/me/identity Authorization: Bearer access-token Accept: application/json
Yanıt
{
"name": "users/me/identity",
"legacyUserId": "A1B2C3",
"healthUserId": "111111256096816351"
}Gün içinde veya gün boyunca toplanan ayrıntılı verileri alma
Belirli bir veri türü için list
uç noktasını kullanarak gün içinde toplanan gün içi veya ayrıntılı verileri, söz konusu veri türü için desteklenen aralıklarla alın.
Örneğin:
İstek
GET https://health.googleapis.com/v4/users/me/dataTypes/steps/dataPoints Authorization: Bearer access-token Accept: application/json
Yanıt
{
"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"
}Verileri aralıklı sivil başlangıç zamanına göre filtreleme
Verileri sivil zamana veya aralığa göre filtrelemek için list parametresiyle list uç noktasını kullanın.filter
Örneğin:
İstek
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
Yanıt
{
"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"
}Verileri örnek gözlem fiziksel zamanına göre filtreleme
Verileri örnek gözlem fiziksel zamanına göre filtrelemek için list uç noktasını filter parametresiyle kullanın.
Örneğin:
İstek
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
Yanıt
{
"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": ""
}Verileri giyilebilir cihazlar gibi veri kaynaklarına göre filtreleme
Uzlaştırılmış bir akışta "veri kaynağı ailesine" göre veri almak için reconcile
uç noktasını kullanın.
Aşağıda, yalnızca 2026-03-03 tarihinden sonraki gün için izleyici tarafından kaydedilen uyku verilerini filtreleme örneği verilmiştir:
İstek
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
Yanıt
{
"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": ""
}Veri noktalarını belirli bir zaman aralığında toplama
rollUp
uç noktasını kullanarak, datetime aralığındaki saniye cinsinden bir pencereye göre veri noktalarının toplu değerini, kullanıcıların fiziksel zamanına (UTC olarak) göre döndürün.
rollUp uç noktasını çağırırken kullanıcının yerel saatinde gerekli tarih aralığını temsil eden istek gövdesini sağlamanız gerekir. Örneğin:
İstek
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"
}Yanıt
{
"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"
}
},
...
]
}Verileri tek bir gün veya birden fazla gün boyunca toplama
Verileri tek bir gün veya birden fazla gün boyunca toplamak istediğinizde dailyRollUp
uç noktası kullanılmalıdır. Bu işlem windowSize olarak bilinir. İstek gövdesinde, gerekli aralık için kapalı-açık sivil zaman aralığını sağlayın. Veri türüne bağlı olarak, aralık boyunca toplamı veya ortalamayı alırsınız.
Örneğin:
İstek
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
}Yanıt
{
"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"
}
}
]
}Kullanıcının sağlık verilerini ekleme veya güncelleme
Kullanıcının Fitbit uygulama verilerini eklemek veya güncellemek için patch
uç noktasını kullanın.
Bir kullanıcının "Scales R Us" şirketinin "HumanScale" adlı bir tartısında vücut yağını kaydettiği bir örneği aşağıda bulabilirsiniz. Kullanıcının yeni vücut yağ yüzdesi ölçümü, 10.03.2026 tarihinde% 20.
İstek
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
}
}Yanıt
{
"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
}
}
}Kullanıcı sağlık verilerini silme
Kullanıcının Fitbit uygulama verilerinin dizisini silmek için batchDelete
uç noktasını kullanın.
Kullanıcının daha önce vücut yağ yüzdesini tartıda kaydettiği ancak kaydı silmek istediği bir örneği aşağıda bulabilirsiniz. Orijinal ekleme işlemindeki user-id ve data-point-id öğelerini kullanma:
İstek
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"
]
}Yanıt
{
"done": true,
"response": {
"@type": "type.googleapis.com/google.devicesandservices.health.v4main.BatchDeleteDataPointsResponse"
}
}