DCB-ADR-0002 DCB API

This ADR addresses the API which will be used for DCB implementation in the POC prototype.

15th October 2022

DCB Hub Discovery Prototype - API

Context:

DCB is a consortial architecture whereby resource sharing is very tightly integrated with the circulation operations of a library network. The ideal is that the extent of this integration renders consortial interlending identical to local patron lending. This contrasts with the peer-to-peer model which underpins the ILL activities supported by mod-rs today. Because of the need to support (a) Possibly different hosting/pod/cluster configurations of “Core” libraries in a network and (b) A extended network of heterogeneous “stand-alone” ILS implementations, an API is needed for a drop-in-replacement “Coordinator” or “Hub” service. Initially, this was seen as extensions and enhancements to the mod-rs component. Reviews of the existing interfaces in this space have demonstrated a number of mismatches between the OAKPI API, upon which mod-rs is founded, and which is strongly opinionated about a number of headers and authentication implementation details and the existing APIs. It may be possible to use edge adapters to massage the headers needed, and possibly the context paths required. A decision is needed which explains our approach to providing the least friction way to onboard existing LSP/LMS clients which we do not control

Decision:

For the POC, the team will build a stand-alone web service component. The existing DCB client ILS systems have equally strong opinions about authentication, tenancy, and API context paths (Specifically, standards-compliant JWT/OAuth and version-information-in-path). This service will not be an OKAPI module, but it will be zero trust. In line with discussions with the project team, the service will use a form of soft multitenancy whereby all holdings are gathered in a genuine union - this will allow libraries to join and leave multiple networks in a data-defined way.

Status:

Current/Done

Consequences:

The module will not be an OKAPI module - because it does not fit that model well. The approach taken will allow us to make an

  • Independently deployable service which is not constrained by the dependency graph of OKAPI

  • A Zero-Trust module

  • A Module that is capable of acting as an in-place drop-in replacement for existing DCB hubs, with the main goal being zero changes for interoperability with existing leaf nodes

Operated as a Community Resource by the Open Library Foundation