Cora REST-API
Medlemmer kan lese, opprette og oppdatere poster i Alvin via et REST API bygget på Cora, et metadatadrevet generisk åpent digitalt arkivsystem designet for å administrere strukturerte metadata og filer.
Cora er utviklet av National Systems ved Uppsala universitetsbibliotek.
Cora Record API Documentation beskriver hvordan poster og filer administreres og hvordan søk utføres.
Poster i Alvin
For å opprette og oppdatere poster må brukeren være registrert i systemet (kun tilgjengelig for personer tilknyttet Alvins medlemsorganisasjoner). Publiserte poster kan imidlertid leses av alle og er åpent tilgjengelige uten innlogging.
Poster administreres via Alvins dataformat i Cora uttrykt som enten XML eller JSON. Formatbeskrivelsen av typer og klasser er tilgjengelig i katalogiseringsklienten og som et åpent, lenket vokabular.
Opprett bibliografisk post
Obligatoriske felt for alle bibliografiske poster er typeOfResource, title og location. I tillegg til beskrivende Alvin-metadata krever Cora en rekke spesifikke obligatoriske kontrollfelt i recordInfo-elementet.
<record>
<typeOfResource>img</typeOfResource>
<title>
<mainTitle>A title</mainTitle>
</title>
<physicalLocation>
<heldBy>
<location>
<linkedRecordType>alvin-location</linkedRecordType>
<linkedRecordId>1</linkedRecordId>
</location>
</heldBy>
</physicalLocation>
<recordInfo>
<validationType>
<linkedRecordType>validationType</linkedRecordType>
<linkedRecordId>recordStillImage</linkedRecordId>
</validationType>
<dataDivider>
<linkedRecordType>system</linkedRecordType>
<linkedRecordId>alvinData</linkedRecordId>
</dataDivider>
<permissionUnit>
<linkedRecordType>permissionUnit</linkedRecordType>
<linkedRecordId>1</linkedRecordId>
</permissionUnit>
<visibility>published</visibility>
</recordInfo>
</record>
- validationType spesifiserer hvilket sett med metadataelementer posten sjekkes mot. Ulike ressurstyper har forskjellige tillatte underelementer. Koblet til ressurstypen via koblet ID.
- dataDivider har en fast verdi alvinData som lenket ID.
- permissionUnit er for å administrere rettigheter en nødvendig duplisering av ID-nummeret for den lenkede arkivinstitusjonen i posten. alvin-location med lenket ID 1 i location-elementet dupliseres dermed til permissionUnit med verdi 1. Bare poster som tilhører brukerens egen organisasjon kan opprettes.
- visibility angir om posten skal være offentlig tilgjengelig eller ikke. Poster kan enten være publiserte (lesbare for alle) eller upubliserte (kun tilgjengelige for innloggede brukere i organisasjonen din).
Les bibliografisk post
Poster som leses via API-et inneholder, i tillegg til selve de beskrivende metadataene, lenker (actionLinks) til de ulike mulighetene brukeren har for å kalle både posten og lenkede poster i API-et. Et omkringliggende Cora-element (record) inneholder (data) som igjen inneholder selve metadataposten.
Merk repeatId-attributtet som er obligatorisk for alle repeterbare felt i Cora API-et. repeatId-attributtet må inneholde et unikt nummer i hvert element.
<record>
<data>
<record>
<typeOfResource>img</typeOfResource>
<title>
<mainTitle>A title</mainTitle>
</title>
<physicalLocation>
<heldBy>
<location>
<linkedRecordType>alvin-location</linkedRecordType>
<linkedRecordId>1</linkedRecordId>
<actionLinks>
<read>
<requestMethod>GET</requestMethod>
<rel>read</rel>
<url>https://cora.alvin-portal.org/rest/record/alvin-location/1</url>
<accept>application/vnd.cora.record+xml</accept>
</read>
</actionLinks>
</location>
</heldBy>
</physicalLocation>
<recordInfo>
<validationType>
<linkedRecordType>validationType</linkedRecordType>
<linkedRecordId>recordStillImage</linkedRecordId>
<actionLinks>
<read>
<requestMethod>GET</requestMethod>
<rel>read</rel>
<url>https://cora.alvin-portal.org/rest/record/validationType/recordStillImage</url>
<accept>application/vnd.cora.record+xml</accept>
</read>
</actionLinks>
</validationType>
<dataDivider>
<linkedRecordType>system</linkedRecordType>
<linkedRecordId>alvinData</linkedRecordId>
<actionLinks>
<read>
<requestMethod>GET</requestMethod>
<rel>read</rel>
<url>https://cora.alvin-portal.org/rest/record/system/alvinData</url>
<accept>application/vnd.cora.record+xml</accept>
</read>
</actionLinks>
</dataDivider>
<permissionUnit>
<linkedRecordType>permissionUnit</linkedRecordType>
<linkedRecordId>1</linkedRecordId>
<actionLinks>
<read>
<requestMethod>GET</requestMethod>
<rel>read</rel>
<url>https://cora.alvin-portal.org/rest/record/permissionUnit/1</url>
<accept>application/vnd.cora.record+xml</accept>
</read>
</actionLinks>
</permissionUnit>
<visibility>published</visibility>
<tsVisibility>2026-01-14T15:03:02.382669Z</tsVisibility>
<inTrashBin>false</inTrashBin>
<id>2</id>
<type>
<linkedRecordType>recordType</linkedRecordType>
<linkedRecordId>alvin-record</linkedRecordId>
<actionLinks>
<read>
<requestMethod>GET</requestMethod>
<rel>read</rel>
<url>https://cora.alvin-portal.org/rest/record/recordType/alvin-record</url>
<accept>application/vnd.cora.record+xml</accept>
</read>
</actionLinks>
</type>
<createdBy>
<linkedRecordType>user</linkedRecordType>
<linkedRecordId>111111</linkedRecordId>
</createdBy>
<tsCreated>2026-01-14T15:03:02.383666Z</tsCreated>
<updated repeatId="0">
<tsUpdated>2026-01-14T17:29:26.591761Z</tsUpdated>
<updatedBy>
<linkedRecordType>user</linkedRecordType>
<linkedRecordId>111111</linkedRecordId>
</updatedBy>
</updated>
<urn>urn:nbn:se:alvin:portal:record-1</urn>
</recordInfo>
</record>
</data>
<actionLinks>
<read>
<requestMethod>GET</requestMethod>
<rel>read</rel>
<url>https://cora.alvin-portal.org/rest/record/alvin-record/1</url>
<accept>application/vnd.cora.record+xml</accept>
</read>
</actionLinks>
</record>
Oppdater bibliografisk post
Når du oppdaterer en eksisterende post, angis også id og type i recordInfo. inTrashBin settes til false.
<record>
<typeOfResource>img</typeOfResource>
<title>
<mainTitle>An updated title</mainTitle>
</title>
<physicalLocation>
<heldBy>
<location>
<linkedRecordType>alvin-location</linkedRecordType>
<linkedRecordId>1</linkedRecordId>
</location>
</heldBy>
</physicalLocation>
<recordInfo>
<id>1</id>
<type>
<linkedRecordType>recordType</linkedRecordType>
<linkedRecordId>alvin-record</linkedRecordId>
</type>
<validationType>
<linkedRecordType>validationType</linkedRecordType>
<linkedRecordId>recordStillImage</linkedRecordId>
</validationType>
<dataDivider>
<linkedRecordType>system</linkedRecordType>
<linkedRecordId>alvinData</linkedRecordId>
</dataDivider>
<permissionUnit>
<linkedRecordType>permissionUnit</linkedRecordType>
<linkedRecordId>1</linkedRecordId>
</permissionUnit>
<visibility>published</visibility>
<inTrashBin>false</inTrashBin>
</recordInfo>
</record>
Slett bibliografisk post
Bibliografiske poster kan ikke fjernes fullstendig fra systemet av arkivhensyn, men kan skjules for brukere ved å oppdatere posten som ovenfor og sette inTrashBin til true i recordInfo.
Autoritetsposter
Håndteres på lignende måte som bibliografiske poster, men kan opprettes og oppdateres uavhengig av brukerens organisasjonstilhørighet. De publiseres også alltid åpent. Dette betyr at recordInfo for autoritetsposter ikke inneholder elementene permissionUnit eller visibility. På samme måte kan autoritetsposter som ikke er koblet fra en annen post fjernes fra systemet med et DELETE-kall, og det er derfor inTrashBin heller ikke finnes for autoritetsposter.
Som beskrivende metadata må autoritetsposter for person, organisasjon og sted inneholde minst ett authority-element, og autoritetsposter for verk må inneholde tittel og formOfWork som obligatoriske elementer.