ALMA Integration
References
Additional:
Overview
This document outlines the requirements and workflows needed to integrate Alma with the DCB service to support Alma bibliographic data ingestion, patron verification, request placement, circulation tracking, and request finalization in OpenRS.
- 1 Overview
- 2 Ingest and Suppression
- 3 Patron verification
- 3.1 Authentication
- 3.2 Eligibility
- 4 Place Requests
- 5 Circulate Requests
Ingest and Suppression
Alma supports the OAI-PMH mechanism for harvesting bibliographic records. For more details on the OAI-PMH Alma integration, refer to the official documentation: OAI-PMH Alma Integration
Item availability
In Alma, an item's circulation availability status can be retrieved using the Retrieve Item API
Endpoint: GET /almaws/v1/bibs/{mms_id}/holdings/{holding_id}/items/{item_pid}
Key field for availability status
base_status
: Provides the item's current status, such as:
1
: Item is available (available on shelf).0
: Item is unavailable (checked out, in transit, or being processed).
Suppression Value
In Alma, the suppression value indicates whether a bibliographic, holdings, or item record is suppressed from discovery. This information is accessible through the Alma APIs.
The suppression value is in the field suppress_from_publishing:
true
: suppressed from publishing.false
: is not suppressed and is visible in discovery systems.
1. Retrieve Item API endpoint: /almaws/v1/bibs/{mms_id}/holdings/{holding_id}/items/{item_pid}
2. Retrieve Holdings API endpoint: /almaws/v1/bibs/{mms_id}/holdings/{holding_id}
3. Retrieve Bibliographic Record API endpoint: /almaws/v1/bibs/{mms_id}
Patron verification
Authentication
Alma supports the SAML 2.0 Web Browser SSO profile for user authentication and authorization. Further information on this integration can be found here:
SAML Authentication.
Eligibility
After the patron has been successfully authenticated, DCB must determine if the patron is eligible to place a request. The patron is eligible if the following conditions are met:
Alma patron record is active.
Alma patron record does not have any active patron blocks.
The Users API allows to retrieve information about a patron's account and determine their eligibility.
Endpoint: GET /almaws/v1/users/{user_id}
Key fields:
Account Status (
status
): Indicates whether the account is active or inactive.ACTIVE
: The patron is eligible.INACTIVE
: The patron is not eligible.
Blocks (
user_block
): Lists any blocks on the patron's accountUser account type (
account_type
): Two basic types of user accounts in Alma are internal and external usersHome library code (
rs_libraries
): List of the user's related resource-sharing libraries.Patron type (
user_group
)
Place Requests
Place request at lending agency
Before placing DCB request in Alma as a lending agency, a virtual patron needs to be found or created in Alma.
Search for a user in Alma
The Users API allows to find user details based on various search criteria such as primary ID, name, email, or user group.
Endpoint: GET /almaws/v1/users/
Parameters: The query string in the format field~value
Creating a virtual patron in Alma
A virtual patron in Alma can be created using the User API.
Endpoint: POST /almaws/v1/users
The minimum required fields are primary_id
, first_name
, last_name
, and user_group
.
record_type:
Publicprimary_id:
The primary identifier of the userfirst_name
: User's first name.last_name
: User's last name.account_type:
Externaluser_group
: Used in fulfillment policies (which one to choose or DCB should create )
For more details on creating a user, refer to Create user API
Creating an item-level request in Alma
Create request for an Item API allows to create an Item-level requests in Alma.
Endpoint: POST /almaws/v1/bibs/{mms_id}/holdings/{holding_id}/items/{item_pid}/requests
Required parameters:
mms_id
: The unique identifier of the bibliographic record.holding_id
: The ID of the holding record associated with the item.item_pid
: The unique identifier of the physical item.
Request body fields:
Field | Description |
---|---|
| The primary ID of the user making the request, must be a valid user ID in Alma. |
|
|
| Type of pickup location (e.g., LIBRARY). The pickup location library code. (Note: Alma does not provide a direct API endpoint to create pickup locations dynamically. Pickup locations are defined and configured in the Alma interface by library administrators.) |
| Code of the library where the item will be picked up. |
| Pickup location code. |
| Optional; used in fulfillment policies. |
Endpoint: POST /almaws/v1/bibs/{mms_id}/requests
Request body fields:
Field | Description |
---|---|
| The primary ID of the user making the request. |
| The type of request. |
| Type of pickup location. |
| Code of the library where the item will be picked up. (for |
| Pickup location code. |
| The ID of the specific item being requested. |
| Optional comments related to the request. |
To retrieve details about an item's bib and holding records can be used the Items API
Endpoint: GET /almaws/v1/items?item_barcode={barcode}
Request details in the Alma app
Once a request is created in Alma, it will have a unique ID and include the following information:
Request type: Patron physical item request
Item's status: Item in place
Pickup at: Pickup location
Item material type
Workflow step: Pickup from shelf
Process status: New (Not started)
Managed by Library: The library where the available inventory is located
Managed by Desk: The circulation desk where the available inventory is located
Place request at borrowing agency
Before placing DCB request at the borrowing agency, a virtual item needs to be found or created in Alma.
Search for an item in Alma
The Search API can be used to search for an item in Alma, if you don’t have mms_id
, holding_id
, or item_pid
.
Endpoint: GET /almaws/v1/items
Query parameters:
Parameter | Description |
---|---|
| The MMS ID of the bibliographic record. |
| The holding record ID. |
| The barcode of the specific item. |
| The library code. |
Create a virtual Item record
A virtual item in Alma can be created by using Create an Item API
Endpoint: POST /almaws/v1/bibs/{mms_id}/holdings/{holding_id}/items
Required parameters:
mms_id
: The unique identifier of the bibliographic record.holding_id
: The ID of the holding record where the item will be added.
Key fields:
Field | Description |
---|---|
| The barcode for the new item (must be unique). |
| A description of the item (e.g., "Volume 1"). |
| Type of physical material (e.g., |
| Location in the library (e.g., |
| Call number of the item (e.g., |
| The status of the item (e.g., |
| Interlibrary Loan |
| The library where the item is located. |
Create Bibliographic record
Endpoint: POST /almaws/v1/bibs
For more details on creating a bibliographic record, refer to Create record
Create Holding record
Endpoint: POST /almaws/v1/bibs/{mms_id}/holdings
Parameters:
mms_id
: Bib record ID
For more details on creating a holding record, refer to Create holding record
Circulate Requests
Circulation tracking and reaction (lending)
Lifecycle | Given | When | Then |
---|---|---|---|
Dispatched by Supplying Library
Trigger: Manual action in Alma - Scan in items |
| DCB Patron Request Workflow matches corresponding request details at
| Trigger DCB
|
Received at Pickup Library |
| DCB Patron Request Workflow matches corresponding request details at
| Trigger
|
Item Checked Out to Patron at Pickup Library |
| DCB Patron Request Workflow matches corresponding request details at
| Trigger
|
Item Returned by Borrowing Patron |
| DCB Patron Request Workflow matches corresponding request details at either
| Trigger
|
Received Back at Lending Agency
Trigger: Manual action in Alma - Return items |
| DCB Patron Request Workflow matches corresponding request details at either
| Trigger
|
Lending workflow diagram
Circulation tracking and reaction (borrowing)
Lifecycle | Given | When | Then |
---|---|---|---|
|
| DCB Patron Request Workflow matches corresponding request details at
| Trigger DCB
|
|
| DCB Patron Request Workflow matches corresponding request details at
| Supplying or Pickup Library
|
|
| DCB Patron Request Workflow matches corresponding request details at
| Trigger
|
|
| DCB Patron Request Workflow matches corresponding request details at either
| Trigger
|
|
| DCB Patron Request Workflow matches corresponding request details at either
| Trigger
|
Borrowing workflow diagram
Alma loan creation
The Loan API can be used to create a loan in Alma. This operation requires providing the patron ID and item barcode.
Endpoint: POST /almaws/v1/users/{user_id}/loans
Key fields in the response
Field | Description |
---|---|
| The unique identifier for the loan |
| The barcode of the item being loaned |
| The date and time when the item is due |
| The status of the loan ( |
| The ID of the user to whom the item was loaned |
Additional notes
Loan Policy: Alma's loan rules are determined by the library's fulfillment configuration, which includes item type, user type, and location.
Due Date: Alma automatically calculates the due date based on the fulfillment policies.
Update a request status
You can use the Requests API to update the status of a specific request. This operation is typically used to change the progress of a request, such as moving it to "On Hold Shelf" or marking it as "Fulfilled."
Endpoint: PUT /almaws/v1/bibs/{mms_id}/holdings/{holding_id}/items/{item_pid}/requests/{request_id}
Key fields in the response
Field | Description |
---|---|
| The unique identifier of the request |
| The updated status of the request (e.g., |
| The pickup location for the request |
| The ID of the user associated with the request |
| The barcode of the item associated with the request |
Update item status
The Item API can be used to update the status of an item
Endpoint: PUT /almaws/v1/bibs/{mms_id}/holdings/{holding_id}/items/{item_pid}
Key fields in the response
Field | Description |
---|---|
| The ID of the bibliographic record |
| The ID of the holding record |
| The ID of the item record |
| The updated process type for the item |
| The availability status of the item |
Request cancellation
Retrieve the status of a request
The Retrieve Request API can be used to retrieve the status of a request. Canceled requests will have a status
value of CANCELED
.
Endpoint: GET /almaws/v1/bibs/{mms_id}/holdings/{holding_id}/items/{item_pid}/requests/{request_id}
Cancel a request in Alma
The Requests API can be used to cancel a request in Alma.
Endpoint: POST /almaws/v1/bibs/{mms_id}/holdings/{holding_id}/items/{item_pid}/requests/{request_id}?op=cancel
Query parameter:
Parameter | Value | Description |
---|---|---|
|
| Indicates that the operation is to cancel the request. |
The request body can optionally include a reason for cancellation
Key fields in the response
Field | Description |
---|---|
| The unique identifier of the canceled request |
| The updated status of the request (e.g., |
| The reason provided for canceling the request |
| The ID of the user associated with the request |
| The barcode of the item associated with the request |
Renew a loan
The Loan Renewal API allows to renew a loan for a specific user and item.
Endpoint: POST /almaws/v1/users/{user_id}/loans/{loan_id}?op=renew
Query parameter:
Parameter | Value | Description |
---|---|---|
|
| Indicates that the operation is to renew a loan |
A body is not required for the renewal request unless additional details are necessary. If needed, you can include optional parameters such as comments.
A successful response confirms the loan has been renewed and provides updated details about the loan, such as the new due date.
Key fields in the response
Field | Description |
---|---|
| ID of the loan |
| ID of the user who borrowed the item |
| item barcode |
| The date and time the loan started |
| The new due date for the loan |
| The number of times the loan has been renewed |
Additional Notes
Eligibility: Not all loans are renewable. Items with active holds, recalls, or that exceed the renewal limit may not be renewed.
Renewal Limits: Alma enforces renewal policies based on the configuration for user groups, item policies, and loan terms.
Data Deletion
Delete an item
The Items API can be used to delete an item.
Endpoint: DELETE /almaws/v1/bibs/{mms_id}/holdings/{holding_id}/items/{item_pid}
If the item is successfully deleted, the API will return an HTTP status code 204 No Content, with no response body.
Preconditions for Deletion
No active loans: Items with active loans cannot be deleted.
No open requests: Cancel or close any requests linked to the item before deletion.
Unsuppressed from publishing: Ensure the item is not suppressed if it is required for other records.
Delete a user
The Users API can be used to delete a user in Alma.
Endpoint: DELETE /almaws/v1/users/{user_id}
If the user is successfully deleted, the API will return an HTTP status code 204 No Content, with no response body.
Preconditions for Deletion
No active loans: Users with active loans cannot be deleted.
No open requests: Cancel or close any requests linked to the user.
Linked data: Ensure the user has no unresolved fines, fees, or other dependencies.
Delete a request
The Requests API can be used to delete a request.
Endpoint: DELETE /almaws/v1/bibs/{mms_id}/holdings/{holding_id}/items/{item_pid}/requests/{request_id}
If the request is successfully deleted, the API will return an HTTP status code 204 No Content, with no response body.
Preconditions for Deletion
Unfulfilled requests: The request must not already be fulfilled or completed.
Request ID: Ensure you have the correct
request_id
to delete the specific request.Linked dependencies: Verify that deleting the request will not impact ongoing workflows.
Operated as a Community Resource by the Open Library Foundation