inventorySetQuantities girdisi
Belgedeki örneğe dayanan girdi yapısı şöyledir; numaralar sahtedir.
- name: available (ya da on_hand)
- reason: correction
- referenceDocumentUri: değişikliği başlatan belgenin adresi, isteğe bağlı denetim izi
- quantities öğesi: inventoryItemId gid://shopify/InventoryItem/111, locationId gid://shopify/Location/222, quantity 42, changeFromQuantity 40
- Tekrar koruma: @idempotent yönergesiyle benzersiz bir anahtar, ör. bir UUID
| Kural | Sürüm |
|---|---|
| changeFromQuantity her miktarda zorunlu | 2026-04 ve sonrası |
| Kalıcı değer eşleşmezse CHANGE_FROM_QUANTITY_STALE hatası | 2026-04 ve sonrası |
| Kontrolden çıkmak için changeFromQuantity: null | 2026-04 ve sonrası |
| Eski karşılaştırma: compareQuantity ve ignoreCompareQuantity | 2026-04 öncesi |
| Tekrar koruma anahtarı isteğe bağlı | 2026-01 |
| Tekrar koruma anahtarı zorunlu | 2026-04 ve sonrası |
Kesin değer mi, fark mı?
Shopify belgesi inventorySetQuantities’i yalnız stok miktarının asıl kaynağı olan bir sistem adına çağırmanızı önerir; diğer durumlarda inventoryAdjustQuantities’i işaret eder.
| Durum | Önerilen mutasyon |
|---|---|
| ERP ya da depo yazılımı stoğun asıl kaynağı | inventorySetQuantities |
| Pazaryerinde 1 adet satıldı, Shopify stoğundan düşülecek | inventoryAdjustQuantities, fark -1 |
| Depo sayımı sonrası düzeltme | inventorySetQuantities, reason correction |
Karşılaştırma kontrolünü kapatmak, aynı anda gelen isteklerde yanlış adete yol açabilir. Belge, beklenen güncel değeri changeFromQuantity olarak göndermenizi ve kontrolü yalnız gerçekten gerekiyorsa kapatmanızı önerir.
REST yolu: inventory_levels/set.json
| Parametre | Zorunlu | Açıklama |
|---|---|---|
| location_id | Evet | Lokasyon numarası |
| inventory_item_id | Evet | Envanter kalemi numarası |
| available | Evet | Satılabilir adet |
| disconnect_if_necessary | Hayır, varsayılan false | Sipariş karşılama hizmeti lokasyonu varsa diğer bağlantıları kes |
Lokasyon bağlı değilse istek önce bağlantıyı kurar. Artış ya da azalış için POST /inventory_levels/adjust.json vardır. REST’te tek istekte tek kalem ve tek lokasyon yazılır; toplu yazma yoktur.
Sık hatalar
| Belirti | Neden | Çözüm |
|---|---|---|
| CHANGE_FROM_QUANTITY_STALE | Siz okuduktan sonra stok değişti | Güncel değeri okuyup yeniden deneyin |
| Tekrar koruma anahtarı hatası | 2026-04 ve sonrasında anahtar gönderilmedi | @idempotent ile anahtar ekleyin |
| 403 | write_inventory kapsamı yok | Kapsamı ekleyin |
| Stok başka lokasyonda değişti | Yanlış lokasyon numarası | Lokasyonu kontrol edin |
| Stok yazıldı ama vitrinde görünmüyor | Varyantta stok takibi kapalı | Envanter kaleminde takibi açın |
Pazaryeri satışını Shopify’a yansıtmak
Pazaryerinde satış olduğunda Shopify stoğunu düşmenin iki yolu vardır. Fark yazmak, aynı anda gelen Shopify siparişleriyle çakışma riskini azaltır.
| Yöntem | Nasıl | Risk |
|---|---|---|
| Fark yazmak | inventoryAdjustQuantities ile -1 | Aynı satış iki kez işlenirse çift düşüm; tekrar koruma anahtarı kullanın |
| Kesin değer yazmak | Güncel değeri okuyup inventorySetQuantities ile yeni değeri yazmak | changeFromQuantity eşleşmezse yeniden okumak gerekir |
Her iki yolda da değişikliği hangi siparişin başlattığını referenceDocumentUri ile kaydetmek, sonradan farkları incelemeyi kolaylaştırır.
Sık sorulanlar
Shopify stok API ile nasıl güncellenir?
GraphQL’de inventorySetQuantities ile envanter kalemi ve lokasyon için kesin adet yazılır. REST’te karşılığı POST /inventory_levels/set.json’dur.
changeFromQuantity zorunlu mu?
2026-04 ve sonraki sürümlerde evet. Kontrolden çıkmak için açıkça null gönderirsiniz; alanı hiç göndermemek hata verir.
Satış sonrası stok düşmek için hangi mutasyon uygun?
inventoryAdjustQuantities. Belge, stoğun asıl kaynağı olmayan sistemlerin set yerine fark yazmasını önerir.
Varyantın inventory_quantity alanıyla stok yazabilir miyim?
Hayır. Shopify belgesine göre uygulamalar artık bu alanla stok yazamaz.
Kaynaklar
İlgili Shopify API konuları
Son güncelleme: 27.10.2026 · Shopify API rehberinin tamamı


