The ILLiad Web Platform API

The ILLiad Web Platform provides programmatic access to your ILLiad installation. The data is available in either JSON or XML formatted over HTTP.

Icon

The ILLiad Web Platform was introduced in ILLiad version 8.4.

Getting Started

ILLiad Integration Workflows

Icon

See the ILLiad Integration document for more information on expected workflows with external systems. The document covers scenarios of both ILLiad-born and external-born requests and expected API calls in each scenario.

Generating an API Key

You will first need to generate an API Key for your application and create an entry in the WebPlatformConfig table in the ILLiad Customization Manager. An API Key is required for all secured methods. See Configuring the ILLiad Web Platform for more information.

Each application accessing the Web Platform should have its own unique API Key. If for some reason it becomes apparent that an individual application has been compromised, an individual API Key can be deauthorized from the Customization Manager by removing the WebPlatform config records. If all applications use the same APIKey access to all will be affected. To prevent unauthorized distribution of an API Key, you should only make requests to the ILLiad Web Platform using server-side scripting such as ASP or PHP. Client-side scripting (like Javascript) will expose your API Key which can lead to ill effects. Protect your API keys!

Icon

For brevity, the API Key used in examples in this documentation will be ABC123. Typically the key will be a longer alphanumeric string that looks more like 71ed0900-97aa-4157-ad9f-e74bcfa5e709.

Versions and Updates

We will introduce API changes when necessary/possible, and update the API version number (i.e. v1) when a breaking change is made. Additions to the API does not necessarily mean the API version will change but changes will always result in the Web Platform version number being incremented. For documentation purposes, each request will indicate the minimum Web Platform version required.

If the version is not provided in the Accept header it is assumed that the most recent version of the API should be used. To explicitly request a response from a specific API version, the version should be specified in the Accept HTTP header.

Some requests may be introduced to newer versions of the API and may not be backward compatible. A minimum API and Web Platform version will be noted in the documentation.

Making Requests

Authentication

Icon

You must use SSL (HTTPS instead of HTTP) to access the ILLiad Web Platform.

To authenticate with the API, you must supply an ApiKey HTTP Header when making a request to a secured action. For example:

Some requests are considered public and will not require an API Key. The authorization for each action will be noted in documentation as either secured or public.

Response Formats

The request examples retrieve the data in JSON format. If you would like the data in XML format, change the media type of the accept header from "application/json" to "application/xml."

OData Support

Some of the ILLiad Web Platform requests support the use of OData query options to help filter and order result data. Support for OData query actions will be noted in request documentation.

Filtering

The $filter option allows filtering results by applying a Boolean expression. The filter expressions include logical and arithmetic operators, string functions, and date functions.

Filters can use grouped conditions indicated by parentheses. Comparisons of time values must use the following format:

For example, datetime'2010-07-15' or datetime'2010-07-15T16:19:54Z'.

Filter Operators

eqEqual
neNot Equal
gtGreater than
geGreater than or equal
ltLess than
leLess than or equal
andLogical and
orLogical or
notLogical Negation

Filter Functions

startswithStarts with valueExample: startwith(TransactionStatus,
'Request Held')
substringofStarts with valueExample: substringof('CCG', CopyrightComp)
endswithEnds with valueExample: endswith(TransactionStatus, 'Rush')
yearGets the date of a DateTime fieldExample: year(TransactionDate)
monthGets the date of a DateTime fieldExample: month(TransactionDate)
dayGets the date of a DateTime fieldExample: day(TransactionDate)

 

Examples

Return active user requests for a user whose username is jdoe and the TransactionStatus is "Request Sent".

Return active user requests for a user whose username is jdoe and the LastOverdueNoticeSent was 2 or higher.

Return active user requests for a user whose username is jdoe and the TransactionStatus starts with Request Held and the last time the request was routed was June 2013.

Sorting

To sort the results, use the $orderby query option.

Example

Sort active user requests for user whose username is jdoe by Request Type in ascending order and creation date in descending order

