İçeriğe geç
siparis.app geliştiriciAnahtarları yönet ↗

İlk eşitleme + olay akışı

API temel adresi https://api.siparis.app/v1. Aşağıdaki örnek siparişleri alır ve orders:read kapsamını (okuma iznini) kullanır.

1. Başlangıç dosyası isteyin

Her yeni işte benzersiz bir Idempotency-Key (tekrar anahtarı: aynı isteği güvenle yeniden göndermek için sizin ürettiğiniz metin) oluşturun ve saklayın. Aynı iş ağ hatasıyla tekrarlanırsa gövdeyi ve anahtarı aynen gönderin.

İlk örnek için zorunlu alanlar (POST /v1/exports):

Bu istekte zorunlu gövde alanı yok; boş JSON nesnesi {} gönderilebilir.

Bütün alanlar: Dışa aktarma başlat.

curl --fail-with-body --silent --show-error \
  "${SIPARIS_API_URL:-https://api.siparis.app/v1}/exports" \
  -H "Authorization: Bearer $SIPARIS_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: ilk-siparis-dosyasi-20261016-001' \
  --data '{"resource":"orders","mode":"consistent_snapshot","format":"jsonl","filters":{}}'

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

{
  "completed_at": null,
  "created_at": "2026-10-16T09:00:00Z",
  "error_code": null,
  "file": null,
  "format": "jsonl",
  "id": "exp_1234567890abcdef1234567890abcdef",
  "resource": "orders",
  "resume_cursor": null,
  "row_count": 0,
  "status": "queued"
}

Kaynaklar orders, customers, products, variants, inventory_levels. Süzgeçler ilgili liste ucuyla aynıdır ve Dışa aktarma başlat sayfasında listelenir. Her kaynağın ayrı dosyası ve ayrı devam imleci vardır.

2. Hazır olmasını bekleyin

202 yanıtındaki exp_… kimliğiyle GET /v1/exports/{id} okuyun. status=queued veya running iken kısa bekleyin; completed olunca devam edin. job.completed olayı da yalnız işi açan bağlantıya ve ilgili kaynak yetkisine görünür. failed olursa error_code değerine göre sorunu giderip yeni iş başlatın: export_too_large veya snapshot_timeout için süzgeçle daraltın, export_access_changed için güncel izinlerle yeniden başlayın, diğer hatalarda destek alın.

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

{
  "completed_at": "2026-10-16T09:00:10Z",
  "created_at": "2026-10-16T09:00:00Z",
  "error_code": null,
  "file": {
    "bytes": 2048,
    "content_type": "application/x-ndjson",
    "download_path": "/v1/files/fil_1234567890abcdef1234567890abcdef",
    "expires_at": "2026-10-23T09:00:00Z",
    "id": "fil_1234567890abcdef1234567890abcdef"
  },
  "format": "jsonl",
  "id": "exp_1234567890abcdef1234567890abcdef",
  "resource": "orders",
  "resume_cursor": "SUNUCUDAN_DONEN_IMLEC",
  "row_count": 1,
  "status": "completed"
}

Aynı işletmede bir dosya hazırlanır; ikinci yeni istekte 409 export_in_progress gelir. Hazırlama 60 okuma puanı, indirme 5 puandır. Hazırlama en çok 10 dakika, dosya en çok 5 GiB olabilir; sınır aşılırsa kaynak süzgeçleriyle daraltın.

3. Dosyayı tamamen uygulayın

file.download_path zaten /v1 içerir: API kökenine ekleyin, temel adrese ikinci kez /v1 eklemeyin. Aynı Bearer anahtarıyla indirin. JSONL’de her satır liste ucunun bir nesnesidir. CSV’de her hücre JSON değeri içerir: önce CSV’yi, sonra her hücreyi JSON olarak çözün; boş metin ve null farklıdır.

8 MiB üzerindeki dosya en çok 60 saniyelik imzalı adrese 307 verebilir. Yönlendirmeyi ayrı istekte izleyin; Bearer başlığını imzalı hedefe taşımayın. Otomatik yönlendirmeyi başlıklarla birlikte açmayın. Erişim, işin created_at anından 7 gün sonra kapanır; kesin an file.expires_at alanıdır. Sonrasında 410 file_expired gelir; yeni dosya isteyin. İş kaydı, devam imleci ve olay geçmişi korunur.

4. Devam imleciyle olayları alın

Dosyanın tamamını uyguladıktan sonra resume_cursor değerini kalıcı saklayın: dosyanın bittiği andaki olay konumudur. GET /v1/events?cursor=… çağırın; bu imlece types eklemeyin. İlgili olayları kendi sisteminizde seçin. Görüntüde yer alan değişiklikler tekrar verilmez; dosya hazırlanırken sonradan tamamlanan değişiklikler akışa girer.

Süzgeçli dosya bütün kaynağı temsil etmez. Olayda güncel nesneyi okuyun, kendi süzgecinizi yeniden değerlendirin. Olayları uygulama, evt_… tekilleştirmesi ve next_cursor (sonraki okumanın yer imi) kaydı kendi veritabanınızda aynı işlemde olmalıdır. Boş sayfada has_more=true ise yeni imleçle ilerleyin; has_more=false olunca bekleyin. Ayrıntılı okuma döngüsü Olay akışı rehberindedir.

409 snapshot_publisher_changed yeni bir tutarlı dosyayla başlamanız gerektiğini bildirir. 400 invalid_cursor durumunda süzgeç ve kapsamların değişmediğini kontrol edin; konum kaybolduysa yeni ilk eşitleme yapın.