# 【Shopify GraphQL Admin API】特定のロケーションの商品在庫を確認する方法

> Shopify GraphQL Admin APIを使用して特定ロケーションの商品在庫を確認する方法を解説。ProductVariant.availableForSaleからinventoryLevelオブジェクトまで、実装に必要な情報を網羅的に紹介。具体的なクエリ例とステータス解説付き。

- 公開日: 2024-11-15
- 著者: Tsukamura
- タグ: Shopify
- URL: https://tech.anycloud.co.jp/articles/shopify-inventory

---

今回は、Shopify GraphQL Admin APIを使用して、特定ロケーションの商品在庫を確認する方法をご紹介します。

## 前提知識

-   Shopify Admin APIのアクセス権限が設定済みであること
-   GraphQLの基本的な理解があること
-   対象となるShop、Location IDの準備があること

## 在庫データの取得方法

Shopifyでは、商品の在庫情報を取得するための複数の方法が用意されています：

1.  **ProductVariant.availableForSale**

-   登録されているロケーションのいずれかで販売可能な場合に`true`を返します

1.  **ProductVariant.sellableOnlineQuantity**

-   オンラインチャネルでの販売可能数を返します

1.  **inventoryLevelオブジェクト**

-   特定ロケーションの詳細な在庫情報を取得できます

本記事では、特定ロケーションの正確な在庫数を取得する必要があるため、[inventoryLevel](https://shopify.dev/docs/api/admin-graphql/2024-10/objects/InventoryLevel)オブジェクトを使用する方法を詳しく見ていきます。

特定商品の取得なのでproductVariantベースで在庫数を取得するクエリを書いてみます

```graphql
query ($id: ID!, $locationId: ID!) {
 productVariant(id: $id) {
   inventoryItem {
     inventoryLevel(locationId: $locationId) {
       quantities(names: ["available"]) {
         name
         quantity
       }
     }
   }
 }
}
```

### クエリのポイント

1.  `productVariant(id: $id)`で特定の商品バリアントを指定
2.  `inventoryLevel(locationId: $locationId)`で特定のロケーションを指定
3.  `quantities(names: ["available"])`で販売可能な在庫数を取得

### レスポンスの解説

inventoryLevelオブジェクトからは以下の情報が返されます

-   `inventoryLevel.quantities.name`: 在庫状態名（例：`available`）
-   `inventoryLevel.quantities.quantity`: 指定したロケーションでの在庫数

### Shopifyの在庫ステータス一覧

今回のクエリではavailableが指定されていますが、Shopifyには以下の在庫ステータスが用意されています。各ステータスの詳細については、Shopifyのinventory statesのドキュメントをご参照ください！

1.  **incoming（入荷予定）** - 商品が店舗・倉庫に向かっている状態
2.  **on\_hand（在庫総数）** - ロケーションに物理的に存在する総数。available, committed, reserved, damaged, safety\_stock, quality\_controlの合計
3.  **available（販売可能）** - 実際に販売可能な在庫数
4.  **committed（確定済み）** - 注文は入っているが未出荷の商品数
5.  **reserved（予約済み）** - 一時的に確保されている在庫
6.  **damaged（破損）** - 破損により販売・使用不可の商品
7.  **safety\_stock（安全在庫）** - 在庫切れ防止用の確保分
8.  **quality\_control（品質管理中）** - 品質検査中の商品

## まとめ

Shopify GraphQL Admin APIを使用し在庫情報の取得に関して解説しました！ さらに詳しい情報については、[Shopify開発者ドキュメント](https://shopify.dev/docs/api/admin-graphql)をご確認ください！
