Sviluppa esperienze di alimentazione e idratazione con l'API Google Health

L'API Google Health fornisce tipi di dati per monitorare l'alimentazione e l'idratazione di un utente. Questi tipi ti consentono di registrare i pasti, fare riferimento agli alimenti nel database degli alimenti, monitorare le quantità di nutrienti e registrare l'assunzione di liquidi.

Tipi di dati supportati

Tabella: tipi di dati relativi alla nutrizione dell'API Google Health
Tipo di dati Operazioni
disponibili
Ambito
Cibo
dataType: food
filter parameter: food
Tipo di record: Alimenti
list, get .nutrition.readonly
.nutrition.writeonly
Unità di misura degli alimenti
dataType: food-measurement-unit
filter parameter: food_measurement_unit
Tipo di record: Alimenti

Dispositivi compatibili

list, get .nutrition.readonly
.nutrition.writeonly
Diario dell'idratazione
dataType: hydration-log
filter parameter: hydration_log
Tipo di record: Sessione
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Diario alimentare
dataType: nutrition-log
filter parameter: nutrition_log
Tipo di record: Sessione

Dispositivi compatibili

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly

Diario alimentare

Un log nutrizionale rappresenta gli alimenti registrati da un utente. Esistono due modi per creare un diario alimentare, a seconda del tipo di cibo:

  1. Alimento identificato: imposta il campo food in modo che faccia riferimento a una risorsa Alimento esistente. I campi nutrients, energy, energyFromFat, totalCarbohydrate, totalFat e foodDisplayName vengono compilati automaticamente in base all'alimento di riferimento. Questo è il metodo preferito.

  2. Alimento anonimo: imposta manualmente il campo foodDisplayName e fornisci i valori per nutrients, energy, energyFromFat, totalCarbohydrate e totalFat. I diari alimentari creati da alimenti anonimi non sono modificabili dopo la creazione.

Crea un registro nutrizionale con alimenti anonimi

Per creare una voce di log della nutrizione, invia una richiesta POST all'endpoint nutrition-log dataPoints.

Richiesta

POST https://health.googleapis.com/v4/users/me/dataTypes/nutrition-log/dataPoints
Authorization: Bearer access-token
Content-Type: application/json

{
  "nutritionLog": {
    "interval": {
      "startTime": "2026-06-16T18:00:00Z",
      "endTime": "2026-06-16T18:30:00Z"
    },
    "foodDisplayName": "Grilled Chicken Breast",
    "mealType": "DINNER",
    "energy": {
      "kcal": 165
    },
    "totalCarbohydrate": {
      "grams": 0
    },
    "totalFat": {
      "grams": 3.6
    },
    "nutrients": [
      {
        "nutrient": "PROTEIN",
        "quantity": {
          "grams": 31
        }
      },
      {
        "nutrient": "SODIUM",
        "quantity": {
          "grams": 0.074
        }
      }
    ],
    "serving": {
      "amount": 1.0
    }
  }
}

Risposta

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
    "name": "users/user-id/dataTypes/nutrition-log/dataPoints/data-point-id",
    "dataSource": {
      "recordingMethod": "UNKNOWN",
      "application": {
        "googleWebClientId": "google-web-client-id"
      },
      "platform": "GOOGLE_WEB_API"
    },
    "nutritionLog": {
      "interval": {
        "startTime": "2026-06-16T18:00:00Z",
        "startUtcOffset": "0s",
        "endTime": "2026-06-16T18:30:00Z",
        "endUtcOffset": "0s",
        "civilStartTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 18
          }
        },
        "civilEndTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 18,
            "minutes": 30
          }
        }
      },
      "energy": {
        "kcal": 165
      },
      "totalCarbohydrate": {
        "grams": 0
      },
      "totalFat": {
        "grams": 3.6
      },
      "nutrients": [
        {
          "quantity": {
            "grams": 31
          },
          "nutrient": "PROTEIN"
        },
        {
          "quantity": {
            "grams": 0.074
          },
          "nutrient": "SODIUM"
        }
      ],
      "mealType": "DINNER",
      "serving": {
        "amount": 1
      },
      "foodDisplayName": "Grilled Chicken Breast"
    }
  }
}

