#author("2020-08-22T19:40:21+09:00","","")
[[FrontPage]]

&size(24){分析API/栄養分析};

分析APIシステムは、フロントエンドとして「実行部(=API)」と「設定部(ルール指定)」で構成されています。&br;
設定部についても json で規定される設定ルールをサーバーに送信するためAPIの概念がありますが、現状、エディターを含む SaaS 形式で提供しているため、ドキュメントは未だありません。&br;
実行部の定義となる本ドキュメントでは、食事内容の指定方法を中心にしていますが、実行部が利用する分析エンジンでは検索APIの機能を内部で活用しているため、分析する栄養素を検索APIがレスポンスする必要があり、契約としても実装としても検索と分析はペアとなっているため、検索API分類の中に本APIを定義しています。&br;
※つまり、本分析APIを利用される場合には、分析内容に見合った検索APIのご契約が必要です。&br;


* API情報 [#q6190828]

|~名称|栄養分析エンジン|
|~APIバージョン|2|
|~認証タイプ|なし|
|~URL|https://(APIサーバー名)/services/api2/(アクセスコード)/nutranalyze/json/|
|~Method|POST|

* 概要 [#jfe13a2c]

予め設定されたルールに従って食事データを分析する

* アクセス手順 [#ya59d11f]

jsonで記述した食事データをリクエストボディに設定し、URLに対してPOSTを行う。

** 食事データフォーマット [#m68f431e]

食事データはjsonで記述する。

*** 食事データ [#gd7bf280]

アップロードする食事データを記述する。

|名|型|内容|h
|ver|数値|1(定数) 必須|
|type|文字列|nutranalyze(定数) 必須|
|analyzer|文字列|栄養分析ルールID 必須|
|authkey|文字列|栄養分析ルール認証キー 設定時必須|
|callbackdata|オブジェクト|コールバックオブジェクト 返却データに付与される 任意|
|profile|プロフィールオブジェクト|分析対象の年齢性別等 任意|
|meals|食事群オブジェクト|分析する食事データ 必須|

*** プロフィールオブジェクト [#k7ae89cb]

分析対象の人物属性を記述する。

|名|型|内容|h
|type|文字列|profile(定数) 必須|
|data|オブジェクト|データ 必須|
|data.name|文字列|名前 任意|
|data.age|数値|年齢 任意|
|data.sex|文字列|性別 男性=male 女性=female 任意|
|data.height|数値|身長(cm) 任意|
|data.weight|数値|体重(kg) 任意|
|data.intensity|数値|生活活動強度 任意|

*** 食事群オブジェクト [#oa0d7c49]

食事の集合を記述する。

|名|型|内容|h
|type|文字列|meals(定数) 必須|
|data|食事オブジェクトの配列|データ 必須|

*** 食事オブジェクト [#p6b196e5]

食事を記述する。

|名|型|内容|h
|type|文字列|meal(定数) 必須|
|data|食品オブジェクトの配列|データ 必須|

*** 食品オブジェクト [#oc23d8ea]

食品を記述する。

|名|型|内容|h
|type|文字列|food(定数) 必須|
|date|日時文字列|食事日時 任意|
|daypart|文字列|食事時間帯 朝=(morning,00) 昼=(daytime,01) 夜=(night,03) その他=(other,04-07) 任意|
|data|オブジェクト|データ 必須|
|data.objectid|文字列|食品のオブジェクトID 必須|
|data.quantity|数値|食品の人前 必須|


** 食事データ例 [#na3c7f82]

#html{{
<pre class="brush:xml;">
{
 {
  "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
            }
          }
        ]
      }
    ]
  }
 }
}</pre>
}}

** レスポンス [#b7e56e30]

レスポンスコードは200を返し、レスポンスはjson形式である。

|名|型|内容|h
|analyzer|栄養分析ルール情報オブジェクト|分析に使用した栄養分析ルールの情報|
|callbackdata|オブジェクト|コールバックオブジェクト|
|analyze|分析結果オブジェクト|分析の結果|
|result|boolean|実行結果|

*** 栄養分析ルール情報オブジェクト [#o8461568]

|名|型|内容|h
|analyzer|文字列|栄養分析ルールID|
|name|文字列|栄養分析ルールの名前|
|comment|文字列|栄養分析ルールのコメント|

*** 分析結果オブジェクト [#y2fb56bf]

|名|型|内容|h
|steps|数値|実行したステップ数|
|text|文字列|分析エンジンが生成した文字列|


*** レスポンス例 [#i994a280]

#html{{
<pre class="brush:xml;">
{
 {
  "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
 }
}</pre>
}}



* バージョン [#o0becc47]

このドキュメントのバージョン情報
|Version|1|
|Revision|1|
|Editor|west|

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS