Specyfikacja dla serwera usług API

 

 

Serwer usług API służy do udostępnienia usług katalogu online systemu bibliotecznego portalowi e-usług bibliotecznych w.bibliotece.pl.

Dostęp do API jest chroniony, tj. aby portal mógł wywoływać zdalne procedury, dostawca API musi udostępnić operatorowi portalu dane niezbędne do autoryzacji w API (zob. struktura pakietów Request).

Komunikacja odbywa się przy pomocy protokołu HTTP (zalecane jest stosowanie szyfrowania i dostęp przez HTTPS) i wszystkie dane przekazywane są w strukturach JSON. Wywołania API wykonywane są zawsze przy pomocy metody POST. Portal w.bibliotece.pl, będący klientem API, wysyła pakiet Request, zawierający dane autoryzujące oraz zestaw komend z parametrami, jakie chce wykonać. W odpowiedzi dostaje pakiet Response, w którym zawarte są odpowiedzi na wszystkie żądane komendy.

Komendy podzielone są na następujące kategorie:

  • Komendy informacyjne
  • Komendy zarządzające kontem czytelnika

Struktury pakietów JSON

Podstawowy pakiet Request

 

Struktura pakietu Request
{
    "auth": [1,"<app-id>","<secret-key>","<cat-id@domain>"],
	"lang": "<lang-code>",
	"exec": [
		["<komenda>",[<args>],{<kwargs>}],
		["<komenda>",[<args>],{<kwargs>}],
		...
	]
}

auth - zestaw danych autoryzujących: 1 (metoda autoryzacji), identyfikator aplikacji, klucz dostępowy, identyfikator katalogu bibliotecznego (uwaga: jeśli zestaw danych autoryzujących ma być inny, należy uzgodnić identyfikator metody autoryzacji)

lang - język, w jakim spodziewana jest odpowiedź. Jest to opcjonalny atrybut pakietu Request, domyślna wartość to pl_PL. Dostępne języki zwraca komenda APIInfo (zob. dalej).

exec - Lista komend wraz z opcjonalnymi parametrami, które mają zostać wykonane. Jeśli komenda przyjmuje argumenty pozycyjne - wówczas posiada listę tych parametrów w [<args>], natomiast jeśli posługuje się dodatkowo argumentami nazwanymi - przekazuje je w obiekcie {<kwargs>}. W szczególności argumenty pozycyjne - jeśli określone dla komendy - są obowiązkowe, natomiast argumenty nazwane są zawsze opcjonalne.

Poniższy, przykładowy pakiet, zawiera wszystkie dopuszczalne kombinacje wywołań komend.

Przykładowy pakiet Request
{
	"auth": [1, "urn:uuid:19e5f51e-d34e-11e2-b3df-b8ac6fa3be47","Iug29KBkj2kpa2daIHRkm1nj","40020@lic867.sowa"],
	"exec": [
		["Command1",["Hello"],{"name": "Brian", "origin": "Nazareth", "age": 33}],
		["Command2",[1024, 768, 24]],
		["Command3",{"login": "brian00"}],
		["Command4"]
	]
}

W dokumentacji poszczególnych komend jako przykład będzie podawana struktura dla pojedynczej komendy (bez pozostałych elementów pakietu Request)

Podstawowy pakiet Response

Odpowiedź zawsze jest listą zawierającą dokładnie tyle elementów ile komend zostało przesłanych w pakiecie Request i każdy element tej listy jest rezultatem wykonania komendy zgodnie z jej pozycją w pakiecie Request. Rezultat jest obiektem JSON zawierającym co najmniej status wykonania komendy. W przypadku błędu dodatkowo zwracany jest message, zawierający komunikat dla użytkownika. Jeśli komenda zwraca dane (status 200), wówczas rezultat zawiera klucz data o strukturze zależnej od komendy.

Struktura pakietu Response
[
	{
    	"status": 200,
		"message": "<optional-error-messsage>",
		"data": <command-specific>
	},
	...
]

