# Provider API v0.6.6

22 groups · 57 operations · 43 paths · 387 schemas
Source: https://plasapi.com/provider/v0.6.6/

The interface a library system exposes so that services can work with patrons, loans, reservations, holdings and payment.

Generated from `provider_v0_6_6.yaml` · OpenAPI 3.0.0

- **Implemented by:** The library system
- **Called by:** The services — apps, websites, self-service and staff tools
- **Profiles of Provider API:** [Search API](https://plasapi.com/search/v0.6.6/) · [Content API](https://plasapi.com/content/v0.6.6/)

The Provider API is the main entry point to PLAS. When a library system
implements it, a service that speaks PLAS can work with the library without
knowing the system underneath.

It covers what a library does every day: the patron and the patron's consents,
loans and renewals, reservations, fees and payment, holdings and locations,
checkout and checkin, searching works and publications, and the library's
events. Each part has its own group in the menu.

## How to integrate

Three things need to be in place, in the order you meet them:

1. **The base URL.** The specification has no `servers` block, so the address
   belongs to the provider and is agreed with it. Don't assume it is the same
   from library to library, even with the same provider.
2. **A token.** `POST /authentication/oauth2/token` with `client_id`,
   `client_secret` and `grant_type=client_credentials` returns a `Bearer`
   token, which is sent with the calls that follow. Only `GetVersion`,
   `AuthenticateClient` and `RevokeToken` work without one.
3. **The version.** The client can send the version it expects in the
   `version` query parameter. If the provider doesn't support it, it responds
   with error code `600`.

The way to the first call, with examples, is in [Get started](/get-started/).

## How it relates to the other APIs

The Search API and the Content API are **profiles** of the Provider API: each
of their operations is also here, with the same `operationId`, method and path.
They can be implemented on their own, so a system can offer search or events
without the whole Provider API. If you implement the Provider API, you already
have both.

The Vendor API runs the other way: it is what the service itself exposes, so
the library system can send events and send the patron back after a login.

## Shared across operations

These definitions are shared by the API’s operations. They are documented once here; an operation lists only what is specific to it, plus the codes it can return.

### Authentication

- `BearerAuth` · `oauth2` · Flow: `clientCredentials` · Token URL: `/authentication/oauth2/token`

### Parameters

- `version` (In `query`, [`Version`](https://plasapi.com/provider/v0.6.6/schemas/#Version), optional, used by 54 of 57) — The version of Open Library the vendor expects to receive, if this version isn't supported by the provider an error code 600 (Unsupported Open Library API version) is returned.
- `ui_language` (In `query`, `string`, optional, used by 8 of 57) — The UI language the provider will return the content in.

All ui language codes should be on this list https://www.loc.gov/marc/languages/


### Error responses

- `HttpCode400` ([`Errors`](https://plasapi.com/provider/v0.6.6/schemas/#Errors), used by 56 of 57) — The list of errors.
- `HttpCode401Bearer` (`No response body.`, used by 54 of 57) — Bearer token invalid, missing, or expired.
- `HttpCode404` (`No response body.`, used by 36 of 57) — Resource not found.
- `HttpCode401UnauthorizedOAuthLogin` (`No response body.`, used by 1 of 57) — Unauthorized login.

## All groups

- [Version](https://plasapi.com/provider/v0.6.6/version/) — 1 operation
- [Authentication](https://plasapi.com/provider/v0.6.6/authentication/) — 2 operations
- [Configuration](https://plasapi.com/provider/v0.6.6/configuration/) — 4 operations
- [Patron Authentication](https://plasapi.com/provider/v0.6.6/patron-authentication/) — 4 operations
- [Patron Registration](https://plasapi.com/provider/v0.6.6/patron-registration/) — 4 operations
- [Patron Delete](https://plasapi.com/provider/v0.6.6/patron-delete/) — 3 operations
- [Patron Configuration](https://plasapi.com/provider/v0.6.6/patron-configuration/) — 1 operation
- [Patron](https://plasapi.com/provider/v0.6.6/patron/) — 6 operations
- [Patron Reservation](https://plasapi.com/provider/v0.6.6/patron-reservation/) — 4 operations
- [Patron Loan](https://plasapi.com/provider/v0.6.6/patron-loan/) — 2 operations
- [Patron Fee](https://plasapi.com/provider/v0.6.6/patron-fee/) — 1 operation
- [Payment](https://plasapi.com/provider/v0.6.6/payment/) — 2 operations
- [Patron Loan History](https://plasapi.com/provider/v0.6.6/patron-loan-history/) — 3 operations
- [Patron List](https://plasapi.com/provider/v0.6.6/patron-list/) — 8 operations
- [Checkout & Checkin](https://plasapi.com/provider/v0.6.6/checkout-and-checkin/) — 2 operations
- [Location](https://plasapi.com/provider/v0.6.6/location/) — 1 operation
- [Holding](https://plasapi.com/provider/v0.6.6/holding/) — 1 operation
- [Work](https://plasapi.com/provider/v0.6.6/work/) — 2 operations
- [Publication](https://plasapi.com/provider/v0.6.6/publication/) — 1 operation
- [Suggestion](https://plasapi.com/provider/v0.6.6/suggestion/) — 1 operation
- [Agent](https://plasapi.com/provider/v0.6.6/agent/) — 2 operations
- [Content Event](https://plasapi.com/provider/v0.6.6/content-event/) — 2 operations
- [Schema index](https://plasapi.com/provider/v0.6.6/schemas/) — 387 schemas
