Lokasyona göre stok seviyelerini okuma

Bir lokasyondaki tüm ürünlerin satılabilir, eldeki, ayrılmış ve yoldaki stoğunu ya da tek bir ürünün tüm lokasyonlardaki stoğunu okuyun.

API
Admin GraphQL API
İşlemler
location, inventoryItem (inventoryLevels, quantities)
Erişim yetkileri
read_inventory, read_locations
Yerini aldığı REST çağrısı
GET /admin/api/inventory_levels.json?location_ids=…
API sürümü
2026-10
Son kontrol

Kısaca

Lokasyon bazında stok okumak için location(id) sorgusunun inventoryLevels bağlantısını sayfalayın ve her seviyeden quantities(names: ["available", "on_hand", "committed", "incoming"]) isteyin. Tek bir ürünü her yerde görmek için inventoryItem(id) ve onun inventoryLevels’ını sorgulayın; lokasyon başına bir seviye döner. quantities alanı eski available sayısının yerini alır ve istediğiniz her stok durumunu döndürür.

Nasıl kullanılır

  1. Lokasyon ID’lerini locations sorgusuyla bir kez alın.
  2. StockAtLocation’ı first: 100 ile gönderin ve hasNextPage false olana kadar after: endCursor ile sayfalayın.
  3. names içinde ihtiyacınız olan durumları seçin: available, on_hand, committed, incoming, reserved, damaged, safety_stock ya da quality_control.
  4. Tek bir SKU’nun depolar arasındaki stoğu için StockOfItem’ı envanter kalemi ID’siyle gönderin.

Kod

location-inventory-levels.graphql
query StockAtLocation($locationId: ID!, $first: Int!, $after: String) {
  location(id: $locationId) {
    id
    name
    inventoryLevels(first: $first, after: $after) {
      nodes {
        item {
          id
          sku
        }
        quantities(names: ["available", "on_hand", "committed", "incoming"]) {
          name
          quantity
        }
      }
      pageInfo {
        hasNextPage
        endCursor
      }
    }
  }
}
location-inventory-levels.variables.json
{
  "locationId": "gid://shopify/Location/1234567890",
  "first": 100,
  "after": null
}
location-inventory-levels.response.json
{
  "data": {
    "location": {
      "id": "gid://shopify/Location/1234567890",
      "name": "Main warehouse",
      "inventoryLevels": {
        "nodes": [
          {
            "item": {"id": "gid://shopify/InventoryItem/1111111111", "sku": "LS-S"},
            "quantities": [
              {"name": "available", "quantity": 12},
              {"name": "on_hand", "quantity": 15},
              {"name": "committed", "quantity": 3},
              {"name": "incoming", "quantity": 20}
            ]
          }
        ],
        "pageInfo": {
          "hasNextPage": true,
          "endCursor": "eyJsYXN0X2lkIjoxMTExMTExMTExfQ=="
        }
      }
    }
  }
}
item-inventory-levels.graphql
query StockOfItem($inventoryItemId: ID!) {
  inventoryItem(id: $inventoryItemId) {
    id
    sku
    tracked
    inventoryLevels(first: 20) {
      nodes {
        location {
          id
          name
        }
        quantities(names: ["available", "on_hand"]) {
          name
          quantity
        }
      }
    }
  }
}
item-inventory-levels.variables.json
{
  "inventoryItemId": "gid://shopify/InventoryItem/1111111111"
}
item-inventory-levels.response.json
{
  "data": {
    "inventoryItem": {
      "id": "gid://shopify/InventoryItem/1111111111",
      "sku": "LS-S",
      "tracked": true,
      "inventoryLevels": {
        "nodes": [
          {
            "location": {"id": "gid://shopify/Location/1234567890", "name": "Main warehouse"},
            "quantities": [{"name": "available", "quantity": 12}, {"name": "on_hand", "quantity": 15}]
          },
          {
            "location": {"id": "gid://shopify/Location/1234567891", "name": "Shop floor"},
            "quantities": [{"name": "available", "quantity": 2}, {"name": "on_hand", "quantity": 2}]
          }
        ]
      }
    }
  }
}

Lintel tarafından yazıldı. MIT lisansı: kendi mağazanızda da müşteri işlerinizde de ücretsiz kullanabilirsiniz.

Sınırlar ve özel durumlar

  • includeInactive: true vermezseniz pasif seviyeler listelenmez.
  • on_hand; available, committed ve satılamayan durumların toplamıdır. incoming henüz elde olmayan, yoldaki stoktur.
  • Binlerce kalemlik tam bir stok dökümü için aynı sorguyu bulk operation olarak çalıştırın.

Sık sorulan sorular

Shopify’da belirli bir lokasyonun stoğunu nasıl alırım?
location(id) { inventoryLevels(first: 100) { nodes { item { sku } quantities(names: ["available"]) { quantity } } } } sorgusunu çalıştırıp sonuçları sayfalayın.
available ile on_hand arasındaki fark nedir?
available şu an satılabilecek miktardır. on_hand ise fiziksel olarak orada olan her şeydir; siparişlere ayrılmış ve hasarlı ya da rezerve olarak ayrılmış adetler dahil.
inventoryLevel.available alanı neden yok?
Yerini, herhangi bir stok durumunu adıyla döndüren quantities(names: [...]) aldı.
  • Gösterilen tarihte, 2026-10 sürümünün Admin veya Storefront API şemasıyla doğrulandı. İstek adresinizdeki sürümü kontrol edin.
  • Örneklerdeki ID’ler ve mağaza adresleri yer tutucudur. Kendi değerlerinizle değiştirin.
  • Admin API çağrıları uygulamanızdan bir erişim anahtarı (access token) ister. Admin API anahtarını asla vitrine ya da temaya koymayın.
  • MIT lisansı. Kodu kendi mağazanızda da müşteri işlerinizde de kullanabilirsiniz.

Mağazanız için kurulmasını, test edilmesini ve bakımını isterseniz: API entegrasyonları.

Geliştirmek istediğiniz bir şey mi var? Gelin, birlikte konuşalım.

Aynı anda sınırlı sayıda proje alıyoruz.

Gencer KarakayaShopify mühendisi

Proje özetinizi bir mühendis okur; size e-postayla yanıt veririz.