Design & Architecture
The API goes about minting DOI’s in the following fashion:
We create the draft and commit that to the DB first due to the following “chicken and egg” issue:
To create a DataPublication we need a DOI [mandatory field]
To create a DOI we need a URL for the landing page which will have the DataPublication ID in it
Various ICAT tables need other entities to be created first as they are needed as a mandatory relationship. Below is a diagram of what is needed to create a DataPublication and how the api goes about it.
Facility is taken directly from the investigation for /mint/{investigation_id} or specified in the api config for user-defined DPs
DataPublicationType is a constant so is only retreived from the ICATDB once and appended to any DataPublications