Ready to Learn?Ex Libris products all provide open APIs

Services page

Discovery system provides the UI for Alma Link Resolver services for searches that were initiated in an outside bibliographic database (such as EBSCO, Google Scholar, etc.). The result of these searches is a dedicated page called the Services Page. This page usually contains the bibliographic information of the resource, as well as a link to ‘view’ electronic version, and / or  ‘get’ a physical version.
The communication is done based on the OpenURL standard.

The following diagram illustrates the workflow:
Discovery system receives an OpenURL request from an outside bibliographic database (such as EBSCO, Google Scholar, etc.).
Typically, the OpenURL includes the following:
  • rfr_id – indication about the original source in which the resource was requested (e.g. google).
  • Context object – i.e. metadata identifying the record.
 
The Discovery system should pass the openURL request to Alma. The openURL that will be sent from the discovery system to Alma is called ”Request for Services OpenURL”. 
 

Request for services OpenURL

The following table describes the parameters that should be sent as part of the Request for Services OpenURL:
 
Parameter nameDescription
ctx_encinfo:ofi/enc:UTF-8
ctx_verZ39.88-2004
url_verZ39.88-2004
response_typexml
rfr_idThe original source – the rfr_id of the request from the outside bibliographic database (e.g. google)
sidThe original source – the rfr_id of the request from the outside bibliographic database (e.g. google)
user_ipIP of the user which originated the request
Context objectmetadata identifying the record, as received 
rft.mms_idThe specific MMS ID.
svc_datCTO
 
Example:
<base URL>?
svc_dat=CTO&
dscnt=1&
spage=1&
sid=google&
issue=1&
auinit=W&
atitle=Singular+hypersurfaces+and+thin+shells+in+general+relativity&
title=Il+Nuovo+cimento&
volume=44
 
Alma tries to find a matching record: If multiple titles are found Alma tries to dedup them. If there are multiple titles Alma selects “the best” match.
Alma will return an XML which includes:
  • Context object, including mms_id and other bibliographic information added by Alma.
  • full_text_indicator – true/false indication if full text exists.
  • Link which redirects to the actual resource (in a <resolution_url> field - supported from March 2017 release)
  • List of available_services:
viewit: in case electronic/digital services are available
getit: in case physical services are available
 
Example of the returned xml:
 
<uresolver_content xmlns="http://com/exlibris/urm/uresolver/xmlbeans/u">
  <context_object>
    <keys>
      <key id="full_text_indicator">true</key>
      <key id="available_services">viewit</key>
      <key id="available_services">getit</key>
      <key id="rft.auinit">W</key>
      <key id="rft.jtitle">Il Nuovo cimento.</key>
      <key id="rft.atitle">Singular hypersurfaces and thin shells</key>
      <key id="rft.spage">1</key>
      <key id="rft.epage">14</key>
      <key id="rft.object_type">JOURNAL</key>
      <key id="rft.mms_id">99122636890001021</key>
      <key id="rft.inventory_id">21378267430001021</key>
      <key id="rft.inventory_id">21378267270001021</key>
      <key id="rfr_id">google</key>
      <key id="inventory_id">21378267430001021</key>
      <key id="inventory_id">21378267270001021</key>
           ….
   </keys>
           …

  </context_object>
</uresolver_content>
 
The discovery system receives the returned XML and should display metadata information, and the relevant options - view it / get it / both - according to the available_services fields. Following is an example of services page:
 
 
Once user clicks on one of the viewit/getit options, an OpenURL call should be sent to Alma in order to request the specific service.

 

Request for specific service OpenURL

Request for specific service can be for:
  • View it: with parameter svc_dat=viewit
  • Get it: with parameter svc_dat=getit
 
The Request for specific service OpenURL should include all the keys which were returned from Alma as a response to the request for services OpenURL. In the above example:
<base URL>?
svc_dat=viewit& 
rft.auinit=W& 
rft.jtitle= Il Nuovo cimento& 
rft.atitle= Singular hypersurfaces and thin shells& 
rft.spage=1& 
rft.epage=14& 
rft.object_type= JOURNAL
& rft.mms_id=99122636890001021& 
rft.inventory_id=21378267430001021& 
rft.inventory_id=21378267270001021& 
rfr_id= google& 
inventory_id=21378267430001021& 

inventory_id=21378267270001021  

 

In order to receive viewit / getit HTML in specific language, the following parameter should be added to the Request for specific service OpenURL:  rft_dat = language=[language code]. Example: rft_dat=language=eng

In order to support multiple views, an institution can define multiple views in Alma, with different CSS. This is configured in Alma under Gerenal configuration - Delivery System Skins.
The appropriate view should be send as part of the Request for specific service OpenURL: req.skin=<skin code>
 
As a response to the specific service OpenURL, Alma will return HTML, representing the mashup of the requested service. The discovery system should display the returned mashup in an iFrame.
 

Note: some services might be allowed only to logged-in users. SSO between the discovery system and Alma will be based on SAML, and will be supported in few month.

Base URL

If you are a multi campus institution:
<Alma delivery domain>/view/uresolver/<institution_code>/openurl-<campus code>?
Else:
<Alma delivery domain>/view/uresolver/<institution_code>/openurl?

 

 

Important Note: The OpenURL integration is intended for integrating Alma with third party discovery systems. Using it for other workflows is not supported.