# Principper

Sidst opdateret 10. september 2026
Kilde: https://plas.redia.dk/principper/

De beslutninger specifikationen er bygget på, og de principper initiativet udvikles efter — ét udsagn og én begrundelse pr. princip.

PLAS er en specifikation, og de fleste af dens principper står i den selv. Det første afsnit gengiver dem som de står i Provider API v0.6.5. Det andet afsnit er initiativets principper — hvordan Redia har foreslået at standarden udvikles. De to hører ikke samme sted til, så de står hver for sig.

## Specifikationen

Det her fastlægger Provider API v0.6.5 for enhver der implementerer eller kalder det.

1. **Bibliotekssystemet implementerer, produktet kalder.** Provider API er den grænseflade et bibliotekssystem stiller til rådighed, så leverandører af biblioteksprodukter møder den samme grænseflade uanset hvilket system der ligger bagved. Det er hele formålet med specifikationen.

2. **Versionen sendes med, og en ukendt version er en fejl.** Klienten kan sende `version` på stort set alle operationer; understøtter provideren ikke den version, svarer den med fejlkode `600`. En versionsforskel bliver dermed en fejl man kan handle på, ikke et felt der mangler.

3. **Ét autentificeringsmønster.** OAuth 2.0 med *client credentials* mod `POST /authentication/oauth2/token`; tokenet sendes som `Bearer` i `Authorization`-headeren, og `401` betyder at det mangler, er ugyldigt eller udløbet. Det anbefales at tokenet er et JWT, så en tredjepart kan validere det uden at spørge provideren.

4. **Provideren afgør hvem der kalder.** Spec'en beskriver to måder at kende kunde og leverandør: en base-URL pr. bibliotek, eller credentials der bærer begge. Valget er providerens — derfor har spec'en ingen `servers`-blok, og base-URL'en aftales med provideren.

5. **Ingen HTML i svar.** Et svar indeholder aldrig HTML-formaterede data, medmindre operationen udtrykkeligt siger det. Klienten skal kunne vise indholdet i sin egen flade uden at sanere det først.

6. **Én tidsform.** Tidspunkter er RFC 3339 `date-time` med stort `T` og eksplicit tidszone — spec'en antager ingen. Rene datoer er `YYYY-MM-DD`. Ingen undtagelser, så ingen klient skal gætte.

7. **Parametre er URL-encodede.** Alle URL- og query-parametre forventes encodede ved kaldet; et id med komma i en kommasepareret liste bliver `%2C`.

8. **Kendte id'er svares, ukendte udelades.** Slår klienten en liste af id'er op, står de kendte i svaret og de ukendte gør ikke; er alle ukendte, er svaret et tomt map. Et opslag fejler ikke fordi ét id er forkert.

9. **Låner-id'er er UUID'er, og låner-login beskyttes.** Spec'en anbefaler UUID som `patronId` (et heltals-id får et UUID ved siden af, og kun det bruges i PLAS) og rate limiting pr. låner-identifikator på `POST /patron/authentication` og `POST /patron/authentication/no-password`.

10. **Specifikationen er stadig under arbejde.** Spec'en siger det selv: felter og struktur kan ændre sig. Det er derfor versionen står på hver side her, og derfor [versions-tabellen](/changelog/) skelner mellem *i produktion* og *i specifikation*.

## Initiativet

Det her er Redias forslag til hvordan PLAS udvikles. Standarden tilhører sektoren, så principperne gælder så længe sektoren tager dem til sig.

1. **Adgangen standardiseres — ikke systemerne.** Kilderne bliver ved med at være forskellige; det er vejen ind til dem der bliver ens. Biblioteket skal ikke skifte system for at få gavn af standarden.

2. **Maskinlæsbar først.** Grænsefladen beskrives i OpenAPI, så værktøjer kan generere klienter og tests direkte fra specifikationen — og så dokumentationen her kan genereres af den samme fil.

3. **Versioneret, så et bibliotek kan stille krav.** Standarden får udgaver. Et bibliotek kan skrive en bestemt version ind i et udbud, og en leverandør kan sige præcis hvad der understøttes.

4. **Domæne for domæne, i egen takt.** Søgning, bibliografiske data, beholdning, lånerdata, cirkulation, fjernlån, digitale medier og fælles services beskrives hver for sig. Et bibliotekssystem implementerer dem når det giver mening, og biblioteket kan se hvad der understøttes.

5. **Åben dokumentation, åben proces.** Specifikationen, dens udgaver og processen for nye forslag ligger åbent — det er det dette site er til.

6. **Behov før tidsplan.** Standarden begynder med de vigtigste fælles funktioner og udvides efter behov fra biblioteker og leverandører, ikke efter en plan lagt på forhånd.

7. **Sektorens standard, ikke én leverandørs.** Biblioteker bidrager med behov, systemleverandører implementerer og former, dataleverandører gør deres data tilgængelige, og udviklere bygger oven på og foreslår forbedringer. Redia har foreslået PLAS; standarden bliver stærk når mange bruger den.

## Når et princip ændrer sig

Principperne i det første afsnit ændrer sig kun når specifikationen gør det — og så følger denne side med den version der er i produktion. Principperne i det andet afsnit er initiativets og ændres i dialog med sektoren, ikke på denne side.

## Næste skridt

- [Kom i gang](/kom-i-gang/) — principperne i praksis: base-URL, autentificering, første kald.
- [Versioner og changelog](/changelog/) — hvilken version af hvert API der er i produktion, og hvad der ændrede sig.
- [Provider API v0.6.5](/provider/v0.6.5/) — den delte kontrakt og alle grupper.