Crea un registro nutrizionale con gli alimenti identificati

Per registrare un alimento dal database degli alimenti, imposta il campo food in modo che faccia riferimento a una risorsa Food. L'API compila automaticamente i campi nutrizionali.

Richiesta

POST https://health.googleapis.com/v4/users/me/dataTypes/nutrition-log/dataPoints
Authorization: Bearer access-token
Content-Type: application/json

{
  "nutritionLog": {
    "interval": {
      "startTime": "2026-06-16T12:00:00Z",
      "endTime": "2026-06-16T12:30:00Z"
    },
    "food": "users/me/dataTypes/food/dataPoints/food-id",
    "mealType": "LUNCH",
    "serving": {
      "amount": 1.0,
      "foodMeasurementUnit": "users/me/dataTypes/food-measurement-unit/dataPoints/food-measurement-unit-id"
    }
  }
}

Risposta

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
    "name": "users/user-id/dataTypes/nutrition-log/dataPoints/data-point-id",
    "dataSource": {
      "recordingMethod": "UNKNOWN",
      "application": {
        "googleWebClientId": "google-web-client-id"
      },
      "platform": "GOOGLE_WEB_API"
    },
    "nutritionLog": {
      "interval": {
        "startTime": "2026-06-16T12:00:00Z",
        "startUtcOffset": "0s",
        "endTime": "2026-06-16T12:30:00Z",
        "endUtcOffset": "0s",
        "civilStartTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 12
          }
        },
        "civilEndTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 12,
            "minutes": 30
          }
        }
      },
      "energy": {
        "kcal": 95
      },
      "energyFromFat": {
        "kcal": 3
      },
      "totalCarbohydrate": {
        "grams": 25
      },
      "totalFat": {
        "grams": 0.3
      },
      "nutrients": [
        {
          "quantity": {
            "grams": 4.4,
            "userProvidedUnit": "GRAM"
          },
          "nutrient": "DIETARY_FIBER"
        },
        {
          "quantity": {
            "grams": 19,
            "userProvidedUnit": "GRAM"
          },
          "nutrient": "SUGAR"
        },
        {
          "quantity": {
            "grams": 0.5,
            "userProvidedUnit": "GRAM"
          },
          "nutrient": "PROTEIN"
        }
      ],
      "mealType": "LUNCH",
      "serving": {
        "amount": 1,
        "foodMeasurementUnit": "users/me/dataTypes/food-measurement-unit/dataPoints/food-measurement-unit-id"
      },
      "food": "users/user-id/dataTypes/food/dataPoints/food-id",
      "foodDisplayName": "Apple"
    }
  }
}

Elimina i diari alimentari

Per eliminare una o più voci di log nutrizionale, invia una richiesta POST al metodo batchDelete con i nomi delle risorse delle voci da rimuovere.

Richiesta:

POST https://health.googleapis.com/v4/users/me/dataTypes/nutrition-log/dataPoints:batchDelete
Authorization: Bearer access-token
Content-Type: application/json

{
  "names": [
    "users/me/dataTypes/nutrition-log/dataPoints/data-point-id"
  ]
}

Campi del log dell'alimentazione

Per un elenco completo dei campi e delle descrizioni, consulta NutritionLog.

Quantità di energia

Rappresenta una misurazione dell'energia, misurata in chilocalorie (kcal). Per maggiori dettagli, consulta EnergyQuantity.

{
  "kcal": 165
}

Quantità di peso

Rappresenta una misurazione del peso, misurata in grammi. Per maggiori dettagli, vedi WeightQuantity.

{
  "grams": 27.3
}

Quantità di nutrienti

Rappresenta un nutriente specifico e la relativa quantità misurata. Per maggiori dettagli, vedi NutrientQuantity.

{
  "nutrient": "PROTEIN",
  "quantity": {
    "grams": 31
  }
}

