DLAB E-com Açık API
Mağazanızı kendi sisteminize, ERP'nize ya da bir pazaryeri entegratörüne bağlayın. Ürün, stok, fiyat ve siparişler tek bir REST arayüzünden yönetilir; değişiklikler webhook ile anında size ulaşır.
https://api.dlab-e.com/v1Başlangıç
- Anahtar alın. Panel → Ayarlar → API ve Webhook → yeni anahtar.
- Bağlantıyı doğrulayın.
GET /v1/meanahtarın hangi mağazaya ait olduğunu ve yetkilerini söyler. - Eşleştirin. Ürünleri SKU ya da barkodla eşleştirin; eşleşmeyeni açmadan önce kullanıcıya önizleme gösterin.
- Dinleyin. Sipariş ve stok için webhook kurun; yedek olarak
updatedAfterile periyodik çekin.
curl "https://api.dlab-e.com/v1/me" -H "Authorization: Bearer $DLAB_API_KEY"Kimlik doğrulama
Her istekte Authorization: Bearer dlk_live_<önek>_<sır> gönderin. Anahtar tek bir mağazaya bağlıdır: başka mağazanın kaydına eriştiğinizde 404 alırsınız — varlığı sızdırılmaz. İptal edilen anahtar anında 401 döner ve ona bağlı webhook uçları durur.
curl "https://api.dlab-e.com/v1/products?limit=20" \
-H "Authorization: Bearer $DLAB_API_KEY"Yetkiler
Anahtar oluştururken yalnız ihtiyacınız olan yetkileri verin. Yetkisi olmayan uç 403 döner.
| Yetki | Ne açar |
|---|---|
products:read | Ürün ve kategori okuma |
products:write | Ürün oluşturma, güncelleme, silme, toplu aktarım |
stock:write | Stok güncelleme |
prices:write | Fiyat güncelleme |
orders:read | Sipariş okuma |
orders:write | Sipariş durumu ve kargo bilgisi yazma |
categories:read | Kategori ağacı |
customers:read | Müşteri okuma |
Hız sınırı ve hatalar
Anahtar başına dakikada 120 istek. Her yanıtta X-RateLimit-Limit, X-RateLimit-Remaining ve X-RateLimit-Reset döner; sınır aşılırsa 429 ve Retry-After gelir. Toplu uçları kullanarak istek sayısını düşürün: stok ve fiyat uçları tek çağrıda 500 satır kabul eder.
| Kod | Anlamı |
|---|---|
400 | Gövde ya da parametre geçersiz — mesaj alanın adını söyler |
401 | Anahtar yok, hatalı ya da iptal edilmiş |
403 | Anahtarın bu yetkisi yok |
404 | Kayıt yok ya da başka mağazaya ait |
409 | Çakışma (ör. aynı SKU) |
422 | Aynı Idempotency-Key farklı gövdeyle kullanıldı |
429 | Hız sınırı — Retry-After kadar bekleyin |
5xx | Geçici hata — üstel bekleyerek aynı Idempotency-Key ile yeniden deneyin |
{
"statusCode": 403,
"error": "Forbidden",
"message": "Bu anahtarın 'stock:write' yetkisi yok"
}Idempotency
Yazma isteklerinde (POST, PUT, PATCH) Idempotency-Key başlığı gönderin. Aynı anahtar ve aynı gövde 24 saat içinde tekrar gelirse istek yeniden çalıştırılmaz, ilk yanıt Idempotent-Replayed: true ile döner. Aynı anahtar farklı gövdeyle gelirse 422 alırsınız — sessizce yanlış işlem yapılmaz. Yalnız başarılı (2xx) yanıtlar saklanır, hatalı istek güvenle tekrarlanabilir.
curl -X PUT "https://api.dlab-e.com/v1/stock" \
-H "Authorization: Bearer $DLAB_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 8f1c2b90-5b2f-4c1e-9a3d-2f7c1b0a4e55" \
-d '{"items":[{"sku":"TSH-001-M","stock":42}]}'Sayfalama ve artımlı senkron
Liste uçları imleç (cursor) ile sayfalanır: { data, hasMore, nextCursor }. Sıralama (updatedAt, id) artan olduğu için sayfa arasında kayıt kaybolmaz ya da tekrar etmez. Artımlı senkronda son turun zamanını updatedAfter olarak gönderin.
let cursor, sonSenkron = store.get("lastSync");
do {
const u = new URL("https://api.dlab-e.com/v1/products");
u.searchParams.set("limit", "200");
if (sonSenkron) u.searchParams.set("updatedAfter", sonSenkron);
if (cursor) u.searchParams.set("cursor", cursor);
const { data, hasMore, nextCursor } = await api(u.pathname + u.search);
await isle(data);
cursor = nextCursor;
} while (cursor);
store.set("lastSync", new Date().toISOString());Uç referansı
Bu liste OpenAPI şemasından üretilir — API değişirse doküman da değişir.
Bağlantı
2 uçAnahtarın geçerliliğini ve yetkilerini doğrulayın.
Ürünler
7 uçKatalog okuma, tekil ve toplu yazma.
Stok ve fiyat
2 uçMutlak stok ve fiyat güncelleme — entegrasyonun en sık çalışan iki ucu.
Siparişler
3 uçSipariş çekme ve durum geri yazma.
Kategori ve müşteri
2 uçYardımcı okuma uçları.
Toplu işler
1 uçToplu yazmaların satır satır sonucu.
Webhook uçları
3 uçAnahtara bağlı webhook yönetimi (döngü önleme).
Webhook
Olaylar: order.created, order.paid, order.status_changed, order.cancelled, product.created, product.updated, product.deleted, stock.changed, customer.created.
{
"id": "evt_01J8...",
"event": "stock.changed",
"createdAt": "2026-09-25T08:14:02.001Z",
"siteId": "…",
"source": "panel",
"data": {
"variantId": "…", "sku": "TSH-001-M",
"stock": 42, "delta": -1, "reason": "ORDER", "ref": "#1042"
}
}Her istekte X-DLAB-Event, X-DLAB-Delivery ve X-DLAB-Signature: t=<unix>,v1=<hex> başlıkları gelir. İmzayı ham gövde üzerinden doğrulayın ve zaman damgasını ±5 dakika içinde kabul edin.
import crypto from "node:crypto";
export function dogrula(rawBody, header, secret) {
const p = Object.fromEntries(header.split(",").map((x) => x.split("=")));
const beklenen = crypto.createHmac("sha256", secret).update(`${p.t}.${rawBody}`).digest("hex");
const zamanOk = Math.abs(Date.now() / 1000 - Number(p.t)) < 300;
return zamanOk && crypto.timingSafeEqual(Buffer.from(beklenen), Buffer.from(p.v1));
}Teslim güvencesi: olay, işi yapan veritabanı işlemiyle birlikte yazılır (outbox) — işlem geri alınırsa olay da gitmez. 2xx dışı yanıt ya da 10 sn zaman aşımı başarısız sayılır; 1 dk, 5 dk, 30 dk, 2 sa, 6 sa sonra yeniden denenir. Art arda 10 başarısızlıkta uç otomatik kapatılır. Yönlendirmeler izlenmez; üretimde yalnız herkese açık https adresleri kabul edilir.
Entegratör bağlantı kuralları
ERP, pazaryeri entegratörü ya da kendi yazılımınızı bağlıyorsanız bu dört kural veri bütünlüğünü korur.
Eşleştirme önizlemeli olur
POST /v1/products/match ile ne eşleşiyor ne yeni açılacak öğrenin — bu uç HİÇBİR ŞEY YAZMAZ. Sonucu kullanıcıya gösterip onay alın. Mükerrer ürün açmak geri alınması en zor hatadır.
Stok MUTLAK gönderilir
PUT /v1/stock her zaman "stok = 42" der, "−1" demez. Mağaza siparişte kendi düşümünü yapar, siz kendi havuzunuzun mutlak değerini yazarsınız; çift düşüm oluşmaz. Aynı değeri göndermek hareket yazmaz (unchanged).
Döngü kendiliğinden kırılır
Webhook ucunu anahtarınıza bağlarsanız, o anahtarın yaptığı stok/ürün değişiklikleri size geri gönderilmez. Her olayda source alanı değişikliğin kaynağını söyler: panel, storefront, api:<önek>, system.
Her alanın bir sahibi vardır
Firma, hangi alanı dış sistemin yöneteceğini panelden seçer (stok, fiyat, ad, açıklama, görsel, özellik). Kapalı alanı yazmaya çalışırsanız isteğiniz SESSİZCE YUTULMAZ: stok ve fiyat uçları 403 döner, ürün yazmada atlanan alanlar yanıtta skippedFields olarak listelenir. Hangi alanları yazabileceğinizi GET /v1/me söyler.
Yeniden deneme güvenlidir
Ağ hatasında aynı Idempotency-Key ile tekrar gönderin: işlem iki kez uygulanmaz. Toplu uçlar satır satır sonuç döndürür — hiçbir satır sessizce yutulmaz.