Food Log
Food logging is often used in pair with Healthy recipe recommendations
External Id
To avoid duplicated records being created, Whisk supports external_id. The external id is uniquely maintained within the user. Trying to add another record with already existing external id will result in 400 Bad Request response.
External id is a an arbitrary non empty string up to 128 chars length. External Id is optional. Whisk will generate it's own food log record identifier anyway.
Food type
food_type
field is used to reference the source of nutritional information for a food item. It's a one of field featuring the following options
Measure
measure
field is opaque for Whisk and is used only to indicate the number of serving a person has eaten. We expect the total nutrition (not per 100g) of the food to be passed in the food log.
Source
source
field is used internally to track the origin of logged food data. It may take the following values
FOOD_ITEM_SOURCE_SMART_THINGS_COOKING
FOOD_ITEM_SOURCE_SAMSUNG_HEALTH
Log a recipe
"recipe":{
"id":"107666fe014c3794f86b18bed2c80d5a1f2"
}
Log a manual item
Manual item can either be a manual input by a user or aggregated data.
"food_type":{
"manual_product": {}
}
Log Whish HealthDB Food
"food": {
"id": "string"
}
For items found via Food Search
Log recipe
curl -X POST "https://api.whisk.com/health/foodlog/v2/action" -H "accept: application/json" -H "Authorization: Bearer %USER_TOKEN%" -H "Content-Type: application/json" -d '{
"add":{
"items":[
{
"body":{
"item":{
"title":"my personal item",
"nutrition":[
{
"amount":10,
"unit_name":"NUTRITION_UNIT_KCAL",
"code":"NUTRITION_CODE_FAT_UNSAT"
}
],
"measure":{
"scale":{
"value":5
}
},
"source":"FOOD_ITEM_SOURCE_SMART_THINGS_COOKING",
"food_type":{
"recipe":{
"id":"107666fe014c3794f86b18bed2c80d5a1f2"
}
}
}
},
"external_id":"uuid-uuid-uuid-uuid",
"meal_time":"MEAL_TIME_SNACK",
"consumed_at":"1667912872000"
}
]
}
}'
Log manual food item
curl -X POST "https://api.whisk.com/health/foodlog/v2/action" -H "accept: application/json" -H "Authorization: Bearer %USER_TOKEN%" -H "Content-Type: application/json" -d '{
"add":{
"items":[
{
"body":{
"item":{
"title":"my personal item",
"nutrition":[
{
"amount":10,
"unit_name":"NUTRITION_UNIT_KCAL",
"code":"NUTRITION_CODE_FAT_UNSAT"
}
],
"measure":{
"scale":{
"value":5
}
},
"source":"FOOD_ITEM_SOURCE_SMART_THINGS_COOKING",
"food_type":{
"manual_product": {}
}
}
},
"external_id":"uuid-uuid-uuid-uuid",
"meal_time":"MEAL_TIME_SNACK",
"consumed_at":"1667912872000"
}
]
}
}'
Delete food items
curl -X POST "https://api.whisk.com/health/foodlog/v2/action" -H "accept: application/json" -H "Authorization: Bearer %USER_TOKEN%" -H "Content-Type: application/json" -d '{
"delete": {
"food_log_ids": [
"uuid-uuid-uuid-uuid"
],
"external_ids": [
"uuid-uuid-uuid-uuid"
]
}
}'
Update food items
For update operation it's sufficient to pass either Whisk generated food_log_id
or external_id
mask
field should also be passed indicating what fields should be updated. The supported values are
"body.item.title"
"body.item.nutrition"
"body.item.measure"
"body.item.source"
"body.item.food_type"
"meal_time"
"consumed_at"
"external_id"
curl -X POST "https://api.whisk.com/health/foodlog/v2/action" -H "accept: application/json" -H "Authorization: Bearer %USER_TOKEN%" -H "Content-Type: application/json" -d '{
"update":{
"items":[
{
"external_id": "uuid-uuid-uuid-uuid",
"body": {
"item": {
"title": "my personal item",
"nutrition":[
{
"amount":10,
"unit_name":"NUTRITION_UNIT_KCAL",
"code":"NUTRITION_CODE_FAT_UNSAT"
}
],
"measure":{
"scale":{
"value":5
}
}
}
},
"mask": {
"paths": [
"body.item.title",
"body.item.nutrition",
"body.item.measure"
]
}
}
]
}
}'
Get logged food
curl -X GET "https://api.whisk.com/health/foodlog/v2?period.from=1667912872000&period.to=1667912872000" -H "accept: application/json" -H "Authorization: Bearer %USER_TOKEN%"
Last updated
Was this helpful?