これがホント分からなくて詰まりました。公式ドキュメント
オプション設定のない商品は、
- レジAPIから「JAN」と「販売数」をget
- カラーミーの商品一覧APIでJANからカラーミー商品idをget
- 商品データの更新APIで更新。という流れでOK。
ところがオプション商品は、複数バリエーションを含む商品がたった一つの商品idで管理されており、これどうやって商品を特定するの??
商品固有情報としてmodel_number要素があり、うちではJANを入れている。それで検索できれば何も問題ないのだが、、、オプションの場合、model_numberはvariants要素内にあり、検索には使えなかった。サポートにも聞いてみたけど返事がない。カラーミーの管理画面ではオプションの型番(model_number)で検索できるのになぁ。
結局、商品一覧APIからオプションがある商品だけ集めてvariantsを一旦取り出してmodel_numberで検索することにした。
次の問題はどうやって変更したい商品を特定するのか。
更新に使えそうな要素はこれだけ
“variants”:
[{
“option1_value”: “赤”,
“option2_value”: “S”,
“stocks”: 20
}],
色や柄で指定するのか・・?でもこのAPIは在庫専用ではないし、その色柄名を更新したい場合は?
いろいろ試行錯誤したあげく、やっとできたのは、この書き方。(GoogleAppsScript)
let op_json = {product:{variants:[{option1_value:"柄名",stocks:{increment: - 1}}]}};
これをJSON.stringify(op_json)して商品データの更新APIに”PUT”する。
結局、色柄テキストで商品を特定するらしい。へーーー。そんなことどこにも書かれていない。そもそもoption1_valueを変更したい場合はどうするのさ。
在庫関係のAPIはgetしかできない仕様だけど、本来ならそっちで全ての在庫を更新できるようにすべきだろう。option1,2はどちらかだけでもいいらしい。やっとできたんで、しばらく仕様変更とかやめてほしいけど、この仕様を続ける会社もどうかなと思う。