Polaris API - Overview

The Polaris REST Application Programming Interface (PAPI) is a web-based service comprised of a set of URIs that return data or perform actions on the Polaris application database. Method calls are made over TCP connections by sending HTTP GET, PUT, POST and DELETE requests. Nearly any computer language can be used to communicate over HTTP with the REST server. This document details the REST API methods, including the URIs, HTTP verbs, request headers, and request bodies required to execute Polaris functionality.

See Also:

Setup

You must have the following to start using PAPI

  • Polaris API Service (Public) license is required. Innovative Support creates your license.

  • You can create a Staff user account using the Web Administration application.

  • You can create a Patron account using the Staff Client, Leap, or PowerPAC.

  • To use protected endpoints in PAPI, you need a Polaris staff user:

    • domain

    • name

    • password

  • To use Patron endpoints, you need the patron's:

    • barcode or username

    • password

To set up the PAPI website

  1. Configure the PAPI Website for Anonymous only

  2. Setup *.svc handler mapping in IIS.

    Note:
    If you installed IIS after Windows Communication Foundation (WCF) was installed, you must run the following command:
    "%WINDIR%\Microsoft.Net\Framework\v4.0\Windows Communication Foundation\
    ServiceModelReg.exe" -r

PAPI and Swagger

Swagger is an open-source framework for REST APIs. Effective as of Polaris 5.2, the Polaris API has a Swagger endpoint that provides code and documentation to Polaris customers and third-party vendors who use the Polaris API. For more information about Swagger, go to http://swagger.io/.

Note:
By default, the Swagger endpoint is disabled. To use Swagger, you must update the SwaggerEnabled value in appsettings.user.config from false to true and restart the PAPI IIS Application Pool.

Starting in Polaris 7.0, Swagger has been updated. The Swagger look and feel and the URL you use to access Swagger is updated. This means the Swagger URL now uses the following URL format: https://host/PAPIService/REST/swagger/index.html.

Replace host with the host name of your library's server. For example:

  • Old URL: https://midlib.polarislibrary.com/PAPIService/swagger/index.html

  • New URL: https://midlib.polarislibrary.com/PAPIService/REST/swagger/index.html

A friendly URL is defined for PAPI's Swagger integration. If you navigate to the old URL, you're redirected to the new Swagger URL. If you bookmarked any of the specific endpoints, the bookmark will bring you to the Swagger landing page, but not the specific endpoint.

PAPI Web Service Authorization

Secure functions will check HTTP header for valid Authorization element.

Authorization - PWS [PAPIAccessID]:[Signature]

  • "PWS" must be in caps

  • No space before or after ":"

  • "[PAPIAccessID]" - Assigned by Polaris

  • "[Signature]" - The signature is the following, encoded with SHA1 UTF-8:
    [HTTPMethod][URI][Date][PatronPassword]

Note:
Although [PatronPassword] is supported for constructing the authorization signature, we recommend that you use the AuthenticatePatron method to retrieve an AccessSecret. You can then use the AccessSecret instead of the patron’s password. For more information, see Using Public Methods as an Authenticated Staff User.
Use Patron Password only when accessing patron-specific methods.

Application IDs

{Version}/{LangID}/{AppID}/{OrgID}

Unless otherwise specified, customers and third-party developers should use an ApplicationID value of 100 when making calls to PAPI.

HTTP Method

The HTTP Method uses a Uniform Resource Identifier (URI) to identify an object, resource or concept in Polaris. A URI is composed of the following parts:

