Use native API interfaces for deposit

  • Status: accepted

  • Deciders: sdruskat, poikilotherm, knodel, juckel, led02

  • Date: 2022-03-07

Context and Problem Statement

We need to use interfaces to deposit software on the target systems. Should we use dedicated wrapper libraries, e.g., for SWORD or for the single systems?

SWORD provides a standard way to deposit metadata in DublinCore.

Decision Drivers

  • We want to use maximally standard ways for deposition.

  • We don’t want to rely on too many third-party libraries.

  • We want to use generic solutions.

Considered Options

  • Use wrapper libraries for target systems, e.g. Zenodraft for Zenodo - may need to be adapted for InvenioRDM proper - or pyDataverse

  • Use SWORD, either via API endpoints or wrapper library, as one way to deposit metadata in addition to more generic ways

  • Use native API endpoints initially for deposit

  • Build own SWORD endpoint that dispatches to other APIs

Decision Outcome

Chosen option: “Use native API endpoints initially for deposit”, because It is the most usable solution at the moment.

Positive Consequences

  • We’ll have a working solution

Negative Consequences

  • We have to target the different system-native endpoints

Pros and Cons of the Options

Use SWORD, either via API endpoints or wrapper library, as one way to deposit metadata in addition to more generic ways

  • Good, because Standard way to deposit

  • Bad, because At least the Dataverse SWORD interface is reportedly not easily usable for our purposes

Use native API endpoints initially for deposit

  • Good, because The endpoints work

Build own SWORD endpoint that dispatches to other APIs

  • Good, because Provides a potentially unified interface that may make it easier to deposit via SWORD later on

  • Bad, because Still needs translation