Valori dei nutrienti

Per un elenco completo dei tipi di nutrienti supportati, consulta Nutrient.

Pubblicazione

Rappresenta le informazioni sulla porzione per una voce di log nutrizionale. Per maggiori dettagli, vedi Serving.

{
  "amount": 1.5
}

Valori del tipo di pasto

Per un elenco completo dei tipi di pasti supportati, consulta MealType.

Cibo

Food è un tipo di dati di sola lettura che rappresenta un alimento nel database degli alimenti. Utilizza le operazioni list e get per sfogliare gli alimenti disponibili e recuperare le relative informazioni nutrizionali.

Elenca alimenti

Per elencare gli alimenti, invia una richiesta GET all'endpoint food dataPoints:

GET https://health.googleapis.com/v4/users/me/dataTypes/food/dataPoints
Authorization: Bearer access-token
Accept: application/json

Unità di misura degli alimenti

Unità di misura degli alimenti è un tipo di dati di sola lettura che rappresenta le unità di misura utilizzate per le porzioni di cibo (ad esempio "tazza", "cucchiaio" o "pezzo").

Elenca le unità di misura disponibili

Per elencare le unità di misura disponibili:

GET https://health.googleapis.com/v4/users/me/dataTypes/food-measurement-unit/dataPoints
Authorization: Bearer access-token
Accept: application/json

Diario dell'idratazione

Un log dell'idratazione rappresenta i liquidi registrati da un utente. A differenza degli alimenti, che fanno riferimento a un database di alimenti e misurano l'apporto di nutrienti o energia, le voci relative all'idratazione monitorano il volume specifico di liquidi consumati in un determinato intervallo di tempo.

Crea un diario dell'idratazione

Per creare una voce di log dell'idratazione, invia una richiesta POST all'endpoint hydration-log dataPoints. Tutte le quantità di volume vengono convertite in millilitri nel formato API.

Richiesta

POST https://health.googleapis.com/v4/users/me/dataTypes/hydration-log/dataPoints
Authorization: Bearer access-token
Content-Type: application/json

{
  "hydrationLog": {
    "interval": {
      "startTime": "2026-06-16T14:00:00Z",
      "endTime": "2026-06-16T14:00:01Z"
    },
    "amountConsumed": {
      "milliliters": 500,
      "userProvidedUnit": "FLUID_OUNCE_US"
    }
  }
}

Risposta

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
    "name": "users/user-id/dataTypes/hydration-log/dataPoints/data-point-id",
    "dataSource": {
      "recordingMethod": "UNKNOWN",
      "application": {
        "googleWebClientId": "google-web-client-id"
      },
      "platform": "GOOGLE_WEB_API"
    },
    "hydrationLog": {
      "interval": {
        "startTime": "2026-06-16T14:00:00Z",
        "startUtcOffset": "0s",
        "endTime": "2026-06-16T14:00:01Z",
        "endUtcOffset": "0s",
        "civilStartTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 14
          }
        },
        "civilEndTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 14,
            "seconds": 1
          }
        }
      },
      "amountConsumed": {
        "milliliters": 500,
        "userProvidedUnit": "FLUID_OUNCE_US"
      }
    }
  }
}

Aggiorna un log di idratazione

Per aggiornare una voce di log di idratazione, invia una richiesta PATCH all'endpoint hydration-log dataPoints con l'ID del punto dati.

Richiesta

PATCH https://health.googleapis.com/v4/users/me/dataTypes/hydration-log/dataPoints/data-point-id
Authorization: Bearer access-token
Content-Type: application/json

{
  "hydrationLog": {
    "interval": {
      "startTime": "2026-06-16T10:00:00Z",
      "endTime": "2026-06-16T10:00:01Z"
    },
    "amountConsumed": {
      "milliliters": 500
    }
  }
}

