# Stoku eşitlemek

> **Ne yaparsınız:** siparis.app’teki depo stok miktarlarını kendi sisteminize aktarır ve değişiklikleri sürekli uygularsınız.
> **Hangi uçlar:** [Seçenekleri listele](https://developer.siparis.app/uc/secenekleri-listele), [Depoları listele](https://developer.siparis.app/uc/depolari-listele), [Stok miktarlarını listele](https://developer.siparis.app/uc/stok-miktarlarini-listele), [Dışa aktarma başlat](https://developer.siparis.app/uc/disa-aktarma-baslat), [Olayları listele](https://developer.siparis.app/uc/olaylari-listele), [Stok hareketlerini listele](https://developer.siparis.app/uc/stok-hareketlerini-listele)
> **Gereken izin:** `inventory:read`; sürekli takip için `events:read`, ilk dosya için `exports:write`, ürün/seçenek adları için `products:read`.

API temel adresi `https://api.siparis.app/v1`. Stok girişi, sayım ve taşıma için [Stok girmek, saymak ve taşımak](https://developer.siparis.app/stok-yazmak) rehberini kullanın.

## Kartları eşleştirin

Seçenekleri [Seçenekleri listele](https://developer.siparis.app/uc/secenekleri-listele) ile, depoları [Depoları listele](https://developer.siparis.app/uc/depolari-listele) ile alın. SKU/barkod tam eşitlikle aranır; ikisini birlikte gönderirseniz ikisi de eşleşmelidir. Kendi kartınızı `var_…`, kendi deponuzu `loc_…` kimliğiyle bağlayın; adları anahtar olarak kullanmayın.

## İlk bakiyeyi alın

[İlk eşitleme](https://developer.siparis.app/ilk-esitleme) rehberinde `resource=inventory_levels` seçin. Her satır bir seçenek/depo bakiyesidir. `quantity` fiziksel bakiyedir; sepette veya siparişte kullanılabilecek miktar anlamına gelmez. `quantity_unit` miktarın birimidir; ortak stokta havuz birimini taşır.

| stock_state | quantity anlamı | Kendi sisteminizde davranış |
| --- | --- | --- |
| counted | Ondalık metin fiziksel miktar | Tam ondalık olarak saklayın |
| uncounted | null; stok sayılmıyor | Sıfır veya tükenmiş saymayın |
| made_to_order | null; sipariş üzerine hazırlanıyor | Sayılmayan stoktan önce bu durumu değerlendirin |

Sayılan stokta bakiye kaydının olmaması sıfır anlamına gelir; okuma istekleri yeni bakiye açmaz. Aynı ürünü satan satış markaları ortak bakiyeyi görebilir: marka sonuçlarını toplayıp işletme stoğunu iki kez saymayın.

```bash
curl --fail-with-body --silent --show-error --get \
  "${SIPARIS_API_URL:-https://api.siparis.app/v1}/inventory/levels" \
  -H "Authorization: Bearer $SIPARIS_API_KEY" \
  --data-urlencode 'limit=50'
```

Örnek HTTP 200 yanıtı (uydurma veri):

```json
{
  "data": [
    {
      "archived": false,
      "id": "lvl_1234567890abcdef1234567890abcdef",
      "location": "loc_1234567890abcdef1234567890abcdef",
      "made_to_order": false,
      "product": "prd_1234567890abcdef1234567890abcdef",
      "quantity": "12.000",
      "quantity_unit": "adet",
      "revision": 1,
      "stock_state": "counted",
      "stock_uncounted": false,
      "updated_at": "2026-10-16T09:00:00Z",
      "variant": "var_1234567890abcdef1234567890abcdef"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
```



## Değişiklikleri uygulayın

Dosyanın `resume_cursor` değeriyle (dosyanın bittiği andaki olay konumu) olay akışına geçin; `types` eklemeyin. `inventory.level_changed` olayında `data.object.variant` ve `data.object.location` ile `GET /v1/inventory/levels?variant=…&location=…` okuyun ve güncel bakiyeyi aynı kimlikte güncelleyin. Olayı `evt_…` ile tekilleştirin; bakiye güncellemesi ve yeni `next_cursor` (sonraki okumanın yer imi) kaydını aynı işlemde tamamlayın.

Hareket denetimi için [Stok hareketlerini listele](https://developer.siparis.app/uc/stok-hareketlerini-listele), belge için [Stok belgesini getir](https://developer.siparis.app/uc/stok-belgesini-getir) kullanın. `quantity_change` değişmez hareket miktarıdır; `variant_balance_after` bütün depolardaki seçenek toplamıdır, tek depo bakiyesi olarak kullanmayın. Maliyetler `costs:read`, iç notlar `internal_notes:read` olmadan atlanır. Arşivlenmiş ürün ve kapanmış depo geçmişi hareketlerde kalır.