status - status wykonania komendy. Może on przyjąć wartości:
200 - komenda zakończona sukcesem, odpowiedź dostępna w data
204 - komenda zakończona sukcesem, ale nie zwraca żadnej odpowiedzi
400 - błąd: niepoprawne wywołanie komendy (niepoprawne argumenty lub brak wymaganych argumentów)
401 - błąd: niepoprawne dane autoryzujące klienta API
402 - błąd: dostęp klienta do API został zablokowany
403 - błąd: brak uprawnień do wykonania operacji lub parametry komendy wskazują na obiekty, do których klient nie ma uprawnień
404 - błąd: parametry komendy wskazują na obiekty, które nie istnieją
405 - błąd: komenda nie istnieje
409 - błąd: konflikt (znaczenie zależy od komendy zwracającej ten status)
500 - błąd: wewnętrzny błąd aplikacji

message - w przypadku błędu zawiera tekstowy komunikat dla użytkownika.

data - dowolna struktura, wypełniana w przypadku odpowiedzi o statusie 200.

 

W dokumentacji poszczególnych komend jako przykład odpowiedzi będzie podawana wyłącznie struktura z pola data.

Komendy informacyjne

Pobranie informacji o API

Zwraca podstawowe informacje o API oraz dostępnych komendach.

Nazwa komendyAPIInfo
Argumenty pozycyjnebrak
Argumenty nazwanebrak
Przykład wywołania komendy APIInfo
[
	"APIInfo"
]

Odpowiedź przesyłana jest jako obiekt JSON. Klucze w obiekcie są następujące:

KluczTypOpis
namestring

nazwa i wersja systemu bibliotecznego

versionstring

wersja API (powinno mieć wartość: 3.0)

languagesarraylista dostępnych języków
validtostringdata ważności klucza do API w formacie YYYY-MM-DDThh:mm:ssZ
commandsarraylista komend dostępnych przez API dla aplikacji
Przykład rezultatu komendy APIInfo
{
	"name": "SOWA2/MARC21",
	"version": "3.0",
	"validto": "2014-06-01T00:00:00Z",
	"languages": ["pl_PL", "en_GB"],
	"commands": ["APIInfo","CatalogueInfo","BookingRequest"]
} 

Pobranie informacji o katalogu bibliotecznym

Za pomocą tej komendy portal może pobrać podstawowe informacje o katalogu i dostępnych w nim usługach dodatkowych:

Nazwa komendyCatalogueInfo
Argumenty pozycyjnebrak
Argumenty nazwanebrak
Przykład wywołania komendy CatalogueInfo
[
	"CatalogueInfo"
]

Odpowiedź przesyłana jest jako obiekt JSON. Klucze w obiekcie są następujące:

KluczTypOpis
namestring

nazwa skrócona katalogu

urlstring

URL do katalogu

circulationboolokreśla, czy katalog obsługuje udostępnianie zbiorów (np. wypożyczanie)
authenticationbool

określa, czy katalog obsługuje logowanie do konta czytelnika

registrationbool

określa, czy katalog pozwala na automatyczną rejestrację nowych kont

bookingbool

określa, czy katalog zezwala na zdalne zamawianie/rezerwowanie materiałów przez czytelników

linksobject

Obiekt z wzorcami linków do konkretnych usług katalogu. W szczególności:

record - wzorzec linku do wyświetlenia rekordu o znanym rec_id
login
- (opcjonalnie) wzorzec linku do automatycznego logowania na powiązane konto czytelnika

patron_mdbstring

Identyfikator rejestru czytelników (różne katalogi mogą korzystać z tego samego rejestru)

Przykład rezultatu komendy CatalogueInfo
{
	"name": "Katalog księgozbioru",
	"url": "http://biblioteka-mbp.sowwwa.pl/sowacgi.php?KatID=5",
	"circulation": true,
	"authentication": true,
	"registration": false,
	"booking": true,
	"links": {
		"record": "http://biblioteka-mbp.sowwwa.pl/sowacgi.php?KatID=5&typ=record&id={{ rec_id }}",
        "login": "http://biblioteka-mbp.sowwwa.pl/sowacgi.php?KatID=5&typ=acc&eauth={{ url }}"
    },
	"patron_mdb": "e60483a4-800f-4afa-927e-bef6d8b636e3"
}

Pobranie informacji o miejscach udostępniania zbiorów

Jeśli katalog biblioteczny obsługuje udostępnianie zbiorów, niniejszą komendą informuje jakie są miejsca udostępniania (tzw. agendy).

Nazwa komendyCirculationInfo
Argumenty pozycyjne

brak

Argumenty nazwanebrak
Przykład wywołania komendy CirculationInfo
[
	"CirculationInfo"
]

Odpowiedź przesyłana jest jako tablica obiektów JSON zawierających informacje o miejscach udostępniania. Klucze w obiekcie są następujące:

