İçeriğe geç

Reseller API · v1

LicenceDevs API

Ürün kataloğunu, canlı stok durumunu ve sipariş akışını kendi satış sisteminle birleştir. Otomatik sipariş kuran bayiler için bakiye takibi ve eşik altına düşüldüğünde otomatik bakiye yükleme uç noktalarıyla birlikte gelir.

Base URL
https://api.licencedevs.com/v1
Sürüm
v1
Format
JSON · UTF-8
Yetkilendirme
Bearer API key

Başlangıç

Tüm istekler HTTPS üzerinden yapılır ve JSON döner. Sandbox ortamı canlı ortamla aynı şemayı kullanır; sandbox siparişleri gerçek lisans tüketmez ve bakiye düşmez.

Base URL
Canlı     https://api.licencedevs.com/v1
Sandbox   https://sandbox.api.licencedevs.com/v1
  • Sürüm yolun içindedir. Kırıcı değişiklikler yeni bir sürüm yolu ile yayınlanır, mevcut sürüm en az 12 ay çalışmaya devam eder.
  • Tüm zaman damgaları ISO 8601 ve UTC biçimindedir.
  • Para birimi alanları ISO 4217 kodu ile birlikte, en küçük birim (kuruş/cent) cinsinden tam sayı olarak döner.

Kimlik doğrulama

Her istek bayi paneli üzerinden üretilen bir API anahtarı ile yetkilendirilir. Anahtar yalnızca sunucu tarafında saklanmalı, tarayıcıya gönderilmemelidir.

Request
GET /v1/products?limit=20 HTTP/1.1Host: api.licencedevs.comAuthorization: Bearer ld_live_••••••••••••••••Accept: application/json
  • Anahtarlar salt-okunur (catalog:read) veya sipariş yetkili (orders:write) olarak üretilebilir.
  • IP kısıtlaması tanımlandığında, listede olmayan adreslerden gelen istekler 403 döner.
  • Anahtar sızıntısı durumunda panelden iptal edilen anahtar anında geçersiz olur.

Ürün kataloğu

Katalog uç noktaları ürün ağacını, sürüm bilgisini ve bayi fiyatını döner. Kendi mağazandaki ürün listesini bu uç noktadan senkronize edebilirsin.

GET/products

Ürünleri listele

Katalogdaki ürünleri sayfalayarak döner. Bayiye kapalı ürünler listeye dahil edilmez.

Query parametreleri

AlanTipAçıklama
categorystringKategori kimliği ile filtreler, örn. windows-os.
brandstringMarka adı ile filtreler, örn. Microsoft.
stockstringStok durumuna göre filtreler, örn. in_stock.
updated_sincestringYalnızca bu tarihten sonra değişen ürünleri döner.
limitintegerSayfa başına kayıt, 1-200 arası. Varsayılan 50.
cursorstringBir önceki yanıttaki next_cursor değeri.
Request
GET /v1/products?category=windows-os&stock=in_stock&limit=2
Response
{
  "data": [
    {
      "sku": "MS-WIN11-PRO-RET",
      "name": "Windows 11 Pro",
      "brand": "Microsoft",
      "category": "windows-os",
      "access_type": "license",
      "delivery": "instant_key",
      "stock": { "state": "in_stock", "available": 412 },
      "price": { "amount": 249000, "currency": "TRY" },
      "updated_at": "2026-08-21T09:14:02Z"
    },
    {
      "sku": "MS-WIN11-HOME-RET",
      "name": "Windows 11 Home",
      "brand": "Microsoft",
      "category": "windows-os",
      "access_type": "license",
      "delivery": "instant_key",
      "stock": { "state": "low_stock", "available": 6 },
      "price": { "amount": 179000, "currency": "TRY" },
      "updated_at": "2026-08-21T08:52:41Z"
    }
  ],
  "next_cursor": "eyJvIjoyfQ",
  "has_more": true
}
GET/products/{sku}

Ürün detayı

Tek bir ürünün tam kaydını, teslim biçimini ve varsa sürüm/dil varyantlarını döner.

