# Reservationer

7 af 10 understøttet
Kilde: https://plasapi.com/da/funktioner/patron/reservations/

Lad lånerne reservere materiale, vælge hvor det skal hentes, følge deres plads i køen og styre deres reservationer.

## 2.5.1 Reservér materiale — Understøttet

Reservér en udgave som låneren henter når den er klar.

### Det kan du bygge

Den centrale handling på et værk: låneren reserverer, vælger hvor materialet skal hentes, og ser sin plads i køen med det samme. Gebyrer og grænser kommer fra bibliotekssystemet, så klienten kan vise dem før låneren bekræfter.

### Typisk flow

1. Låneren vælger en udgave. Klienten læser dens `reserveId` fra `GetHoldings`.
2. Klienten læser lånerens gebyr, grænser og afhentningssteder fra `GetPatronConfiguration`.
3. Låneren vælger hvor materialet skal hentes (2.5.8).
4. Klienten opretter reservationen med `CreatePatronReservation`.
5. Svaret er reservationen, inklusive lånerens `queueNumber` når den kendes.

### Det leverer API'et

- En udgave uden `reserveId` kan ikke reserveres.
- Et reservationsgebyr har `chargedAt`: `reservation` (opkræves når der reserveres) eller `checkout` (opkræves ved afhentning). `amount` er i mindste møntenhed, `currency` i ISO 4217.
- Grænser for reservationer kommer som `daily` og `max`.

### Kald i API'et

Forudsætter: 2.2.1

I denne rækkefølge

