Kod Örnekleri

İstek, örnek yanıt ve alanlar

Yeni kitap içeri aktar (PDF + metadata)

POST /api/v1/import/book

İstek

curl -X POST https://import.libraryturk.com/api/v1/import/book \
  -H "Authorization: Bearer ltk_..." \
  -H "Content-Type: application/json" \
  -d 'multipart/form-data:
  file     = <PDF dosyası>
  metadata = {"title":"Üroloji Ders Kitabı","isbn":[{"number":"9786051234567","type":"t"}],"edition":2,"price":{"price365":60}}'
const res = await fetch("https://import.libraryturk.com/api/v1/import/book", {
  method: "POST",
  headers: { "Authorization": "Bearer ltk_...", "Content-Type": "application/json" },
  body: JSON.stringify(multipart/form-data:
  file     = <PDF dosyası>
  metadata = {"title":"Üroloji Ders Kitabı","isbn":[{"number":"9786051234567","type":"t"}],"edition":2,"price":{"price365":60}})
});
const data = await res.json();
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("Authorization", "Bearer ltk_...");
var json = "multipart/form-data:
  file     = <PDF dosyası>
  metadata = {\"title\":\"Üroloji Ders Kitabı\",\"isbn\":[{\"number\":\"9786051234567\",\"type\":\"t\"}],\"edition\":2,\"price\":{\"price365\":60}}";
var res = await http.PostAsync("https://import.libraryturk.com/api/v1/import/book",
    new StringContent(json, Encoding.UTF8, "application/json"));
var data = await res.Content.ReadAsStringAsync();
import requests
res = requests.post("https://import.libraryturk.com/api/v1/import/book",
    headers={"Authorization": "Bearer ltk_..."},
    json=multipart/form-data:
  file     = <PDF dosyası>
  metadata = {"title":"Üroloji Ders Kitabı","isbn":[{"number":"9786051234567","type":"t"}],"edition":2,"price":{"price365":60}})
data = res.json()

Örnek Yanıt

JSON
{ "trackingId": "3f2a…", "status": "Alindi" }

Alanlar

AlanTipAnlam
filedosyaKitap PDF'i (zorunlu; %PDF imzası + SHA-256 doğrulanır, boyut/uzantı sınırlı).
metadatajsonImportKitapMetadata şeması (Kavramlar sayfasına bakın). Opsiyonel ama geçerli JSON olmalı.
trackingIdstringYükleme takip kimliği (GUID).
statusstringAlindi — staging'e düştü, review kuyruğuna girer.

Kaynakça dosyası yükle (var olan kitaba)

POST /api/v1/import/bibliography

İstek

curl -X POST https://import.libraryturk.com/api/v1/import/bibliography \
  -H "Authorization: Bearer ltk_..." \
  -H "Content-Type: application/json" \
  -d 'multipart/form-data:
  file   = <PDF dosyası>
  bookId = 12345'
const res = await fetch("https://import.libraryturk.com/api/v1/import/bibliography", {
  method: "POST",
  headers: { "Authorization": "Bearer ltk_...", "Content-Type": "application/json" },
  body: JSON.stringify(multipart/form-data:
  file   = <PDF dosyası>
  bookId = 12345)
});
const data = await res.json();
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("Authorization", "Bearer ltk_...");
var json = "multipart/form-data:
  file   = <PDF dosyası>
  bookId = 12345";
var res = await http.PostAsync("https://import.libraryturk.com/api/v1/import/bibliography",
    new StringContent(json, Encoding.UTF8, "application/json"));
var data = await res.Content.ReadAsStringAsync();
import requests
res = requests.post("https://import.libraryturk.com/api/v1/import/bibliography",
    headers={"Authorization": "Bearer ltk_..."},
    json=multipart/form-data:
  file   = <PDF dosyası>
  bookId = 12345)
data = res.json()

Örnek Yanıt

JSON
{ "trackingId": "7c8d…", "status": "Alindi" }

Alanlar

AlanTipAnlam
filedosyaKaynakça PDF (zorunlu; imza/SHA-256 doğrulanır).
bookIdnumberKaynakçanın ait olduğu kitap. SİZİN yayıncınıza ait olmalı (yoksa 404).
statusstringAlindi — staging; onay sonrası uygulanır (katalog yazımı yok).

Metadata düzeltme/kaldırma talebi

POST /api/v1/import/metadata-requests

İstek

curl -X POST https://import.libraryturk.com/api/v1/import/metadata-requests \
  -H "Authorization: Bearer ltk_..." \
  -H "Content-Type: application/json" \
  -d '{"bookId":12345,"requestType":"Duzeltme","metadata":{"title":"Yeni Başlık"},"reason":"Başlık düzeltmesi"}'
const res = await fetch("https://import.libraryturk.com/api/v1/import/metadata-requests", {
  method: "POST",
  headers: { "Authorization": "Bearer ltk_...", "Content-Type": "application/json" },
  body: JSON.stringify({"bookId":12345,"requestType":"Duzeltme","metadata":{"title":"Yeni Başlık"},"reason":"Başlık düzeltmesi"})
});
const data = await res.json();
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("Authorization", "Bearer ltk_...");
var json = "{\"bookId\":12345,\"requestType\":\"Duzeltme\",\"metadata\":{\"title\":\"Yeni Başlık\"},\"reason\":\"Başlık düzeltmesi\"}";
var res = await http.PostAsync("https://import.libraryturk.com/api/v1/import/metadata-requests",
    new StringContent(json, Encoding.UTF8, "application/json"));
var data = await res.Content.ReadAsStringAsync();
import requests
res = requests.post("https://import.libraryturk.com/api/v1/import/metadata-requests",
    headers={"Authorization": "Bearer ltk_..."},
    json={"bookId":12345,"requestType":"Duzeltme","metadata":{"title":"Yeni Başlık"},"reason":"Başlık düzeltmesi"})
data = res.json()

Örnek Yanıt

JSON
{ "trackingId": "a1b2…", "status": "Beklemede" }

Alanlar

AlanTipAnlam
bookIdnumberDüzeltilecek kitap (sizin yayıncınıza ait; yoksa 404).
requestTypestringDuzeltme | Kaldirma.
metadatajsonDuzeltme'de önerilen alanlar (ImportKitapMetadata şeması). Kaldirma'da gerekmez.
reasonstringGerekçe (opsiyonel).
statusstringBeklemede — staging; review sonrası uygulanır.

Yükleme durumu

GET /api/v1/import/uploads/{trackingId}

İstek

curl https://import.libraryturk.com/api/v1/import/uploads/{trackingId} \
  -H "Authorization: Bearer ltk_..."
const res = await fetch("https://import.libraryturk.com/api/v1/import/uploads/{trackingId}", {
  headers: { "Authorization": "Bearer ltk_..." }
});
const data = await res.json();
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("Authorization", "Bearer ltk_...");
var data = await http.GetStringAsync("https://import.libraryturk.com/api/v1/import/uploads/{trackingId}");
import requests
res = requests.get("https://import.libraryturk.com/api/v1/import/uploads/{trackingId}",
    headers={"Authorization": "Bearer ltk_..."})
data = res.json()

Örnek Yanıt

JSON
{ "trackingId": "3f2a…", "status": "Islendi", "bookId": 12345 }

Alanlar

AlanTipAnlam
trackingIdstringimport/book yanıtındaki takip kimliği.
statusstringAlindi | Islendi | Hata.

Fiyat önizleme (kaydetmez)

POST /api/v1/import/price/preview

İstek

curl -X POST https://import.libraryturk.com/api/v1/import/price/preview \
  -H "Authorization: Bearer ltk_..." \
  -H "Content-Type: application/json" \
  -d '{"direction":1,"unit":"yuzde","value":10}'
const res = await fetch("https://import.libraryturk.com/api/v1/import/price/preview", {
  method: "POST",
  headers: { "Authorization": "Bearer ltk_...", "Content-Type": "application/json" },
  body: JSON.stringify({"direction":1,"unit":"yuzde","value":10})
});
const data = await res.json();
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("Authorization", "Bearer ltk_...");
var json = "{\"direction\":1,\"unit\":\"yuzde\",\"value\":10}";
var res = await http.PostAsync("https://import.libraryturk.com/api/v1/import/price/preview",
    new StringContent(json, Encoding.UTF8, "application/json"));
var data = await res.Content.ReadAsStringAsync();
import requests
res = requests.post("https://import.libraryturk.com/api/v1/import/price/preview",
    headers={"Authorization": "Bearer ltk_..."},
    json={"direction":1,"unit":"yuzde","value":10})
data = res.json()

Örnek Yanıt

JSON
{ "count": 128, "rows": [ { "bookId": 12345, "price30": 33.00 } ] }

Alanlar

AlanTipAnlam
directionnumber1 = artış, -1 = indirim.
unitstringyuzde | tl.
valuenumberOran (yuzde) veya tutar (tl).
count / rowsnumber/arrayEtkilenen kitap sayısı ve önizlenen yeni fiyat satırları.

Tek kitap fiyat gönder

POST /api/v1/import/price/book

İstek

curl -X POST https://import.libraryturk.com/api/v1/import/price/book \
  -H "Authorization: Bearer ltk_..." \
  -H "Content-Type: application/json" \
  -d '{"bookId":12345,"price30":30.00,"price90":45.00,"price365":60.00,"price3Years":90.00,"printedPrice":120.00,"reason":"Dönem fiyatı"}'
const res = await fetch("https://import.libraryturk.com/api/v1/import/price/book", {
  method: "POST",
  headers: { "Authorization": "Bearer ltk_...", "Content-Type": "application/json" },
  body: JSON.stringify({"bookId":12345,"price30":30.00,"price90":45.00,"price365":60.00,"price3Years":90.00,"printedPrice":120.00,"reason":"Dönem fiyatı"})
});
const data = await res.json();
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("Authorization", "Bearer ltk_...");
var json = "{\"bookId\":12345,\"price30\":30.00,\"price90\":45.00,\"price365\":60.00,\"price3Years\":90.00,\"printedPrice\":120.00,\"reason\":\"Dönem fiyatı\"}";
var res = await http.PostAsync("https://import.libraryturk.com/api/v1/import/price/book",
    new StringContent(json, Encoding.UTF8, "application/json"));
var data = await res.Content.ReadAsStringAsync();
import requests
res = requests.post("https://import.libraryturk.com/api/v1/import/price/book",
    headers={"Authorization": "Bearer ltk_..."},
    json={"bookId":12345,"price30":30.00,"price90":45.00,"price365":60.00,"price3Years":90.00,"printedPrice":120.00,"reason":"Dönem fiyatı"})
data = res.json()

Örnek Yanıt

JSON
{ "trackingId": "c3d4…", "status": "Uygulandi" }

Alanlar

AlanTipAnlam
bookIdnumberFiyatı güncellenecek kitap (sizin yayıncınıza ait; yoksa 404).
price30 / price90 / price365numberSüreli erişim fiyatları (gün).
price3Yearsnumber3 yıllık erişim fiyatı.
printedPricenumberBasılı fiyat.
statusstringUygulandi | Beklemede (staging).

Toplu fiyat listesi

POST /api/v1/import/price/list

İstek

curl -X POST https://import.libraryturk.com/api/v1/import/price/list \
  -H "Authorization: Bearer ltk_..." \
  -H "Content-Type: application/json" \
  -d '{"items":[{"bookId":12345,"price365":60.00},{"bookId":12346,"price365":75.00}],"reason":"Toplu güncelleme"}'
const res = await fetch("https://import.libraryturk.com/api/v1/import/price/list", {
  method: "POST",
  headers: { "Authorization": "Bearer ltk_...", "Content-Type": "application/json" },
  body: JSON.stringify({"items":[{"bookId":12345,"price365":60.00},{"bookId":12346,"price365":75.00}],"reason":"Toplu güncelleme"})
});
const data = await res.json();
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("Authorization", "Bearer ltk_...");
var json = "{\"items\":[{\"bookId\":12345,\"price365\":60.00},{\"bookId\":12346,\"price365\":75.00}],\"reason\":\"Toplu güncelleme\"}";
var res = await http.PostAsync("https://import.libraryturk.com/api/v1/import/price/list",
    new StringContent(json, Encoding.UTF8, "application/json"));
var data = await res.Content.ReadAsStringAsync();
import requests
res = requests.post("https://import.libraryturk.com/api/v1/import/price/list",
    headers={"Authorization": "Bearer ltk_..."},
    json={"items":[{"bookId":12345,"price365":60.00},{"bookId":12346,"price365":75.00}],"reason":"Toplu güncelleme"})
data = res.json()

Örnek Yanıt

JSON
{ "trackingId": "d5e6…", "status": "Uygulandi", "count": 2 }

Alanlar

AlanTipAnlam
itemsarrayHer biri bir bookId + mutlak fiyat alanları. Tüm bookId'ler sizin yayıncınıza ait olmalı.
countnumberİşlenen kitap sayısı.

Toplu oran uygula

POST /api/v1/import/price/bulk-rate

İstek

curl -X POST https://import.libraryturk.com/api/v1/import/price/bulk-rate \
  -H "Authorization: Bearer ltk_..." \
  -H "Content-Type: application/json" \
  -d '{"direction":-1,"unit":"yuzde","value":15,"target":"canli","reason":"Kampanya indirimi"}'
const res = await fetch("https://import.libraryturk.com/api/v1/import/price/bulk-rate", {
  method: "POST",
  headers: { "Authorization": "Bearer ltk_...", "Content-Type": "application/json" },
  body: JSON.stringify({"direction":-1,"unit":"yuzde","value":15,"target":"canli","reason":"Kampanya indirimi"})
});
const data = await res.json();
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("Authorization", "Bearer ltk_...");
var json = "{\"direction\":-1,\"unit\":\"yuzde\",\"value\":15,\"target\":\"canli\",\"reason\":\"Kampanya indirimi\"}";
var res = await http.PostAsync("https://import.libraryturk.com/api/v1/import/price/bulk-rate",
    new StringContent(json, Encoding.UTF8, "application/json"));
var data = await res.Content.ReadAsStringAsync();
import requests
res = requests.post("https://import.libraryturk.com/api/v1/import/price/bulk-rate",
    headers={"Authorization": "Bearer ltk_..."},
    json={"direction":-1,"unit":"yuzde","value":15,"target":"canli","reason":"Kampanya indirimi"})
data = res.json()

Örnek Yanıt

JSON
{ "trackingId": "e7f8…", "status": "Uygulandi", "count": 128 }

Alanlar

AlanTipAnlam
directionnumber1 = artış, -1 = indirim.
unitstringyuzde | tl.
valuenumberOran/tutar.
targetstringcanli | staging — hangi ortamda uygulanacağı.
countnumberEtkilenen kitap sayısı. Önce price/preview ile görün.

Webhook kaydet

POST /api/v1/import/webhooks

İstek

curl -X POST https://import.libraryturk.com/api/v1/import/webhooks \
  -H "Authorization: Bearer ltk_..." \
  -H "Content-Type: application/json" \
  -d '{"callbackUrl":"https://yayinci.example.com/lt-callback"}'
const res = await fetch("https://import.libraryturk.com/api/v1/import/webhooks", {
  method: "POST",
  headers: { "Authorization": "Bearer ltk_...", "Content-Type": "application/json" },
  body: JSON.stringify({"callbackUrl":"https://yayinci.example.com/lt-callback"})
});
const data = await res.json();
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("Authorization", "Bearer ltk_...");
var json = "{\"callbackUrl\":\"https://yayinci.example.com/lt-callback\"}";
var res = await http.PostAsync("https://import.libraryturk.com/api/v1/import/webhooks",
    new StringContent(json, Encoding.UTF8, "application/json"));
var data = await res.Content.ReadAsStringAsync();
import requests
res = requests.post("https://import.libraryturk.com/api/v1/import/webhooks",
    headers={"Authorization": "Bearer ltk_..."},
    json={"callbackUrl":"https://yayinci.example.com/lt-callback"})
data = res.json()

Örnek Yanıt

JSON
{ "id": 7, "callbackUrl": "https://yayinci.example.com/lt-callback", "active": true }

Alanlar

AlanTipAnlam
callbackUrlstringİşlem tamamlanınca sonucu (trackingId + durum) POST edeceğimiz HTTPS adres.
idnumberWebhook kimliği (silmek için: DELETE /webhooks/{id}).