Response
{
  "sku": "MS-WIN11-PRO-RET",
  "name": "Windows 11 Pro",
  "brand": "Microsoft",
  "category": "windows-os",
  "access_type": "license",
  "delivery": "instant_key",
  "region": "global",
  "language": "multi",
  "stock": { "state": "in_stock", "available": 412, "eta_minutes": 0 },
  "price": { "amount": 249000, "currency": "TRY", "tier": "reseller" },
  "min_quantity": 1,
  "max_quantity": 100,
  "updated_at": "2026-08-21T09:14:02Z"
}

Stok durumu

Stok, sipariş anında yeniden doğrulanır. Mağazanda "stokta var/yok" bilgisini doğru göstermek için toplu stok uç noktasını periyodik olarak, stock.changed webhook bildirimini ise anlık güncelleme için kullan.

Stok durumu değerleri
in_stockStoktaSipariş anında otomatik teslim edilir.
low_stockAz stokKalan adet available alanında bildirilir.
out_of_stockStok yokSipariş reddedilir, backorder alanı kontrol edilmelidir.
on_demandTalebe bağlıSipariş kuyruğa alınır, teslim süresi eta_minutes ile döner.
discontinuedYayından kaldırıldıÜrün artık sipariş edilemez.
GET/stock

Toplu stok sorgusu

Tek istekte en fazla 500 SKU için stok durumu döner. Katalogun tamamını çekmeden hızlı senkronizasyon sağlar.

Query parametreleri

AlanTipAçıklama
skuzorunlustring[]Virgülle ayrılmış SKU listesi.
Request
GET /v1/stock?sku=MS-WIN11-PRO-RET,MS-O365-BP,JB-ALL-PACK
Response
{
  "data": [
    { "sku": "MS-WIN11-PRO-RET", "state": "in_stock", "available": 412 },
    { "sku": "MS-O365-BP", "state": "on_demand", "available": 0, "eta_minutes": 30 },
    { "sku": "JB-ALL-PACK", "state": "out_of_stock", "available": 0 }
  ],
  "checked_at": "2026-08-21T09:20:11Z"
}

Sipariş ve teslimat

Sipariş oluşturmak bakiyeden düşer ve teslim edilebilir ürünlerde lisans anahtarını aynı yanıtta döner. Her sipariş isteği Idempotency-Key başlığı ile gönderilmelidir; ağ hatasında aynı anahtarla tekrar denemek ikinci bir sipariş oluşturmaz.

POST/orders

Sipariş oluştur

Stok kontrolü, bakiye düşümü ve teslimat tek işlemde yürütülür. Herhangi bir adım başarısız olursa sipariş oluşmaz ve bakiye düşmez.

Gövde alanları

AlanTipAçıklama
skuzorunlustringSipariş edilecek ürünün SKU değeri.
quantityzorunluintegerAdet. Ürünün min_quantity / max_quantity sınırları içinde olmalıdır.
referencestringKendi sistemindeki sipariş numaran. Yanıtta ve webhook bildiriminde aynen döner.
allow_backorderbooleanon_demand ürünlerde siparişin kuyruğa alınmasına izin verir. Varsayılan false.
Request
POST /v1/ordersAuthorization: Bearer ld_live_••••••••••••••••Idempotency-Key: 8f1c2d40-6b1e-4d5a-9c31-0a2f7e5b1d90Content-Type: application/json{  "sku": "MS-WIN11-PRO-RET",  "quantity": 2,  "reference": "SHOP-2026-104877"}
Response
{
  "id": "ord_3Kd91mQpZ",
  "status": "completed",
  "reference": "SHOP-2026-104877",
  "sku": "MS-WIN11-PRO-RET",
  "quantity": 2,
  "charged": { "amount": 498000, "currency": "TRY" },
  "balance_after": { "amount": 1254300, "currency": "TRY" },
  "items": [
    { "key": "XXXXX-XXXXX-XXXXX-XXXXX-XXXXX", "activation_url": "https://licencedevs.com/a/9f2c" },
    { "key": "YYYYY-YYYYY-YYYYY-YYYYY-YYYYY", "activation_url": "https://licencedevs.com/a/4b7e" }
  ],
  "created_at": "2026-08-21T09:21:44Z"
}
GET/orders/{id}

Sipariş durumu

Kuyruğa alınan (pending) siparişlerin durumunu sorgular. Tamamlandığında items alanı doldurulur.

