Skip to content

Orders API

Pazaryerlerinden çekilen siparişleri listelemek ve detayını okumak içindir. Sipariş oluşturma veya statü değiştirme API'si yoktur — siparişler pazaryerinden bize akar; sen sadece okursun.

Base URL: https://api.entegrasyoner.com/v1

Auth: Tüm endpoint'lerde Authorization: Bearer <API_KEY> zorunlu — bkz. Authentication.

Genel akış

[Trendyol / TGo / Hepsi ...]

        │  bizim poll job'ları periyodik çeker (~dakika başı)

[Entegrasyoner DB — orders tablosu]

        │  sen `GET /v1/orders` ile çekersin

[Senin ERP / muhasebe / depo yazılımın]

Yeni sipariş için polling kullanılır (GET /v1/orders?status=... periyodik). Anlık webhook için aşağıdaki "Anlık bildirim" notuna bak.

İçerik

Liste

http
GET /v1/orders?platform=trendyol-go&status=Created&per_page=50&page=1
Authorization: Bearer <API_KEY>
Accept: application/json

Query parametreleri

ParametreTipAçıklama
platformstringPazaryeri slug'ı (trendyol, trendyol-go, hepsiburada vb.). Çoklu seçim yok — birden fazla pazaryeri için ayrı çağrı yap.
statusstringTam eşleşme. Pazaryerine göre değişir — geçerli değerleri GET /orders/statuses ile çek.
credential_idintBelirli bir pazaryeri bağlantısı (tek pazaryerinde birden fazla mağaza varsa kullan).
searchstringorder_number, sync_id, customer_name alanlarında LIKE araması.
per_pageintSayfa başı kayıt (default 25, max 100).
pageintSayfa numarası (default 1).

Sıralama sabittir: en yeni siparişten eskisine (source_created_at DESC, id DESC).

Response — 200 OK

json
{
  "data": [
    {
      "id": 1542,
      "sync_id": "TGO-PKG-7891234",
      "external_order_id": "TGO-ORD-558899",
      "customer_id": "C-883",
      "order_number": "TGO558899",
      "status": "Created",
      "prev_status": null,
      "customer_name": "Ahmet Yılmaz",
      "total_price": 480.00,
      "gross_amount": 500.00,
      "total_discount": 20.00,
      "total_cargo": 0.00,
      "invoice_tax_amount": 80.00,
      "platform": {"id": 3, "name": "Trendyol Go", "slug": "trendyol-go"},
      "credential": {"id": 7, "label": "Trendyol Go Bağlantım"},
      "store": {"id": 12, "label": "İstanbul Şube", "platform_store_id": "1001"},
      "source_created_at": "2025-12-15T11:42:00+00:00",
      "source_modified_at": "2025-12-15T11:43:11+00:00",
      "fetched_at": "2025-12-15T11:43:30+00:00",
      "created_at": "2025-12-15T11:43:30+00:00"
    }
  ],
  "links": {
    "first": "https://api.entegrasyoner.com/v1/orders?page=1",
    "last":  "https://api.entegrasyoner.com/v1/orders?page=12",
    "prev":  null,
    "next":  "https://api.entegrasyoner.com/v1/orders?page=2"
  },
  "meta": {"current_page": 1, "per_page": 50, "total": 583}
}

Alan açıklaması