Limiting Results

$top

Determines a maximum number of records to return.

Example: Retrieves the first 10 active user requests for user whose username is jdoe

$skip

Sets the number of records to skip before retrieving records in a collection. This is useful when combined with $top to page requests.

Example: Retrieve records 21 - 30 of active user requests for user whose username is jdoe

System Information

For troubleshooting purposes and getting started, a few basic responses can be retrieved that retrieve system information.

API Version

  • Authorization: Public
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.5.0.0

Use the API Version request to retrieve the current API version of the ILLiad Web Platform.

Example API Version Request

Example API Version Response

PlatformVersion

  • Authorization: Public
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.4.0.0

Use the PlatformVersion request to retrieve the current version of the ILLiad Web Platform.

Example Platform Version Request

Example Platform Version Response

Secure Platform Version

  • Authorization: Secured
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.4.0.0

Use the PlatformVersion request to securely retrieve the current version of the ILLiad Web Platform.

Example Secure Platform Version Request

Example Secure Platform Version Response

Transactions

Retrieving Requests by Transaction Number

  • Authorization: Secured
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.6.0.0

The transaction request will retrieve transaction details for a given transaction number.

Example Transaction Request  Expand source
Example Transaction Response  Expand source

Retrieving Requests for User

  • Authorization: Secured
  • Supports OData: Yes
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.5.0.0

The UserRequests request will retrieve all transactions associated with a given username. This request is secured and requires an API key. This request has OData Support for filtering, ordering, and limiting results.

Example User Requests Request  Expand source
Example User Requests Response  Expand source

 

Routing transaction request

  • HTTP Verb: PUT
  • Authorization: Secured
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.7.2.0

The route transaction request will route a transaction to a specified transaction status.  The action will also add a tracking entry and mark an update to the history table to indicate a change was made to the request. Routing rules associated with the status will be processed. The username of the tracking and history entries will be set to the WebPlatformDescription associated with the API key making the request. 

Required parameters

Status

The status the transaction should be routed to

Example Route Transaction Request  Expand source

Response

Example Route Transaction Response  Expand source


 

HTTP Status CodeDescription
200OK (Successfully routed request)

400

Bad Request

Example Bad Request  Expand source
401Unauthorized
404Resource Not Found
500Internal Server Error (Unexpected error)

 

Marking transaction filled

  • HTTP Verb: PUT
  • Authorization: Secured
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.7.2.0

The borrowing request will be marked as being filled by the lender. 

  •  A history entry will be added to indicate the lender has shipped the request. 
Icon
Note the username of the history entry will be set to the WebPlatformDescription associated with the API key making the request. 

Required parameters

Lender

Indicates the lender that filled the request

Example Fill Transaction Request  Expand source

Response

Example Fill Transaction Response  Expand source

 

 

HTTP Status CodeDescription
200OK (Successfully routed request)

400

Bad Request

Example Bad Request  Expand source
401Unauthorized
404Resource Not Found
500Internal Server Error (Unexpected error)

 

Marking transaction unfilled

  • HTTP Verb: PUT
  • Authorization: Secured
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.7.2.0

Marks a borrowing request as being unfilled.

  • The ILLiad request will be routed to the Awaiting Unfilled Processing queue. 
  • The reason will be added as a note to the request. 
Icon
Note the username of the tracking and history entries will be set to the WebPlatformDescription associated with the API key making the request. 

Required parameters

Reason

Indicates a reason the request is being marked unfilled

Example Unfilled Transaction Request  Expand source

Response

Example Unfilled Transaction Response  Expand source

 

 

HTTP Status CodeDescription
200OK (Successfully marked request unfilled)

400

Bad Request

Example Bad Request  Expand source
401Unauthorized
404Resource Not Found
500Internal Server Error (Unexpected error)

 

Create a transaction request

  • HTTP Verb: POST
  • Authorization: Secured
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.7.2.0

Creates a new request. Routing rules will be applied to the transaction after it is created. 

