Decision Records

We want to design infrastructure that lasts for a long time. This log describes significant decisions made since 2019, in approximate chronological order. This is where we explain how we build our system over time, how we made decisions, and the context at the time.

  • DR-0456: Don't include total-results in REST API /relationships endpoint

    Context and Problem Statement The /relationships API endpoint is a new feature in the REST API, and it’s powered by Manifold (backed by PostgreSQL) not Cayenne (backed by Elastic Search). One common requirement that users have is being able to …

  • DR-0453: URI representation for all Identifiers in the Item Graph

    Context and Problem Statement In the Item Graph, each Item has one or more Identifiers. These identifiers are stored alongside each other in the same database, and served in the same API endpoints. This is an evolution from our prior design: Our XML …

  • DR-0452: ROR representation in the REST API

    Context and Problem Statement We need a consistent way to represent ROR data in the API, particularly for the prototypes that are underway in Labs. This should be compatible with the future assertions schema of Manifold but should also maintain …

  • DR-0450: localization (i18n / l10n) message file format

    Context and Problem Statement We want to localize our Front End interface into multiple locales, to better support our diverse membership that spans multiple cultures, countries and dialects. We want messages that make sense to our readers, giving as …

  • DR-0445: Use of third party cookies for silent Single Sign On authorization flow

    Context and Problem Statement We use Keycloak to provide our Identity and Access Management. Keycloak has the ability to perform silent authentication checks via a hidden iframe, and relies on third-party cookies to do so. Should we enable this …