scheme:[//authority]path[?query][#fragment]

Construct the URI as you would expect the server to receive it:

Example:

search/bibs/keyword/au?q=roald+dahl&sort=PDTI&limit=TOM=dvd

not

search/bibs/keyword/au?q=roald%20dahl&sort=PDTI&limit=TOM%3Ddvd

Date

Note: The date must be within +/- 30 minutes of the current time or the request will fail.

  1. Use HTTP Date format (RFC1123)

    ddd, dd MMM yyyy HH:mm:ss GMT

    Example:
    Wed, 17 Oct 2012 22:23:32 GMT

  2. If you cannot set the date in the HTTP header, pass the following name:value pair into the header:

    PolarisDate: ddd, dd MMM yyyy HH:mm:ss GMTPolarisDate: Wed, 17 Oct 2012 22:23:32 GMT

    Example:
    Authorization: PWS polarisdev:8TD4Nfu+cxdUZPwqlQMVBuDOvMw=

Private key to create HMAC is assigned by Polaris

Current {version} is v1

General URI Parameters

Name

Required

Description/Notes

app-ID

Yes

Calling application (product) ID (see Application IDs)

org-ID

Yes

Organization identifier. This value must be system-level (1) or a branch-level organization identifier.

bib-ID

Yes

Record identifier

lang-ID

Yes

Language identifier of the Label. Possible values include:

1033 - English
1042 - Korean
1049 - Russian
1065 - Farsi
1066 - Vietnamese
1141 - Hawaiian
2052 - Chinese
3082 - Spanish
3084 - French
12289 - Arabic
15372 - Haitian Creole

Sample Code

To build the string (hash):

  1. Build the data by concatenating the HTTP method (GET, PUT, POST, DELETE), URI, Date, and Patron Password (if required). The Access Key is the private key assigned by Polaris. Pass the resulting routine.
  2. The routine returns a hash to the caller similar to this example:
    8TD4Nfu+cxdUZPwqlQMVBuDOvMw=
  3. This hash is combined with the PAPI Access Key ID and used in the HTTP header, similar to the following example:
    Authorization: PWS SOPAC1:8TD4Nfu+cxdUZPwqlQMVBuDOvMw=

Sample Android-based Java class:

package Polaris.CheckMyLibrary;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SignatureException; import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import android.util.Base64;
public class PAPIHash {
    private static final String HMAC_SHA1_ALGORITHM = "HmacSHA1";
    public String GetPAPIHash(
       String strAccessKey, String strHTTPMethod, String strURI, String strHTTPDate, String strPatronPassword) {
       String result = "";

// Get an hmac_sha1 key from the raw key bytes

       byte[] secretBytes = strAccessKey.getBytes();
       SecretKeySpec signingKey = new SecretKeySpec(secretBytes, HMAC_SHA1_ALGORITHM);

// Get an hmac_sha1 Mac instance and initialize with the signing key

       try { Mac mac; mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
       mac.init(signingKey);

       String data = "";
       if (strPatronPassword.length() & gt; 0) data = strHTTPMethod + strURI + strHTTPDate + strPatronPassword;
       else
           data = strHTTPMethod + strURI + strHTTPDate;

// Compute the hmac on input data bytes

      byte[] rawHmac = mac.doFinal(data.getBytes());

// Convert raw bytes to Hex result = Base64.encodeToString(rawHmac, 0);

       } catch (NoSuchAlgorithmException e1) {

// TODO Auto-generated catch block

       e1.printStackTrace(); } catch (InvalidKeyException e) {

// TODO Auto-generated catch block

       e.printStackTrace();
       }
   return result;
    }
}

Sample C# Method:

public string GetPAPIHash(string strAccessKey, string strHTTPMethod, string strURI, string strHTTPDate, string strPatronPassword)

{
byte[] secretBytes = UTF8Encoding.UTF8.GetBytes(strAccessKey);
HMACSHA1 hmac = new HMACSHA1(secretBytes);

// Computed hash is based on different elements defined by URI

 byte[] dataBytes = null;
  if (strPatronPassword.Length > 0)
         dataBytes = UTF8Encoding.UTF8.GetBytes(strHTTPMethod +
                     strURI + strHTTPDate + strPatronPassword);
           else
         dataBytes = UTF8Encoding.UTF8.GetBytes(strHTTPMethod +
                     strURI + strHTTPDate);
      byte[] computedHash = hmac.ComputeHash(dataBytes);
     string computedHashString = Convert.ToBase64String(computedHash);
  return computedHashString;
}

Appsettings.config - AuthenticationLevel

ALL - Require authentication for all API calls (default)

PATRON - Require authentication for Patron related API calls

NONE - Authentication is not required (debug purposes only)

Appsettings.config - appSettings Keys

The following appSettings keys are supported in the appsettings.config file:

Key

Values

ApplicationName

Used to create log folder and filename

LogMessagesLevel

GENERAL - All General and error messages

ERROR - Error messages only

DEBUG - All general, debug and error messages

LogMessagesPurge

true/false - Automatically delete log files older than 30 days. Default: True

LogMessagesVersionStamp

true/false - Add the version to the log file name. Default: False

LogMessagesDateStamp

true/false - Add a date stamp to the log file name. Default: False

LogMessagesStackMethod

true/false - Record the object and method name in the log file entry. This is automatically done for DEBUG and ERROR settings. Default: True

ERMSNetworkAddress

Override the default ERMS Network Address.

ExternalHostname

Specify override if the external URI request host name is different from the local domain name. Setting this option affects how the PAPI hash is calculated.

Example: Incoming request uses papiserver.mylibrary.org, server’s local name is papi.local.org

SwaggerEnabled Allow access to the Swagger UI. By default, this is disabled.

SSL in Polaris 4.0.676 and Later; 4.1.442 and Later

All protected method calls require SSL using HTTPS. This is to ensure that all sensitive data, such as domain account information, is encrypted. If a protected method is called without an HTTPS connection, a “403 - Forbidden” error is returned.

You can configure the PAPIService appsettings.config file to support the following:

  • HTTPS only - Allows only protected methods
  • HTTP and HTTPS - Allows both public and protected methods

By default, the appsettings.config file is set to require HTTPS. If you plan to use protected methods and you also require support for existing PAPI-based applications, you must enable both HTTP and HTTPS.

To set these options:

  1. Go to the appsettings.user.config file located in C:\Program Files\Polaris\[version]\PAPIService\REST

  2. Set the Security Mode as follows:

    • None = Support HTTP and HTTPS
    • Transport = Support HTTPS only

Important:
Once they are set to Transport, ALL PAPI method calls (public and protected) must use HTTPS.

Support for XML and JSON Data Exchange Formats

The Polaris API supports both XML and JSON (JavaScript Object Notation) data exchange formats. The caller may choose to use JSON by specifying the content type in the HTTP request header. XML is the default.

HTTP Request Header

To specify JSON, you can add the following to the HTTP request header:

Content-Type: application/json

Accept: application/json

To specify XML (the default), you can add the following to the HTTP request header:

Content-Type: application/xml

Accept: application/xml

Note:
The HTTP request header must provide the “Content-Length” when using the request body.

JSON and DateTime Fields

All DateTime fields are nullable. The default is no longer MinValue.

We provide two date format options for JSON request/response bodies.

  • When JSONDateFormat is set to "Microsoft", the resulting data is formatted as:

    "/Date(1642625411380-0500)/"

  • When JSONDateFormat is set to "ISO", the resulting data is formatted as:

    "2022-01-04T14:58:32-0400"

JSON - GetBib

Example HTTP data returned by a call to GetBib using JSON as the content type:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 1480
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 07 Jan 2011 19:06:54 GMT

"PAPIErrorCode": 0,

"ErrorMessage": "",

"BibGetRows": [{

"ElementID": 35,

"Occurence": 1,

"Label": "Title:",

"Value": "The wind in the willows \/ illustrated by Ernest H. Shepard.",

"Alternate": false

}, {

"ElementID": 18,

"Occurence": 1,

"Label": "Author:",

"Value": "Grahame, Kenneth, 1859-1932.",

"Alternate": false

}, {

"ElementID": 2,

"Occurence": 1,

"Label": "Publisher, Date:",

"Value": "New York : Scribner, 1961, c1933.",

"Alternate": false

}, {

"ElementID": 3,

"Occurence": 1,

"Label": "Description:",

"Value": "259 p. : illus. ; 21 cm.",

"Alternate": false

}, {

"ElementID": 17,

"Occurence": 1,

"Label": "Format:",

"Value": "Book",

"Alternate": false

}, {

"ElementID": 21,

"Occurence": 1,

"Label": "Other Author:",

"Value": "Shepard, Ernest H. (Ernest Howard), 1879-1976.",

"Alternate": false

}, {

"ElementID": 28,

"Occurence": 1,

"Label": "Notes:",

"Value": "\"Atheneum Books for Young Readers\"",

"Alternate": false

}, {

"ElementID": 28,

"Occurence": 2,

"Label": "Notes:",

"Value": "The adventures of four amiable animals, Rat, Toad, Mole and Badger, along a river in the English countryside.",

"Alternate": false

}, {

"ElementID": 6,

"Occurence": 1,

"Label": "ISBN:",

"Value": "0684128195",

"Alternate": false

}, {

"ElementID": 7,

"Occurence": 1,

"Label": "System Availability:",

"Value": "4",

"Alternate": false

}, {

"ElementID": 8,

"Occurence": 1,

"Label": "Current Holds:",

"Value": "0",

"Alternate": false

}, {

"ElementID": 13,

"Occurence": 1,

"Label": "Call Number:",

"Value": "J Fict Gra",

"Alternate": false

}, {

"ElementID": 16,

"Occurence": 1,

"Label": "System Items Available:",

"Value": "3",

"Alternate": false

}

]

}