Icon
Note the username of the tracking and history entries will be set to the WebPlatformDescription associated with the API key making the request. 

Parameters

Parameters can be set from any existing field from the ILLiad transactions table

Required parameters

Username

Indicates the username of the new transaction

ProcessType

Indicates the ILLiad ProcessType.

Allowed values:

    • Borrowing
    • DocDel
    • Lending
*LendingLibrary
Icon

LendingLibrary is only required if ProcessType is Lending.

Ignored parameters

The following fields are valid transaction fields but are ignored when creating a transaction. Developers should not send these fields when creating a transaction.

  • TransactionNumber
  • TransactionDate
  • CreationDate
  • ConnectorErrorStatus
  • OdysseyErrorStatus
  • ExternalRequest
  • CCSelected
  • OriginalTN
  • OriginalNVTGC
  • InvoiceNumber
  • FlagType
  • FlagNote

Default parameters

If the request does not contain values for the following fields, the Web Platform will assume default values.

Defaults for All requests
RequestType

Article

AcceptAlternateEditiontrue

 

AcceptNonEnglishfalse
TransactionStatusWhen transaction status is not set explicitly the web platform will use the default system initial transaction status depending on the ProcessType and RequestType.
Defaults for lending requests
SystemId

If ProcessType is Lending, the default value is

    • OTH

If ProcessType is Borrowing, the default value is
set to the BorrowingSystemIDDefault customization key.

DueDateCalculated based on LendingDueDateDays customization key and if the LendingLibrary is associated with a group that has a Due Date Override.
ShippingOptions

If RequestType is Article, the default value is set based on the LendingDefaultArticleShipping customization key.

If RequestType is Loan, the default value is set based on the LendingDefaultLoanShipping customization key.

LibraryUseOnlySet based on the LendingRestrictDefaultLibraryUseOnly customization key.
AllowPhotocopiesSet based on the LendingRestrictDefaultAllowPhotocopies  customization key.
RenewalsAllowedSet based on the LendingRestrictDefaultAllowRenewals  customization key.
LenderAddressNumberSet to the LenderAddressNumber associated with the LendingAddress record when only 1 record exists for the associated LendingLibrary.
Example Create Transaction Request  Expand source

Response

Example Create Transaction Response  Expand source

 

 

HTTP Status CodeDescription
200OK (Successfully created request)

400

Bad Request

Example Bad Request  Expand source
401Unauthorized
500Internal Server Error (Unexpected error)

Transaction History

Add transaction history entry to a transaction

  • HTTP Verb: POST
  • Authorization: Secured
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.7.2.0

The add transaction history request will add a transaction history entry for a given transaction number. The entry's username is set to the WebPlatformDescription associated with the API key making the request.

Required parameters

EntryThe history entry to be added
Example Add Transaction History Request  Expand source

 

Response

Example Add Transaction History Response  Expand source
HTTP Status CodeDescription
200OK

400

Bad Request
401Unauthorized
404Resource Not Found
500Internal Server Error

Transaction Note

Add transaction note to a transaction

  • HTTP Verb: POST
  • Authorization: Secured
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.7.2.0

The add transaction note request will add a transaction note for a given transaction number. The entry's username is set to the WebPlatformDescription associated with the API key making the request.

Required parameters

Note

The note to be added

Optional parameters

NoteType

The type of note being added.

Valid values are System, Lender, Staff, and User.

Example Add Transaction Note Request  Expand source

Response

Example Add Transaction Note Response  Expand source
HTTP Status CodeDescription
201Note created successfully

400

Bad Request

Example Bad Request  Expand source
401Unauthorized
404Resource Not Found
500Internal Server Error

 

Retrieve transaction note

  • HTTP Verb: GET
  • Authorization: Secured
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.7.2.0

The get transaction note request will retrieve a transaction note for a given transaction number.

Example Get Transaction Note Request  Expand source

Response

Example Get Transaction Note Response  Expand source
HTTP Status CodeDescription
401Unauthorized
404Resource Not Found

 

 

