カラーミーAPIでオプション在庫を更新する

これがホント分からなくて詰まりました。公式ドキュメント
オプション設定のない商品は、

  1. レジAPIから「JAN」と「販売数」をget
  2. カラーミーの商品一覧APIでJANからカラーミー商品idをget
  3. 商品データの更新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はどちらかだけでもいいらしい。やっとできたんで、しばらく仕様変更とかやめてほしいけど、この仕様を続ける会社もどうかなと思う。