Request For Comments (RFCs)
  • Request for comments (RFC)
  • RFC 001: Matcher architecture
  • RFC 002: Archival Storage Service
  • RFC 003: Asset Access
  • RFC 004: METS Adapter
  • RFC 005: Reporting Pipeline
  • RFC 006: Reindexer architecture
  • RFC 007: Goobi Upload
  • RFC 008: API Filtering
  • RFC 009: AWS account setup
  • RFC 010: Data model
  • RFC 011: Network Architecture
  • RFC 012: API Architecture
  • RFC 013: Release & Deployment tracking
    • Deployment example
    • Version 1
  • RFC 014: Born digital workflow
  • RFC 015: How we work
    • Code Reviews
    • Shared Libraries
  • RFC 016: Holdings service
  • URL Design
  • Pipeline Tracing
  • Platform Reliability
    • CI/CD
    • Observability
    • Reliability
  • RFC 020: Locations and requesting
  • RFC 021: Data science in the pipeline
  • RFC 022: Logging
    • Logging example
  • RFC 023: Images endpoint
  • RFC 024: Library management
  • RFC 025: Tagging our Terraform resources
  • RFC 026: Relevance reporting service
  • RFC 026: Relation Embedder
  • RFC 027: Pipeline Intermediate Storage
  • RFC 029: Work state modelling
  • Pipeline merging
  • RFC 031: Relation Batcher
  • RFC 032: Calm deletion watcher
  • RFC 033: Api internal model versioning
  • RFC 034: Modelling Locations in the Catalogue API
  • RFC 035: Modelling MARC 856 "web linking entry"
  • RFC 036: Modelling holdings records
  • API faceting principles & expectations
  • Matcher versioning
  • Requesting API design
  • TEI Adapter
  • Tracking changes to the Miro data
  • How do we tell users how to find stuff?
  • Removing deleted records from (re)indexes
  • RFC 044: Tracking Patron Deletions
  • Work relationships in Sierra, part 2
    • Work relationships in Sierra
  • Born Digital in IIIF
  • Transitive hierarchies in Sierra
  • RFC 047: Changing the structure of the Catalogue API index
  • RFC 048: Concepts work plan
  • RFC 049: Changing how aggregations are retrieved by the Catalogue API
  • RFC 050: Design considerations for the concepts API
  • RFC 051: Ingesting Library of Congress concepts
  • RFC: 052: The Concepts Pipeline - phase one
  • RFC 053: Logging in Lambdas
  • RFC 054: Authoritative ids with multiple Canonical ids.
  • RFC 055: Genres as Concepts
  • RFC 055: Content API
    • Content API: articles endpoint
    • Content API: Events endpoint
    • Content API: exhibitions endpoint
    • The future of this endpoint
  • RFC 056: Prismic to Elasticsearch ETL pipeline
  • RFC 57: Relevance testing
    • Examples of rank CLI usage
  • RFC 059: Splitting the catalogue pipeline Terraform
  • RFC 060: Service health-check principles
  • RFC 060: Offsite requesting
    • Sierra locations in the Catalogue API
  • Content-api: next steps
Powered by GitBook
On this page
  • Phase 1: Requesting for items held offsite, viewed onsite
  • Phase 2: Requesting for items held offsite, viewed offsite

RFC 060: Offsite requesting

We want library patrons to be able to make online requests for items that are held offsite. Some of these items will be recalled to Wellcome Collection for viewing, whereas some will require patrons to travel elsewhere to view.

While we already have an online requesting process, this currently assumes that items are held onsite and as such follow a "hardcoded" requesting schedule: they are available to view according to the venue opening times and the time at which the request is made.

A requesting process for offsite requesting must include affordances for (a) an availability schedule based on the item location and (b) information for the patron regarding items that are to be viewed offsite. These can form two sequential work phases: the first enabling offsite requesting for items that will be viewed onsite, and the second for those that will be viewed offsite.

API Model

Currently, works have items with locations. Items that are currently requestable online have locations that look like this:

{
  "label": "Closed stores",
  "accessConditions": [
    {
      "method": {
        "id": "online-request",
        "label": "Online request",
        "type": "AccessMethod"
      },
      "status": {
        "id": "open",
        "label": "Open",
        "type": "AccessStatus"
      },
      "shelfmark": "<string>",
      "locationType": {
        "id": "closed-stores",
        "label": "Closed stores",
        "type": "LocationType"
      },
      "type": "PhysicalLocation"
    }
  ]
}

We can see from this that there are 3 controlled fields:

  • Location type: could also be open shelves, on exhibition, on order, etc.

  • Access status: this refers to intellectual/legal access restrictions.

  • Access method: could also be manual request, view online, not requestable, etc.

Now we consider how we might represent offsite items using this model:

  • Location type seems initially appealing; we could create a new "offsite stores" or similar location type. However, this doesn't tell us anything about the actual availability/location of that item - and aren't offsite stores just a type of closed stores? What about the difference between items that are viewed on/off-site?

  • Access status is not relevant (and needs to exist in full for offsite items)

  • Access method is the most literal, but "online request" already covers what we want to do. But what if that is a hint towards a scalable solution? Items that are held offsite but viewed onsite and are requested online can look exactly like the above, and items that are held and viewed offsite could have a new access method like "Offsite online request" etc.

  • Furthermore, user-facing information about item location (contextualising longer order times and offering an indication to experienced researchers about items that need to be viewed offsite) could be stored in the shelfmark string or in the label (which is currently "Closed stores" for all closed-stores items.)

Following this logic, we propose the following:

Phase 1: Requesting for items held offsite, viewed onsite

  • No changes to the model (and therefore pipeline behaviour) other than ensuring that items with an offsite location code are online-requestable.

  • Items API to use data direct from Sierra (as it does currently) to discriminate offsite items and to return appropriate availability slots.

  • Possible changes to location label and/or shelfmarks for offsite items (confirm with library colleagues).

  • Changes to frontend requesting copy to allow for variable requesting schedule.

This means that there will be no API-consumer-facing indication that an item is held offsite, other than potentially a reflection of this in the location label (which would not be reliably machine-readable). This leaves the items API free to determine the availability of an offsite item (eg its increased lead time over held-onsite items) based on the location data it receives directly from Sierra.

Questions

  • Is it really OK to have no machine-readable method for discriminating offsite items in our APIs? Will we end up writing hacks, stuff like if (location.label.includes("offsite")) { displaySomeOtherUIVariant(); }?

Phase 2: Requesting for items held offsite, viewed offsite

  • Addition of a new access method for items that are requested online to be viewed offsite

  • Items API to discriminate using Sierra data as in phase 1

  • User flow in frontend app and/or APIs to be determined using the new access method

For these items there will be an API-consumer-facing indication that the item is to be viewed offsite, in the form of the access method - but this will not give any details about the specifics of that location. As with Phase 1, the specifics will be determined by business logic held in the Items API, which has access to the Sierra data.

PreviousRFC 060: Service health-check principlesNextSierra locations in the Catalogue API

Last updated 10 months ago