Response
{
  "id": "ord_3Kd91mQpZ",
  "status": "pending",
  "reference": "SHOP-2026-104877",
  "sku": "MS-O365-BP",
  "quantity": 1,
  "eta_minutes": 25,
  "items": [],
  "created_at": "2026-08-21T09:21:44Z"
}
  • Sipariş durumları: pending, completed, failed, refunded.
  • failed ve refunded siparişlerde bakiye otomatik olarak iade edilir; iade işlemi transactions listesinde ayrı bir kayıt olarak görünür.

Bakiye ve otomatik yükleme

Bayi hesabı ön ödemeli bakiye ile çalışır. Otomatik sipariş akışı kuran ekipler için bakiye, tanımlanan eşiğin altına düştüğünde kayıtlı ödeme yöntemi ile otomatik yüklenir; böylece stok ve bakiye kaynaklı sipariş hataları önlenir.

GET/balance

Bakiye sorgula

Güncel bakiyeyi ve otomatik yükleme yapılandırmasını döner.

Response
{
  "balance": { "amount": 1254300, "currency": "TRY" },
  "auto_topup": {
    "enabled": true,
    "threshold": { "amount": 500000, "currency": "TRY" },
    "amount": { "amount": 2000000, "currency": "TRY" },
    "daily_limit": { "amount": 6000000, "currency": "TRY" },
    "payment_method": "card_9f31",
    "last_topup_at": "2026-08-19T22:04:10Z"
  }
}
POST/balance/auto-topup

Otomatik yüklemeyi yapılandır

Eşik, yükleme tutarı ve günlük üst limit tanımlar. Günlük limit aşıldığında otomatik yükleme durur ve siparişler insufficient_balance ile reddedilir.

Gövde alanları

AlanTipAçıklama
enabledzorunlubooleanOtomatik yüklemeyi açar veya kapatır.
thresholdzorunluintegerBu tutarın altına düşünce yükleme tetiklenir.
amountzorunluintegerHer tetiklemede yüklenecek tutar.
daily_limitintegerBir gün içinde otomatik yüklenebilecek üst sınır.
payment_methodzorunlustringBayi panelinde kayıtlı ödeme yöntemi kimliği.
Request
POST /v1/balance/auto-topup{  "enabled": true,  "threshold": 500000,  "amount": 2000000,  "daily_limit": 6000000,  "payment_method": "card_9f31"}
Response
{
  "enabled": true,
  "threshold": { "amount": 500000, "currency": "TRY" },
  "amount": { "amount": 2000000, "currency": "TRY" },
  "daily_limit": { "amount": 6000000, "currency": "TRY" },
  "payment_method": "card_9f31",
  "updated_at": "2026-08-21T09:25:00Z"
}
GET/transactions

Hesap hareketleri

Yükleme, sipariş düşümü ve iade kayıtlarını tarih sırasına göre döner.

Response
{
  "data": [
    {
      "id": "txn_71aQ",
      "type": "order",
      "amount": -498000,
      "order_id": "ord_3Kd91mQpZ",
      "created_at": "2026-08-21T09:21:44Z"
    },
    {
      "id": "txn_70zP",
      "type": "topup",
      "amount": 2000000,
      "source": "auto",
      "created_at": "2026-08-19T22:04:10Z"
    }
  ],
  "next_cursor": null,
  "has_more": false
}

Webhook bildirimleri

Stok ve sipariş değişikliklerini beklemeden almak için bayi panelinden bir webhook adresi tanımlanır. Her istek X-LicenceDevs-Signature başlığı ile HMAC-SHA256 imzalanır; gövde doğrulanmadan işlenmemelidir.

stock.changed
{
  "event": "stock.changed",
  "sent_at": "2026-08-21T09:30:00Z",
  "data": {
    "sku": "MS-WIN11-PRO-RET",
    "previous": { "state": "in_stock", "available": 412 },
    "current":  { "state": "low_stock", "available": 8 }
  }
}
balance.low
{
  "event": "balance.low",
  "sent_at": "2026-08-21T09:31:12Z",
  "data": {
    "balance": { "amount": 480000, "currency": "TRY" },
    "threshold": { "amount": 500000, "currency": "TRY" },
    "auto_topup_enabled": true
  }
}
  • Gönderilen olaylar: order.completed, order.failed, order.refunded, stock.changed, balance.low, balance.topup_failed.
  • 2xx dışında yanıt alınan bildirimler artan aralıklarla 24 saat boyunca yeniden denenir.
  • Aynı olay birden fazla kez ulaşabilir; event ve sent_at ile birlikte gelen data alanları idempotent işlenmelidir.

