#author("2019-07-19T14:04:36+09:00","","")
[[FrontPage]]

&size(24){データAPI/カスタムJANCODE検索};

※本APIは汎用JANコード検索ではありません。JANコードの他に検索時にレシート名や商品名が必要になります。&br;
※汎用JANコード検索(JANコードのみでの検索)についてはお問い合わせください。

* API情報 [#q6190828]

|~名称|カスタムJANCODE検索|
|~APIバージョン|2|
|~認証タイプ|なし|
|~URL|https://(APIサーバー名)/services/api2/(アクセスコード)/search/(カスタムコード)/json/JANCODE,レシート名,商品マスタ名,分類名/?withjancode=1|
|~Method|GET|
|~データ更新頻度目安|4週間|

* 概要 [#jfe13a2c]

JANCODEによって食品を検索し1件を返却する。当該JANCODEを付与された食品がない場合、商品マスタ名、レシート名で検索を実施し一致の可能性が高い1件を返却する。&br;
本機能はカスタム食品文字列検索の拡張機能として提供される。カスタムフィルター機能は、カスタム食品文字列検索を参照。


* アクセス手順 [#ya59d11f]

** クエリー [#l9016c71]

https://(APIサーバー名)/services/api2/(アクセスコード)/search/(カスタムコード)/json/JANCODE,レシート名,商品マスタ名,分類名/?withjancode=1 &br;
(JANCODE,レシート名,商品マスタ名,分類名)で検索した結果を返却する。

入力文字列がマルチバイトの場合は、文字コードをUTF-8としURLエンコードを施したものとする。&br;
JANCODE、レシート名、商品マスタ名は必須項目とし、必ず必要である。
分類名も可能な限り指定することで検索精度を高めるが、分類名がない場合は空の文字列を設定できる。

クエリー (GET) の最大値は 8192 Byte(8KB) とする。

** カスタム条件 [#m051cee1]

カスタム条件は、クエリー文字列としてクエリー末尾に付加する。

|パラメータ名|内容|形式|省略可否|h
|withjancode|JANCODE検索を指示する|0 or 1|必須 常に1|
|withpackage|数量情報を付加する|0 or 1|任意|

** 数量情報付与ルール [#h6fc770f]

指定されたJANCODEに数量情報がある場合、食品名の末尾に次の書式で追加される。
 " [(q)(u)]"
 (q)=分量:数値 (u)=単位:文字列

単位(u)に使用される可能性のある文字列は、以下から取得する。
https://(APIサーバー名)/services/api2/(アクセスコード)/search/(カスタムコード)/json/unittypes/

** 入力文字列ルール [#u55567aa]

- 英字・数字は半角を用いる(全角英数字は使用されない)
- カナは全角を用いる(半角カナは使用されない)
- 英文字は大文字を用いる(英小文字は使用されない)
- 次の半角記号は用いない
 <>?_,./\;:][+*}{`~=^-)('%$#"!&
- 次の全角記号、全角機種依存文字は用いない
 〇○◇□△▽☆●◆■▲▼★◎◯♂♀〒()
 〔〕[]{}〈〉《》「」『』【】‘’“”
 →←↑↓⇒⇔…‥、。,.・:;?!゛゜´
 `¨^ヽヾゝゞ〃°′″¥$¢£%‰℃Å+
 -±×÷=≒≠≦≧<>≪≫∞∽∝∴∵∈∋
 ⊆⊇⊂⊃∪∩∧∨¬∀∃∠⊥⌒∂∇≡√∫∬
 ─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫
 ┻╋┠┯┨┷┿┝┰┥┸╂#&*@§※〓♯
 ♭♪†‡¶仝~ ̄_―‐∥|/\
 №㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼㍻㍉㎜㎝㎞㎎
 ㎏㏄㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻①②
 ③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡ
 ⅢⅣⅤⅥⅦⅧⅨⅩ


** 入力文字列の取り扱い [#xe17b367]

入力文字列は、半角カンマ(",")で区切られた複数の語によって構成される。&br;
入力文字列は、JANCODE,レシート名,商品マスタ名,分類名 の順で記述する。&br;
入力された商品マスタ名またはレシート名は、先頭から全角6文字相当(半角12文字相当)までが採用され、それ以降の部分は切り捨てて使用される。

** クエリー例 [#ea78dac9]

 https://(APIサーバー名)/services/api2/(アクセスコード)/search/(カスタムコード)/json/4901577073670,%EF%BC%B1%EF%BC%B0%E4%BA%BA%E5%8F%82%E3%81%A8%E3%82%AA%E3%83%AC%E3%83%B3%E3%82%B8%E3%83%89%E3%83%AC,%E3%82%AD%E3%83%A6%E3%83%BC%E3%83%94%E3%83%BC%20%E3%81%AB%E3%82%93%E3%81%98%E3%82%93%E3%81%A8%E3%82%AA%E3%83%AC%E3%83%B3%E3%82%B8%E3%83%89%E3%83%AC%E3%83%83%E3%82%B7%E3%83%B3%E3%82%B0,%E8%AA%BF%E5%91%B3%E6%96%99/?withjancode=1

** レスポンス [#b7e56e30]

レスポンスコードは200を返し、レスポンスはjson形式である。レスポンスされる食品数の最大値は 1 である。
検索結果が存在しない場合は長さ0の配列が返される。クエリー書式誤り等の場合はレスポンスコード404が返される。

 {
   foods :[
     {
       "name" : 食品名,
       "yomi" : 食品名読み,
       "objectid" : オブジェクトID,
       "unit" : 分量,
       "stuff_e" : エネルギー,
       "stuff_p" : たんぱく質,
       "stuff_f" : 脂質,
       "stuff_c" : 炭水化物,
       "..そのほかご契約栄養素" : 栄養素値,
       "categorytree" : [
         第1階層カテゴリー名,
         第2階層カテゴリー名,
         第3階層カテゴリー名
       ],
       "subsubattr" : {
         "gaishoku" : 外食フラグ 0 or 1,
         "kakou" : 加工食品フラグ 0 or 1,
         "takeout" : テイクアウトフラグ 0 or 1,
       },
       "shopname" : メーカー名,
       "jancode" : [ JANCODEの配列
         "4902775039833"
       ],	
     },
     {
       (食品データ)
     },
     :
   ]
 }

投入されたJANCODEが次に該当する場合は、配列foodsが存在せず、errcdに事由が設定される。

 {
   errcd :"notfood"
 }
 
 事由 notfood = 入力が非食品JANCODEと推定される。
 事由 invalid = 入力が不正である(JANCODE及び・又はレシート名、商品マスタ名がない、等)または、JANCODEが不正(半角数値でない、等)と推定される。


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

#html{{
<pre class="brush:xml;">
{
    &quot;foods&quot;: [
        {
            &quot;name&quot;: &quot;\u30d5\u30e9\u30f3\u30b9\u30d1\u30f3\u30c1\u30c3\u30d7\u30b9 \u30d9\u30fc\u30b3\u30f3\u30da\u30c3\u30d1\u30fc\u5473(1\u888b38g)(\u304a\u3084\u3064\u30ab\u30f3\u30d1\u30cb\u30fc)&quot;,
            &quot;yomi&quot;: &quot;\u3075\u3089\u3093\u3059\u3071\u3093\u3061\u3063\u3077\u3059\u3079\u30fc\u3053\u3093\u307a\u3063\u3071\u30fc\u3042\u3058\u3072\u3068\u3075\u304f\u308d\u3055\u3093\u3058\u3085\u3046\u306f\u3061\u3050\u3089\u3080\u304a\u3084\u3064\u304b\u3093\u3071\u306b\u30fc&quot;,
            &quot;objectid&quot;: &quot;FO004627c94e530a370bda2089&quot;,
            &quot;unit&quot;: 38,
            &quot;stuff_e&quot;: 187,
            &quot;stuff_p&quot;: 4.3,
            &quot;stuff_f&quot;: 8.4,
            &quot;stuff_c&quot;: 23.5,
            &quot;stuff_na&quot;: 361,
            &quot;stuff_k&quot;: 58.8,
            &quot;stuff_ca&quot;: 10.7,
            &quot;stuff_mg&quot;: 10.2,
            &quot;stuff_pp&quot;: 30.5,
            &quot;stuff_fe&quot;: 0.6,
            &quot;stuff_zn&quot;: 0.3,
            &quot;stuff_cu&quot;: 0.1,
            &quot;stuff_mn&quot;: 0.2,
            &quot;stuff_va6&quot;: 0.2,
            &quot;stuff_vd&quot;: 0,
            &quot;stuff_ve1&quot;: 1.1,
            &quot;stuff_vk&quot;: 13.3,
            &quot;stuff_vb1&quot;: 0,
            &quot;stuff_vb2&quot;: 0,
            &quot;stuff_vb3&quot;: 0.5,
            &quot;stuff_vb6&quot;: 0,
            &quot;stuff_vb12&quot;: 0,
            &quot;stuff_vb9&quot;: 12.9,
            &quot;stuff_vc&quot;: 0,
            &quot;stuff_fac1&quot;: 1,
            &quot;stuff_fiber&quot;: 1,
            &quot;stuff_fac5&quot;: 0.5,
            &quot;stuff_fac6&quot;: 2.9,
            &quot;selen&quot;: 11.1,
            &quot;chrome&quot;: 0.7,
            &quot;molybdenum&quot;: 7.8,
            &quot;iodine&quot;: 0.1,
            &quot;biotin&quot;: 0.9,
            &quot;categorytree&quot;: [
                &quot;\u305d\u306e\u4ed6&quot;,
                &quot;\u83d3\u5b50\u985e&quot;,
                &quot;\u30b9\u30ca\u30c3\u30af\u83d3\u5b50&quot;
            ],
            &quot;shopsubattr&quot;: {
                &quot;gaishoku&quot;: 0,
                &quot;kakou&quot;: 1,
                &quot;takeout&quot;: 0
            },
            &quot;shopname&quot;: &quot;\u304a\u3084\u3064\u30ab\u30f3\u30d1\u30cb\u30fc&quot;,
            &quot;jancode&quot;: [
                &quot;4902775039833&quot;
            ]
        }
    ]
}</pre>
}}

* 特記事項 [#z9b4e92a]

本APIの検索では、外食系種別の商品を除外して検索している。~
本APIの検索では、レスポンス速度を維持しつつ、非同期にて自律学習型バックヤードシステム(AIによる学習と検索及び栄養士スタッフによる手動対応)を取り入れているため、初回検索と次回検索時においてレスポンス内容が異なる場合がある。ここで「異なる」とは、より正確に近づく意味を示し、検索の間隔が 8 時間程度毎であることを前提としている。

* 考慮事項 [#wa8c2055]


* バージョン [#o0becc47]

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

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