AlanAnlam
idEntegrasyoner iç ID — stabil, kalıcı.
sync_idPaket ID (pazaryeri tarafında). Bir sipariş paketlere bölünebilir (örn. TGo "split package"). Paket parçalanırsa eski sync_id ölür, yeni sync_id'li ayrı kayıt oluşurid da değişir.
external_order_idSipariş ID (pazaryerinin sipariş kimliği). Paket bölünse de aynı kalır. Gerçek "sipariş bazlı" gruplama için bunu kullan — external_order_id aynı olan birden fazla sync_id olabilir.
customer_idPazaryerindeki müşteri kimliği.
order_numberMüşteriye gösterilen sipariş numarası (pazaryerinin format'ı).
statusPazaryeri tarafındaki güncel statü (Created, Picking, Shipped, Delivered, Cancelled gibi — pazaryerine özel).
prev_statusBir önceki statü (statü değişimini takip etmek için).
customer_nameMüşteri adı (kişisel veri — GDPR/KVKK saklama süresine dikkat).
total_priceMüşterinin ödediği net tutar.
gross_amountİndirim öncesi brüt.
total_discount, total_cargo, invoice_tax_amountDetay kalemler.
platform.slugtrendyol, trendyol-go, hepsiburada vb.
credential.labelHangi pazaryeri bağlantısından geldi.
storeÇok mağazalı bağlantıda hangi mağaza/şubeden (TGo gibi); single-store pazaryerlerinde null.
source_created_atPazaryeri tarafındaki orijinal oluşturma zamanı. Sıralama bunla yapılır — sen bunu baz al.
source_modified_atPazaryeri tarafındaki son değişiklik (statü geçişi vb.).
fetched_atBizim poll job'umuzun siparişi DB'ye yazdığı an.
created_atDB satırı oluşturma anı (genelde fetched_at ile eş zamanlı).

Tek sipariş

http
GET /v1/orders/1542
Authorization: Bearer <API_KEY>
Accept: application/json

Response — 200 OK

Liste cevabındaki tüm alanlara ek olarak iki alan döner:

json
{
  "data": {
    "id": 1542,
    "...": "(liste cevabındaki tüm alanlar)",

    "lines": [
      {
        "sku": "EX-SKU-001",
        "product_name": "Example Product 250ml",
        "quantity": 2,
        "unit_price": 180.00,
        "total_price": 360.00,
        "barcode": "1234567890123"
      },
      {
        "sku": "EX-SKU-002",
        "product_name": "Other Product",
        "quantity": 1,
        "unit_price": 120.00,
        "total_price": 120.00,
        "barcode": "9876543210987"
      }
    ],

    "raw": {
      "...": "pazaryerinden gelen ham JSON payload"
    }
  }
}
AlanAnlam
linesSipariş kalemleri dizisi. Alan setleri pazaryerine göre değişebilir — yukarıdaki en yaygın alanlardır. Detay normalize edilmiş ortak şema; özel alanlar raw içinde kalır.
rawPazaryerinden gelen ham JSON (debugging, eksik alan tarama, custom alan okuma için). Yapısı platform-specific.

raw büyük olabilir (10–100 KB) — listeleme cevabına dahil edilmez; sadece tek sipariş çağrısında döner.

Statü listesi

Statü isimleri pazaryerine göre değişir. GET /orders?status=... filtresinde hangi değerleri kullanabileceğini öğrenmek için bu ucu çağır — bu tenant'ın siparişlerinde gerçekten görülmüş statü değerlerini döner.

http
GET /v1/orders/statuses
Authorization: Bearer <API_KEY>

Pazaryerine göre filtrele:

http
GET /v1/orders/statuses?platform=trendyol-go

Response — 200 OK

json
{
  "data": ["Cancelled", "Created", "Delivered", "Picking", "Shipped"]
}

Boş tenant'ta veya filtre eşleşmiyorsa {"data": []} döner.

Polling stratejisi

Yeni siparişleri çekmek için önerilen akış:

  1. Kursorü saklayın — son başarıyla işlediğin siparişin source_created_at (veya id) değerini kayıt altına al.
  2. Periyodik çek — 1–2 dakikada bir GET /orders?status=Created&per_page=100&page=1 ile en yeni siparişleri al.
  3. Kursora kadar geri yürü — listede kursordan eski sipariş çıkana kadar sayfaları gez; eskileri atla.
  4. İşle + kursoru ilerlet — kendi sistemine yazdıktan sonra kursoru en yeni source_created_at'e güncelle.
  5. Statü değişimini takip et — Created → Shipped → Delivered geçişlerini yakalamak için aynı sipariş için periyodik GET /orders/{id} veya tüm statüleri içeren liste çekimi yap. prev_status ile son geçişi anlarsın.

API rate — şu an entegratör tarafında oran sınırı yok ama 5–10 saniyeden sık polling önerilmez. İleride tenant başına dakikada 60 istek civarı limit gelebilir.

Anlık bildirim (webhook) — şu an sipariş çekimi polling iledir; sipariş webhook'u public olarak açık değildir. Anlık sipariş push'una ihtiyacın varsa bizimle iletişime geç ([email protected]) — kullanım senaryona göre değerlendiriyoruz.

Hata kodları (özet)

HTTPSenaryo
401Token eksik/geçersiz
404id bulunamadı (veya başka tenant'a ait)
422Geçersiz query parametre tipi
5xxSunucu hatası — geçici, üstel backoff ile tekrar dene

Detaylı: errors.

Entegrasyoner — Pazaryeri Entegrasyon Sistemi