Users

Get user by username

  • HTTP Verb: GET
  • Authorization: Secured
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.7.2.0

Returns user details for a given username.

Example Get User by Username Request  Expand source

Response

Example Get User by Username Response  Expand source
HTTP Status CodeDescription
200OK
401Unauthorized
404Resource Not Found
500Internal Server Error

 

Get user by external user id

  • HTTP Verb: GET
  • Authorization: Secured
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.7.2.0

Returns user details for a given external user id.

Example Get User by External User Id Request  Expand source

External User Id

Icon
The external user id is a configurable field that maps to an existing ILLiad field in the Users table. The external user id mapping is configured to be specific for each Web Platform API key that is generated allowing each Web Platform API consumer to have it's own external user id. The default mapping is set to the Username field. Staff at the ILLiad library will need to use the customization manager to modify the mapping for the ExternalUserId. ILLiad libraries are responsible to ensure that the external user id value is unique. The API will error if multiple records are found for the same external user id. 

 

Response

Example Get User by External User Id Response  Expand source
HTTP Status CodeDescription
200OK
401Unauthorized
404

Resource Not Found

Example Resource Not Found  Expand source
500Internal Server Error

     

 

Create User

 

  • HTTP Verb: POST
  • Authorization: Secured
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 9.0.1.0

 

Creates a new user. 

 

Icon

A note will be added for the user to indicate the user was created via the Web Platform and which API key created the record.

 

Example Get User by External User Id Request  Expand source

Parameters

FieldTypeDefault if not providedNote
Usernamestring Required field.
ExternalUserIdstring 

The ExternalUserId field is a dynamic field configured by the institution for each API Key.

Icon

An ExternalUserId will always override the a value supplied for the mapped field. A user note will be added if the two values conflict and what the original mapped value was set to.

LastNamestring  
FirstNamestring  
SSNstring  
Statusstring  
EMailAddressstring  
Phonestring  
MobilePhonestring  
Departmentstring  
NVTGCstringThe NVTGC associated with the API Key.Each institution may have unique values. Consult with institution for allowed values.
NotificationMethodenumElectronic
Allowed Values
Electronic
Phone
Mail
DeliveryMethodenumHold for Pickup
Allowed Values
Hold for Pickup
Mail to Address
LoanDeliveryMethodenumHold for Pickup
Allowed Values
Hold for Pickup
Mail to Address
AuthorizedUsersstring  
ClearedenumNo
Allowed ValuesDescription
YesThe user is allowed to use the system.
NoThe user has not yet been vetted by staff.
NewUser is new to the system and has not completed their user profile. On their first login they will be forced to complete their user profile.
DISThe user is disavowed and not authorized to log in.
BThe user is blocked.
BOThe user is blocked due to an overdue. Overdue blocks are removed when the user no longer has overdue materials checked out.
BXThe user is blocked by an external system.
WebbooltrueWhen true, the user will receive articles electronically.
Addressstring  
Address2string  
Citystring  
Statestring  
Zipstring  
Countrystring  
Sitestring  
ExpirationDatedatetimeThe User Expiration Date is set based upon system rules. 
Numberstring  
UserRequestLimitinteger This field should only be set if the user has a custom request limit.
Organizationstring  
Faxstring  
ShippingAcctNostring  
ArticleBillingCategorystring  
LoanBillingCategorystring  
SAddressstring This is for a secondary address.
SAddress2string This is for a secondary address.
SCitystring This is for a secondary address.
SStatestring This is for a secondary address.
SZipstring This is for a secondary address.
SCountrystring This is for a secondary address.
AuthTypeenum 
Allowed ValuesNote
DefaultThe user will login with the default user authentication system.
ILLiad

The user will login with their ILLiad username and password.

Consider supplying a PlainTextPassword so the user can access their web account. If a password is not provided, the user will need to reset their password or contact staff for assistance.