1. [GET /holdings](https://plasapi.com/da/provider/v0.6.7/holding/#GetHoldings) — Get holdings
2. [GET /patron/{patronId}/information](https://plasapi.com/da/provider/v0.6.7/patron/#GetPatronInformation) — Get patron information
3. [GET /patron/{patronId}/configuration](https://plasapi.com/da/provider/v0.6.7/patron-configuration/#GetPatronConfiguration) — Get patron configuration
4. [GET /locations](https://plasapi.com/da/provider/v0.6.7/location/#GetLocations) — Get locations
5. [POST /patron/{patronId}/reservation](https://plasapi.com/da/provider/v0.6.7/patron-reservation/#CreatePatronReservation) — Create reservation

## 2.5.2 Se reservationer — Understøttet

Vis lånerens reservationer, og hvor hver af dem står.

### Det kan du bygge

Et overblik over alt låneren har reserveret: hvad der er klar til afhentning, hvad der står i kø, og hvad der er sat på pause.

### Typisk flow

1. Klienten henter reservationerne med `GetPatronReservations`.
2. Hver reservation vises med sin tilstand og, når den kendes, pladsen i køen.

### Det leverer API'et

- `state` er `ready_for_pickup`, `in_queue` eller `postponed`.
- `queueNumber` 1 betyder først i køen. Mangler feltet, er pladsen ukendt.
- `fulfillmentBy` fortæller hvordan reservationen opfyldes: `local_circulation`, `interlibrary_loan`, `purchase` eller `unknown`.

### Kald i API'et

Forudsætter: 2.2.1

- [GET /patron/{patronId}/reservation](https://plasapi.com/da/provider/v0.6.7/patron-reservation/#GetPatronReservations) — Get patron reservations

## 2.5.3 Annullér reservation — Understøttet

Lad låneren annullere en reservation de ikke længere har brug for.

### Det kan du bygge

Lånerne annullerer selv en reservation uden at skulle kontakte biblioteket.

### Typisk flow

1. Låneren vælger en reservation og bekræfter annulleringen.
2. Klienten kalder `DeletePatronReservation`.

### Kald i API'et

Forudsætter: 2.2.1

- [DELETE /patron/{patronId}/reservation/{reservationId}](https://plasapi.com/da/provider/v0.6.7/patron-reservation/#DeletePatronReservation) — Delete reservation

## 2.5.4 Skift afhentningssted — Understøttet

Flyt en eksisterende reservation til et andet afhentningssted.

### Typisk flow

1. Klienten viser afhentningsstederne fra `GetLocations`.
2. Låneren vælger et nyt.
3. Klienten opdaterer reservationen med `UpdatePatronReservation`.

### Det leverer API'et

- `UpdatePatronReservation` ændrer kun `pickupLocation`.

### Kald i API'et

Forudsætter: 2.2.1

I denne rækkefølge

1. [GET /locations](https://plasapi.com/da/provider/v0.6.7/location/#GetLocations) — Get locations
2. [PUT /patron/{patronId}/reservation/{reservationId}](https://plasapi.com/da/provider/v0.6.7/patron-reservation/#UpdatePatronReservation) — Update reservation

## 2.5.6 Sæt reservationer på pause — Understøttet

Sæt alle lånerens reservationer på pause i en periode hvor de ikke kan hente.

### Det kan du bygge

Reservationer på pause bliver stående i lånerens overblik, markeret som sat på pause.

### Typisk flow

1. Låneren vælger en periode.
2. Klienten sætter `reservation.postpone` med `UpdatePatronInformation`.
3. Reservationer i perioden får tilstanden `postponed`.

### Det leverer API'et

- Pausen gælder låneren, ikke den enkelte reservation.
- Perioden må være åben i den ene ende, for eksempel fra i dag uden slutdato.

### Kald i API'et

Forudsætter: 2.2.1

- [PATCH /patron/{patronId}/information](https://plasapi.com/da/provider/v0.6.7/patron/#UpdatePatronInformation) — Update patron information

## 2.5.7 Skift udløbsdato — Ikke endnu

Lad låneren ændre hvor længe en reservation gælder.

> Ikke i PLAS endnu. Funktionen er ikke understøttet i dag. Beskrivelsen viser hvad den gør, så du kan se sammenhængen med resten.

## 2.5.8 Vælg afhentningssted ved reservation — Understøttet

Lad låneren vælge hvor materialet skal hentes, mens der reserveres.

### Typisk flow

1. Klienten læser lånerens foretrukne afhentningssted fra `GetPatronInformation` (`pickupLocation`).
2. Låneren kan vælge et andet fra listen.
3. Det valgte sted sendes som `pickupLocation` med `CreatePatronReservation`.

### Det leverer API'et

- Valgene kommer fra, i prioriteret rækkefølge: eksemplarets `pickupLocations` i `GetHoldings`, beholdningens `pickupLocations`, lånerens konfiguration (`GetPatronConfiguration`) og `GetLocations`.
- Hvert niveau erstatter niveauerne under sig helt. Definerer intet niveau afhentningssteder, kan materialet ikke reserveres.

### Kald i API'et

Forudsætter: 2.2.1

I denne rækkefølge

1. [GET /holdings](https://plasapi.com/da/provider/v0.6.7/holding/#GetHoldings) — Get holdings
2. [GET /patron/{patronId}/information](https://plasapi.com/da/provider/v0.6.7/patron/#GetPatronInformation) — Get patron information
3. [GET /patron/{patronId}/configuration](https://plasapi.com/da/provider/v0.6.7/patron-configuration/#GetPatronConfiguration) — Get patron configuration
4. [GET /locations](https://plasapi.com/da/provider/v0.6.7/location/#GetLocations) — Get locations
5. [POST /patron/{patronId}/reservation](https://plasapi.com/da/provider/v0.6.7/patron-reservation/#CreatePatronReservation) — Create reservation

## 2.5.9 Bestil fjernlån — Ikke endnu

Lad låneren bestille materiale fra et andet bibliotek.

> Ikke i PLAS endnu. Funktionen er ikke understøttet i dag. Beskrivelsen viser hvad den gør, så du kan se sammenhængen med resten.

## 2.5.10 Annullér fjernlån — Ikke endnu

Lad låneren annullere en bestilling af materiale fra et andet bibliotek.

> Ikke i PLAS endnu. Funktionen er ikke understøttet i dag. Beskrivelsen viser hvad den gør, så du kan se sammenhængen med resten.

## 2.5.11 Reservér på vegne af en låner — Understøttet

Lad bibliotekets personale reservere for en låner.

### Typisk flow

1. Personalet identificerer låneren.
2. Reservationen oprettes med `CreatePatronReservation` for den låner.

### Det leverer API'et

- Specifikationen har ingen særskilt operation for personale og beskriver ingen måde at handle på lånerens vegne.

### Kald i API'et

Forudsætter: 2.2.1

- [POST /patron/{patronId}/reservation](https://plasapi.com/da/provider/v0.6.7/patron-reservation/#CreatePatronReservation) — Create reservation
