Harici bir sistemden stok miktarlarını ayarlama
inventorySetQuantities ile ürün ve lokasyon bazında stoğu ayarlayın; 2026-10’da zorunlu olan changeFromQuantity ve idempotency key dahil.
- API
- Admin GraphQL API
- İşlem
- inventorySetQuantities
- Erişim yetkisi
- write_inventory
- Yerini aldığı REST çağrısı
- POST /admin/api/inventory_levels/set.json
- API sürümü
- 2026-10
- Son kontrol
Kısaca
Stoğu bir ERP’den ya da depo sisteminden ayarlamak için inventorySetQuantities’i name available (ya da on_hand), correction gibi bir reason ve envanter kalemi ile lokasyon başına miktar listesiyle çağırın. 2026-04’ten itibaren her miktar için changeFromQuantity (Shopify’da olmasını beklediğiniz değer ya da kontrolü atlamak için null) ve mutation için bir @idempotent anahtarı zorunludur.
Nasıl kullanılır
- Envanter kalemi ID’lerini (her varyantın inventoryItem’ında) ve lokasyon ID’lerini bir kez çekin, SKU’larınızın yanında saklayın.
- Her kalem için yeni miktarı ve en son gördüğünüz miktarı changeFromQuantity olarak gönderin.
- Her değişiklik için yeni bir idempotency key (UUID) üretip @idempotent ile verin. Başarısız bir isteği aynı anahtarla tekrar deneyin.
- userErrors CHANGE_FROM_QUANTITY_STALE dönerse değeri zorlamak yerine güncel seviyeyi okuyup yeniden karar verin.
Kod
inventory-set-quantities.graphqlmutation SetStock($input: InventorySetQuantitiesInput!, $idempotencyKey: String!) {
inventorySetQuantities(input: $input) @idempotent(key: $idempotencyKey) {
inventoryAdjustmentGroup {
reason
referenceDocumentUri
changes {
name
delta
quantityAfterChange
}
}
userErrors {
code
field
message
}
}
}
inventory-set-quantities.variables.json{
"idempotencyKey": "6f1c2b9e-3d4a-4f7e-9b1a-2c3d4e5f6a7b",
"input": {
"name": "available",
"reason": "correction",
"referenceDocumentUri": "gid://your-erp/StockSync/2026-11-02-0900",
"quantities": [
{
"inventoryItemId": "gid://shopify/InventoryItem/1111111111",
"locationId": "gid://shopify/Location/1234567890",
"quantity": 12,
"changeFromQuantity": 10
},
{
"inventoryItemId": "gid://shopify/InventoryItem/1111111112",
"locationId": "gid://shopify/Location/1234567890",
"quantity": 0,
"changeFromQuantity": 3
}
]
}
}
inventory-set-quantities.response.json{
"data": {
"inventorySetQuantities": {
"inventoryAdjustmentGroup": {
"reason": "Inventory correction",
"referenceDocumentUri": "gid://your-erp/StockSync/2026-11-02-0900",
"changes": [
{
"name": "available",
"delta": 2,
"quantityAfterChange": null
},
{
"name": "on_hand",
"delta": 2,
"quantityAfterChange": null
},
{
"name": "available",
"delta": -3,
"quantityAfterChange": null
},
{
"name": "on_hand",
"delta": -3,
"quantityAfterChange": null
}
]
},
"userErrors": []
}
}
}
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
- name yalnızca available ya da on_hand alır. available’ı ayarlamak on_hand’i de aynı fark kadar değiştirir.
- reason, Shopify’ın değerlerinden biri olmalıdır: correction, cycle_count_available, received, restock gibi. referenceDocumentUri stok geçmişinde görünür.
- Bu mutation’ı yalnızca stok bilgisinin asıl kaynağı (source of truth) sizin sisteminizse kullanın. Başka bir kanaldaki satış gibi göreli değişiklikler için inventoryAdjustQuantities daha uygundur.
- changeFromQuantity: null kontrolü kapatır; eşzamanlı güncellemeler birbirinin üzerine yazabilir.
Sık sorulan sorular
- Shopify’da stok GraphQL ile nasıl güncellenir?
- Kesin bir sayı belirlemek için inventorySetQuantities’i, adet eklemek ya da düşmek için inventoryAdjustQuantities’i kullanın. İkisi de envanter kalemi ve lokasyon bazında çalışır.
- changeFromQuantity nedir?
- Değişiklikten önce Shopify’da olmasını beklediğiniz miktardır. Farklıysa güncelleme reddedilir; böylece arada gerçekleşen bir satış kaybolmaz.
- Neden idempotency key hatası alıyorum?
- 2026-04 API sürümünden itibaren mutation @idempotent(key: ...) ister. Her değişiklik için yeni, tekrar denemede aynı anahtarı kullanın.
- Envanter kalemi ID’sini nerede bulurum?
- Her varyantın kendi ID’sine sahip bir inventoryItem’ı vardır. productVariants’ı ya da varyantı ID ile sorgulayıp inventoryItem { id } seçin.
- 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ı.