PlainTextPasswordstring The password the user will use for authenticating to the web interface.
UserInfo1string  
UserInfo2string  
UserInfo3string  
UserInfo4string  
UserInfo5string  
NotificationPreferencesArray of NotificationPreferencesEmail Notification preferences are added for all available activities.

Each NotificationPreference consists of an ActivityType and NotificationType.

Allowed NotificationTypes
ValueDescription
SMSIndicates the user wants an SMS notification, when available. A MobilePhone value should be provided.
EmailIndicated the user wants an Email notification, when available. An EmailAddress should be provided.
Allowed NotificationTypes
ValueDescription
ClearedUserThe type of notification received when the user is cleared to use the system.
PasswordResetThe type of notification received when the user requested a password reset.
RequestPickupThe type of notification received when material is available to be picked up by the user at the library.
RequestShippedThe type of notification received when material is shipped to the user.
RequestElectronicDeliveryThe type of notification received when the user receives material via electronic delivery.
RequestOverdueThe type of notification received when the user has material checked out that is overdue.
RequestCancelledThe type of notification received when a request placed by the user is cancelled.
RequestOtherThe type of notification received for any other notification generated by the system that is not listed above.
Sample NotificationPreferences

Required Parameters

Username

Indicates the username of the new transaction

Response

Example Create User Response  Expand source

 

 

HTTP Status CodeDescription
200OK (Successfully created request)

400

Bad Request

Example Bad Request  Expand source
401Unauthorized
500Internal Server Error (Unexpected error)

Notifications

Retrieve Email Details

  • Authorization: Secured
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.6.0.0

The Email Details request will retrieve a single e-mail for a specified email id. This request is secured and requires an API key.

Example Email Details Request  Expand source
Example Email Details Response  Expand source

Retrieve SMS Details

  • Authorization: Secured
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.6.0.0

The SMS Details request will retrieve a single SMS notification for a specified id. This request is secured and requires an API key.

Example SMS Details Request  Expand source
Example SMS Details Response  Expand source

Send Transaction Notification

  • HTTP Verb: POST
  • Authorization: Secured
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.6.0.0

The SendTransactionNotification request will generate a notification using a notification template for a specified transaction. If an e-mail notification is generated, it will be placed into a pending status and will be sent by the System Manager. If an SMS notification is generated, it will be placed into a pending status and will be handled by a server addon.

Required parameters

TransactionNumberThe transaction number to send the notification for
TemplateNameThe name of the notification template to be used for the template

Optional parameters

ToThe To address for the e-mail. If To is not provided, the To address will default to the NotificationTemplate's ToAddress if provided or the User or Lender's e-mail address.
FromThe From address for the e-mail. If From is not provided, the From address will default to the NotificationTemplate's FromAddress if provided or the From address in Customization (EmailFromAddress, DocDelEmailFromAddress, or LendingEmailFromAddress depending on ProcessType).
CCThe CC address for the e-mail.
BCCThe BCC address for the e-mail.
SubjectThe subject for the e-mail. If Subject is not provided, the subject will default to the NotificationTemplate's Subject.
StaffUsernameThe staff username associated with sending the notification.
CustomTags

An array of custom tags that can be used as replacement values for Special tags in a notification template. CustomTags are considered to be a part of the Special table name if a table name is not provided.

In the following example, <#Special.CustomApplicationField> in a template would be replaced with ABC and <#CustomApplicationTable.Field> would be replaced with XYZ. `CustomTags:{"CustomApplicationField":"ABC","CustomApplicationTable.Field":"XYZ"} `

 

Example SendTransactionNotification Request using JSON  Expand source

SendTransactionNotification Response

If the transaction number or template name do not exist, the response will be a 404 Not Found.

If the notification was handled successfully, the Web Platform will respond with an HTTP 201 Created status code (Status: 201 Created). It is possible that a user will opt-out of specific types of notifications where an e-mail and/or an SMS will not be generated. Lending transactions will not generate SMS notifications. Check to ensure data was returned for an Email and SMS before using the result.

Example SendTransactionNotification Response  Expand source

