FROM CACHE - jp_header
解決済

APIにて Put Productでvariantsのinventory_quantityを更新することは出来ませんか?

akky
Shopify Partner
21 2 2

Shopify REST APIにてPUT Productで1つの商品の複数のバリエーションの在庫を更新したいと考えています。

API inventoryで更新出来るのはすでに確認済みですが、商品×バリエーションの総数が多いため、効率良く更新したいと考えております。
商品単位で更新できれば、大幅にリソースを省略出来ると考え、今に至ります。

Shopifyの公式ブログ(2016年)にてAPIを効率良く利用するため、下記のようなコードが紹介されていました。

# Takes a product id, and a map of variant ids and quantities
def update_inventory(id, vid_quantities)
  variants = vid_quantities.map do |vid, qty|
    { "id" => vid, "inventory_quantity" => qty }
  end
  data = {
    "product" => {
      "variants" => variants
    }
  }
  request(:put, "products/#{id}.json", body: data.to_json)
end

update_inventory(1234567, {2222222 => 100, 3333333 => 200})

上記のコードに沿って更新を試みましたが、422エラーが返って来ます。

現在このように更新することは出来ないのでしょうか?

1 件の受理された解決策

akky
Shopify Partner
21 2 2

成功

2件の返信2

_osamu_iwasaki_
Shopify Partner
185 47 193

おそらくですが。Product の variants を見ると読み取り専用非推奨とマークされていたのと、
在庫はロケーションごとにデータを持っていることから、
どこかのタイミングで、Inventory API を使うことを推奨されたのだと思います。

スクリーンショット 2021-04-23 14.07.39.png

akky
Shopify Partner
21 2 2

成功

これで解決しました。

https://note.com/iwll/n/ne9908e8c9d83