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
- PAPI and Swagger
- PAPI Web Service Authorization
- AppSettings.config - AuthenticationLevel
- SSL in Polaris 4.0.676 and later; 4.1.442 and later
- HTTP Request Header
- PAPI Protected Methods
- Using Public Methods as an Authenticated Staff User
- PAPI Error Codes
- Material Format Types
- General URI Parameters
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
-
Configure the PAPI Website for Anonymous only
-
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.
-
Use HTTP Date format (RFC1123)
ddd, dd MMM yyyy HH:mm:ss GMT
Example:
Wed, 17 Oct 2012 22:23:32 GMT -
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 |
Sample Code
To build the string (hash):
- 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.
-
The routine returns a hash to the caller similar to this example:
8TD4Nfu+cxdUZPwqlQMVBuDOvMw= -
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; // Get an hmac_sha1 key from the raw key bytes byte[] secretBytes = strAccessKey.getBytes(); // Get an hmac_sha1 Mac instance and initialize with the signing key try { Mac mac; mac = Mac.getInstance(HMAC_SHA1_ALGORITHM); String data = "";
// 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(); |
Sample C# Method:
public string GetPAPIHash(string strAccessKey, string strHTTPMethod, string strURI, string strHTTPDate, string strPatronPassword) { // Computed hash is based on different elements defined by URI byte[] dataBytes = null; |
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:
-
Go to the appsettings.user.config file located in C:\Program Files\Polaris\[version]\PAPIService\REST
-
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 "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]/ |
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 |