# Work

4 of 6 supported
Source: https://plasapi.com/features/search-and-discovery/work/

Show patrons a work with its editions and availability, where to find it on the shelf, and which issue of a periodical they want.

## 1.2.1 View work — Supported

Show a work with its editions, its availability and what the patron can do with it.

### What you can build

A page for each work that gives the patron enough to decide, and a short way to borrow or reserve. The work carries what its editions share, such as titles, creators, description, subjects and audience. Each edition carries its own format, language, extent and publisher.

### Typical flow

1. The client fetches the work with `GetWorks`. Its `publicationIds` lists the editions.
2. The client fetches the editions with `GetPublications` and selects the one to show, for example by the patron's language and format.
3. Availability and the `reserveId` for each edition come from `GetHoldings`.
4. For a logged-in patron, `GetPatronConfiguration` gives the reservation fee to show before they reserve (2.5.1).

### What the API provides

- A work requires only `identifier` and `titles`. Every other field can be missing.
- A publication points to its works in `works`. `relation` is `embodies` (the publication is the whole work) or `contains` (the work is part of the publication).
- `numberOfReservations` tells how many reservations the publication has. When the number is unknown, the field is missing.

### Calls in the API

Calls behind the view

- [GET /work](https://plasapi.com/provider/v0.6.7/work/#GetWorks) — Get Works
- [GET /publication](https://plasapi.com/provider/v0.6.7/publication/#GetPublications) — Get Publications
- [GET /holdings](https://plasapi.com/provider/v0.6.7/holding/#GetHoldings) — Get holdings
- [GET /patron/{patronId}/configuration](https://plasapi.com/provider/v0.6.7/patron-configuration/#GetPatronConfiguration) — Get patron configuration

## 1.2.2 Find material, shelf mark — Supported

Show which branches have the material, and where in the branch it stands.

### What you can build

The patron sees whether a copy is available right now, which branch has it, and the way to the shelf: branch, section and shelf mark.

### Typical flow

1. The client fetches the holdings for the publication with `GetHoldings`.
2. Each location gives the branch, the sections inside it, the `shelfmark` and the items found there.
3. `GetLocations` gives the section types in order, for example floor before department.
4. The client shows the path to the shelf and how many items are available there.

### What the API provides

- The path to an item is branch, then the sections in `path`, then `shelfmark`. Each section type appears at most once.
- `availableState` is `available` or `not_available`. `loanableState` is `loanable` or `not_for_loan`.
- `show_to` with the value `public` tells the provider that the data will be shown publicly and must be filtered accordingly. Without it, the provider should return all data.

### Calls in the API

Calls behind the view

- [GET /holdings](https://plasapi.com/provider/v0.6.7/holding/#GetHoldings) — Get holdings
- [GET /locations](https://plasapi.com/provider/v0.6.7/location/#GetLocations) — Get locations

## 1.2.3 Send shelf mark — Supported

Let the patron take the shelf mark with them, by email or on paper.

### Typical flow

1. The client reads the branch, the sections and the `shelfmark` from `GetHoldings`.
2. The client sends or prints them.

### What the API provides

- PLAS supplies the location data. Sending and printing are done by the client.

### Calls in the API

The API supplies the data — your service performs the action

- [GET /holdings](https://plasapi.com/provider/v0.6.7/holding/#GetHoldings) — Get holdings

## 1.2.4 View item — Not yet

Show a single copy of a publication.

> Not in PLAS yet. This feature is not supported today. The description shows what it does, so you can see how it fits with the rest.

## 1.2.5 Item history — Not yet

Show the history of a single copy.

> Not in PLAS yet. This feature is not supported today. The description shows what it does, so you can see how it fits with the rest.

## 1.2.6 Select periodical issue — Supported

Let the patron choose a specific issue of a magazine or newspaper.

### What you can build

Each issue of a periodical is its own holding. The patron narrows the issues by year, volume and number, and reserves exactly the issue shown.

### Typical flow

1. The client fetches the holdings with `GetHoldings`. For a periodical, each holding is one issue.
2. The client groups the issues by `periodical.grouping`, for example year, then volume.
3. The patron chooses an issue. `periodical.name` is the issue's display name.
4. The client reserves the issue with its `reserveId` and `CreatePatronReservation` (2.5.1).

### What the API provides

- A periodical can have zero or more holdings. Any other publication has at most one.
- Group types are `year`, `volume` and `number`, or `level1` to `level7`. The default order is year, volume, number; `GetConfiguration` can set another in `holding.periodical.groupOrdering`.
- The holding's `reserveId` is all that is needed to reserve that issue. When it is empty, the issue cannot be reserved.

### Calls in the API

Requires: 2.2.1

Enabled in the configuration: `GetConfiguration`

In this order

1. [GET /holdings](https://plasapi.com/provider/v0.6.7/holding/#GetHoldings) — Get holdings
2. [POST /patron/{patronId}/reservation](https://plasapi.com/provider/v0.6.7/patron-reservation/#CreatePatronReservation) — Create reservation
