v0.6.7 In production
New features
- 2.2.5 Reset password
- 2.11.7 Change password
Release notes
Patron API
- Added POST /patron/credential/reset - the provider sends the patron a link to set a credential they no longer know.
- Added POST /patron/{patronId}/credential/change - change a password or pin code the patron knows.
- Added credentials with changeable and resettable to ConfigurationPatron, identifierTypes, credentials and allowWithoutCredential to login, and identifierTypes to deletion
- Removed the top level identifierTypes and identityProviders from ConfigurationPatron. identityProviders on login, registration and deletion are now the enum ConfigurationPatronIdentityProviderType
- Replaced ConfigurationPatronIdentifierType with the open enum PatronIdentifierType, and renamed norway_birth_number to norway_national_birth_number
- Named the registry type on POST /patron/registration/possible PatronRegistryType, an open enum
- Named the DeletePatronRequestBody.patron variants DeletePatronById and DeletePatronByIdentifier, and added the discriminator identifiedBy
- Added the error codes 100011 and 100013, and added 10001, 71001 and 100101 to the ErrorCode enum
Checkout & Checkin
- Replaced patronId in CheckoutRequestBody with patron, a oneOf discriminated on identifiedBy: CheckoutPatronById or CheckoutPatronByIdentifier, so an offline checkout can identify the patron the way authentication does
- Replaced alreadyCheckedOut with checkout.offline, an object with a required dueDate, and alreadyCheckedIn with the boolean checkin.offline
- Changed CheckoutResponseBody into a oneOf discriminated on status: CheckoutCompleted, CheckoutNeedsAcknowledgement or CheckoutFailed, and CheckinResponseBody into CheckinCompleted or CheckinFailed. Removed completed from checkin
- Added reason to CheckoutFailed and CheckinFailed, the open enums CheckoutFailureReason and CheckinFailureReason. A code the provider does not accept is failed with acknowledgement_rejected
- Moved acknowledgement into CheckoutAcknowledgement. data is renamed conditions and is now an array covered by one code, expiresAt is added, message is removed, and CheckoutAcknowledgementTypeMessage is added. amount and currency are required on the fee type and publicationId on the previously checked out type
- Added fees and renewed to CheckoutField, removed renew, and made publicationId required. fees is empty when no fee was created and absent when the provider cannot tell
- Added fees, needsStaff and permanentLocation to CheckinField, and made publicationId required. fees is empty when no fee was created and absent when the provider cannot tell
- Added circulation to ConfigurationResponseBody: checkout and checkin with isEnabled, offline with isAllowed, defaultLoanPeriodDays on checkout.offline, and securityTags with isDisabled. Both endpoints are only available when enabled here
- Added ui_language and 429 (rate limit) to both endpoints, and removed 404. An unknown item or patron is a failed status with a reason
Vendor API
- Changed the item_checkout event data to CheckoutCompleted, and the item_checkin event data to CheckinCompletedWithPatronId, and removed CheckinWithRequiredPatronIdResponseBody
All APIs
- Added a description to every tag, and a tags list to the Vendor API
Changes in the specification
Provider API
Operations
2 added
- POST
/patron/{patronId}/credential/changeChangePatronCredential - POST
/patron/credential/resetResetPatronCredential
2 changed
Schemas
34 added
ChangePatronCredentialRequestBodyChangePatronPasswordRequestBodyChangePatronPinRequestBodyCheckinCompletedCheckinFailedCheckinFailureReasonCheckinFailureReasonEnumCheckinFailureReasonLiteralCheckinPermanentLocationCheckinResponseBaseCheckoutAcknowledgementCheckoutAcknowledgementTypeMessageCheckoutCompletedCheckoutFailedCheckoutFailureReasonCheckoutFailureReasonEnumCheckoutFailureReasonLiteralCheckoutNeedsAcknowledgementCheckoutPatronCheckoutPatronByIdCheckoutPatronByIdentifierCheckoutResponseBaseConfigurationCirculationDeletePatronByIdDeletePatronByIdentifierDeletePatronIdentificationPatronCredentialTypePatronIdentifierTypeEnumPatronIdentifierTypeLiteralPatronPinPatronRegistryTypePatronRegistryTypeEnumPatronRegistryTypeLiteralResetPatronCredentialRequestBody
1 removed
ConfigurationPatronIdentifierType
10 changed
-
CheckinField- field fees (array of PatronFee) added
- field needsStaff (boolean) added
- field permanentLocation (CheckinPermanentLocation) added
- field publicationId is now required
-
CheckinResponseBody- shape: object → one of CheckinCompleted | CheckinFailed
- field checkin removed
- field completed removed
- field message removed
- field requestId removed
- field status removed
-
CheckoutField- field fees (array of PatronFee) added
- field renewed (boolean) added
- field renew removed
- field publicationId is now required
-
CheckoutResponseBody- shape: object → one of CheckoutCompleted | CheckoutNeedsAcknowledgement | CheckoutFailed
- field acknowledgement removed
- field checkout removed
- field message removed
- field requestId removed
- field status removed
-
ConfigurationPatron- field credentials (object) added
- field identifierTypes removed
- field identityProviders removed
-
ConfigurationResponseBody- field circulation (ConfigurationCirculation) added
-
DeletePatronRequestBody- field patron: one of object | object → DeletePatronIdentification
-
ErrorCode- values added: 10001, 71001, 100011, 100013, 100101
-
FeeAmount- shape: Amount → integer
-
PatronIdentifierType- shape: string → any of PatronIdentifierTypeEnum | PatronIdentifierTypeLiteral
Search API
Content API
Vendor API
Schemas
5 added
CheckinCompletedWithPatronIdCheckinPermanentLocationCheckinResponseBaseCheckoutCompletedCheckoutResponseBase
6 removed
CheckinResponseBodyCheckinWithRequiredPatronIdResponseBodyCheckoutAcknowledgementTypeCheckoutAcknowledgementTypeFeeCheckoutAcknowledgementTypePreviouslyCheckedOutCheckoutResponseBody
2 changed
-
CheckinField- field fees (array of PatronFee) added
- field needsStaff (boolean) added
- field permanentLocation (CheckinPermanentLocation) added
- field publicationId is now required
-
CheckoutField- field fees (array of PatronFee) added
- field renewed (boolean) added
- field renew removed
- field publicationId is now required
v0.6.6
Release notes
Patron API
- Changed POST /patron/authentication/identity-provider from POST to GET, and renamed operationId: GetPatronAuthenticationUrl
- Renamed POST /patron/authentication/authenticate-token into POST /patron/authentication/identity-provider
- Added POST /patron/registration/identity-provider - new endpoint to register a patron by code and code verifier from an SSO registration callback
- Renamed operationId on GET /patron/registration/identity-provider from RegisterPatronByIdentityProvider to GetRegisterPatronUrl
- Renamed path /patron/registration/identifier to /patron/registration (no functional change)
- Added consents array field to both PatronRegistrationIdentifierRequestBody and RegisterPatronByCodeAndCodeVerifierRequestBody
- Renamed path /patron/{patronId}/delete to /patron/delete - The patronId path parameter was removed and the path simplified. This is a breaking change and isn't mentioned at all.
- Updated DeletePatronRequestBody.patron to support oneOf - either patronId + password OR identifier + password
- Updated DeletePatronResponseBody - removed acknowledgement object, added top-level message field
- Added GET /patron/delete/identity-provider - fetch SSO URL for patron deletion
- Added POST /patron/delete/identity-provider - delete patron by code and code verifier from SSO deletion
- Added deletion section to ConfigurationPatron with identityProviders array for SSO-based patron deletion
- Updated ConfigurationPatronIdentityProviderType - removed norway_min_id and added norway_nl_oidc, norway_feide_oidc and denmark_dbc_access_platform
- Added the error code 100101 for when the patron couldn't be delete, because the patron has outstandings at the library (this could be anything from a loan to a fee, and so on ...)
- Made PatronConsentType extensible via anyOf (known enum + arbitrary string literal)
- Added CallbackConsent schema for decoded callback consent parameters
Vendor API
- Replaced GET /callbacks/patron/auth with GET /callbacks/patron - now serves both login and registration callbacks
- Added can_be_registered boolean query parameter
- Added consent array query parameter (URL-Base64-encoded type:version pairs)
- Added GET /callbacks/patron/delete - new callback endpoint for SSO patron deletion
- Expanded SSO error codes on both callback endpoints: added sso_request_expired, sso_login_cancelled, sso_consent_denied, sso_session_expired, provider_service_unavailable
Changes in the specification
Provider API
Operations
5 added
- POST
/patron/delete/identity-providerDeletePatronByCodeAndCodeVerifier - GET
/patron/delete/identity-providerGetDeletePatronUrl - GET
/patron/authentication/identity-providerGetPatronAuthenticationUrl - GET
/patron/registration/identity-providerGetRegisterPatronUrl - POST
/patron/registration/identity-providerRegisterPatronByCodeAndCodeVerifier
2 removed
- POST
/patron/authentication/identity-providerGetPatronAuthenticationUrlByIdentityProvider - GET
/patron/registration/identity-providerRegisterPatronByIdentityProvider
3 changed
-
AuthenticatePatronByCodeAndCodeVerifier- moved from POST /patron/authentication/authenticate-token to POST /patron/authentication/identity-provider
- request body: application/x-www-form-urlencoded · object → application/x-www-form-urlencoded · PatronAuthenticationByCodeAndCodeVerifierRequestBody
-
DeletePatron- moved from POST /patron/{patronId}/delete to POST /patron/delete
- parameter patronId (path) removed
- response 404 removed
-
RegisterPatronByIdentifier- moved from POST /patron/registration/identifier to POST /patron/registration
Schemas
8 added
CallbackConsentDeletePatronByCodeAndCodeVerifierRequestBodyPatronAuthenticationByCodeAndCodeVerifierRequestBodyPatronConsentTypeEnumPatronConsentTypeLiteralPatronDeletionIdentityProviderResponseBodyPatronRegistrationByCodeAndCodeVerifierResponseBodyRegisterPatronByCodeAndCodeVerifierRequestBody
6 changed
-
ConfigurationPatron- field deletion (object) added
-
ConfigurationPatronIdentityProviderType- values added: norway_nl_oidc, norway_feide_oidc, denmark_dbc_access_platform · values removed: norway_min_id
-
DeletePatronRequestBody- field patron: object → one of object | object
-
DeletePatronResponseBody- field message (string) added
- field acknowledgement removed
-
PatronConsentType- shape: string enum → any of PatronConsentTypeEnum | PatronConsentTypeLiteral
- values removed: loan_history
-
PatronRegistrationIdentifierRequestBody- field consents (array of CallbackConsent) added
Vendor API
Operations
2 added
- GET
/callbacks/patronCallbackPatron - GET
/callbacks/patron/deleteCallbackPatronDelete
1 removed
- GET
/callbacks/patron/authCallbackPatronAuthentication
Schemas
2 added
PatronConsentTypeEnumPatronConsentTypeLiteral
1 changed
-
PatronConsentType- shape: string enum → any of PatronConsentTypeEnum | PatronConsentTypeLiteral
- values removed: loan_history
v0.6.5
Release notes
Patron API
- updated Replace GET /patron/authentication/identity-provider with POST /patron/authentication/identity-provider, and changed the return object
- added Added GET /patron/authentication/authenticate-token
Vendor API
- added Added GET /callbacks/patron/auth
Changes in the specification
Provider API
Operations
2 added
- POST
/patron/authentication/authenticate-tokenAuthenticatePatronByCodeAndCodeVerifier - POST
/patron/authentication/identity-providerGetPatronAuthenticationUrlByIdentityProvider
1 removed
- GET
/patron/authentication/identity-providerAuthenticatePatronByIdentityProvider
Schemas
2 added
ConfigurationPatronIdentityProviderTypePatronAuthenticationByCodeAndCodeVerifierResponseBody
1 changed
-
PatronAuthenticationIdentityProviderResponseBody- field url (string (uri)) added
- field patron removed
Vendor API
Operations
1 added
- GET
/callbacks/patron/authCallbackPatronAuthentication
v0.6.4
New features
- 3.2.1 View event
- 3.2.5 Browse events
Release notes
- Added Content Events
Changes in the specification
Provider API
Operations
3 added
- GET
/configuration/contentGetContentConfiguration - GET
/content/eventGetContentEvents - GET
/content/event/series/{seriesId}GetContentEventsInSeries
Schemas
43 added
AddressAllDaySchedulingConfigurationContentApiConfigurationContentResponseBodyConfigurationContentWithApiContactInfoEventEventAdmissionEventAudienceEventBranchEventCategoryEventLocationEventLocationAtBranchEventLocationExternalEventOrganizerEventPriceCategoryEventPricingEventPricingPriceCategoriesEventPricingSimpleEventSchedulingEventSeriesEventStateGetContentEventsInSeriesResponseBodyGetContentEventsResponseBodyImageAltImageCreditImageFocalPointImageFocalPointHotspotImageOriginalImageTypeContentOpenAdmissionPromotedPromotedTypePromotedTypeEnumPromotedTypeLiteralQueryRelevantWorksRegistrationAdmissionRelatedEventsRelevantWorksTicketAdmissionTicketStateTimeSpanSchedulingWorksRelevantWorks
4 changed
-
ConfigurationResponseBody- field content (ConfigurationContentWithApi) added
-
LocationBranch- field pickup (object) added
-
LocationsResponseBody- field mainBranch is now optional
-
PatronAddress- shape: object → Address
- field city removed
- field country removed
- field postalCode removed
- field street removed
v0.6.3
Release notes
Note from PLAS Status: Expected release to production: Week 19
- Bug fixed: The field "mainBranch" is required on "LocationsResponseBody" and not on "ConfigurationResponseBody"
- Bug fixed: The propertyName value of PatronConfigurationReservationLimit, should have been "type"
- Added mainBranch to /locations
- Added that it is recommended to use UUIDs as patron IDs
- Added suggestions on ways of controlling customers and vendors
- Added a security recommendation for patron authentication
- Added error code for "Consent has not been given for 'loan history'"
- Bugfix in GET /holdings, change explode from true to false, for the two parameters publicationId and showTo
- Added a general description of the response structure for endpoints that takes an array of ids
- Bugfix ensuring all query parameters are in snake case
- Added patron_id to /holdings
- Added pickupBranches to /locations, and removed branches[]->pickup->allow
- Added GET /patron/{patronId}/configuration containing reservation limits and pickupBranches so that pickup branches can differ between patrons.
- Added pickupBranches to /holdings, so that titles and items can overwrite pickup branches settings from /patron/{patronId}/configuration and /locations.
- Added "fulfillmentBy" to reservation and removed "isInterlibraryLoan"
- Added "acquiredFrom" to loan and removed "isInterlibraryLoan"
- Added "acquiredFrom" to checkout and removed "isInterlibraryLoan"
- Added "acquiredFrom" to checkin and removed "isInterlibraryLoan"
- Added "acquiredFrom" to fee and removed "isInterlibraryLoan"
- Added "acquiredFrom" to loan history and removed "isInterlibraryLoan", for both get loan history and add to loan history.
Changes in the specification
v0.6.2
Release notes
- Bug fix in the description of AudienceTypeAgeGroupCode
- Added 'verified' to PatronEmail and PatronPhoneNumber
- Added 'fields' to ConfigurationPatron, including ConfigurationPatronFieldEmails, ConfigurationPatronFieldPhoneNumbers and ConfigurationPatronFieldPickupLocation
- Added errors code for if maxNumberOfEmailAddresses or maxNumberOfPhoneNumbers is exceeded
- Bug fix, change section to an array in PickupLocation, CheckOutOrInLocationWithoutNames and PickupLocationWithoutNames
- Added default patron list id
- Added minimum patron list id length
- Replaced PatronListItemWork and PatronListItemPublication with PatronListItemWorkAndPublication
No OpenAPI file here for this version — only the PLAS Status text.
v0.6.1
Release notes
- In the search response, the type of the field "facets" is changed.
- The field "suggestions" from the /suggestions response, is changed to an array.
- The query parameter "facet_terms_size" was added to the /work/search endpoint.
- Added images and description to the all agents.
- Removed the suggestion type "person"
- Added the suggestion type "contributor"
- Added code to suggestion subject
- In suggestions, the content for contributor, work and subject, were moved into their own fields
- A little better description of /suggestions
- Added suggestions to the Configuration, for disabling the /suggestion endpoint and telling which filters that are available.
- Added code to AudienceTypeLiteral.
- Description filters to workSearch in the configuration.
- Added filters, facet and sorting as open enums (meaning other values are allowed).
- Added open enums (meaning other values are allowed) to AudienceTypeAgeGroup->code.
- Removed minItems: 1 from array fields that were optional, only for search/metadata structures.
- Added open enums (meaning other values are allowed) of MediaType
No OpenAPI file here for this version — only the PLAS Status text.
v0.6.0
Release notes
- Added renewableState to PatronLoan
- Spelling bug, change "pickUp" => "pickup" and "PickUp" => "Pickup"
- Change POST /patron/authentication/card-identifier to POST /patron/authentication/no-password
- POST /patron/authentication now takes (identifier types, identifier, password)
- POST /patron/authentication/no-password now take (identifier types, identifier)
- PatronFee->dueDate is no longer required
- Renamed MarkFeesPaidRequest->feeIds to MarkFeesPaidRequest->fees, and and changed the array to contain a structs instead of strings
- Change http method from GET to POST for /checkout/{itemId} and /checkin/{itemId}
- Changed request body of /patron/authentication and /patron/authentication/no-password
- Added expireDate to PatronReservation
- Added error codes for when "loan not renewable"
- Added endpoint for creating a patron based on some identity provider, provided by the LMS
- Added endpoint for creating a patron based on some user identifier
- Added endpoint for logging in a patron based on some identity provider, provided by the LMS
- Added signup and login context to /configuration
- Added Search API delegation to /configuration
- Added how to change the default periodical group type ordering in /configuration
- Change location part to location section
- Change holding location part "type" to "sectionType"
- Added showTo to /holdings
- Added lendingDays to HoldingItem
- reservableId on HoldingItem is now optional
- Removed Basic Authentication from client authentication
- Moved patron consent to its own endpoints
- Added patron consent update
- Moved patron notification settings to its own endpoints
- Added patron notification settings update
- Added address to patron
- Changed email (on a Patron) to emails
- Added fullName to a Patron (required), changed firstName to givenName, and givenName and surname are now optional.
- Added permissions to the Patron, for giving access to or blocking a Patron from certain activities, locations, etc.
- Added address to patron update
- Added http response code 202 to update patron
- Changed patron->identifiers->identifier to patron->identifiers->value
- Changed /patron/registration/user-identifier to /patron/registration/identifier
- Added /patron/registration/possible to check if a new patron can be registered
- On PatronReservation itemId is now optional
- All pickup related info on PatronReservation is move into their own field "pickup"
- Added PickupLocation and added section to it, all places that used pickupBranchId is exchanged with PickupLocation
- Change name of Pickup Id to Pickup Note
- Change enums to snake case
- Added the feature, postpone all reservation
- Change reservation pickup state to reservation state
- Renamed ready to ready_for_pickup, and added in_queue and postponed
- Added branchId and renew a Loan, and removed renewableState, also added renew to CheckoutResponse
- Moved Patron into it's own field "patron" for all responses that used it
- Added a status field to the renew loan response
- Change fee amount to an integer value in minor units (see ISO 4217)
- Change the naming of mark fee as paid to finalized
- Added /patron/{patronId}/payment/initialize (control of orderId to provider)
- Added partial payment
- Renamed fee->payable to fee->payableState
- fee->items is now optional
- Added creators and mediaTypes to basic publication metadata, and changed publicationId to identifier
- Moved latitude, longitude and radius into coordinates in LocationBranch
- Added pickup->allow to LocationBranch
- Change patron loan->branchId to patron loan->location
- Rewrote the structure of checkout and checkin
- Added delete patron endpoint
- Added loan history endpoints
- Added lists endpoints
- Added vendor API (renamed provider api)
- Added Open Library API version
- Change InterLibrary to Interlibrary
- Changed expireDate to expirationDate
- Removed Basic Authentication
- Change Check(out/in)->completed to Check(out/in)->status
- Added patronId, itemId, loadId and requestId to checkout and checkin
- Added http code 404 to PUT and DELETE /patron/{patronId}/reservation/{reservationId}
- Added http code 404 to PUT /patron/{patronId}/loan/{loanId}
- Added http code 404 to POST /patron/{patronId}/payment/initialize
- Added http code 404 to POST /patron/{patronId}/payment/finalize
- Added http code 404 to DELETE /patron/{patronId}/loan-history/{loanHistoryId}
- Removed X-OLA-VERSION
- Added /version and are version query parameters all endpoints
No OpenAPI file here for this version — only the PLAS Status text.
v0.5.5
Release notes
- Added POST /authentication/oauth2/revoke
- Added POST /patron/{patronId}/mark-fees-paid
- Added external data to branches
- Moved interlibrary loan metadata, into its own field
- Moved Basic Auth. to OpenAPI standard
- Added postal a notification type
- Moved away from doNotBlock to alreadyPerformed in check(out/in)
- For now, removed the E.123 standard from phone numbers
No OpenAPI file here for this version — only the PLAS Status text.
v0.5.4
Release notes
- Added /branches and /holdings
- Change AuthenticationClientExpiresIn expires_in type integer
- Added error codes
- Patron Update
- Patron phone number structure
- Patron identification cards
- Patron consent(s)
- Added /configuration
- Added Patron fees
- Added Checkout and Checkin
- Added Patron Notifications
- Added InterLibraryLoanPublicationMetadataN to Reservations, Loans and Fees
- Added get publication metadata endpoint by barcode or publication id
No OpenAPI file here for this version — only the PLAS Status text.
v0.5.3
Release notes
- Removed /authentication/bearer and added /authentication/oauth2/token instead.
No OpenAPI file here for this version — only the PLAS Status text.
v0.5.2
Release notes
- Added comment about, all url and query parameters need to be url encoded.
- Added comment about, Authentication error with http code 401.
- Removed reservationId from UpdatePatronReservationRequest.
- POST /authentication/bearer, changed field clientKey to clientSecret.
- Change reservation field pickUpExpireDate value from integer to string.
- Change reservation field name readyForPickUp to pickUpState, and value from boolean to string.
- Added required to all types (that needs it).
No OpenAPI file here for this version — only the PLAS Status text.
About this changelog
- New features are the supported features that became possible to build with the release. A feature is listed at the release where the calls it can’t be built without first appear in an OpenAPI file kept here. If the calls were already in the oldest file, the release can’t be told, and the feature is not listed.
- The release notes are quoted from PLAS Status, the PLAS team’s own status page, in the source’s English.
- Specification changes are measured between the release’s OpenAPI file and the previous one kept here. “Moved” means an operation changed method or path and kept its
operation; a newId operationappears as removed and added, because that is what the specification says.Id - No structural changes means that what this changelog measures — operations, parameters, request body, responses, schemas and their fields — is the same as in the previous release kept here. Changed descriptions are not measured. An API can get a new version number without changes, because the four APIs are released on the same number.
- Which version is in production, and every OpenAPI file, is in the API reference.