KluczTypOpis
circ_idstring

identyfikator miejsca udostępniania (tzw. identyfikator agendy)

namestring

nazwa miejsca udostępniania (np. nazwa filii, nazwa wypożyczalni lub czytelni)

lendingbool

określa czy w danym miejscu biblioteka wypożycza materiały (np. czytelnia może udostępniać materiały tylko na miejscu)

bookingbool

określa czy udostępnione materiały są dostępne do zdalnej rezerwacji/zamawiania

Przykład rezultatu komendy CirculationInfo
[
	{
		"circ_id": "2",
		"name": "Filia nr 2",
		"lending": true,
		"booking": true
	},
	{
		"circ_id": "3",
		"name": "Filia nr 3",
		"lending": true,
		"booking": false
	},
	{
		"circ_id": "20",
		"name': "Czytelnia dla dorosłych",
		"lending": false,
		"booking": false
	}
]

Pobranie informacji o polach niezbędnych do rejestracji nowego konta czytelnika

Jeśli katalog biblioteczny obsługuje automatyczną rejestrację nowych kont, niniejszą komendą można pobrać listę pól, jakie użytkownik musi wypełnić podczas rejestracji.

Nazwa komendyRegistrationInfo
Argumenty pozycyjne

brak

Argumenty nazwanebrak
Przykład wywołania komendy RegistrationInfo
[
	"RegistrationInfo"
]

Odpowiedź przesyłana jest jako tablica obiektów JSON zawierających informacje o polach przeznaczonych do procesu rejestracji.

KluczTypOpis
fld_idstring

identyfikator pola

namestring

nazwa wyświetlana pola

requiredbool

określa czy wypełnienie pola jest obowiązkowe

validationstring

(opcjonalnie) określa regułę walidacji poprawności pola (Perl-style regular expression)

Przykład rezultatu komendy RegistrationInfo
[
	{"fld_id": "surname", "name": "Nazwisko", "required": true},
	{"fld_id": "firstname", "name": "Imię", "required": true},
	{"fld_id": "email", "name": "Adres poczty elektronicznej", "required": true},
	{"fld_id": "pesel", "name": "Numer PESEL", "required": true, "validation": "^\\d{11}$"},
	{"fld_id": "idcard", "name": "Seria i numer dowodu", "required": false},
	{"fld_id": "phone", "name": "Numer telefonu", "required": false}
]

 

Komendy zarządzające kontem czytelnika

Sprawdzenie czy istnieje konto czytelnika w OPAC

Zanim portal zacznie próbować sugerować połączenie, albo utworzenie konta czytelnika w OPAC, sprawdza czy jest w OPAC zarejestrowane konto czytelnika na wybrany adres e-mail.

Nazwa komendyAccountCheck
Argumenty pozycyjne
  • (string) adres e-mail
Argumenty nazwanebrak
Przykład wywołania komendy AccountCheck
[
	"AccountCheck",
	["michal@fmail.com"]
]

Jeśli konto czytelnika na dany adres email zostanie znalezione, zwracana jest prosta informacja w postaci obiektu JSON:

KluczTypOpis
user_idstring

identyfikator użytkownika w systemie bibliotecznym (UWAGA: to nie jest login użytkownika!)

labelstring

Etykieta powiązania (do ewentualnej prezentacji wielu powiązań tego samego konta)

remote_idstring(opcjonalnie) Jeśli to konto jest już powiązane z portalem, zwracany jest id użytkownika, z którym jest zapisane powiązanie
Przykład rezultatu komendy AccountCheck
{
	"user_id": "O5",
	"label": "Michał",
	"remote_id": "szu"
}

W przypadku, gdy nie ma konta czytelnika dla danego adres e-mail, operacja zwróci status 404.

Powiązanie konta użytkownika portalu z istniejącym kontem czytelnika w OPAC

Użytkownik z poziomu portalu może powiązać swoje konto z kontem czytelnika w katalogu bibliotecznym. Operacja powiązania konta umożliwia portalowi wykonywanie dalszych operacji na koncie czytelnika bez konieczności każdorazowego wpisywania hasła. Wprowadzenie hasła do konta czytelnika konieczne jest tylko w momencie jednorazowej operacji powiązania kont w obu systemach.

