# Siparişleri listelemek

> **Ne yaparsınız:** Siparişleri tarihe, duruma, markaya ve numaraya göre bulur; satırlarını, gönderilerini ve ödemelerini okursunuz.
> **Hangi uçlar:** [Siparişleri listele](https://developer.siparis.app/uc/siparisleri-listele), [Siparişi getir](https://developer.siparis.app/uc/siparisi-getir), [Sipariş satırlarını listele](https://developer.siparis.app/uc/siparis-satirlarini-listele), [Siparişin gönderilerini listele](https://developer.siparis.app/uc/siparisin-gonderilerini-listele), [Ödemeleri ve para özetini getir](https://developer.siparis.app/uc/odemeleri-ve-para-ozetini-getir), [Markaları listele](https://developer.siparis.app/uc/markalari-listele), [Olayları listele](https://developer.siparis.app/uc/olaylari-listele)
> **Gereken izin:** `orders:read`; gönderi için ayrıca `shipments:read`, ödeme için `payments:read`, olaylar için `events:read`.

API temel adresi `https://api.siparis.app/v1`. [Başlarken](https://developer.siparis.app/baslarken) sayfasından anahtar oluşturup sunucunuzda `SIPARIS_API_KEY` değişkenine kaydedin. Komutlar `curl` ve yanıtı okumak için `python3` kullanır; yerelde `SIPARIS_API_URL` değişkenine `/v1` ile biten API adresini verebilirsiniz. Kendi kayıtlarınızın kimlikleri, sayıları ve tarihleri örneklerden farklı olacaktır. Sipariş açmak ve ilerletmek için [Sipariş eklemek](https://developer.siparis.app/siparis-eklemek) rehberine bakın.

## 1. Son siparişleri alın

Örnekte 16 Ekim 2026 günü Türkiye saatiyle oluşan siparişler istenir. Tarihleri istediğiniz günle değiştirin. Başlangıç dahil, bitiş hariçtir; saat dilimi zorunludur. `created_at_from` siparişin oluştuğu tarihe göre süzer.

```bash
curl --fail-with-body --silent --show-error --get \
  "${SIPARIS_API_URL:-https://api.siparis.app/v1}/orders" \
  -H "Authorization: Bearer $SIPARIS_API_KEY" \
  --data-urlencode 'created_at_from=2026-10-16T00:00:00+03:00' \
  --data-urlencode 'created_at_to=2026-10-17T00:00:00+03:00' \
  --data-urlencode 'sort=-created_at' \
  --data-urlencode 'limit=50'
```

Örnek HTTP 200 yanıtı (uydurma veri; yalnız ilgili alanlar):

```json
{
  "data": [
    {
      "id": "ord_1234567890abcdef1234567890abcdef",
      "number": "48273910",
      "status": "confirmed",
      "created_at": "2026-10-16T09:00:00Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
```



`sort=-created_at` en yeni siparişi başa getirir. `sort` vermezseniz liste son değişikliğe göre (`updated_at`) eskiden yeniye gelir; eşitleme için bu sıra uygundur. Sıralamayı değiştirince eski imleç geçersizdir, ilk sayfadan başlayın. Bir müşterinin siparişleri için `sort=-created_at` ile birlikte `customer=cus_…` ekleyin; müşteri süzgecinde başka sıra veya `sort` alanının atlanması `422 validation_error` döndürür ([Müşterileri bulmak](https://developer.siparis.app/musterileri-bulmak)). `data=[]` o aralıkta görünür sipariş olmadığını gösterir.

## 2. Duruma ve markaya göre süzün

`status=confirmed` onaylanmış siparişleri getirir. Diğer değerler: `pending`, `processing`, `shipped`, `delivered`, `cancelled`, `refunded`; eski `payment_pending` kabul edilir ama 19 Ekim 2026'dan beri hiçbir sipariş bu durumda olmadığı için boş sonuç verir (ödemesi beklenen sipariş `payment_state` alanındadır). Anlamları [Kodlar ve durumlar](https://developer.siparis.app/referans#siparis-durumlari) sayfasındadır. Durum, marka ve tarih süzgeçleri birlikte kullanılabilir. Buradaki marka sizin satış markanızdır (`store`, `sto_…`); ürünün üretici markası (`brand`, `brd_…`) değildir.

Önce erişebildiğiniz markaları alın; `/stores` için ek kapsam (erişim izni) gerekmez.

```bash
curl --fail-with-body --silent --show-error \
  "${SIPARIS_API_URL:-https://api.siparis.app/v1}/stores" \
  -H "Authorization: Bearer $SIPARIS_API_KEY" \
  --output /tmp/siparis-markalar.json && \
python3 -m json.tool /tmp/siparis-markalar.json
```

Örnek HTTP 200 yanıtı (uydurma veri; yalnız ilgili alanlar):

```json
{
  "data": [
    {
      "id": "sto_1234567890abcdef1234567890abcdef",
      "name": "Örnek Marka"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
```



Bu örnek ilk markayı seçer. Birden fazla markanız varsa `SIPARIS_STORE_ID` değerine istediğiniz markanın `sto_…` kimliğini yazın. Tek markayla sınırlı anahtarda `store` vermeseniz de yalnız o marka görünür.

```bash
SIPARIS_STORE_ID=$(python3 -c 'import json; print(json.load(open("/tmp/siparis-markalar.json"))["data"][0]["id"])')
curl --fail-with-body --silent --show-error --get \
  "${SIPARIS_API_URL:-https://api.siparis.app/v1}/orders" \
  -H "Authorization: Bearer $SIPARIS_API_KEY" \
  --data-urlencode "store=$SIPARIS_STORE_ID" \
  --data-urlencode 'status=confirmed' \
  --data-urlencode 'created_at_from=2026-10-16T00:00:00+03:00' \
  --data-urlencode 'created_at_to=2026-10-17T00:00:00+03:00' \
  --data-urlencode 'limit=50'
```

Örnek HTTP 200 yanıtı (uydurma veri; yalnız ilgili alanlar):

```json
{
  "data": [
    {
      "id": "ord_1234567890abcdef1234567890abcdef",
      "store": "sto_1234567890abcdef1234567890abcdef",
      "status": "confirmed"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
```



## 3. Siparişi numarayla bulun

`number` panelde görünen sekiz haneli sipariş numarasıdır. Örnekteki numarayı kendi siparişinizinkiyle değiştirin. Yanıt bir listedir; ayrıntıyı açarken bu listedeki `id` değerini kullanın. Numara `ord_…` kimliğinin yerine geçmez.

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

Örnek HTTP 200 yanıtı (uydurma veri; yalnız ilgili alanlar):

```json
{
  "data": [
    {
      "id": "ord_1234567890abcdef1234567890abcdef",
      "number": "48273910"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
```



## 4. Sonraki sayfayı alın

Bu örnek süzgeçsiz listeyi iki siparişlik sayfalarla okur. İlk yanıtı geçici dosyaya kaydedin. Sipariş ayrıntısı adımı da bu dosyadaki ilk kimliği kullanır.

```bash
curl --fail-with-body --silent --show-error --get \
  "${SIPARIS_API_URL:-https://api.siparis.app/v1}/orders" \
  -H "Authorization: Bearer $SIPARIS_API_KEY" \
  --data-urlencode 'limit=2' \
  --output /tmp/siparis-liste.json && \
python3 -m json.tool /tmp/siparis-liste.json
```

Örnek HTTP 200 yanıtı (uydurma veri; yalnız ilgili alanlar):

```json
{
  "data": [
    {
      "id": "ord_1234567890abcdef1234567890abcdef",
      "number": "48273910"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
```



`has_more=true` ise yanıttaki `next_cursor` sonraki sayfanın yer imidir; değiştirmeden `cursor` parametresinde geri gönderilir. Aşağıdaki komut bunu yapar; liste bitmişse istek yapmaz.

```bash
SIPARIS_CURSOR=$(python3 -c 'import json; print(json.load(open("/tmp/siparis-liste.json"))["next_cursor"] or "")')
if [ -n "$SIPARIS_CURSOR" ]; then
  curl --fail-with-body --silent --show-error --get \
    "${SIPARIS_API_URL:-https://api.siparis.app/v1}/orders" \
    -H "Authorization: Bearer $SIPARIS_API_KEY" \
    --data-urlencode 'limit=2' \
    --data-urlencode "cursor=$SIPARIS_CURSOR" \
    --output /tmp/siparis-liste.json && \
  python3 -m json.tool /tmp/siparis-liste.json
fi
```

Örnek HTTP 200 yanıtı (uydurma veri; yalnız ilgili alanlar):

```json
{
  "data": [
    {
      "id": "ord_1234567890abcdef1234567890abcdef",
      "number": "48273910"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
```



`has_more=false` ve `next_cursor=null` ise liste bitti. Süzgeçli bir listeyi sürdürürken aynı süzgeçleri de her isteğe ekleyin. İmlecin ayrıntıları [İmleçle listeleme](https://developer.siparis.app/listeleme) sayfasında.

## 5. Tek siparişi ve satırlarını görün

Önceki adımdaki liste boş değilse ilk siparişi açın. `SIPARIS_ORDER_ID` yerine başka bir liste veya olay yanıtındaki `ord_…` kimliğini de kullanabilirsiniz.

```bash
SIPARIS_ORDER_ID=$(python3 -c 'import json; print(json.load(open("/tmp/siparis-liste.json"))["data"][0]["id"])')
curl --fail-with-body --silent --show-error \
  "${SIPARIS_API_URL:-https://api.siparis.app/v1}/orders/$SIPARIS_ORDER_ID" \
  -H "Authorization: Bearer $SIPARIS_API_KEY"
```

Örnek HTTP 200 yanıtı (uydurma veri; yalnız ilgili alanlar):

```json
{
  "id": "ord_1234567890abcdef1234567890abcdef",
  "number": "48273910",
  "status": "confirmed",
  "total": "120.00",
  "currency": "TRY"
}
```



Satırlar için aynı siparişin `/lines` ucunu çağırın. Ek kapsam gerekmez.

```bash
curl --fail-with-body --silent --show-error \
  "${SIPARIS_API_URL:-https://api.siparis.app/v1}/orders/$SIPARIS_ORDER_ID/lines" \
  -H "Authorization: Bearer $SIPARIS_API_KEY"
```

Örnek HTTP 200 yanıtı (uydurma veri; yalnız ilgili alanlar):

```json
{
  "data": [
    {
      "id": "lin_1234567890abcdef1234567890abcdef",
      "quantity": "1.000",
      "unit_price": "120.00",
      "total": "120.00"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
```



Satır sayfasında `has_more=true` ise yine bu `/lines` ucunda `cursor` ile devam edin. Sipariş ayrıntısına `include=lines` (yanıta alt kayıtları ekleme seçimi) eklemek de ilk 50 satırı getirir. Fiyat ve miktarlar ondalık metindir; sipariş anındaki değerleri kullanın.

## 6. Gönderiyi ve ödemeyi okuyun

Gönderi için anahtarda `orders:read` yanında `shipments:read` gerekir. Alıcı, barkod ve takip alanları için ayrıca `personal_data:read` gerekir.

```bash
curl --fail-with-body --silent --show-error \
  "${SIPARIS_API_URL:-https://api.siparis.app/v1}/orders/$SIPARIS_ORDER_ID/shipments" \
  -H "Authorization: Bearer $SIPARIS_API_KEY"
```

Örnek HTTP 200 yanıtı (uydurma veri; yalnız ilgili alanlar):

```json
{
  "data": [
    {
      "id": "shp_1234567890abcdef1234567890abcdef",
      "status": "created"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
```



Tahsilatlar için `orders:read` yanında `payments:read` gerekir. `summary` bütün siparişin para özetidir; yalnız bu sayfadaki işlemlerin toplamı değildir. Gönderi ve ödeme listesi boş da olabilir.

```bash
curl --fail-with-body --silent --show-error \
  "${SIPARIS_API_URL:-https://api.siparis.app/v1}/orders/$SIPARIS_ORDER_ID/payments" \
  -H "Authorization: Bearer $SIPARIS_API_KEY"
```

Örnek HTTP 200 yanıtı (uydurma veri; yalnız ilgili alanlar):

```json
{
  "data": [
    {
      "id": "col_1234567890abcdef1234567890abcdef",
      "amount": "120.00"
    }
  ],
  "summary": {
    "collected": "120.00",
    "collect_due": "0.00",
    "currency": "TRY"
  },
  "has_more": false,
  "next_cursor": null
}
```



## 7. Yeni veya değişen siparişleri alın

`updated_at_from` son değişiklik zamanına göre süzer. Örnekteki tarihi son kontrol zamanınızla değiştirin. `updated_at_to` ile bitişi sınırlayabilirsiniz. Yalnız yeni oluşanları arıyorsanız `created_at_from` kullanın.

```bash
curl --fail-with-body --silent --show-error --get \
  "${SIPARIS_API_URL:-https://api.siparis.app/v1}/orders" \
  -H "Authorization: Bearer $SIPARIS_API_KEY" \
  --data-urlencode 'updated_at_from=2026-10-16T09:00:00Z'
```

Örnek HTTP 200 yanıtı (uydurma veri; yalnız ilgili alanlar):

```json
{
  "data": [
    {
      "id": "ord_1234567890abcdef1234567890abcdef",
      "updated_at": "2026-10-16T10:00:00Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
```



Sürekli aktarımda yalnız tarih süzgecine dayanmayın. Liste anlık görünümü verir; her değişikliğin geçmişini vermez. `orders:read` ve `events:read` ile olayları okuyun:

```bash
curl --fail-with-body --silent --show-error --get \
  "${SIPARIS_API_URL:-https://api.siparis.app/v1}/events" \
  -H "Authorization: Bearer $SIPARIS_API_KEY" \
  --data-urlencode 'types=order.created,order.updated,order.status_changed' \
  --data-urlencode 'limit=50'
```

Örnek HTTP 200 yanıtı (uydurma veri; yalnız ilgili alanlar):

```json
{
  "data": [
    {
      "id": "evt_1234567890abcdef1234567890abcdef",
      "type": "order.created",
      "data": {
        "object": {
          "id": "ord_1234567890abcdef1234567890abcdef"
        }
      }
    }
  ],
  "has_more": false,
  "next_cursor": "SUNUCUDAN_DONEN_IMLEC"
}
```



`data.object.id` değişen siparişi gösterir; ayrıntısını yeniden okuyun. Sonraki istekte aynı `types` ile `cursor=next_cursor` gönderin. Olaylarda boş/son sayfanın da imlecini saklayın; `has_more=false` olunca bekleyip aynı imleçten sürdürün. Kayıpsız ilk aktarım için [İlk eşitleme](https://developer.siparis.app/ilk-esitleme), devamı için [Siparişleri ERP’ye almak](https://developer.siparis.app/siparisleri-erpye-almak) rehberini kullanın. Dışa aktarmanın `resume_cursor` değeriyle (dosyanın bittiği andaki olay konumu) başlarsanız `types` eklemeyin.

## Sık hata ve çözümü

| Yanıt | Ne yapmalıyım? |
| --- | --- |
| `403 insufficient_scope` | Anahtarın kapsamlarını kontrol edin; gönderi ve ödeme için ek kapsam gerekir. |
| `404 not_found` | Kimliği liste yanıtından alın; siparişin/markanın anahtarın erişiminde olduğunu kontrol edin. |
| `422 invalid_range` veya `validation_error` | Başlangıcı bitişten önce yazın, saat dilimini ekleyin; `number` sekiz haneli olmalı. |
| `400 invalid_cursor` | İmleci değiştirmeyin; aynı süzgeç ve anahtarla devam edin. Listeyi değiştirecekseniz imleçsiz başlayın. |

Alıcı adı, e-posta ve adres görünmüyorsa işletme sahibinin `personal_data:read` iznini açıkça vermesi gerekir. Ortak hatalar ve çözümleri her ucun sayfasında; ayrıca [kapsamlar](https://developer.siparis.app/kapsamlar) ve [hatalar](https://developer.siparis.app/hatalar).