Hata kodları

Hatalar HTTP durum kodu ile birlikte makine tarafından okunabilir bir code alanı döner. Entegrasyonda dallanma bu alan üzerinden yapılmalıdır.

Error
{
  "error": {
    "code": "insufficient_balance",
    "message": "Bakiye yetersiz ve günlük otomatik yükleme limiti aşıldı.",
    "balance": { "amount": 12400, "currency": "TRY" },
    "required": { "amount": 498000, "currency": "TRY" }
  }
}
KodHTTPAçıklama
unauthorized401API anahtarı eksik, hatalı veya iptal edilmiş.
forbidden403Anahtarın bu uç nokta için yetkisi yok.
product_not_found404Belirtilen SKU katalogda bulunamadı.
out_of_stock409Sipariş anında ürün stokta değil.
insufficient_balance402Bakiye yetersiz ve otomatik yükleme kapalı veya limiti aşıldı.
duplicate_request409Aynı `Idempotency-Key` farklı bir gövde ile tekrar gönderildi.
validation_error422Gövde alanları doğrulamadan geçmedi, ayrıntı `errors` içinde.
rate_limited429İstek limiti aşıldı, `Retry-After` başlığı beklenmelidir.

İstek limitleri

Limitler anahtar bazında uygulanır ve her yanıtta başlıklarla bildirilir. Limit aşıldığında 429 döner; Retry-After başlığındaki saniye kadar beklenmelidir.

Response headers
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 574
X-RateLimit-Reset: 1755767460
Retry-After: 12
  • Katalog ve stok uç noktalarında dakikada 600 istek.
  • Sipariş uç noktasında dakikada 120 istek; her sipariş Idempotency-Key gerektirir.
  • Toplu stok sorgusunda tek istekte en fazla 500 SKU.
  • Uzun süreli senkronizasyon için katalogun tamamını çekmek yerine updated_since parametresi kullanılmalıdır.

Erişim paketleri

Üç paket de aynı şema üzerinde çalışır. Fark, API anahtarına verilen kapsamda ve operasyon tarafında açılan yeteneklerde.

  • Catalog

    Entegrasyona başlayan geliştirici

    Kataloğu kendi arayüzünde yayınlamak isteyen ekipler için salt-okunur entegrasyon.

    • Ürün kataloğu uç noktası ve kategori ağacı
    • Toplu stok sorgusu ve updated_since ile artımlı senkronizasyon
    • Sandbox ortamı ve test anahtarı
    • Marka görselleri ve ürün metinlerine erişim
    • Sipariş oluşturma
    • Bakiye işlemleri

    API kapsamları

    • catalog:read
  • Commerce

    Satışı otomatikleştiren bayi

    Yaygın

    Siparişi uçtan uca API üzerinden yürüten, teslimatı otomatik yapan satış kanalları için.

    • Catalog paketindeki her şey
    • Sipariş oluşturma ve anında lisans anahtarı teslimi
    • Idempotency-Key ile güvenli yeniden deneme
    • Bayi bakiyesi ve hesap hareketleri uç noktaları
    • Sipariş ve stok webhook bildirimleri

    API kapsamları

    • catalog:read
    • orders:write
    • balance:read
  • Scale

    Yüksek hacimli operasyon

    Kesintisiz otomatik sipariş akışı çalıştıran, stok ve bakiye kaynaklı hata istemeyen ekipler için.

    • Commerce paketindeki her şey
    • Eşik altına düşüldüğünde otomatik bakiye yükleme
    • Yükseltilmiş istek limitleri ve öncelikli sipariş kuyruğu
    • Çoklu API anahtarı, kapsam ayrımı ve IP kısıtlaması
    • Entegrasyon sürecinde teknik iletişim noktası

    API kapsamları

    • catalog:read
    • orders:write
    • balance:read
    • balance:write

Erişim nasıl alınır?

API anahtarları bayi hesabına tanımlanır. Başvuru sonrası sandbox anahtarı ile entegrasyonu test edebilir, canlı anahtarı onay sonrasında alabilirsin.

@dyrdev