Nazwa komendyAccountLink
Argumenty pozycyjne
  • (string) identyfikator logowania do konta czytelnika (np. email, pesel, nr karty bibliotecznej)
  • (string) hasło do konta czytelnika
  • (string) adres e-mail - kontrolnie
  • (string) identyfikator konta w systemie zewnętrznym
  • (string) klucz do API portalu
Argumenty nazwaneavatar - URL do awatara użytkownika w portalu
Przykład wywołania komendy AccountLink
[
	"AccountLink",
	["89102013813","m0iet@jn3#a$lO","michal@fmail.com","szu","33928575c9cd4f99945a5866bb501836"]
]

Odpowiedź w przypadku poprawnego powiązania kont to obiekt JSON o podanych kluczach:

KluczTypOpis
user_idstring

identyfikator użytkownika w systemie bibliotecznym (UWAGA: to nie jest login użytkownika!)

keystringklucz do zarządzania kontem użytkownika w systemie bibliotecznym (UWAGA: to nie jest jego hasło!)
labelstring

Etykieta powiązania (do ewentualnej prezentacji wielu powiązań tego samego konta)

Przykład rezultatu komendy AccountLink
{
	"user_id": "O5",
	"key": "19_0a5fb4e968264b8f66a345a77bcc30de8520d9fb4a2cc26188d3d259d1008318",
	"label": "Michał"
}

Skasowanie powiązania konta w portalu z kontem czytelnika w OPAC

Konto w portalu, powiązane z kontem w OPAC, może zostać odłączone po wykonaniu tej operacji. Opcjonalny parametr password pozwala na wykonanie operacji odlinkowania w przypadku, gdy z jakiegoś powodu zapamiętany klucz obcy jest nieprawidłowy.

Nazwa komendyAccountUnlink
Argumenty pozycyjne
  • (string) identyfikator użytkownika w systemie bibliotecznym
  • (string) klucz przypisany użytkownikowi przy parowaniu kont
Argumenty nazwanepassword - hasło do konta czytelnika w OPACu
Przykład wywołania komendy AccountUnlink
[
	"AccountUnlink",
	["O5","19_0a5fb4e968264b8f66a345a77bcc30de8520d9fb4a2cc26188d3d259d1008318"],
]

Poprawne wykonanie operacji zwróci status 204. W przypadku błędu klucza lub hasła - zwróci 403. W przypadku gdy dane konto nie jest powiązane - 404.

Utworzenie nowego konta czytelnika w OPAC

Użytkownik z poziomu portalu będzie mógł automatycznie utworzyć sobie konto czytelnika w OPAC o ile ten oferuje taką usługę (zob. CatalogueInfo) i automatycznie powiązać go z kontem portalu.

Do utworzenia konta w OPAC niezbędne jest podanie danych osobowych czytelnika. Zestaw pól dostępnych zwraca komenda RegistrationInfo. Użytkownik nie tworzy swojego hasła do konta czytelnika. System biblioteczny automatycznie nadaje losowe hasło i wysyła je użytkownikowi po skutecznej rejestracji na podany adres e-mail.

UWAGA: konto czytelnika w bibliotece może nie umożliwiać od razu wszystkich opcji (np. rezerwowania książek) do czasu potwierdzenia rejestracji przez bibliotekarza. Jest to zależne od regulaminu konkretnej biblioteki.

Nazwa komendyAccountCreate
Argumenty pozycyjne
  • (object) obiekt o kluczach zgodnych z RegistrationInfo
  • (string) adres e-mail - kontrolowany
  • (string) identyfikator konta w portalu
  • (string) klucz do API portalu
Argumenty nazwaneavatar - URL do awatara użytkownika w portalu
Przykład wywołania komendy AcountCreate
[
	"AccountCreate",
	[
		{
			"surname": "Testowski", 
			"firstname": "Michał",
			"email": "michal@fmail.com",
			"pesel": "89102013813"
		},
		"michal@fmail.com",
		"szu",
		"33928575c9cd4f99945a5866bb501836"
	],
	{ "avatar": "http://s.w.bibliotece.pl/static/gen/avatars/szu/m0.png" }
]

Może dziwić w przykładzie podwójne przekazanie adresu e-mail. Jest to konsekwencja zwrócenia przez komendę RegistrationInfo pola email jako obowiązkowego (tak było w przykładzie). Niezależnie od tego, że komenda AccountCreate wymaga podania emaila jako argumentu pozycyjnego. W praktyce RegistrationInfo nie powinno jednak wymagać adresu email (bo jest on i tak obowiązkowym polem przy AccountCreate).