JSON - HoldRequestCreate

Example HTTP request body when using the POST command with JSON:

{

"PatronID": 299377,

"BibID": "15593",

"ItemBarcode": "",

"VolumeNumber": "",

"Designation": "",

"PickupOrgID": "74",

"IsBorrowByMail": "0",

"PatronNotes": "",

"ActivationDate": "\/Date(1295352000000)\/",

"WorkstationID": "1",

"UserID": "1",

"RequestingOrgID": "74",

"TargetGUID": ""

}

JSON - ItemRenewAllForPatron

Example HTTP request body when using the PUT command with JSON:

{

"Action":"renew",

"LogonBranchID":"74",

"LogonUserID":"1",

"LogonWorkstationID":"1",

"RenewData":{"IgnoreOverrideErrors":true}

}

JSON - PatronAccountPay

Example HTTP request body when using the PUT command with JSON:

{

"TxnAmount":"2.95",

"PaymentMethodID":"11",

"FreeTextNote":"Paid through Polaris API"

}

Date Format when using JSON

Because JSON does not have a standard way of describing dates, the following format must be used:

"\/Date(1295352000000)\/"

The number represents the number of milliseconds since January 1st 1970 UTC.

1295352000000 represents Tuesday, January 18, 2011 7:00:00 AM.

