Skip to content

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>

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.