Skip to content

Cora REST-API

Medlemmar kan läsa, skapa och uppdatera poster i Alvin via ett REST-API som bygger på Cora, ett metadatadrivet generiskt öppet digitalt arkivsystem utformat för att hantera strukturerad metadata och filer.

Cora utvecklas av Nationella system vid Uppsala universitetsbibliotek.

Cora Record API Documentation beskriver hur poster och filer hanteras samt hur sökningar görs.

Poster i Alvin

För att skapa och uppdatera poster krävs att användaren är registrerad i systemet (endast tillgängligt för personer kopplade till Alvins medlemsorganisationer). Publicerade poster kan däremot läsas av alla och är öppet tillgängliga utan inloggning.

Poster hanteras via Alvins dataformat i Cora uttryckt som antingen XML eller JSON. Formatbeskrivningen av typer och klasser är tillgänglig i katalogiseringsklienten samt som öppen länkad vokabulär.

Skapa bibliografisk post

Obligatoriska fält för alla bibliografiska poster (record) är resurstyp (typeOfResource), titel (title) samt arkivinstitution (location). Förutom beskrivande Alvin-metadata kräver Cora ett antal specifika obligatoriska kontrollfält i elementet recordInfo.

  
<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>

Läsa bibliografisk post

Poster som läses via API:et innehåller förutom själva den beskrivande metadatan länkar (actionLinks) till de olika möjligheter användaren har att anropa både posten och inlänkade poster i API:et. Ett omgivande Cora-element (record) innehåller (data) som i sin tur innehåller den faktiska metadataposten.

Notera attributet repeatId som är obligatoriskt för alla upprepningsbara fält i Coras API. repeatId måste innehålla ett unikt nummer inom respektive 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>  

Uppdatera bibliografisk post

Vid uppdatering av en befintlig post anges även id samt type i recordInfo. inTrashBin sätts till 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>

Ta bort bibliografisk post

Bibliografiska poster kan av arkivskäl inte tas bort helt från systemet men går att dölja för användare genom att uppdatera posten som ovan och i recordInfo sätta inTrashBin till true.

Auktoritetsposter

Hanteras på motsvarande sätt som bibliografiska poster men kan skapas och uppdateras oavsett användarens organisationstillhörighet. De är också alltid öppet publicerade. Det innebär att recordInfo för auktoritetsposter varken innehåller elementen permissionUnit eller visibility. Likaså kan auktoritetsposter som inte är länkade från en annan post tas bort från systemet genom ett DELETE anrop varför inte heller inTrashBin finns för auktoritetsposter.

Som beskrivande metadata måste auktoritetsposter för person, organisation och plats innehålla minst ett authority-element och auktoritetsposter för verk title samt formOfWork som obligatoriska element.