Odpowiedź w przypadku poprawnego utworzenia i powiązania kont to obiekt JSON o podanych kluczach:

KluczTypOpis
user_idstring

identyfikator użytkownika w systemie bibliotecznym (UWAGA: to nie jest login użytkownika!)

keystringklucz do zarządzania kontem użytkownika w systemie bibliotecznym (UWAGA: to nie jest jego hasło!)
labelstring

Etykieta powiązania (do ewentualnej prezentacji wielu powiązań tego samego konta)

Przykład rezultatu komendy AccountCreate
{
	"user_id": "O5",
	"key": "19_0a5fb4e968264b8f66a345a77bcc30de8520d9fb4a2cc26188d3d259d1008318",
	"label": "Michał"
}

 

Odpowiedź w przypadku błędu (np. podane dane podczas rejestracji wskazują na istniejące już wcześniej konto czytelnika) będzie generować status 409.

Odpowiedź o niepoprawnym parowaniu
{
	"status": 409,
	"message": "Adres e-mail jest już przypisany do istniejącego konta czytelnika."
}

Zarezerwowanie książki przez użytkownika

Operacja próbuje zarezerwować dla użytkownika egzemplarz przypisany do danego rekordu. Opcjonalnie można podać identyfikator miejsca udostępniania (agendy) - wówczas pod uwagę będą brane tylko egzemplarze dostępne w wybranej agendzie.

Jeśli jest jakikolwiek dostępny egzemplarz, wówczas zostanie on dla czytelnika zarezerwowany. Jeśli wszystkie są aktualnie wypożyczone, czytelnik zostanie zapisany na listę oczekujących (chyba że atrybut nazwany nowait tego zabrania). Jeśli nie ma w ogóle udostępnionych egzemplarzy lub nie są one dostępne w wybranej agendzie, wówczas operacja się nie powiedzie.

Nazwa komendyBookingRequest
Argumenty pozycyjne
  • (string) identyfikator użytkownika w systemie bibliotecznym
  • (string) klucz przypisany użytkownikowi przy parowaniu kont
  • (string) identyfikator rekordu
Argumenty nazwane

circ_id - identyfikator miejsca udostępniania (agendy)

nowait - (bool) jeśli podany, określa czy czytelnika interesują tylko książki dostępne do wypożyczenia (podanie wartości True powoduje, że czytelnik NIE zostanie zapisany na listę oczekujących w przypadku gdy wszystkie egzemplarze są wypożyczone).

Przykład wywołania komendy BookingRequest
[
	"BookingRequest",
	["O5","19_0a5fb4e968264b8f66a345a77bcc30de8520d9fb4a2cc26188d3d259d1008318","U4551/0"],
	{"circ_id": "0"}
]

 

Odpowiedź w przypadku poprawnego wykonania operacji to obiekt JSON o następujących kluczach:

KluczTypOpis
ordernumber

Miejsce na liście oczekujących. Jeśli wartość ta wynosi 0, znaczy że czytelnik może odebrać rezerwację w bibliotece.

validtostringO ile order jest większy niż 0 - data ważności rezerwacji (po tej dacie czytelnik usuwany jest z listy oczekujących) w formacie YYYY-MM-DDThh:mm:ssZ
circ_idstring

Identyfikator agendy w której dokonano rezerwacji

Przykład rezultatu komendy BookingRequest
{
	"order": 2,
	"validto": "2013-06-30T23:59:59Z",
	"circ_id": "0"
}

Odpowiedź w przypadku braku udostępnionych egzemplarzy w ogóle (lub w żądanej agendzie) zwróci status 409 wraz ze stosownym komunikatem o braku dostępności.

Anulowanie rezerwacji przez użytkownika

Odwrotność komendy BookingRequest - anuluje wcześniej dokonaną rezerwację książki. Jeśli ten sam identyfikator rekordu książki dotyczy więcej niż jednej rezerwacji (np. czytelnik zarezerwował tą samą książkę w różnych miejscach), podanie identyfikatora miejsca udostępniania jest konieczne.

Nazwa komendy

BookingCancel

Argumenty pozycyjne
  • (string) identyfikator użytkownika w systemie bibliotecznym
  • (string) klucz przypisany użytkownikowi przy parowaniu kont
  • (string) identyfikator rekordu
