Kavramlar

Akış, staging, sahiplik, fiyat modeli ve metadata şeması

Hızlı Deneme

Kurulum gerektirmeyen en kolay yol — Swagger:

  1. /api/docs adresini açın.
  2. Sağ üstteki Authorize'a tıklayıp API anahtarınızı girin (Bearer ile).
  3. Bir uca tıklayın → Try it out → gövdeyi düzenleyin → Execute.

Postman / Insomnia için hazır dosya indirmeyin — güncel uç listesini içe aktarın:

  1. Postman → Import → Link.
  2. Şu adresi yapıştırın: https://import.libraryturk.com/swagger/v1/swagger.json
  3. İçe aktarılan istekler her zaman günceldir. Authorization başlığına Bearer <anahtarınız> ekleyin.
Anahtarınızı paylaşmayın/dosyaya gömmeyin. İçe aktarılan tanım yalnız yayıncı uçlarını içerir; yönetim uçları görünmez.

Genel Akış

Import API ile gönderdiğiniz hiçbir içerik kataloğa anında yansımaz. Akış şöyledir:

  1. Gönder — kitap/dosya/metadata veya fiyat gönderirsiniz; anında bir trackingId alırsınız.
  2. Staging — gönderiminiz bir bekleme alanına (inbox) düşer; durumu Alindi olur.
  3. İşleme — LibraryTürk ekibi/ingestion gönderimi review eder, eşler ve uygular.
  4. Sonuç — durumu uploads/{trackingId} ile sorgular veya bir webhook kaydederek sonucu otomatik alırsınız.

Staging (Neden Hemen Değişmez?)

Veri kalitesi ve güvenlik için tüm yazımlar staging'dir: doğrudan canlı kataloğa (tblEKitap vb.) yazılmaz. Bu, hatalı/eksik gönderimlerin kataloğu bozmasını engeller. Gönderiminiz review'dan geçtikten sonra uygulanır.

trackingId (Takip Kimliği)

Her başarılı gönderim bir trackingId (GUID) döndürür. Bununla durumu sorgularsınız: yüklemeler için GET /api/v1/import/uploads/{trackingId}, metadata talepleri için GET /api/v1/import/metadata-requests/{trackingId}, fiyatlar için GET /api/v1/import/price/submissions/{trackingId}.

Sahiplik

Bir kitaba işlem yaparken (kaynakça, fiyat, metadata talebi) bookId sizin yayıncınıza veya bir alt yayıncınıza ait olmalıdır. Aksi halde 404 dönülür (güvenlik gereği "var ama sizin değil" ile "hiç yok" ayırt edilmez). 404 alıyorsanız: bookId değerinin sizin yayıncınıza ait, aktif (silinmemiş) bir kitap olduğundan emin olun.

Durum Akışı

DurumAnlam
AlindiGönderim alındı, staging'de bekliyor.
BeklemedeMetadata talebi review bekliyor.
Islendi / UygulandiReview tamam, kataloğa uygulandı.
Hataİşlenemedi; gerekçe yanıtta/webhook'ta döner.

Fiyat Modeli

Beş bağımsız mutlak fiyat vardır (hiçbiri diğerinden hesaplanmaz):

AlanTipAnlam
price30number30 günlük erişim fiyatı (TL).
price90number90 günlük erişim fiyatı.
price365number1 yıllık (365 gün) erişim fiyatı.
price3Yearsnumber3 yıllık erişim fiyatı.
printedPricenumberBasılı kitap fiyatı.

Dört fiyat ucu farklı işler:

UçNe yapar
price/previewBir oran (±%/±TL) uygulanınca oluşacak fiyatları gösterir — kaydetmez.
price/bookTek kitaba mutlak fiyatları yazar.
price/listBirden çok kitaba mutlak fiyat listesi yazar.
price/bulk-rateTüm kitaplara toplu oran (±%/±TL) uygular. Önce preview ile görün.

Metadata Şeması (ImportKitapMetadata)

POST /api/v1/import/book ucundaki metadata alanı bu şemada bir JSON'dur. Tüm alanlar opsiyoneldir; gönderilmeyenler boş geçilir. API yalnızca "geçerli JSON mu?" kontrol eder — eksik alan reddedilmez (LibraryTürk ekibi review'da eşler/tamamlar). Tanımsız ek alanlar da korunur.

AlanTipAnlam
titlestringKitap adı.
isbnarrayISBN listesi: [{ "number": "978…", "type": "t" }]. type: "t"=basılı, "e"=elektronik.
doistringDOI (örn. 10.1234/abc).
editionnumberBaskı numarası.
pageCountnumberSayfa sayısı.
publicationDatedateYayın tarihi — ISO 8601 (örn. 2026-01-15).
languageIdnumberDil kimliği (LibraryTürk dil listesi).
categoryIdnumberKategori kimliği.
subjectIdnumberBilim dalı / orta seviye konu (mezo).
topicIdsnumber[]Alt konu kimlikleri.
summarystringKitap özeti (HTML kabul edilir; düz metne indirilir).
tableOfContentsstringİçindekiler.
indexstringDizin.
authorsarrayYazarlar — alt şema aşağıda.
keywordsstring[]Anahtar kelimeler.
priceobjectFiyatlar — alt şema aşağıda.
institutionalSalebooleanKurumsal satışa açık mı.
individualSalebooleanBireysel satışa açık mı.
publisherIdnumberHedef yayıncı: kendiniz veya bir ALT yayıncınız. Boş bırakılırsa kitap, anahtarın yayıncısına atanır.

authors[] alt şeması

AlanTipAnlam
firstNamestringAd.
lastNamestringSoyad.
orcidstringORCID (örn. 0000-0002-1825-0097).
organizationNamestringKurum adı.
rorstringROR kimliği (Research Organization Registry).
isnistringISNI kimliği.
ordernumberYazar sırası (1, 2, …).

price alt şeması

AlanTipAnlam
price30number30 günlük erişim fiyatı (TL).
price90number90 günlük erişim fiyatı.
price365number1 yıllık (365 gün) erişim fiyatı.
price3Yearsnumber3 yıllık erişim fiyatı.
printedPricenumberBasılı kitap fiyatı.

Örnek metadata JSON

JSON
{
  "title": "Üroloji Ders Kitabı",
  "isbn": [
    { "number": "9786051234567", "type": "t" },
    { "number": "9786051234574", "type": "e" }
  ],
  "doi": "10.1234/uroloji.2026",
  "edition": 2,
  "pageCount": 480,
  "publicationDate": "2026-01-15",
  "languageId": 1,
  "categoryId": 12,
  "subjectId": 45,
  "topicIds": [101, 102],
  "summary": "Kitabın kısa özeti…",
  "authors": [
    { "firstName": "Ahmet", "lastName": "Yılmaz", "orcid": "0000-0002-1825-0097", "order": 1 }
  ],
  "keywords": ["üroloji", "tıp"],
  "price": { "price30": 30, "price90": 45, "price365": 60, "price3Years": 90, "printedPrice": 120 },
  "institutionalSale": true,
  "individualSale": true,
  "publisherId": 53
}
Bu JSON, import/book isteğinde multipart/form-data içinde metadata alanına string olarak konur; file alanına da PDF eklenir.