XML Elements

The order of XML elements matters! (You will see reminders throughout this document.)

Examples of SHA1 Encoding

http://msdn.microsoft.com/en-us/library/dd203052.aspx

http://en.wikipedia.org/wiki/Sha1

Example using http://jssha.sourceforge.net/

PAPI Protected Methods

The PAPI service supports protected methods. These are functions that can be performed by a staff member and not a patron. The staff member must authenticate with the PAPI service using the AuthenticateStaffUser method over a secure connection. Domain account information is exchanged and verified only once. If authentication is successful, the user is provided an AccessToken and AccessSecret which users can use for the remainder of their operations. SA_GetValueByOrg, below, is an example of how to use this authentication mechanism. A PAPI processing job runs at 5:30 a.m. to delete expired authentication tokens. The job calls the PAPI_DeleteExpiredAuthTokens database stored procedure which checks the PAPIStaffAuthentication table’s AuthenticationExpDate column.

Using Protected Methods

Once you have authenticated using the AuthenticateStaffUser method, you can use the protected methods. The access token and access secret returned by the AuthenticateStaffUser method are required for all protected calls. The access token is valid for 24 hours. All protected methods contain the access token in the URI. When creating the authentication signature, append the AccessSecret to the data being hashed.

Example:

[HTTP Method][URI][HTTP Date][Access Secret]