Argumenty nazwanecirc_id - identyfikator miejsca udostępniania (agendy)
Przykład wywołania komendy BookingCancel
[
	"BookingCancel",
	["O5","19_0a5fb4e968264b8f66a345a77bcc30de8520d9fb4a2cc26188d3d259d1008318","U4551/0"],
	{"circ_id": "0"}
]

Odpowiedź w przypadku poprawnego anulowania rezerwacji zwraca status 204. Jeśli anulowanie się nie powiedzie (np. rezerwacja została już potwierdzona do odbioru przez bibliotekarza), zwrócony zostanie status 409.

Przedłużenie ważności wypożyczenia lub zamówienia

W przypadku książki już wypożyczonej - polecenie pozwala na prolongatę terminu zwrotu. W przypadku gdy czytelnik dopiero oczekuje na książkę - pozwala przedłużyć termin ważności zamówienia (o ile jest taka konieczność - zob. AccountStatus).

Z uwagi na to, że w każdej bibliotece może funkcjonować inny regulamin dotyczący przedłużania tych terminów (od limitów na liczbę operacji, aż do całkowitego braku takiej możliwości włącznie) polecenie musi zwracać czytelny i jasny komunikat o powodach odmowy prolongaty.

Nazwa komendy

BookingProlong

Argumenty pozycyjne
  • (string) identyfikator użytkownika w systemie bibliotecznym
  • (string) klucz przypisany użytkownikowi przy parowaniu kont
  • (string) identyfikator rekordu
Argumenty nazwane

validto - proponowana data przedłużenie ważności wypożyczenia lub zamówienia w formacie YYYY-MM-DD

circ_id - identyfikator miejsca udostępniania (agendy)

Przykład wywołania komendy BookingProlong
[
	"BookingProlong",
	["O5","19_0a5fb4e968264b8f66a345a77bcc30de8520d9fb4a2cc26188d3d259d1008318","U4551/0"],
	{"validto": "2013-07-30"}
]

 

Odpowiedź w przypadku poprawnego wykonania operacji to obiekt JSON o następujących kluczach:

KluczTypOpis
validtostringNowa data ważności dla wypożyczenia / zamówienia. Może ona być różna od zażądanej przez czytelnika, w zależności od regulaminu biblioteki. (format YYYY-MM-DD)
Przykład rezultatu komendy BookingProlong
{
	"validto": "2013-07-30"
}

Odpowiedź w przypadku braku możliwości wykonania prolongaty zwróci status 409 wraz ze stosownym komunikatem o przyczynie odmowy.

Pobranie aktualnego stanu konta czytelnika

Jako "stan aktualny" należy rozumieć listę rekordów, które czytelnik ma aktualnie wypożyczone lub je zarezerwował. Pobierana jest także ewentualna informacja o blokadzie konta czytelnika.

Nazwa komendy

AccountStatus

Argumenty pozycyjne
  • (string) identyfikator użytkownika w systemie bibliotecznym
  • (string) klucz przypisany użytkownikowi przy parowaniu kont
Argumenty nazwanebrak
Przykład wywołania komendy AccountStatus
[
	"AccountStatus",
	['O5','19_0a5fb4e968264b8f66a345a77bcc30de8520d9fb4a2cc26188d3d259d1008318']
]

Odpowiedź jest obiektem JSON o następujących kluczach:

KluczTypOpis
loanedarray

Tablica obiektów reprezentujących książki wypożyczone, o kluczach:

rec_id - (string) identyfikator rekordu
ipub_id - (string) opcjonalnie identyfikator rekordu w portalu (jeśli system biblioteczny go nie zna, zwraca pusty łańcuch)
date - (string) data wypożyczenia w formacie YYYY-MM-DD
validto - (string) data do kiedy jest wypożyczona książka w formacie YYYY-MM-DD
circ_id - (string) identyfikator miejsca udostępniania (agendy)

bookedarray

Tablica obiektów reprezentujących książki zarezerwowane, o kluczach:

rec_id - (string) identyfikator rekordu
ipub_id - (string) opcjonalnie identyfikator rekordu w portalu (jeśli system biblioteczny go nie zna, zwraca pusty łańcuch)
date - (string) data rezerwacji YYYY-MM-DDThh:mm:ssZ
validto - (string) data do kiedy rezerwacja jest ważna w formacie YYYY-MM-DD - dopuszczalna jest wartość pusta lub NULL, gdy data ważności jest nieokreślona
circ_id - (string) identyfikator miejsca udostępniania (agendy)
order - (number) miejsce na kolejce oczekujących (0 oznacza, że książka jest zwrócona do biblioteki)
ready - (bool) dla przypadku, gdy order==0 - określa czy książka jest gotowa "do obioru" [klucz opcjonalny]