Send User Notification

  • HTTP Verb: POST
  • Authorization: Secured
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.6.0.0

The CreateUserEmail request will generate notification using a notification template for a specified user. If an e-mail notification is generated, it will be placed into a pending status and will be sent by the System Manager. If an SMS notification is generated, it will be placed into a pending status and will be handled by a server addon.

Required parameters

UsernameThe username of the user to associate the notification with
TemplateNameThe name of the e-mail template to be used for the template

Optional parameters

ToThe To address for the e-mail. If To is not provided, the To address will default to the NotificationTemplate's ToAddress if provided or the User or Lender's e-mail address.
FromThe From address for the e-mail. If From is not provided, the From address will default to the NotificationTemplate's FromAddress if provided or the From address in Customization (EmailFromAddress).
CCThe CC address for the e-mail.
BCCThe BCC address for the e-mail.
SubjectThe subject for the e-mail. If Subject is not provided, the subject will default to the EmailTemplate's Subject.
StaffUsernameThe staff username associated with sending the e-mail.
CustomTags

An array of custom tags that can be used as replacement values for Special tags in an e-mail template. CustomTags are considered to be a part of the Special table name if a table name is not provided.

In the following example, <#Special.CustomApplicationField> in a template would be replaced with ABC and <#CustomApplicationTable.Field> would be replaced with XYZ. `CustomTags:{"CustomApplicationField":"ABC","CustomApplicationTable.Field":"XYZ"} `

 

Example SendUserNotification Request using JSON  Expand source

SendUserNotification Response

If the user or template name do not exist, the response will be a 404 Not Found.

If the notification was handled successfully, the Web Platform will respond with an HTTP 201 Created status code (Status: 201 Created). It is possible that a user will opt-out of specific types of notifications where an e-mail and/or an SMS will not be generated. Check to ensure data was returned for an Email and SMS before using the result.

Example SendUserNotification Response  Expand source

Send Library Notification

  • HTTP Verb: POST
  • Authorization: Secured
  • Supports OData: No
  • Minimum API Version: 1
  • Minimum Web Platform Version: 8.6.0.0

The SendLibraryNotification request will generate notification using a notification template for a specified library. If an e-mail notification is generated, it will be placed into a pending status and will be sent by the System Manager. SMS messages are not supported for lending/library e-mails.

Required parameters

LibrarySymbolThe symbol of the library to associate the notification with
AddressNumberThe address number of the library to associate the notification with
TemplateNameThe name of the notification template to be used for the template

Optional parameters

NVTGCThe NVTGC associated with the library address. If not provided the NVTGC will be the default site code (i.e. ILL). This parameter should be provided in shared server environments.
ToThe To address for the e-mail. If To is not provided, the To address will default to the NotificationTemplate's ToAddress if provided or the User or Lender's e-mail address.
FromThe From address for the e-mail. If From is not provided, the From address will default to the NotificationTemplate's FromAddress if provided or the From address in Customization (LendingEmailFromAddress).
CCThe CC address for the e-mail.
BCCThe BCC address for the e-mail.
SubjectThe subject for the e-mail. If Subject is not provided, the subject will default to the NotificationTemplate's Subject.
StaffUsernameThe staff username associated with sending the notification.
CustomTags

An array of custom tags that can be used as replacement values for Special tags in a notification template. CustomTags are considered to be a part of the Special table name if a table name is not provided.

In the following example, <#Special.CustomApplicationField> in a template would be replaced with ABC and <#CustomApplicationTable.Field> would be replaced with XYZ. `CustomTags:{"CustomApplicationField":"ABC","CustomApplicationTable.Field":"XYZ"} `

 

Example SendLibraryNotification Request using JSON  Expand source

SendLibraryNotification Response

If the library or template name do not exist, the response will be a 404 Not Found.

If the notification was handled successfully, the Web Platform will respond with an HTTP 201 Created status code (Status: 201 Created).

Example SendLibraryNotification Response  Expand source