Note that AuthenticateStaffUser does not require the “AccessSecret” when building the signature.

Example calling a protected method:

SA_GetValueByOrg

https://[hostname]/PAPIService/REST/protected/v1/1033/100/1/[AccessToken]/
organization/1/sysadmin/attribute/ORGPHONE1

HTTP Verb: GET

Authorization Required: Yes

Header:

Date: Sat, 14 May 2011 22:23:32 GMT

Authorization: PWS polarisdev:ZasTURsRdlEHeKgdA1MGXROUxTI=

Content-Type: text/xml

Using Public Methods as an Authenticated Staff User

In some scenarios, as an authenticated staff user, you might want to call a public method that requires the patron’s password. Instead of looking up the patron’s password, you can build the authentication signature using the AccessSecret. Because the public method does not contain the AccessToken in the URI, you simply pass in a custom HTTP header field called X-PAPI-AccessToken. The PAPI Service will look for the X-PAPI-AccessToken header field and act accordingly.

Note: This process might fail if a firewall or network device is configured to remove non-standard HTTP header fields.

SSL Requirements for Protected Methods

SSL must be used because domain account information is being passed to perform the initial account authentication.

You must enable SSL in the PAPI Service by changing the security mode to Transport.

Important: Once you have set the security mode to Transport, all PAPI method calls (public and protected) must use HTTPS.

The certificate must be installed on the IIS website.

PAPI Service must contain binding on port 443 to the web server certificate.

Development Tools - Fiddler2 (Freeware)

http://www.fiddler2.com/fiddler2/

PAPI Error Codes

The following error codes are returned from the Polaris RESTAPI.

Code

Reason

General

Any positive number

Represents either the count of rows returned or the number of rows affected by the procedure. See individual procedure definitions for details.

0

Success

-1

FAILURE - General

-2

Multiple errors. See returned rowset for list of errors.

-3

PARTIAL FAILURE - Multiple errors (but some items succeeded). See returned rowset for list of errors.

-4

FAILURE - ERMS error

-5 Failure. Database error occurred
-6 Failure. Invalid parameter
-9 SQL timeout
-10 Failure. ID does not exist
-11 Validation_Errors

Bibliographic Errors - [1000-1499]

-1000

Invalid BibliographicRecordID specified

MARC Errors - [1500-1999]

-1500 MARC not supplied
-1501 MARC Leader not supplied
-1502 MARC control field not supplied
-1503 MARC control field 008 not supplied
-1504 MARC data fields not supplied
-1505 MARC data field title not supplied
-1506 MARC data field price not supplied

Item/Holdings Errors - [2000-2999]

-2000

Invalid ItemRecordID specified

-2001

Invalid barcode specified

-2002

Duplicate barcode specified

Patron Errors - [-201, -221; -501; 3000-3999]

-201 Failed to insert entry in addresses table
-221 Failed to insert entry in PostalCodes table
-501 Patron personal information change is not allowed
-3000 Patron does not exist
-3001 Failed to insert entry in Patrons table
-3400 Failed to insert entry in Patronaddresses table

-3500

Country code does not exist

-3501

Patron branch is not defined

-3502

Patron branch is not a valid branch

-3503

Last name is not defined

-3504

First name is not defined

-3505

Barcode is already used for another patron

-3506

Transaction branch is not defined

-3507

Transaction user is not defined

-3508

Transaction workstation is not defined

-3509

Passwords do not match

-3510

Postal code problems - mismatch city, state, county

-3511

Postal code problems - mismatch city, state

-3512

Postal code problems - mismatch city, county

-3513

Postal code problems - mismatch state, county

-3514

Postal code problems - mismatch county

-3515

Postal code problems - mismatch state

-3516

Postal code problems - mismatch city

-3517

