現在、Shopify Flow にて在庫数をリセット(0に変更)するワークフローを構築しています。
Flowの中で inventoryAdjustQuantities ミューテーションを使い、以下のような GraphQL リクエストを Admin API に送っています。
{
"input": {
"reason": "Set inventory to 0",
"changes": [
{
"inventoryItemId": "gid://shopify/InventoryItem/54025149284627",
"locationId": "gid://shopify/Location/98387591443",
"availableDelta": -8
}
]
}
}
しかし、実行時に以下のようなエラーが返されます。
Mutation had errors: "Variable $input of type InventoryAdjustQuantitiesInput!
was provided invalid value for changes.0.availableDelta
(Field is not defined on InventoryChangeInput),
changes.0.delta (Expected value to not be null),
name (Expected value to not be null)"
現在の状況
- Shopify Flow 上で getProductVariantData → getLocationData を取得後、それぞれのアイテムに対して Admin API を呼び出しています。
- foreach の中で item.inventoryItem.id や item.inventoryQuantity を参照しています。
- getLocationData のループ変数を item として使用したところ、Flow 上で「item は無効です」というエラーが表示されました。
補足情報
- 在庫数をリセットしたい対象の商品は バリエーションが2段階ある商品 です(例:日付と時間の組み合わせ)。
- その中でも、すべてのバリエーションではなく 特定のバリエーションのみ(今回は “20250801” を含むタイトルのもの)に対して在庫数を0にしたいと考えています。
- getProductVariantData で該当バリエーションを取得 → getLocationData をループして各拠点の在庫を調整 → Admin API でミューテーション送信、という構成です。
質問したいこと
- inventoryAdjustQuantities で正しく在庫数を 0 にするための changes オブジェクトの正しい構成例を教えてほしい
- Flow 上で getLocationData の繰り返し内で、 locationId を正しく取得・参照する方法が正しいか確認してほしい
- delta フィールドを Flow の JSON ミューテーション内に組み込むときの Liquid記法(例:-{{ item.inventoryQuantity }})の正しい書き方が知りたい
ご存知の方、もしくは類似のケースを経験された方がいらっしゃいましたら、アドバイスいただけると大変助かります。
よろしくお願いいたします。