What changed in each PLAS release, newest first. The release notes are the PLAS team’s own words; the specification changes are measured between the OpenAPI files kept here.

Last updated

v0.6.7 In production

New features

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, 2 changed · Schemas: 34 added, 1 removed, 10 changed · from v0.6.6

Operations

2 added

2 changed

  • Checkin
    • parameter ui_language (query, string) added
    • response 429 added
    • response 404 removed
  • Checkout
    • parameter ui_language (query, string) added
    • response 429 added
    • response 404 removed

Schemas

34 added

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 Schemas: 1 changed · from v0.6.6

Schemas

1 changed

  • ErrorCode
    • values added: 10001, 71001, 100011, 100013, 100101
Content API Schemas: 1 changed · from v0.6.6

Schemas

1 changed

  • ErrorCode
    • values added: 10001, 71001, 100011, 100013, 100101
Vendor API Schemas: 5 added, 6 removed, 2 changed · from v0.6.6

Schemas

5 added

6 removed

  • CheckinResponseBody
  • CheckinWithRequiredPatronIdResponseBody
  • CheckoutAcknowledgementType
  • CheckoutAcknowledgementTypeFee
  • CheckoutAcknowledgementTypePreviouslyCheckedOut
  • CheckoutResponseBody

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, 2 removed, 3 changed · Schemas: 8 added, 6 changed · from v0.6.5

Operations

5 added

  • POST /patron/delete/identity-provider DeletePatronByCodeAndCodeVerifier
  • GET /patron/delete/identity-provider GetDeletePatronUrl
  • GET /patron/authentication/identity-provider GetPatronAuthenticationUrl
  • GET /patron/registration/identity-provider GetRegisterPatronUrl
  • POST /patron/registration/identity-provider RegisterPatronByCodeAndCodeVerifier

2 removed

  • POST /patron/authentication/identity-provider GetPatronAuthenticationUrlByIdentityProvider
  • GET /patron/registration/identity-provider RegisterPatronByIdentityProvider

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

  • CallbackConsent
  • DeletePatronByCodeAndCodeVerifierRequestBody
  • PatronAuthenticationByCodeAndCodeVerifierRequestBody
  • PatronConsentTypeEnum
  • PatronConsentTypeLiteral
  • PatronDeletionIdentityProviderResponseBody
  • PatronRegistrationByCodeAndCodeVerifierResponseBody
  • RegisterPatronByCodeAndCodeVerifierRequestBody

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
Search API No structural changes · from v0.6.5
Content API No structural changes · from v0.6.5
Vendor API Operations: 2 added, 1 removed · Schemas: 2 added, 1 changed · from v0.6.5

Operations

2 added

  • GET /callbacks/patron CallbackPatron
  • GET /callbacks/patron/delete CallbackPatronDelete

1 removed

  • GET /callbacks/patron/auth CallbackPatronAuthentication

Schemas

2 added

  • PatronConsentTypeEnum
  • PatronConsentTypeLiteral

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, 1 removed · Schemas: 2 added, 1 changed · from v0.6.4

Operations

2 added

  • POST /patron/authentication/authenticate-token AuthenticatePatronByCodeAndCodeVerifier
  • POST /patron/authentication/identity-provider GetPatronAuthenticationUrlByIdentityProvider

1 removed

  • GET /patron/authentication/identity-provider AuthenticatePatronByIdentityProvider

Schemas

2 added

  • ConfigurationPatronIdentityProviderType
  • PatronAuthenticationByCodeAndCodeVerifierResponseBody

1 changed

  • PatronAuthenticationIdentityProviderResponseBody
    • field url (string (uri)) added
    • field patron removed
Search API No structural changes · from v0.6.4
Content API No structural changes · from v0.6.4
Vendor API Operations: 1 added · from v0.6.3

Operations

1 added

  • GET /callbacks/patron/auth CallbackPatronAuthentication

v0.6.4

New features

Release notes

  • Added Content Events

Changes in the specification

Provider API Operations: 3 added · Schemas: 43 added, 4 changed · from v0.6.3

Operations

3 added

  • GET /configuration/content GetContentConfiguration
  • GET /content/event GetContentEvents
  • GET /content/event/series/{seriesId} GetContentEventsInSeries

Schemas

43 added

  • Address
  • AllDayScheduling
  • ConfigurationContentApi
  • ConfigurationContentResponseBody
  • ConfigurationContentWithApi
  • ContactInfo
  • Event
  • EventAdmission
  • EventAudience
  • EventBranch
  • EventCategory
  • EventLocation
  • EventLocationAtBranch
  • EventLocationExternal
  • EventOrganizer
  • EventPriceCategory
  • EventPricing
  • EventPricingPriceCategories
  • EventPricingSimple
  • EventScheduling
  • EventSeries
  • EventState
  • GetContentEventsInSeriesResponseBody
  • GetContentEventsResponseBody
  • ImageAlt
  • ImageCredit
  • ImageFocalPoint
  • ImageFocalPointHotspot
  • ImageOriginal
  • ImageTypeContent
  • OpenAdmission
  • Promoted
  • PromotedType
  • PromotedTypeEnum
  • PromotedTypeLiteral
  • QueryRelevantWorks
  • RegistrationAdmission
  • RelatedEvents
  • RelevantWorks
  • TicketAdmission
  • TicketState
  • TimeSpanScheduling
  • WorksRelevantWorks

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
Search API First release here — nothing older to compare with.
Content API First release here — nothing older to compare with.

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

Provider API First release here — nothing older to compare with.
Vendor API First release here — nothing older to compare with.

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 operationId; a new operationId appears as removed and added, because that is what the specification says.
  • 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.