Postal code problems - postal code not found

-3518

Invalid Email address

-3519

Invalid DeliveryMethod Value (No Address for Patron)

-3520

Invalid DeliveryMethod Value (No Email Address for Patron)

-3521

Invalid DeliveryMethod Value (No PhoneVoice1 for Patron)

-3522

Invalid DeliveryMethod Value (No PhoneVoice2 for Patron)

-3523

Invalid DeliveryMethod Value (No PhoneVoice3 for Patron)

-3524

Invalid DeliveryMethod Value (No PhoneFax for Patron)

-3525

Invalid DeliveryMethod Value

-3526

Invalid EmailFormat Value

-3527

Invalid ReadingList Value

-3528

Duplicate name

-3529

Duplicate username

-3530

Failed to insert entry in Patron Registration table

-3532 Invalid PhoneVoice1 value
-3533 Invalid password format
-3534 Invalid Password length
-3535 Patron password change is not allowed
-3536 Invalid gender value

-3600

Charge transaction does not exist

-3601

Charge transaction for this patron does not exist

-3602

Payment method for payment is invalid

-3603

Invalid amount is being paid

-3604

Invalid transaction type being paid

-3605

General patron account database error

-3606

Payment transaction does not exist

-3607

Payment transaction for this patron does not exist

-3608

Payment transaction cannot be voided because another action taken on payment

-3610

Payment amount is more than the sum of the charges

-3612 Invalid PatronCodeID
-3613 Invalid PhoneVoice2
-3614 Invalid PhoneVoice3
-3615 Invalid Alt Email Address
-3616 Invalid TXTPhoneNumber
-3617 Invalid PhoneCarrier
-3619 Invalid DeliveryMethod No Phone
-3620 Invalid Email Address for EReceipt
-3621 Patron Is Secure

Hold Request Errors - [4000-4999]

-4000

Invalid application ID supplied

-4001

Invalid patron ID supplied

-4002

Invalid workstation ID supplied

-4003

Invalid request ID supplied

-4004

Invalid requesting org ID supplied

-4005

Invalid patron barcode

-4006

Invalid bibliographic record ID supplied

-4007

Invalid pickup org ID supplied

-4016 Cannot change pickup branch for request in statusID

-4100

Invalid request GUID supplied

-4101

Invalid txn group qualifier supplied

-4102

Invalid txn qualifier supplied

-4103

Invalid answer supplied

-4104

Invalid state supplied

-4201

Invalid request ID supplied

-4202

Invalid current org ID supplied

-4203

Cancel prevented for hold requests with status of Held

-4204 Cancel prevented for hold request with status of Unclaimed
-4205 Cancel prevented for hold request with a status of Canceled
-4206 Cancel prevented for hold request with a status of Expired
-4207 Cancel prevented for hold request with a status of Out to Patron
-4208 Cancel prevented for hold request with a status of Shipped

-4300

No requests available to cancel

-4400

Invalid Application date supplied

-4401

Application date must be greater than or equal to today's date

-4402

Application date must be earlier than 2 years from today

-4403

Invalid pickup branch assigned to hold request

-4404

Error occurred loading SA "days to expire"

-4405

Request must have a status of Active, Inactive or Pending

-4406

No requests available to suspend

-4407

Request status invalid for this process

-4408

Invalid request status change requested

-4409

Invalid hold user not supplied reason

-4410

This is the only item available for hold

-4411

No other items at other branches are available to fill this hold

Organization Errors - [5000-5999]

-5000

Invalid OrganizationID specified

Circulation Errors - [6000-6999]

-6000

Invalid loan unit supplied

-6001

ItemCheckout record does not exist

Course Reserve Errors - [7000-7999]

-7000

Invalid CourseReserveID specified

PolarisUser Errors - [8000-8999]

-8000

Invalid PolarisUserID specified

-8001 Polaris user is not permitted
-8002 StaffUser_NotSupplied
-8003 StaffUser_NotFound
-8004 StaffUser_Account_Disabled

