...
One approach could be to expose all relevant Information in the response. In other words, RTAC-2 should just provide all (non classified) attributes of 'holding', 'item', and 'location'. This will allow a library to use all attributes of this objects to pass hints to a discovery system. (e.g. the note fields). The current RTAC provides only a selection of all possible information, which leads into the well documented limitations.
Request
Task | Method | Path | PostParms |
---|---|---|---|
Inquirer information about one instance defined by UUID | GET | /rtac |
/uuid/{instance_uuid} | ||
Inquirer information about one instance defined by HRID | GET | /rtac |
/hrid/{instance_uuid} | ||
Inquirer information about multiple instances defined by UUID | POST | /rtac |
/uuid | List of UUIDs | |
Inquirer information about multiple instances defined by HRID | POST | /rtac |
/hrid | List of HRIDs |
Notes:
- HRID as query parameter is indispensable for most German librariesProviding .
- Since clients are capable to do asynchronous concurrent requests, it seems be outdated to provide a batch mode (POST endpoints) seems to be outdated, since clients are capable to do asynchronous concurrent requests.
...
- .
Response
According to current design patterns JSON is assumed as transport format for the RTAC response.
Example
Short hypothetical response to http://somehost/rtac/hrid/12345678
Code Block | ||||
---|---|---|---|---|
| ||||
{
"id" : "12345678",
"holdings": [
{
"id": "28ead097-5e3d-44fe-b647-ec982a1e4433",
"hrid": "a",
"type": "electronic",
"suppressDiscovery": false,
"somethingUnknown": "Newly introduced attribute in the holding record",
"items": [
{
"id": "28ead097-5e3d-44fe-b647-ec982a1e4413",
"hrid": "1",
"callNumber": "29K 216,2.Aufl.",
"status": "available",
"permanentLoanType": "lendable",
"location": {
"id": "Lehrbuchsammlung_3",
"displayName": "Main building",
"type": "Freihand",
"somethingUnknown": "Newly introduced attribute in the location record"
},
"somethingUnknown": "Newly introduced attribute in the item record"
}
]
}
]
} |
Schema
Preliminary definition the response. This version is far from complete. In the final version it should be capable to transport all attributes of 'holding', 'item' and 'location'.
Code Block | ||||
---|---|---|---|---|
| ||||
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "RTAC Holding Schema",
"description": "Real Time Availability Check (RTAC) holding details.",
"type": "object",
"required": [
"id",
"holdings"
],
"properties": {
"id": {
"description": "Id of the requested instance ('uuid' |'hrid')",
"type": "string"
},
"holdings": {
"type": "array",
"description": "List of holdings",
"holding": [
{
"$ref": "/schemas/rtac/holding"
}
]
}
},
"$defs": {
"holding": {
"$id": "/schemas/rtac/holding",
"description": "holding details. (https://wiki.folio.org/pages/viewpage.action?pageId=54888355)",
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"description": "Uniform id of this holding record",
"$ref": "/schemas/rtac/uuid"
},
"hrid": {
"description": "Human readable id of this holding record",
"type": "string"
},
"type": {
"description": "Material type of this expression",
"type": "string"
},
"urls": {
"description": "List of possible URLs",
"$ref": "/schemas/rtac/urls"
},
"uri": {
"description": "?",
"type": "string"
},
"suppressDiscovery": {
"description": "Additional flag for the visibility",
"type": "boolean"
},
"location": {
"description": "Default storage room",
"$ref": "/schemas/rtac/location"
}
},
"items": {
"type": "array",
"description": "List of items",
"item": [
{
"$ref": "/schemas/rtac/item"
}
]
}
},
"item": {
"$id": "/schemas/rtac/item",
"description": "Description of one item. (https://wiki.folio.org/pages/viewpage.action?pageId=54888358)",
"type": "object",
"properties": {
"id": {
"description": "Uniform id of this item",
"$ref": "/schemas/rtac/uuid"
},
"hrid": {
"description": "Human readable id of this item",
"type": "string"
},
"callNumber": {
"description": "The main call number (aka. shelf mark) of this item",
"type": "string"
},
"barcode": {
"description": "The Barcode of this item",
"type": "string"
},
"acquisitionNumber": {
"description": "?",
"type": "string"
},
"status": {
"description": "The current availibility status of this item in the circulation system",
"type": "string"
},
"dueDate": {
"description": "Item record's due date field",
"type": "string"
},
"permanentLoanType": {
"description": "The general type of loan for this item",
"type": "string"
},
"temporaryLoanType": {
"description": "The general type of loan for this item",
"type": "string"
},
"location": {
"description": "The effective storage room for this item",
"$ref": "/schemas/rtac/location"
}
},
"required": [
"id",
"hrid",
"indicator",
"status"
]
},
"location": {
"$id": "/schemas/rtac/location",
"description": "Storarage location refered in 'item' and 'holding' ",
"type": "object",
"required": [
"id",
"displayName",
"type"
],
"properties": {
"id": {
"type": "string"
},
"displayName": {
"type": "string"
},
"type": {
"type": "string"
}
}
},
"uuid": {
"$id": "/schemas/rtac/uuid",
"description": "uuid for FOLIO data objects",
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
},
"urls": {
"$id": "/schemas/rtac/urls",
"description": "List of Urls",
"type": "array",
"minItems": 1,
"url": {
"type": "string"
}
}
}
} |