分析API/栄養と食材分析
分析APIシステムは、フロントエンドとして「実行部(=API)」と「設定部(ルール指定)」で構成されています。
設定部についても json で規定される設定ルールをサーバーに送信するためAPIの概念がありますが、現状、エディターを含む SaaS 形式で提供しているため、ドキュメントは一般公開しておりません。
実行部の定義となる本ドキュメントでは、食事内容の指定方法を中心にしていますが、実行部が利用する分析エンジンでは検索APIの機能を内部で活用しているため、分析する栄養素や食材等を検索APIがレスポンスする必要があり、契約としても実装としても検索と分析はペアとなっているため、検索API分類の中に本APIを定義しています。
※つまり、本分析APIを利用される場合には、分析内容に見合った検索APIのご契約が必要です。
| 名称 | 栄養分析エンジン |
|---|---|
| APIバージョン | 2 |
| 認証タイプ | なし |
| URL | https://(APIサーバー名)/services/api2/(アクセスコード)/nutranalyze/json/ |
| Method | POST |
予め設定されたルールに従って食事データを分析する
jsonで記述した食事データをリクエストボディに設定し、URLに対してPOSTを行う。
食事データはjsonで記述する。
アップロードする食事データを記述する。
| 名 | 型 | 内容 |
| ver | 数値 | 1(定数) 必須 |
| type | 文字列 | nutranalyze(定数) 必須 |
| analyzer | 文字列 | 栄養分析ルールID 必須 |
| authkey | 文字列 | 栄養分析ルール認証キー 設定時必須 |
| callbackdata | オブジェクト | コールバックオブジェクト 返却データに付与される 任意 |
| profile | プロフィールオブジェクト | 分析対象の年齢性別等 任意 |
| meals | 食事群オブジェクト | 分析する食事データ 必須 |
分析対象の人物属性を記述する。
| 名 | 型 | 内容 |
| type | 文字列 | profile(定数) 必須 |
| data | オブジェクト | データ 必須 |
| data.name | 文字列 | 名前 任意 |
| data.age | 数値 | 年齢 任意 |
| data.sex | 文字列 | 性別 男性=male 女性=female 任意 |
| data.height | 数値 | 身長(cm) 任意 |
| data.weight | 数値 | 体重(kg) 任意 |
| data.intensity | 数値 | 生活活動強度 任意 |
食事の集合を記述する。
| 名 | 型 | 内容 |
| type | 文字列 | meals(定数) 必須 |
| data | 食事オブジェクトの配列 | データ 必須 |
食事を記述する。
| 名 | 型 | 内容 |
| type | 文字列 | meal(定数) 必須 |
| data | 食品オブジェクトの配列 | データ 必須 |
食品を記述する。
| 名 | 型 | 内容 |
| type | 文字列 | food(定数) 必須 |
| date | 日時文字列 | 食事日時 任意 |
| daypart | 文字列 | 食事時間帯 朝=(morning,00) 昼=(daytime,01) 夜=(night,03) その他=(other,04-07) 任意 |
| data | オブジェクト | データ 必須 |
| data.objectid | 文字列 | 食品のオブジェクトID 必須 |
| data.quantity | 数値 | 食品の人前 必須 |
{
{
"ver": 1,
"type": "nutranalyze",
"analyzer": "testrule1",
"authkey": "password0",
"callbackdata": {
"user-defined-data1": "ABCDEFG",
},
"profile": {
"type": "profile",
"data": {
"name": "ユーザーの名前",
"age": 25,
"sex": "male",
"height": 165,
"weight": 60,
"intensity": 1.3
}
},
"meals": {
"type": "meals",
"data": [
{
"type": "meal",
"date": "2020/08/21 11:00:00",
"daypart": "00",
"data": [
{
"type": "food",
"data": {
"objectid": "FO7de5bd6a4cec65c8213902c7",
"quantity": 1.5
}
},
{
"type": "food",
"data": {
"objectid": "FO3cc1bb8745d44ff97ba8c6fe",
"quantity": 1
}
}
]
}
]
}
}
}
レスポンスコードは200を返し、レスポンスはjson形式である。
| 名 | 型 | 内容 |
| analyzer | 栄養分析ルール情報オブジェクト | 分析に使用した栄養分析ルールの情報 |
| callbackdata | オブジェクト | コールバックオブジェクト |
| analyze | 分析結果オブジェクト | 分析の結果 |
| result | boolean | 実行結果 |
| 名 | 型 | 内容 |
| analyzer | 文字列 | 栄養分析ルールID |
| name | 文字列 | 栄養分析ルールの名前 |
| comment | 文字列 | 栄養分析ルールのコメント |
| 名 | 型 | 内容 |
| steps | 数値 | 実行したステップ数 |
| text | 文字列 | 分析エンジンが生成した文字列 |
{
{
"analyzer": {
"analyzerid": "testrule1",
"name": "テストデータその2",
"comment": "開発用"
},
"callbackdata": {
"user-defined-data1": "ABCDEFG",
},
"analyze": {
"steps": 12,
"text": "ユーザーの名前 さんの基礎代謝は1543kcalです。生活活動強度は1.3、1日の所要カロリー量は2006kcalです。\n T/U平均スコアは 3.5 でした。\nこの食事の糖質の総摂取量は378gでした。\nこの食事の中で最も糖質摂取量の多い食品は「チャーシューメン」において105.6gでした。\n糖質を最も多く含む素材は「ごはん」に121.3gでした。\n豚肉類を50g以上食べています。食べた量は142.3gでした。\nキャベツを最も多く含む食品は「餃子(5個)」で31.5gでした。\n食事のNutriscoreの加重平均値は3.5でした。\n野菜、海藻、豆製品やコンニャク類など、食物繊維なども意識して積極的に取りましょう。\n今週の津川スコア1の摂取量の平均値は 72.4gです。\n先週の津川スコア1の摂取量の平均値は 199.5gです。\nこの食事の添加糖は7.1gです。\nこの食事の良い脂肪は29354.2mgです。\n"
},
"result": true
}
}
このドキュメントのバージョン情報
| Version | 1 |
| Revision | 1 |
| Editor | west |