Interoperability Between Aleph and Primo: Aleph Restful APIs Yoel Kortick IGeLU Conference Ex Libris Systems Seminar Haifa, Israel, 2011
Table of contents Content Slides Introduction 3-4 EL Commons and the APIs 5-6 Functions vs. resources 7-8 jboss and jlog 9 Retrieval of record item 10-12 Bibliographic information 13 Retrieval of patron information 14-18 Retrieval of circulation actions 19-22 Viewing the jboss logs and comparing to Primo 23-32 Changing the item display text in Primo 33-38 Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Introduction To see a full list of the Aleph Restful APIs: http://www.exlibrisgroup.org/display/AlephOI/RESTful+APIs An introduction to the Aleph Restful APIs (including Jboss configuration) may be found at: http://www.exlibrisgroup.org/display/AlephOI/*Introduction+to+Aleph+RESTful+API Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Introduction This presentation will not attempt to restate what is already in the previously mentioned documents. It will instead show actual examples via a standard URL, with a stress on the Restful API syntax. The presentation is designed to be an accompaniment to a real live lecture. Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Documentation Via EL Commons Begin with the EL Commons CodeShare Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Via EL Commons One way to arrive to information about the RESTful APIs is to choose Aleph > Open Interfaces from within CodeShare Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Functions and Resources The list of RESTful APIs contains both “functions” and “resources”. In general, verbs are “functions” and nouns are “resources”. Thus: “bookings” is a “resource” and has a corresponding URL: http://il-aleph07:1893/rest-dlf/patron/00000036/circulationActions/requests/bookings “holds” is a “resource” and has a corresponding URL: http://il-aleph07:1893/rest-dlf/patron/00000036/circulationActions/requests/holds Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Functions and Resources “Renew Loan” is a function. It is activated, for example, when a patron renews his loans from Primo This presentation deals only with resources Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Jboss and jlog For the APIs to work the jboss must be running. There is information regarding jboss configuration on EL commons at http://www.exlibrisgroup.org/display/AlephOI/*Introduction+to+Aleph+RESTful+API The jboss log files are in the jlog directory yoelk@il-aleph07(a20_3):...default/log>alias jlog cd $aleph_dev/ng/aleph/home/system/thirdparty/openserver/server/default/log Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Record items http://il-aleph07.corp.exlibrisgroup.com:1893/rest-dlf/record/USM01000052405/items This URL shows the items related to a particular record Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Record items If we remove the /items at the end of the URL … http://il-aleph07.corp.exlibrisgroup.com:1893/rest-dlf/record/USM01000052405/items http://il-aleph07.corp.exlibrisgroup.com:1893/rest-dlf/record/USM01000052405 Then we get a list of the possible additional URLs which may be used for the API. In this case the possibilities are “items” and “holdings” (as we see in the next slide) Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Record items Possibilities to use with the “record” parameter Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach Possibilities to use with the “record” parameter
Bibliographic information If we remove use the ?view=full option then we can see the record in xml format http://il-aleph07.corp.exlibrisgroup.com:1893/rest-dlf/record/USM01000052405?view=full Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
patron patronInformation address http://il-aleph07.corp.exlibrisgroup.com:1893/rest-dlf/patron/313972002/patronInformation/address This URL shows the address of the patron Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
patron If the URL is changed so that only “patron” and the “patron ID appear” (patronInformation is removed) … http://il-aleph07.corp.exlibrisgroup.com:1893/rest-dlf/patron/313972002/patronInformation/address http://il-aleph07.corp.exlibrisgroup.com:1893/rest-dlf/patron/313972002/ Then a list of all possible options to use with “patron” will appear (as we see on the next slide) Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
patron Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach We see here four possible options which may be used with “patron”
patron Each of the four options on the previous slide also may have additional options. For example the third option http://il-aleph07.corp.exlibrisgroup.com:1893/rest-dlf/patron/313972002/patronStatus/ gives two additional options: blocks and registration Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach Option one Option two
Patron patronStatus blocks Here we are using patron, patronStatus and Blocks Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
circulationActions cash http://il-aleph07.corp.exlibrisgroup.com:1893/rest-dlf/patron/313972002/circulationActions/cash?institution=USM50 This URL shows cash transactions of the patron Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
circulationActions cash Note that the results also include a link to each specific cash transaction Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
circulationActions If we remove the /cash from the URL … http://il-aleph07.corp.exlibrisgroup.com:1893/rest-dlf/patron/313972002/circulationActions/cash?institution=USM50 http://il-aleph07.corp.exlibrisgroup.com:1893/rest-dlf/patron/313972002/circulationActions?institution=USM50 Then we will get a list of links to the possible options which may be used with circulationActions Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Options with circulationActions Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach Links to the three options which may be used with circulationActions
Viewing DLFs in the jboss log It is also possible to view the DLFs used by Primo by looking in the jboss log. The jboss log is in directory “$aleph_dev/ng/aleph/home/system/thirdparty/openserver/server/default/log” An alias “jlog” exists to this directory aleph@exlwa-20-1(a20_1):~...alephe/scratch>pwd /exlibris/aleph/u20_1/alephe/scratch aleph@exlwa-20-1(a20_1):~...alephe/scratch>jlog aleph@exlwa-20-1(a20_1):~...default/log>pwd /exlibris/aleph/a20_1/ng/aleph/home/system/thirdparty/openserver/server/default/log_w1 aleph@exlwa-20-1(a20_1):~...default/log>alias jlog cd $aleph_dev/ng/aleph/home/system/thirdparty/openserver/server/default/log aleph@exlwa-20-1(a20_1):~...default/log> Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Viewing DLFs in the jboss log The log file is called: “localhost_access_log.YYYY-MM-DD.log” Each day it automatically is renewed aleph@exlwa-20-1(a20_1):~...default/log>ls -lrt localhost_access_log.2011* -rw-r--r-- 1 aleph exlibris 55995 Jun 13 23:45 localhost_access_log.2011-06-13.log -rw-r--r-- 1 aleph exlibris 46180 Jun 14 23:45 localhost_access_log.2011-06-14.log -rw-r--r-- 1 aleph exlibris 39280 Jun 15 23:55 localhost_access_log.2011-06-15.log -rw-r--r-- 1 aleph exlibris 3406 Jun 16 06:42 localhost_access_log.2011-06-16.log aleph@exlwa-20-1(a20_1):~...default/log> Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Viewing DLFs in the jboss log Let’s say for example that I am viewing records in Primo and click “locations” on one of the records… Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Viewing DLFs in the jboss log I will see this in Primo Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Viewing DLFs in the jboss log And I will see this in the jboss log 199.117.46.180 - - [16/Jun/2011:07:20:44 +0200] "GET /rest-dlf/record/EMY01000100593/items?noItems=100&lang=eng&view=full&patron=&volume=&year=&sublibrary= HTTP/1.1" 200 4271 This URL can then be used to see the raw xml that was sent to Primo Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Viewing DLFs in the jboss log For example: http://yezreelac.exlibris.co.il:1891/rest-dlf/record/EMY01000100593/items?noItems=100&lang=eng&view=full&patron=&volume=&year=&sublibrary= Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Viewing DLFs in the jboss log The XML from Aleph and the display in Primo XML Sent from Aleph Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach Appearance in Primo
Viewing DLFs in the jboss log Now a reader who is logged in to Primo clicks “My Account” and then “Loans” Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Viewing DLFs in the jboss log The following appears in the jboss log 199.117.46.180 - - [16/Jun/2011:07:41:13 +0200] "GET /rest-dlf/patron/313972002/circulationActions/loans?lang=eng&view=brief&type=active&institution=&no_loans= HTTP/1.1" 200 3815 This URL: http://yezreelac.exlibris.co.il:1891/rest-dlf/patron/313972002/circulationActions/loans?lang=eng&view=brief&type=active&institution=&no_loans= Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach Will bring the data on the list of loans
Viewing DLFs in the jboss log XML Sent from Aleph Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach Appearance in Primo
Using tab_www_item_desc.eng We will now use the table $data_tab/tab_www_item_desc.eng to change the display text of particular item information in Primo We are not changing actual data, only display information. For example a library may want a certain status to be called “Two weeks” but in Primo they may want to call it “14 days”. Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Using tab_www_item_desc.eng Here the status is “Two Weeks” in Primo Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Using tab_www_item_desc.eng It comes from here in the xml sent from Aleph Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Using tab_www_item_desc.eng Now in Primo instead of “Two weeks” it states “14 days” Previously it stated “Two weeks” Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Using tab_www_item_desc.eng The XML has not changed, it still states “Two weeks” Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach
Using tab_www_item_desc.eng The reason it appears differently in Primo than it does in the XML is because in ADM library table $data_tab/tab_www_item_desc.eng we have translated “Two weeks” to “14 Days” ! 1 2 3 !!!!!!!!!!!!!!!-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ITEM-STATUS Two weeks 14 Days Unlike our competitors, we did not release a new revolutionized system every few years but rather took the evolutionary approach For more information see the table header
Thank You Yoel.Kortick@exlibrisgroup.com