LMS adabiyot API
Universitet LMS'i fanlar uchun adabiyotlarni elib katalogidan oladi
Umumiy
Fanlar LMS'da yaratiladi. O'qituvchi fanga adabiyot biriktirganda LMS shu API orqali elib katalogidan qidiradi va tanlangan kitoblarning ID'sini (Koha biblionumber) o'zida saqlaydi. Talabaga fan sahifasida adabiyotlar ro'yxati ko'rsatiladi: ma'lumotlar shu ID'lar bo'yicha elib'dan olinadi, "O'qish" havolasi esa talabani LMS orqali elib'ga kiritib, kitobni ochadi.
- Asosiy manzil:
https://elib.npuu.uz/api/lms/v1 - Format: JSON (UTF-8), faqat
GETso'rovlar - OpenAPI 3 spetsifikatsiyasi: https://elib.npuu.uz/developers/lms/openapi.json
- Kitoblar Koha'dan jonli olinadi: elib ularni o'z bazasida saqlamaydi.
- Katalogda LMS a'zolari uchun belgilangan ko'rinish qoidalari amal qiladi (yashirin turlar qaytmaydi).
Kirish (API kalit)
Kalitni elib administratori admin panelning "LMS va API" sahifasidagi "Adabiyot API kalitlari" bo'limida yaratadi. Kalit faqat yaratilganda bir marta ko'rsatiladi: uni LMS serverida maxfiy saqlang (brauzerga yubormang). Har so'rovda sarlavhada yuboriladi:
Authorization: Bearer elib_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Kalit yo'q yoki bekor qilingan bo'lsa: 401. Chegara: bitta IP manzildan (LMS serveridan) daqiqasiga 600 so'rov. Oshsa 429 qaytadi, Retry-After sarlavhasi necha soniyadan keyin qayta urinish mumkinligini aytadi.
So'rovlar
GET /books: katalogdan qidirish
O'qituvchi adabiyot tanlaydigan oyna uchun.
q: qidiruv matni (nomi, muallif, mavzu va boshqa maydonlar bo'yicha);author: faqat muallif bo'yichatype: material turi kodi, masalanKITOB(/item-types);language: til kodi, masalanuzb(/languages)page(1 dan),per_page(1–50, standart 20)- Tartib:
qberilsa eng mos kitoblar birinchi keladi, berilmasa katalogga oxirgi qo'shilganlar.
curl -H "Authorization: Bearer $ELIB_KEY" "https://elib.npuu.uz/api/lms/v1/books?q=pedagogika&per_page=20"
GET /books?ids=54410,52047: ID'lar bo'yicha
Fan sahifasida adabiyotlar ro'yxatini chiqarish uchun: 50 tagacha ID, javob shu tartibda. ids berilsa boshqa parametrlar hisobga olinmaydi. Topilmagan yoki yashirilgan ID'lar meta.missing da qaytadi.
meta.missing da faqat Koha'da yo'q yoki LMS uchun yashirilgan kitoblar bo'ladi. Ularni avtomatik o'chirmasdan o'qituvchiga ko'rsating: kutubxona yashirishni keyin bekor qilishi mumkin.
curl -H "Authorization: Bearer $ELIB_KEY" "https://elib.npuu.uz/api/lms/v1/books?ids=54410,52047,60787"
GET /books/{id}: to'liq ma'lumot
Qo'shimcha maydonlar: subtitle, contributors, publisher, place, edition, series, pages, language, udc, subjects, keywords, description. Topilmasa: 404.
curl -H "Authorization: Bearer $ELIB_KEY" "https://elib.npuu.uz/api/lms/v1/books/54410"
GET /item-types, GET /languages
Qidiruv filtrlari uchun ro'yxatlar. Material turlari Koha'dagi ro'yxatdan olinadi va kutubxona yangi tur qo'shsa o'zgaradi, shuning uchun kodlarni shu so'rovdan oling.
{"data": [{"code": "KITOB", "name": "Kitob"}, {"code": "DISS", "name": "Dissertatsiya va avtoreferat"}, …]}
{"data": [{"code": "uzb", "name": "O'zbek"}, {"code": "rus", "name": "Rus"}, {"code": "eng", "name": "Ingliz"}, …]}
Javob namunasi
{
"data": [
{
"id": 54410,
"title": "Umumiy pedagogika (pedagogika nazariyasi)",
"author": "Abdullayeva B. S.",
"year": 2022,
"isbn": "9789943646551",
"item_types": [
"KITOB"
],
"cover_url": null,
"copies": {
"total": 1,
"available": 1
},
"ebook": {
"available": true,
"paid": false,
"price": null,
"access_days": null
},
"links": {
"page": "https://elib.npuu.uz/books/54410",
"read": "https://elib.npuu.uz/auth/lms?redirect=%2Fread%2F54410"
}
}
],
"meta": {
"page": 1,
"per_page": 20,
"total": 1318,
"total_pages": 66
}
}
copies: kutubxonadagi bosma nusxalar, jami va hozir berish mumkin bo'lganlari.ebook.available: kitobning PDF'i elib o'quvchisida ochiladi;ebook.paidvaebook.price: LMS orqali kirgan talaba bu kitob uchun to'laydimi va qancha. Kutubxona kitobni LMS a'zolari uchun bepul qilgan bo'lsa,ebook.paidfalse bo'ladi.cover_url: elib'dagi muqova rasmi, kichik o'lchamda (/covers/{id}/thumb). Muqovasi yo'q kitoblardanull.links.page: kitobning elib sahifasi (bron qilish shu yerda).links.read: talaba bosganda LMS orqali avtomatik kiradi va kitob o'quvchisi ochiladi; elib'ga allaqachon kirgan talaba LMS'ga qayta yuborilmaydi. PDF bo'lmasanull.
Xatolar
{"error": {"code": "not_found", "message": "Kitob topilmadi"}}
401unauthorized404not_found422parametr noto'g'ri (Laravel formati:messagevaerrors)429chegaradan oshdi (Laravel formati:message,Retry-Aftersarlavhasi bilan)503unavailable: katalog vaqtincha javob bermayapti,Retry-Aftersarlavhasidagi soniyadan keyin qayta so'rang
Koha vaqtincha javob bermasa /books va /item-types so'rovlari 503 qaytaradi va qisman ro'yxat bermaydi. Bunda LMS'dagi ro'yxatni o'zgartirmang: oxirgi saqlangan ma'lumotni ko'rsating va keyinroq qayta so'rang.
Tavsiya etilgan integratsiya
- LMS'da fan uchun
course_literature (course_id, elib_book_id, kind)kabi jadval yuriting;kind: asosiy yoki qo'shimcha. - O'qituvchining tanlash oynasida
/books?q=…natijalarini ko'rsating va tanlanganid'ni saqlang. - Talaba sahifasida
/books?ids=…bilan ma'lumotlarni oling va 10–30 daqiqa keshlang (elib ham 10 daqiqa keshlaydi). - "O'qish" tugmasiga
links.read, "Batafsil" galinks.pageqo'ying. 503kelsa ro'yxatga tegmang va keshdagi ma'lumotni ko'rsating;meta.missingdagi kitoblarni o'qituvchiga "topilmadi" deb belgilang.