혈당 데이터 쓰기

앱은 com.google.blood_glucose 데이터 유형에 작성하여 혈당 데이터를 기록할 수 있습니다. 이 데이터 유형에서 각 데이터 포인트는 단일 순간 혈당 측정값을 나타냅니다. 데이터 포인트에는 혈당 농도 필드, 식사와 수면의 시간적 관계, 측정된 표본의 출처가 포함됩니다. 혈당 농도를 제외한 모든 필드는 선택사항입니다.

데이터 소스 만들기

Android

혈당 데이터 포인트를 작성하려면 다음 예시와 같이 TYPE_BLOOD_GLUCOSE의 새 DataSource을 만듭니다.

val bloodGlucoseSource = DataSource.Builder()
    .setDataType(TYPE_BLOOD_GLUCOSE)
    // ...
    .build()

REST

혈당 데이터 포인트를 작성하려면 새 데이터 소스를 만드세요.

HTTP 메소드

POST

요청 URL

https://www.googleapis.com/fitness/v1/users/me/dataSources

요청 본문

{
  "dataStreamName": "BloodGlucose",
  "type": "raw",
  "application": {
    "detailsUrl": "http://example.com",
    "name": "My Example App",
    "version": "1"
  },
  "dataType": {
    "name": "com.google.blood_glucose"
   }
}

응답

데이터 소스가 생성되면 200 OK 상태 코드가 반환됩니다. 응답 본문에는 후속 요청의 데이터 소스 ID로 사용할 수 있는 datasource.dataStreamId 속성이 포함된 데이터 소스의 JSON 표현이 포함됩니다.

CURL 명령어

$ curl --header "Authorization: Bearer ya29.yourtokenvalue --request POST \
  --header "Content-Type: application/json;encoding=utf-8" --data @blood-glucose-ds.json \
  https://www.googleapis.com/fitness/v1/users/me/dataSources

데이터 추가

Android

위에서 만든 소스에 데이터를 추가하려면 History API를 사용하여 삽입할 수 있는 이 데이터 소스의 데이터 포인트를 만듭니다.

val bloodGlucose = DataPoint.builder(bloodGlucoseSource)
    .setTimestamp(timestamp, TimeUnit.MILLISECONDS)
    .setField(FIELD_BLOOD_GLUCOSE_LEVEL, 5.0f) // 90 mg/dL
    .setField(FIELD_TEMPORAL_RELATION_TO_MEAL, FIELD_TEMPORAL_RELATION_TO_MEAL_BEFORE_MEAL)
    .setField(FIELD_MEAL_TYPE, MEAL_TYPE_BREAKFAST)
    .setField(FIELD_TEMPORAL_RELATION_TO_SLEEP, TEMPORAL_RELATION_TO_SLEEP_ON_WAKING)
    .setField(FIELD_BLOOD_GLUCOSE_SPECIMEN_SOURCE, BLOOD_GLUCOSE_SPECIMEN_SOURCE_CAPILLARY_BLOOD)
    .build()

REST

이 예시에서는 위의 데이터 소스를 사용하여 혈당 데이터를 추가하는 방법을 보여줍니다.

HTTP 메소드

PATCH

요청 URL

https://www.googleapis.com/fitness/v1/users/me/dataSources/datasource.dataStreamId/datasets/1574159699023000000-1574159699023000000

요청 본문

명확성을 위해 아래에 표시된 JSON 본문에는 주석으로 주석이 추가되어 상태 필드 상수의 사용을 보여줍니다. 현재 Fit API는 의견을 삭제하지만 JSON은 공식적으로 주석을 지원하지 않으므로 코드에서 이를 삭제하는 것이 좋습니다.

{
  "minStartTimeNs": 1574159699023000000,
  "maxEndTimeNs": 1574159699023000000,
  "dataSourceId": "datasource.dataStreamId",
  "point": [
    {
      "startTimeNanos": 1574159699023000000,
      "endTimeNanos": 1574159699023000000,
      "dataTypeName": "com.google.blood_glucose",
      "value": [
        {
          // Blood glucose level, 90 mg/dL
          "fpVal": 5.0
        },
        {
          // FIELD_TEMPORAL_RELATION_TO_MEAL_BEFORE_MEAL
          "intVal": 3
        },
        {
          // MEAL_TYPE_BREAKFAST
          "intVal": 1
        },
        {
          // TEMPORAL_RELATION_TO_SLEEP_ON_WAKING
          "intVal": 3
        },
        {
          // BLOOD_GLUCOSE_SPECIMEN_SOURCE_CAPILLARY_BLOOD
          "intVal": 2
        }
      ]
    }
  ]
}

응답

혈당 데이터가 성공적으로 추가되면 응답은 200 OK 상태 코드입니다. 응답 본문에는 추가된 혈당 데이터의 JSON 표현이 포함됩니다.

CURL 명령어

$ curl --header "Authorization: Bearer ya29.yourtokenvalue --request PATCH \
    --header "Content-Type: application/json;encoding=utf-8" --data @blood-glucose-data.json \
    https://www.googleapis.com/fitness/v1/users/me/dataSources/datasource.dataStreamId/datasets/1574159699023000000-1574159699023000000