validfromstringdata utworzenia konta w formacie YYYY-MM-DD
validtostringdata ważności konta w formacie YYYY-MM-DD
confirmedboolczy konto zostało potwierdzone w bibliotece
blockedstring

(opcjonalnie) Jeśli konto jest zablokowane, wówczas powód blokady jest zwracany w tym kluczu.

UWAGA: konto zablokowane nie może wykonywać żadnych operacji rezerwacji (warning)

Przykład rezultatu komendy AccountStatus
{
	"loaned": [
		{
			"rec_id": "U1",
			"ipub_id": "c5d721cbc3664fa4ab8938310415e056",
			"date": "2013-06-30",
			"validto": "2013-07-30",
			"circ_id": "0"
		}
	],
	"booked": [
		{
			"rec_id": "U2",
			"date": "2013-06-15T12:00:00Z",
			"validto": "2013-07-15",
			"circ_id": "20",
			"order": 1
		}
	],
	"blocked": "Nie zapłacono kary za przetrzymanie książek"
}

Pobranie historii wypożyczeń dla konta czytelnika

Zwracana jest historia wypożyczeń czytelnika - na życzenie tylko lista pozycji PO określonej dacie.

Nazwa komendy

AccountHistory

Argumenty pozycyjne
  • (string) identyfikator użytkownika w systemie bibliotecznym
  • (string) klucz przypisany użytkownikowi przy parowaniu kont
Argumenty nazwaneafter - data w formacie YYYY-MM-DD - zwrócone zostaną tylko pozycje zwrócone PO podanej dacie.
Przykład wywołania komendy AccountHistory
[
	"AccountHistory",
	["O5","19_0a5fb4e968264b8f66a345a77bcc30de8520d9fb4a2cc26188d3d259d1008318"],
	{"after": "2013-01-01"}
]

Odpowiedź jest listą obiektów JSON o następujących kluczach:

KluczTypOpis
rec_idstring

identyfikator rekordu

ipub_idarray

(opcjonalnie) opcjonalnie identyfikator rekordu w portalu (jeśli system biblioteczny go nie zna, zwraca pusty łańcuch)

datestringdata wypożyczenia w formacie YYYY-MM-DD
returnedstring

data zwrotu w formacie YYYY-MM-DD

circ_idstring(opcjonalnie) identyfikator miejsca udostępniania (agendy) - jeśli jest znany
Przykład rezultatu komendy AccountHistory
[
	{
		"rec_id": "U1",
		"ipub_id": "c5d721cbc3664fa4ab8938310415e056",
		"date": "2013-01-01",
		"returned": "2013-06-01",
		"circ_id": "0"
	},
	...
]

Pobranie jednorazowego URL do konta czytelnika w OPAC

Polecenie służy do pobrania z systemu bibliotecznego jednorazowego adresu URL, który pozwala na otwarcie w przeglądarce katalogu OPAC już zalogowanego do konta czytelnika.

Nazwa komendyAccountURL
Argumenty pozycyjne
  • (string) identyfikator użytkownika w systemie bibliotecznym
  • (string) klucz przypisany użytkownikowi przy parowaniu kont
Argumenty nazwane(brak)
Przykład wywołania komendy AccountURL
[
	"AccountURL",
	["O5","19_0a5fb4e968264b8f66a345a77bcc30de8520d9fb4a2cc26188d3d259d1008318"]
]

 

Odpowiedzią jest obiekt JSON: adres URL, dzięki któremu czytelnik może otworzyć swoje konto bez wpisywania hasła.

KluczTypOpis
urlstringadres URL, dzięki któremu czytelnik może otworzyć swoje konto bez wpisywania hasła
iframeboolczy strona pozwala na zagnieżdżanie w IFRAME (jeśli nie ma technicznych przeszkód, należy zwracać True)
Przykład rezultatu komendy AccountURL
{
	"url": "http://biblioteka-mbp.sowwwa.pl/sowacgi.php?KatID=5&typ=acc&key=6624fa17c1b34aedb49e8dcdb40bcad0",
	"iframe": true
}