Workstation Errors - [9000-9999]

-9000

Invalid WorkstationID specified

Record Set Errors - [11000-11999]
-11000 Supplied recordSetID is not of type patron
-11001 RecordSetID does not exist
Acquisitions Errors - [12000-12999]
-12100 Acquisitions supplier record name not supplied
-12101 Acquisitions supplier record name not found
-12102 Acquisitions line items not supplied
-12103 Acquisitions line item segments not supplied
-12104 Acquisitions total copies not supplied
-12105 Acquisitions line item copies not supplied
-12106 Acquisitions line item segment copies not supplied
-12107 Acquisitions copy counts do not match
-12108 Acquisitions branch location not found
-12109 Acquisitions branch location not a branch
-12110 Acquisitions fund not found
-12111 Acquisitions fund not open
-12112 Acquisitions fund none available
-12113 Acquisitions collection not found
-12114 Acquisitions collection not assigned to branch location
-12115 Acquisitions order type not firm order
-12116 Acquisitions payment method not purchase
-12117 Acquisitions line items validation errors found
-12118 Acquisitions fund multiple entries found
-12119 Acquisitions total of copies does not match
-12120 Acquisitions login is Organization level, not Branch level
-12121 Acquisitions branch location is not allowed
-12122 Acquisitions create Purchase Order not permitted at this branch
-12123 Acquisitions ordered at location not supplied
-12124 Acquisitions ordered at location not found
-12125 Acquisitions ordered at location not a branch
-12126 Acquisitions PO number not supplied
-12127 Acquisitions PO number exists
-12128 Acquisitions MARC validation errors found
-12129 Acquisitions line item segments duplicate
-12130 Acquisitions supplier record name duplicate
-12131 Acquisitions item template match not found

Material Format Types

The following IDs are associated with the FormatID columns in several of the returned rowsets.

ID

Searchcode

Format Description

1

bks

Book

2

mus

Printed or Manuscript Music

3

cmt

Cartographic Material

4

vis

Visual Materials

5

rec

Sound Recording

6

elr

Electronic Resources

7

mix

Archival Mixed Materials

8

ser

Serial

9

pmu

Printed Music

10

mmu

Manuscript Music

11

pmc

Printed Cartographic Material

12

mcm

Manuscript Cartographic Material

13

map

Map

14

glb

Globe

15

mss

Manuscript Material

16

pgr

Projected Medium

17

mot

Motion Picture

18

vid

Video Recording

19

ngr

Two Dimensional Non-projected Graphic

20

art

Three Dimensional Object

21

msr

Musical Sound Recording

22

nsr

Nonmusical Sound Recording

23

kit

Kit

24

per

Periodical

25

new

Newspaper

26

mic

Microform

27

lpt

Large Print

28

brl

Braille

33

dvd

DVD

34

vcr

Videotape

35

mcd

Music CD

36

ebk

eBook

37

abk

Audio Book

38 dmc Digital Collection
39 abs Abstract
40 brd Blu-ray Disc
41 aeb Eaudiobook
42 bcd Book + CD
43 bcs Book + Cassette
44 vgm Video Game
45 bdv Blu-ray + DVD
46 bkv Book + DVD
47 atl Atlas
48 stm Streaming Music
49 stv Streaming Video
50 emg Emagazine
51 vyl Vinyl
52 abc Audio Book on CD
53 abt Audio Book on Cassette

General URI Parameters

Name

Required

Description/Notes

app-ID

Yes

Calling application (product) ID (see Application IDs)

org-ID

Yes

Organization identifier. This value must be system-level (1) or a branch-level organization identifier.

bib-ID

Yes

Record identifier

lang-ID

Yes

Language identifier of the Label. Possible values include:

1033 - English
1042 - Korean
1049 - Russian
1065 - Farsi
1066 - Vietnamese
1141 - Hawaiian
2052 - Chinese
3082 - Spanish
3084 - French
12289 - Arabic
15372 - Haitian Creole