Risposta

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
    "name": "users/user-id/dataTypes/hydration-log/dataPoints/data-point-id",
    "dataSource": {
      "recordingMethod": "UNKNOWN",
      "application": {
        "googleWebClientId": "google-web-client-id"
      },
      "platform": "GOOGLE_WEB_API"
    },
    "hydrationLog": {
      "interval": {
        "startTime": "2026-06-16T10:00:00Z",
        "startUtcOffset": "0s",
        "endTime": "2026-06-16T10:00:01Z",
        "endUtcOffset": "0s",
        "civilStartTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 10
          }
        },
        "civilEndTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 10,
            "seconds": 1
          }
        }
      },
      "amountConsumed": {
        "milliliters": 500
      }
    }
  }
}

Elimina i log dell'idratazione

Per eliminare una o più voci del log di idratazione, invia una richiesta POST al metodo batchDelete.

Richiesta

POST https://health.googleapis.com/v4/users/me/dataTypes/hydration-log/dataPoints:batchDelete
Authorization: Bearer access-token
Content-Type: application/json

{
  "names": [
    "users/me/dataTypes/hydration-log/dataPoints/data-point-id"
  ]
}

Risposta

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.BatchDeleteDataPointsResponse",
    "dataPoints": [
      {
        "name": "users/user-id/dataTypes/hydration-log/dataPoints/data-point-id",
        "dataSource": {
          "recordingMethod": "UNKNOWN",
          "application": {
            "googleWebClientId": "google-web-client-id"
          },
          "platform": "GOOGLE_WEB_API"
        },
        "hydrationLog": {
          "interval": {
            "startTime": "2026-06-16T14:00:00Z",
            "startUtcOffset": "0s",
            "endTime": "2026-06-16T14:00:01Z",
            "endUtcOffset": "0s",
            "civilStartTime": {
              "date": {
                "year": 2026,
                "month": 6,
                "day": 16
              },
              "time": {
                "hours": 14
              }
            },
            "civilEndTime": {
              "date": {
                "year": 2026,
                "month": 6,
                "day": 16
              },
              "time": {
                "hours": 14,
                "seconds": 1
              }
            }
          },
          "amountConsumed": {
            "milliliters": 500,
            "userProvidedUnit": "FLUID_OUNCE_US"
          }
        }
      }
    ]
  }
}

Campi del log dell'idratazione

Per un elenco completo dei campi e delle descrizioni, consulta HydrationLog.

Quantità di volume

Rappresenta una misurazione del volume, misurata in millilitri. Per maggiori dettagli, vedi VolumeQuantity.

{
  "milliliters": 250,
  "userProvidedUnit": "MILLILITER"
}

Valori delle unità di volume

Per un elenco completo delle unità di volume supportate, consulta VolumeUnit. I valori comuni includono MILLILITER, LITER, CUP_US e FLUID_OUNCE_US.

Linee guida

  • Se possibile, utilizza gli alimenti identificati. L'API compila automaticamente i campi nutrizionali, riducendo gli errori e garantendo la coerenza con il database degli alimenti.
  • I log di alimentazione creati da alimenti anonimi non possono essere aggiornati dopo la creazione. Se devi correggere un diario alimentare anonimo, eliminalo e creane uno nuovo.
  • A differenza dei log anonimi sulla nutrizione alimentare, le voci del log sull'idratazione sono completamente modificabili e possono essere aggiornate dopo la creazione utilizzando una richiesta PATCH.
  • Tutte le quantità di nutrienti nell'array nutrients utilizzano i grammi come unità di misura.
  • I campi energy e energyFromFat utilizzano le chilocalorie (kcal) come unità di misura.
  • L'API converte e memorizza tutte le quantità di idratazione in millilitri. Il campo facoltativo userProvidedUnit in VolumeQuantity viene utilizzato solo per la visualizzazione lato client rivolta agli utenti.
  • Le richieste HTTP DELETE dirette ai singoli punti dati hydration-log restituiscono 404 Not Found. Utilizza il metodo batchDelete per rimuovere queste voci di risorse.
  • I log di idratazione utilizzano un intervallo breve in cui startTime e endTime rappresentano il periodo di tempo in cui è stato consumato il liquido.