How We Build our Documentation Using OpenAPI
Earlier this year, we announced our support for OpenAPI in the Alma APIs. This support powers our API Console, enables you to leverage the growing number of tools which support Open API, and can be used as a starting point to build client SDKs. In this blog post, we’ll look at how we use our…
Implement a geo-search widget in Primo
Some institutions maintain records in their catalog which are related to a specific geographic location. Records which represent images, manuscripts, or other material which was either composed in or is pertaining to a location is perhaps best displayed on a map. The Primo customization framework allows us to add a widget which shows the relevant…
Using jq to Manipulate JSON in the Shell
Alma APIs support XML and JSON for both the request and response payloads. The choice between these formats is left to the preference of the institution or individual programmer. Sometimes the choice of language or platform informs the choice of format, as in the natural fit between Node.js and JSON. Most environments offer tooling which…
Using a simple proxy to add CORS support to Ex Libris APIs
Browser security prevents HTTP requests from being made between domains. This "same-origin policy" prevents sensitive information from being revealed to an untrusted party. However, the policy makes it challenging to build JavaScript-based web applications, where AJAX requests are made to a server to retrieve data and display it on the web page. If we want…
Automating Full text Extraction in the Alma Digital Repository
Alma recently added support for full text extraction from image files. The resulting text is stored with the file and can be accessed via the file list in the representation resource editor. In addition, the full-text can be searched in the Book Reader viewer. Full-text can be extracted using the “Extract Fulltext” job. In the…
Building Client SDKs with Swagger Codegen
In recent blog posts, we discussed newly-announced support for the OpenAPI standard for Alma APIs. Another benefit of OpenAPI is the ability to generate client class libraries or server stubs for testing. For many developers, “thin” clients for calling REST APIs are sufficient for their needs. A “thin” client encapsulates basic HTTP functionality, such as…
Announcing the Ex Libris App Center
Here at Ex Libris we're very proud of the vibrant community of customers. And we are inspired by the developer community's creativity, professionalism, and willingness to share. Our commitment to the open platform and investment in this Developer Network are the direct result of our belief in the unlimited potential of that community. We're announcing…
OpenAPI Support in Alma APIs
Ex Libris has started rolling out support for the OpenAPI standard. The standard is owned by the OpenAPI Initiative and is defined as a "specification for machine-readable interface files for describing, producing, consuming, and visualizing RESTful web services" (Wikipedia). By providing the specification for our APIs in OpenAPI format, you can now integrate with tools…
Making the most of the new API Console
The updated Developer Network sports a host of features, including a brand-new API Console. This new console is powered by Swagger tools and is made possible by our new support for the OpenAPI standard.A general overview of how to use the API Console is available in the Getting Started Guide. In this blog post we'll…
Welcome to the Updated Developer Network
When we launched the Ex Libris Developer Network in 2014, it was in the context of our Open Platform Strategy. Our stated goal was to: Allow you to leverage your investment in Ex Libris products by integrating them with existing systems and by extending them with additional functionality. Ex Libris, 2014 Since then adoption of the Developer…
Streaming Video in the Alma Digital Repository
The Alma digital repository has supported video playback via the capabilities of the browser. This means that video files had to be prepared and deposited into the repository in a supported format. In addition, large video files were not always delivered in an optimal resolution dependent on the user's bandwidth.It's now possible to leverage recently…
Making Parallel API Calls to Alma
It's often helpful to make several Alma API calls in parallel, for example when using APIs to change lots of data, or to bring data from several sources for an online application. Writing parallel code has always been challenging. It used to be the realm of programmers with specialized expertise and experience. But recent features…
Leveraging the public cloud: Adding a "Deploy" button to your repository
In this contribution to our occasional series on leveraging the public cloud, we're going to add a "Deploy now" button to our Github repository to enable super-simple deployment of the app we want to share. Our repository's readme file has instructions for how to install the app and its dependencies and what environment variables must…
Extracting Full Text (OCR) in the Alma Digital Repository
The digital repository features in Alma continue to be developed. Recently support was added for automatic full text extraction for digital images (OCR), and you can now search for text within one of the built-in viewers. In this blog post, we'll review how to extract text from images in Alma and how that text can be…
Case-insensitive identifiers and emails in Alma
Case sensitivity in computer programs determines how fields values are treated. Case-sensitive means that the computer program only matches values with the same case (lower/upper). Case-insensitive means the program ignores case and matches values regardless of their lower or upper case letters, e.g. "My Name" = "my name"). Alma has always treated primary identifiers in…
Alternate Formats for Linked Data in Alma
As we've discussed previously, the Linked Data features in Alma now allow bibliographic records to be retrieved in three different formats- BIBFRAME, RDA/RDF and JSON-LD. In addition, staff users can view records in BIBFRAME directly from the record view: For some linked data experts, these formats may be perfectly readable as-is. But they were intended…
Simple Linked Data-Powered Author Card
All bibliographic and local authority records managed in Alma are available in various linked data formats. Details on Alma’s linked data features are available in the documentation and this blog post. As this is an emerging area, we are exploring possible use cases that can be served well by linked data. A “classic” use of…
Discovery-Optimized APIs: Requests and Request Options
In a previous blog post, we explained the rationale behind offering discovery-optimized APIs. In a recent Alma release, additional support has been added for handling requests via APIs. In this post we review the new features and how those features were utilized in our Blacklight reference application. Request Options To display the relevant request options…
Build a Quick Catalog Form with the Enhanced BIB APIs
In a recent blog post, we described the cataloging enhancements made to the BIB APIs. These enhancements include: The ability to validate and run normalizations on added/updated records Linking/unlinking a local BIB to a network zone record Cataloger level, stale version check to ensure that records are not correctly overwritten Warnings and override when deleting…
Implementing a Custom Viewer for PDF Files
Alma's built-in digital viewer can display the wide variety of content supported natively by browsers, including images, movies, audio files, and PDFs. However, the interface and functionality for displaying PDF files varies by browser. In order to better control the user experience, you can implement a custom viewer service for PDF files. For our example,…
Discovery-Optimized APIs: Working with Serials
In a previous blog post, we explained the background and rationale behind offering discovery-optimized APIs. In a recent Alma release, additional support has been added for the display of serials. In this post we review the new features and how those features were utilized in our Blacklight reference application. Location list for serials To provide…
Discovery-Optimized APIs: Physical Holdings and Online Resources
Alma works great with the Ex Libris discovery systems - Primo and Summon. But we also recognize that some institutions want to develop their own discovery systems. This approach may come from a desire to have a completely tailored discovery experience, or as a response to the need to expose collections and content other than…
Journey to Linked Open Data Support - An Update
Ex Libris has been hard at work implementing linked open data (LOD) features. In close cooperation with the IGELU/ELUNA Working Group on Linked Open Data, LOD has appeared in road map highlights going back several years. Now at the beginning of 2018 I'd like highlight several features released in the past few months, and to pause…
Access Your Report List with the New Analytics Paths API
The Analytics Report API provides access to any data that can be exposed in an analytics report. The most recent Alma release has introduced a new API in the analytics area - the Report Path API. It takes the analytics catalog path as a URL parameter and returns a list of subdirectories and reports that appear under…
REST Libraries with Ex Libris APIs
At Ex Libris we strive to build our APIs according to accepted REST standards and practices. These include: Use of HTTP verbs and status codes Support for JSON and XML including WADLs, XSDs, and Content-Type headers Authentication via Authorization header and API keys Aside from providing a consistent and predictable experience for developers, use of…
Standards Support at Ex Libris
As a part of our open collaboration with customers, Ex Libris engages with the IGeLU/ELUNA Interoperability Special Interest Working Group (SIWG) to encourage use of our platform, support a community of developers, and receive input on the APIs and integrations road maps. The working group published a position paper in 2017 in which it recommended…
Accepting Digital Deposits via Email
Alma's support for the SWORD digital deposit protocol makes it easy to build custom deposit tools for our users. However, no matter straight forward we make our deposit tool, we can't beat the ease of email. To allow users to send files to our repository via email would be the ultimate in usability. We've previously…
Use an External Viewer with the Digital Delivery Service
In a previous post, we showed how to use the IA Book Reader with digital content managed in Alma. Our example used the BIB and file APIs to retrieve the information necessary to display our content in the viewer. Several recent improvements to Alma allow us to make this flow more efficient. These new features include:…
Process Orchestration with the Set and Job APIs
Over the past year, Alma's job and set APIs have been developed to the point where many process orchestration scenarios are now possible. According to Wikipedia, “Orchestration is the automated arrangement, coordination, and management of computer systems, middleware and services.” Alma performs bulk work on sets of records, such as bibliographic records, users, items, etc.…
Serverless Workflows with Azure Logic Apps and Alma Webhooks
As more workflows and applications are deployed to the cloud, many organizations are interested in adopting serverless computing. In this model, code is deployed to the cloud provider in the form of discrete functions, and the cloud provider ensures there are ample compute resources to execute the functionality when needed. A previous blog post showed an…
Building a Digital Deposit Tool for Alma
Institutions who implement their institutional repository with Alma require a deposit workflow for users. The requirements for a deposit tool can often vary widely among institutions and even among workflows. For example, a tool to deposit theses would require different metadata and file types than a tool to accept faculty-produced PowerPoint presentations. Now that Alma…
Tableau Web Data Connector for Ex Libris Analytics
Many Ex Libris customers use Tableau Software for business intelligence. Tableau provides a way to visualize data from various sources, and offers special pricing for academic institutions, making it an attractive option for many university libraries. In a recent Show & Tell sponsored by the ELUNA/IGELU Interoperability Special Interest Working Group, Joan Kolarik showed a…
Real Time Notifications with Alma Webhooks
We were introduced to Alma's support for webhooks in a previous blog post. Webhooks allow us to respond to events that happen inside of Alma. Initial support was provided for the job end event. A recent Alma version has added a new event for patron notifications. We can now configure Alma to send a webhook…
Getting Started with SWORD Digital Deposits
As part of the institutional repository workflows, Alma now supports depositing digital material using the SWORD 2.0 protocol. SWORD is an ATOM-based protocol meant to facilitate the deposit process between a client and digital repository server. In Alma terms, this means that a client can perform the following actions: Deposit one or more files along…
Hosting a C# Webhook Listener in Azure
In previous blog entries we’ve been introduced to webhooks in Alma, and we’ve learned how to build and host a webhook listener in the public cloud using the AWS API Gateway and Lambda service. In this article, we will build a webhook listener in C# and host it on the Microsoft Azure cloud service. As…
Integrating Blacklight with Alma and an Ex Libris Central Index
In a previous blog post, we learned how to integrate Alma with Blacklight as a discovery layer. There we saw how to utilize Alma for real time availability and fulfillment services for materials which are indexed in our institution's repository. In order to provide our users with a search of articles and journals we'll need…
Hosting a Webhook Listener in AWS
As part of a continuing series on leveraging the public cloud, we present this walk through for hosting an Alma webhook listener using the Amazon Web Services platform. If you're looking for an introduction to webhooks and a basic listener implementation, see this previous blog post. Implement a Webhook Receiver In order to use webhooks,…
Integrating Blacklight with Alma
As an open library management system, Alma can integrate with third party discovery platforms. In previous blog posts, we've shown how to harvest repository information from Alma into an AWS CloudSearch (Lucene) instance, and how to integrate with Alma to obtain real time availability and and fulfillment services. In this post, we should how to…
Getting Started with Webhooks in Alma
Now that Alma supports webhooks, a whole new style of integrating and orchestrating technical tasks is available to developers and system librarians. With webhooks, you can request that Alma make an HTTP callback when a certain event occurs. As Wikipedia describes, webhooks are "user-defined HTTP callbacks ... usually triggered by some event. ... When that…
Ex Libris API Road Map
In an effort to help our customers plan their development projects against Ex Libris products, we're publishing this product-by-product API Road Map. It represents our thinking about where we're continuing to invest resources and where we see our APIs progressing. IMPORTANT NOTE: Since we're calling this blog a road map, we need to clearly state…
Leveraging Social Login with Alma
As a part of efforts to support additional methods of authentication, staff users can now log into Alma using social networks such as Google and Facebook. And patrons will be able to login to Primo using social authentication as well, including the option for self registration if enabled by the institution. More information about how…
Advanced API Usage Reports Now Available
One of the benefits of the Developer Network is the ability to manage your APIs from the dashboard. The Alma and Primo getting started guides explain how to use the dashboard to create API keys, assign permissions, and direct the API calls to production or sandbox environments. Now the dashboard has become even more useful…
Using the IA Book Reader with Alma
In a previous blog post we demonstrated the ability to access files stored in Alma via a custom viewer. This allows for a user experience best suited to a particular type of digital material. In this post we'll show how to use the Internet Archive Book Reader to display a digitized book stored in Alma.…
REST API Governance Thresholds - Explained
The ELUNA & IGELU Interoperability Special Interest Working Group recently hosted a "show & tell" in which we presented an explanation of the governance thresholds that affect Alma and Primo REST APIs. We thought the information might be helpful to the wider Ex Libris developer community, so we're providing a link to the short slide…
Developer Network Update - 2016
At the end of the second year since the launch of the Ex Libris Developer Network, we're happy to share with the community some milestones. Growing Usage The Developer Network has seen continued growth in usage since it was launched, and now serves over 10,000 sessions a month for more than 5,000 unique visitors. Active…
Accessing Digital Resources with a Custom Viewer
In a previous blog post we showed how to integrate collections into an external application. We leveraged the Alma digital viewer to display digital materials stored in Alma. The Alma digital viewer is a good generic delivery interface which provides basic support for multi-file representations, metadata, and diverse file types such as images, audio, video,…
Exposing Collections in External Applications
Collections in Alma can be used to group bibliographic records into a hierarchical structure. While any bibliographic records can be added to collection, a primary use case is to organize digital resources. As such, records which have digital inventory must be associated with a collection. Alma can be configured to publish collection information to Primo,…
Using the Alma APIs with Java Proxy Classes
The Alma REST APIs return JSON natively. This is the natural choice for developers working in dynamic languages, such as Node.js and Ruby. These languages interpret the JSON into native types, such as Array, Hash, String, and make it easy to manipulate data returned by the APIs. For those who work in a strongly-typed language…
Leveraging the public cloud: Sending notifications to patrons
Alma's software-as-a-service offering allows institutions to reduce expenditures on internal IT infrastructure. Many institutions are looking to extend that savings to integrations and services which support the library system. The public cloud provides an opportunity to host those additional services in a cost-effective and robust infrastructure. This is the first in a series of blog…
Using the Alma APIs with Node.js
In the past couple of years, Node.js has become quite popular. With its cross-platform support, powerful package manager, and asynchronous architecture, Node is the environment of choice for many greenfield applications today. This simple example can get you started using the Alma APIs in a Node.js application. Since the Alma REST APIs return JSON natively…
Integrating with Alma's Real Time Availability and Get-It Tab
Alma provides APIs to determine the physical, electronic, and digital availability of a BIB. Alma's fulfillment services page, or "Get It tab", provides users with detailed information about the resource, along with links to view online versions or request physical copies. Combining the availability API with the fulfillment services page, integrated with your organization's single…
The Ex Libris Developer Network - One Year On
Happy Birthday to the Developer Network. It's been a year since it was launched at ELUNA 2014. In the past year the Developer Network has grown, and we'd like to take a few moments to look back at what's been accomplished. The Developer Network Community First and foremost, the Developer Network is a community for…
Alma Analytics Data in a Google Chart
Alma Analytics is a great source of information that can help your institution get even more out of Alma. You can build custom reports and dashboards, and expose the information as a widget to appear on the Alma home page. Alma Analytics comes with impressive data visualizations which present the data in a compelling format.…
Harvesting OAI into Amazon AWS CloudSearch
Alma supports OAI publishing via its publishing platform. Publishing is a very powerful means of sharing the content of our Alma repository with other systems. When configuring a publishing profile, we specify a set of the records which will be published. We can also specify if we want the results to be written to a…
Integrating Alma and PayPal with the Alma REST APIs
In this world of cloud systems and integrated user experiences, patrons expect to be able to perform transactions in a frictionless manner. And paying library fines is no exception. Currently, Alma provides out-of-the-box support for the WPM Education payment system in use by many UK institutions. But the Alma APIs allow us the freedom to…
Next Generation Library Application Development
In designing and implementing the new Ex Libris Developer Network, we considered how applications written against our platforms will be developed in this new age of cloud-based SaaS library systems. We felt it would be beneficial to the community to share what we learned during the process. In cooperation with the Code4Lib journal, we've published…
How we're building APIs at Ex Libris
As a part of the launch of the Developer Network, we at Ex Libris have done some work on standardizing our external APIs. The goal of standardization is to allow those developing applications against Ex Libris products to learn one style and leverage that knowledge across our products. These standards are being implemented for all…
Creating a Student Portal with the New Alma APIs
Introduction We're going to use the new Alma REST APIs to build a basic student portal with a few features to help get you started with Alma APIs. First, we create a basic ASP.NET MVC 4 application in C#. MVC is a popular programming style which stands for Model, View, Controller. Of course, Alma APIs…
Welcome to the Ex Libris Developer Network!
We've worked hard over the past year to bring to you the next step in our Open Platform Program. The program was instituted five years ago with the goal of providing customers a platform for integration and extension. We've challenged ourselves to take the next step, and to... Allow you to leverage your investment in…
How to Replace a File in an Existing IE
In this use case a single file with a known (and unique) filename needs to be replaced. For this purpose we created a sample program called updateAIP. The program requires: The original filename. The IE PID of the existing file, if not provided, will be retrieved by an SRU search for the filename. The file PID…
Leads a development team at Ex Libris. Advocate for the Open Platform.