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
{ "trackingId": "3f2a…", "status": "Alindi" }Alanlar
| Alan | Tip | Anlam |
|---|---|---|
file | dosya | Kitap PDF'i (zorunlu; %PDF imzası + SHA-256 doğrulanır, boyut/uzantı sınırlı). |
metadata | json | ImportKitapMetadata şeması (Kavramlar sayfasına bakın). Opsiyonel ama geçerli JSON olmalı. |
trackingId | string | Yükleme takip kimliği (GUID). |
status | string | Alindi — 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
{ "trackingId": "7c8d…", "status": "Alindi" }Alanlar
| Alan | Tip | Anlam |
|---|---|---|
file | dosya | Kaynakça PDF (zorunlu; imza/SHA-256 doğrulanır). |
bookId | number | Kaynakçanın ait olduğu kitap. SİZİN yayıncınıza ait olmalı (yoksa 404). |
status | string | Alindi — 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
{ "trackingId": "a1b2…", "status": "Beklemede" }Alanlar
| Alan | Tip | Anlam |
|---|---|---|
bookId | number | Düzeltilecek kitap (sizin yayıncınıza ait; yoksa 404). |
requestType | string | Duzeltme | Kaldirma. |
metadata | json | Duzeltme'de önerilen alanlar (ImportKitapMetadata şeması). Kaldirma'da gerekmez. |
reason | string | Gerekçe (opsiyonel). |
status | string | Beklemede — 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
{ "trackingId": "3f2a…", "status": "Islendi", "bookId": 12345 }Alanlar
| Alan | Tip | Anlam |
|---|---|---|
trackingId | string | import/book yanıtındaki takip kimliği. |
status | string | Alindi | 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
{ "count": 128, "rows": [ { "bookId": 12345, "price30": 33.00 } ] }Alanlar
| Alan | Tip | Anlam |
|---|---|---|
direction | number | 1 = artış, -1 = indirim. |
unit | string | yuzde | tl. |
value | number | Oran (yuzde) veya tutar (tl). |
count / rows | number/array | Etkilenen 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
{ "trackingId": "c3d4…", "status": "Uygulandi" }Alanlar
| Alan | Tip | Anlam |
|---|---|---|
bookId | number | Fiyatı güncellenecek kitap (sizin yayıncınıza ait; yoksa 404). |
price30 / price90 / price365 | number | Süreli erişim fiyatları (gün). |
price3Years | number | 3 yıllık erişim fiyatı. |
printedPrice | number | Basılı fiyat. |
status | string | Uygulandi | 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
{ "trackingId": "d5e6…", "status": "Uygulandi", "count": 2 }Alanlar
| Alan | Tip | Anlam |
|---|---|---|
items | array | Her biri bir bookId + mutlak fiyat alanları. Tüm bookId'ler sizin yayıncınıza ait olmalı. |
count | number | İş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
{ "trackingId": "e7f8…", "status": "Uygulandi", "count": 128 }Alanlar
| Alan | Tip | Anlam |
|---|---|---|
direction | number | 1 = artış, -1 = indirim. |
unit | string | yuzde | tl. |
value | number | Oran/tutar. |
target | string | canli | staging — hangi ortamda uygulanacağı. |
count | number | Etkilenen 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
{ "id": 7, "callbackUrl": "https://yayinci.example.com/lt-callback", "active": true }Alanlar
| Alan | Tip | Anlam |
|---|---|---|
callbackUrl | string | İşlem tamamlanınca sonucu (trackingId + durum) POST edeceğimiz HTTPS adres. |
id | number | Webhook kimliği (silmek için: DELETE /webhooks/{id}). |