# Events

2 of 4 supported
Source: https://plasapi.com/features/library-and-content/events/

Let patrons find the library's events, see when and where they take place, and how to get in.

## 3.2.1 View event — Supported

Show an event with its time, place, admission and related material.

### What you can build

An event page that tells the patron whether the event is for them: when and where it is, what it costs and how to get in. When a ticket or registration is required, the event carries a link, an email, a phone number or instructions. The page can also show the other dates in a series and the works related to the event.

### Typical flow

1. The client fetches the event with `GetContentEvents` and its id in `event_ids`.
2. The page shows the title, the time from `scheduling`, the place from `branch` and `location`, and the admission from `admission`.
3. When the event belongs to a series, the client fetches the other events with `GetContentEventsInSeries` and `series.seriesId`.
4. Related works come from `GetWorks` when `relevantWorks` lists `workIds`, or from `SearchWorks` when it gives a `query`.
5. The patron opens a work (1.2.1) or another event in the series.

### What the API provides

- `state` is `scheduled`, `cancelled` or `finished`.
- `scheduling` is `all_day` with `startDate` and `endDate`, or `time_span` with `startTime` and `endTime`.
- `location` is `at_branch`, a place inside the branch, or `external` with a `name` and an optional `address`.
- `admission` is `open`, `ticket` or `registration`. Ticket and registration carry `contactInfo` with at least one of `url`, `email`, `phone` or `info`, and a `state`: `ticket_sale_not_open`, `ticket_sale_open`, `almost_sold_out` or `sold_out`.
- A ticket has `pricing`: `simple` with a text, or `price_categories` with an `amount` in minor units and a `currency` in ISO 4217. An `amount` of 0 means the event is free, but the ticket is still required.
- Only `description` can contain formatting, limited to the HTML tags `b`, `i`, `p`, `a`, `ul`, `ol` and `li`.

### Calls in the API

Enabled in the configuration: `GetContentConfiguration`

Calls behind the view

- [GET /content/event](https://plasapi.com/provider/v0.6.7/content-event/#GetContentEvents) — Get content events
- [GET /content/event/series/{seriesId}](https://plasapi.com/provider/v0.6.7/content-event/#GetContentEventsInSeries) — Get content events in series
- [GET /work](https://plasapi.com/provider/v0.6.7/work/#GetWorks) — Get Works
- [GET /work/search](https://plasapi.com/provider/v0.6.7/work/#SearchWorks) — Search Works

## 3.2.2 Register or get a ticket — Not yet

Let the patron register for an event or get a ticket.

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

## 3.2.5 Browse events — Supported

Show the library's upcoming events for a period, so patrons can find the ones that interest them.

### What you can build

An event calendar that lists the library's events day by day, each with its title, time, branch and price. Filters for branch, category and audience are built from the events themselves.

### Typical flow

1. The client fetches the events in a period with `GetContentEvents`, `from_date` and `to_date`.
2. The client pages through the result with `page` and `size` until `endOfResults` is true.
3. The client groups the events by day and lets the patron filter by `branch`, `categories` and `audiences`.
4. The patron opens an event (3.2.1).

### What the API provides

- A request must include either `to_date` or `event_ids`. Without `from_date`, the provider starts from today in its own time zone.
- `size` is at most 50. `total` is the number of events in the whole period.
- `GetContentEvents` has no parameters for branch, category or audience. The client filters on the fields in each event.
- `promoted` marks an event as promoted, optionally between a `startTime` and an `endTime`.
- Without `ui_language`, each event is returned in every language it has. The same `id` in several languages is one event. `GetContentConfiguration` lists the languages the provider supports.

### Calls in the API

Enabled in the configuration: `GetContentConfiguration`

- [GET /content/event](https://plasapi.com/provider/v0.6.7/content-event/#GetContentEvents) — Get content events

## 3.2.6 Event interest — Not yet

Let the patron mark an event they are interested in.

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