Creating a new patron at the library. The vendor can first ask whether a given identifier may be registered at all, then register the patron with an identifier and a credential, or send the patron through an identity provider and complete the registration from its answer.

4 operations
POST /patron/registration

This will create a new patron, by the given identifier.

Bearer token RegisterPatronByIdentifier

Example request

cURL

curl -X POST "$PLAS_BASE_URL/patron/registration?version=0.6.7" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $PLAS_TOKEN" \
  -d '{
  "consents": [
    {
      "type": "loan_history",
      "version": "2025-01"
    }
  ],
  "identifier": {
    "type": "local",
    "value": "N00012345"
  },
  "password": "correct-horse-battery",
  "pickupLocation": {
    "branchId": "nordby-main",
    "sections": [
      {
        "id": "nordby-main-children",
        "type": "department"
      }
    ]
  },
  "registry": "national"
}'

JavaScript

const response = await fetch(`${process.env.PLAS_BASE_URL}/patron/registration?version=0.6.7`, {
  method: "POST",
  headers: {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": `Bearer ${process.env.PLAS_TOKEN}`,
  },
  body: JSON.stringify({
    "consents": [
      {
        "type": "loan_history",
        "version": "2025-01"
      }
    ],
    "identifier": {
      "type": "local",
      "value": "N00012345"
    },
    "password": "correct-horse-battery",
    "pickupLocation": {
      "branchId": "nordby-main",
      "sections": [
        {
          "id": "nordby-main-children",
          "type": "department"
        }
      ]
    },
    "registry": "national"
  }),
});
const data = await response.json();

Python

import os
import requests

response = requests.post(
    f"{os.environ['PLAS_BASE_URL']}/patron/registration",
    params={
        "version": "0.6.7",
    },
    headers={
        "Accept": "application/json",
        "Content-Type": "application/json",
        "Authorization": f"Bearer {os.environ['PLAS_TOKEN']}",
    },
    json={
        "consents": [
            {
                "type": "loan_history",
                "version": "2025-01",
            },
        ],
        "identifier": {
            "type": "local",
            "value": "N00012345",
        },
        "password": "correct-horse-battery",
        "pickupLocation": {
            "branchId": "nordby-main",
            "sections": [
                {
                    "id": "nordby-main-children",
                    "type": "department",
                },
            ],
        },
        "registry": "national",
    },
)
data = response.json()
The host and token are environment variables: PLAS_BASE_URL the provider’s base URL · PLAS_TOKEN an access token.

Parameters

Shared across operations: version. See the shared contract on the version page.

Request body

application/json · required · PatronRegistrationIdentifierRequestBody
  • It is the client's responsibility to ensure that the consent associated with this parameter is accepted by the patron before this request is made.

    Show 2 fieldsHide 2 fields
  • Show 2 fieldsHide 2 fields
    • A type identifier that tells which type of identifier is used.

      This is an open enum, so values other than the known ones are allowed. GET /configuration says which types the provider accepts for each flow, in patron.login.identifierTypes, patron.registration.identifierTypes and patron.deletion.identifierTypes.

      One of: local · email · phone · norway_national_library_card · norway_national_birth_number · denmark_cpr

      Show 2 variantsHide 2 variants

      Variant: PatronIdentifierTypeEnum

      PatronIdentifierTypeEnum

      Variant: PatronIdentifierTypeLiteral

      PatronIdentifierTypeLiteral

    • valuestringrequired

      Identifier value. This information may be sensitive.

  • passwordstringrequired

    The credential for the identifier.

    In authentication, registration and deletion this field carries whichever credential the provider uses, so at a provider that uses pin codes the value is a pin code even though the field is named password. For authentication, patron.login.credentials in GET /configuration says which it is.

    In POST /patron/{patronId}/credential/change the value is always a password. That request body carries a pin code in currentPin and newPin instead.

  • pickupLocationPickupLocationWithoutNamesrequired
    Show 2 fieldsHide 2 fields
    • branchIdstringrequired

      The branch ID where a reservation should be picked up.

    • This are specifying the location more precisely.

      Show 2 fieldsHide 2 fields
      • idstringrequired

        This is the section (element) ID

      • typestringrequired

        This should be the section type of the section (element) ID.

  • registrystring

    If against GET /patron/registration/possible, it has been checked that a patron can be registered, the registry can be added here, else it is up to the provider to choose.

Responses

200 Success PatronRegistrationIdentifierResponseBody
Generated from the schema

Example

{
  "message": "I accept the library’s terms of use.",
  "patronId": "40218873",
  "status": "done"
}

Schema

PatronRegistrationIdentifierResponseBody

  • messagestring

    Message to the patron, with information about the registration process.

  • patronIdstring

    If status is 'done' this should be set, else the user needs to log in again.

  • statusstringrequired

    This describes the state of the registration process.

    One of: done · in_progress · contact_the_library

400 The list of errors. Errors

Shared response, defined once for the whole API. See the shared contract on the version page.

Generated from the schema

Example

{
  "errors": [
    {
      "code": 200103,
      "info": "200103: invalid/unsupported query parameter value"
    }
  ]
}

Schema

Errors

  • errorsarray of Errorrequiredmin items 1

    The first error should always be the most relevant.

    Show 2 fieldsHide 2 fields
    • codeintegerrequired

      A number representing the type of error.

      List of error codes:

      • \<error code\>: \<error description\>
      • 500: System error
      • 600: Unsupported Open Library API version
      • 10001: Endpoint disabled
      • 71001: Consent has not been given for 'loan history'
      • 100001: Wrong patron identifier, password or pin code
      • 100011: New password or pin code rejected, because it does not meet the provider's requirements
      • 100013: The provider does not let the patron change the given credential
      • 100023: Patron ID not found
      • 100101: Patron could not be deleted, because the patron has something unresolved issue with the library (this could be anything from a loan to a fee, and so on ...)
      • 100211: maxNumberOfEmailAddresses exceeded
      • 100215: maxNumberOfPhoneNumbers exceeded
      • 100221: Pickup location cannot contain sections
      • 100411: Updating patron consent failed
      • 100611: Updating patron notification settings failed
      • 101001: Reservation ID not found
      • 101047: Branch ID cannot be used as pick up branch
      • 101053: Section ID cannot be used as pick up branch
      • 102001: Loan ID not found
      • 102301: Loan not renewable, because it is an interlibrary loan
      • 102311: Loan not renewable, because it is reserved
      • 110001: Branch ID not found
      • 200001: Publication ID not found
      • 200077: ui language not supported
      • 200101: missing required query parameter
      • 200103: invalid/unsupported query parameter value
      • 300001: Initialize payment should not be used
      • 300005: Initialize payment should be used
      • 300009: Payment method not supported
      • 300013: Payment method does not support partial payment
      • 300301: Finalized payment can not de changed
      • 300311: FinalizePaymentRequest.fees contains fees with the same ID
      • 310001: Loan history ID not found
      • 310011: Loan history ID already exists
      • 330001: List ID not found
      • 330011: List ID already exists
      • 330101: List item ID not found
      • 330111: List item ID already exists

      One of: 500 · 600 · 10001 · 71001 · 100001 · 100011 · 100013 · 100023 · 100101 · 100211 · 100215 · 100221 · 100411 · 100611 · 101001 · 101047 · 101053 · 102001 · 102301 · 102311 · 110001 · 200001 · 200077 · 200101 · 200103 · 300001 · 300005 · 300009 · 300013 · 300301 · 300311 · 310001 · 310011 · 330001 · 330011 · 330101 · 330111

    • infostringrequired

      Starts with the text matching the error code field (defined above), and a describing text could be added.

401 Bearer token invalid, missing, or expired.

Shared response, defined once for the whole API. See the shared contract on the version page.

No response body.

GET /patron/registration/identity-provider

This will redirect the user to the chosen identity provider, for signup.

Bearer token GetRegisterPatronUrl

This will redirect the user to the chosen identity provider, and create the user in the LMS. See a sequence flow diagram.

Example request

cURL

curl -X GET "$PLAS_BASE_URL/patron/registration/identity-provider?type=bankid&version=0.6.7" \
  -H 'Accept: application/json' \
  -H "Authorization: Bearer $PLAS_TOKEN"

JavaScript

const response = await fetch(`${process.env.PLAS_BASE_URL}/patron/registration/identity-provider?type=bankid&version=0.6.7`, {
  method: "GET",
  headers: {
    "Accept": "application/json",
    "Authorization": `Bearer ${process.env.PLAS_TOKEN}`,
  },
});
const data = await response.json();

Python

import os
import requests

response = requests.get(
    f"{os.environ['PLAS_BASE_URL']}/patron/registration/identity-provider",
    params={
        "type": "bankid",
        "version": "0.6.7",
    },
    headers={
        "Accept": "application/json",
        "Authorization": f"Bearer {os.environ['PLAS_TOKEN']}",
    },
)
data = response.json()
The host and token are environment variables: PLAS_BASE_URL the provider’s base URL · PLAS_TOKEN an access token.

Parameters

typerequired
query · string

Identity provider type. The different types are defined in the /configuration endpoint.

Example: bankid
Shared across operations: version. See the shared contract on the version page.

Responses

200 Success PatronRegistrationIdentityProviderResponseBody
Generated from the schema

Example

{
  "message": "I accept the library’s terms of use.",
  "patronId": "40218873",
  "status": "done"
}

Schema

PatronRegistrationIdentityProviderResponseBody

  • messagestring

    Message to the patron, with information about the registration process.

  • patronIdstring

    If status is 'done' this should be set, else the user needs to log in again.

  • statusstringrequired

    This describes the state of the registration process.

    One of: done · in_progress · contact_the_library

400 The list of errors. Errors

Shared response, defined once for the whole API. See the shared contract on the version page.

Generated from the schema

Example

{
  "errors": [
    {
      "code": 200103,
      "info": "200103: invalid/unsupported query parameter value"
    }
  ]
}

Schema

Errors

  • errorsarray of Errorrequiredmin items 1

    The first error should always be the most relevant.

    Show 2 fieldsHide 2 fields
    • codeintegerrequired

      A number representing the type of error.

      List of error codes:

      • \<error code\>: \<error description\>
      • 500: System error
      • 600: Unsupported Open Library API version
      • 10001: Endpoint disabled
      • 71001: Consent has not been given for 'loan history'
      • 100001: Wrong patron identifier, password or pin code
      • 100011: New password or pin code rejected, because it does not meet the provider's requirements
      • 100013: The provider does not let the patron change the given credential
      • 100023: Patron ID not found
      • 100101: Patron could not be deleted, because the patron has something unresolved issue with the library (this could be anything from a loan to a fee, and so on ...)
      • 100211: maxNumberOfEmailAddresses exceeded
      • 100215: maxNumberOfPhoneNumbers exceeded
      • 100221: Pickup location cannot contain sections
      • 100411: Updating patron consent failed
      • 100611: Updating patron notification settings failed
      • 101001: Reservation ID not found
      • 101047: Branch ID cannot be used as pick up branch
      • 101053: Section ID cannot be used as pick up branch
      • 102001: Loan ID not found
      • 102301: Loan not renewable, because it is an interlibrary loan
      • 102311: Loan not renewable, because it is reserved
      • 110001: Branch ID not found
      • 200001: Publication ID not found
      • 200077: ui language not supported
      • 200101: missing required query parameter
      • 200103: invalid/unsupported query parameter value
      • 300001: Initialize payment should not be used
      • 300005: Initialize payment should be used
      • 300009: Payment method not supported
      • 300013: Payment method does not support partial payment
      • 300301: Finalized payment can not de changed
      • 300311: FinalizePaymentRequest.fees contains fees with the same ID
      • 310001: Loan history ID not found
      • 310011: Loan history ID already exists
      • 330001: List ID not found
      • 330011: List ID already exists
      • 330101: List item ID not found
      • 330111: List item ID already exists

      One of: 500 · 600 · 10001 · 71001 · 100001 · 100011 · 100013 · 100023 · 100101 · 100211 · 100215 · 100221 · 100411 · 100611 · 101001 · 101047 · 101053 · 102001 · 102301 · 102311 · 110001 · 200001 · 200077 · 200101 · 200103 · 300001 · 300005 · 300009 · 300013 · 300301 · 300311 · 310001 · 310011 · 330001 · 330011 · 330101 · 330111

    • infostringrequired

      Starts with the text matching the error code field (defined above), and a describing text could be added.

401 Bearer token invalid, missing, or expired.

Shared response, defined once for the whole API. See the shared contract on the version page.

No response body.

POST /patron/registration/identity-provider

Register patron by code and code verifier from SSO registration.

Bearer token RegisterPatronByCodeAndCodeVerifier

Example request

cURL

curl -X POST "$PLAS_BASE_URL/patron/registration/identity-provider?version=0.6.7" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $PLAS_TOKEN" \
  -d '{
  "code": "SplxlOBeZQQYbYS6WxSbIA",
  "code_verifier": "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk",
  "consents": [
    {
      "type": "loan_history",
      "version": "2025-01"
    }
  ],
  "identity_provider": "norway_id_portal",
  "pickupLocation": {
    "branchId": "nordby-main",
    "sections": [
      {
        "id": "nordby-main-children",
        "type": "department"
      }
    ]
  }
}'

JavaScript

const response = await fetch(`${process.env.PLAS_BASE_URL}/patron/registration/identity-provider?version=0.6.7`, {
  method: "POST",
  headers: {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": `Bearer ${process.env.PLAS_TOKEN}`,
  },
  body: JSON.stringify({
    "code": "SplxlOBeZQQYbYS6WxSbIA",
    "code_verifier": "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk",
    "consents": [
      {
        "type": "loan_history",
        "version": "2025-01"
      }
    ],
    "identity_provider": "norway_id_portal",
    "pickupLocation": {
      "branchId": "nordby-main",
      "sections": [
        {
          "id": "nordby-main-children",
          "type": "department"
        }
      ]
    }
  }),
});
const data = await response.json();

Python

import os
import requests

response = requests.post(
    f"{os.environ['PLAS_BASE_URL']}/patron/registration/identity-provider",
    params={
        "version": "0.6.7",
    },
    headers={
        "Accept": "application/json",
        "Content-Type": "application/json",
        "Authorization": f"Bearer {os.environ['PLAS_TOKEN']}",
    },
    json={
        "code": "SplxlOBeZQQYbYS6WxSbIA",
        "code_verifier": "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk",
        "consents": [
            {
                "type": "loan_history",
                "version": "2025-01",
            },
        ],
        "identity_provider": "norway_id_portal",
        "pickupLocation": {
            "branchId": "nordby-main",
            "sections": [
                {
                    "id": "nordby-main-children",
                    "type": "department",
                },
            ],
        },
    },
)
data = response.json()
The host and token are environment variables: PLAS_BASE_URL the provider’s base URL · PLAS_TOKEN an access token.

Parameters

Shared across operations: version. See the shared contract on the version page.

Request body

application/json · required · RegisterPatronByCodeAndCodeVerifierRequestBody
  • codestringrequired

    The code obtained from a SSO patron registration.

  • code_verifierstringrequired

    The code verifier used to create the code challenge used to obtain the code.

  • Consents returned from the SSO callback (GET /callbacks/patron). It is the client's responsibility to ensure that the consent associated with this parameter is accepted by the patron before this request is made.

    Show 2 fieldsHide 2 fields
  • identity_providerstringrequired

    The identity provider type, found in GET /configuration.

    One of: norway_id_portal · norway_nl_oidc · norway_feide_oidc · denmark_mit_id · denmark_dbc_access_platform

  • pickupLocationPickupLocationWithoutNamesrequired
    Show 2 fieldsHide 2 fields
    • branchIdstringrequired

      The branch ID where a reservation should be picked up.

    • This are specifying the location more precisely.

      Show 2 fieldsHide 2 fields
      • idstringrequired

        This is the section (element) ID

      • typestringrequired

        This should be the section type of the section (element) ID.

Responses

200 Success PatronRegistrationByCodeAndCodeVerifierResponseBody
Generated from the schema

Example

{
  "message": "I accept the library’s terms of use.",
  "patronId": "40218873",
  "status": "done"
}

Schema

PatronRegistrationByCodeAndCodeVerifierResponseBody

  • messagestring

    Message to the patron, with information about the registration process.

  • patronIdstring

    If status is 'done' this should be set, else the user needs to log in again.

  • statusstringrequired

    This describes the state of the registration process.

    One of: done · in_progress · contact_the_library

400 The list of errors. Errors

Shared response, defined once for the whole API. See the shared contract on the version page.

Generated from the schema

Example

{
  "errors": [
    {
      "code": 200103,
      "info": "200103: invalid/unsupported query parameter value"
    }
  ]
}

Schema

Errors

  • errorsarray of Errorrequiredmin items 1

    The first error should always be the most relevant.

    Show 2 fieldsHide 2 fields
    • codeintegerrequired

      A number representing the type of error.

      List of error codes:

      • \<error code\>: \<error description\>
      • 500: System error
      • 600: Unsupported Open Library API version
      • 10001: Endpoint disabled
      • 71001: Consent has not been given for 'loan history'
      • 100001: Wrong patron identifier, password or pin code
      • 100011: New password or pin code rejected, because it does not meet the provider's requirements
      • 100013: The provider does not let the patron change the given credential
      • 100023: Patron ID not found
      • 100101: Patron could not be deleted, because the patron has something unresolved issue with the library (this could be anything from a loan to a fee, and so on ...)
      • 100211: maxNumberOfEmailAddresses exceeded
      • 100215: maxNumberOfPhoneNumbers exceeded
      • 100221: Pickup location cannot contain sections
      • 100411: Updating patron consent failed
      • 100611: Updating patron notification settings failed
      • 101001: Reservation ID not found
      • 101047: Branch ID cannot be used as pick up branch
      • 101053: Section ID cannot be used as pick up branch
      • 102001: Loan ID not found
      • 102301: Loan not renewable, because it is an interlibrary loan
      • 102311: Loan not renewable, because it is reserved
      • 110001: Branch ID not found
      • 200001: Publication ID not found
      • 200077: ui language not supported
      • 200101: missing required query parameter
      • 200103: invalid/unsupported query parameter value
      • 300001: Initialize payment should not be used
      • 300005: Initialize payment should be used
      • 300009: Payment method not supported
      • 300013: Payment method does not support partial payment
      • 300301: Finalized payment can not de changed
      • 300311: FinalizePaymentRequest.fees contains fees with the same ID
      • 310001: Loan history ID not found
      • 310011: Loan history ID already exists
      • 330001: List ID not found
      • 330011: List ID already exists
      • 330101: List item ID not found
      • 330111: List item ID already exists

      One of: 500 · 600 · 10001 · 71001 · 100001 · 100011 · 100013 · 100023 · 100101 · 100211 · 100215 · 100221 · 100411 · 100611 · 101001 · 101047 · 101053 · 102001 · 102301 · 102311 · 110001 · 200001 · 200077 · 200101 · 200103 · 300001 · 300005 · 300009 · 300013 · 300301 · 300311 · 310001 · 310011 · 330001 · 330011 · 330101 · 330111

    • infostringrequired

      Starts with the text matching the error code field (defined above), and a describing text could be added.

401 Bearer token invalid, missing, or expired.

Shared response, defined once for the whole API. See the shared contract on the version page.

No response body.

POST /patron/registration/possible

This will tell if it is possible to register a new patron, using the given identifier.

Bearer token IsPatronRegistrationPossible

This will tell if it is possible to register a new patron, using the given identifier.
The patron can then be registered through POST /patron/registration/identifier.

Example request

cURL

curl -X POST "$PLAS_BASE_URL/patron/registration/possible?version=0.6.7" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $PLAS_TOKEN" \
  -d '{
  "identifier": {
    "type": "local",
    "value": "N00012345"
  },
  "password": "correct-horse-battery"
}'

JavaScript

const response = await fetch(`${process.env.PLAS_BASE_URL}/patron/registration/possible?version=0.6.7`, {
  method: "POST",
  headers: {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": `Bearer ${process.env.PLAS_TOKEN}`,
  },
  body: JSON.stringify({
    "identifier": {
      "type": "local",
      "value": "N00012345"
    },
    "password": "correct-horse-battery"
  }),
});
const data = await response.json();

Python

import os
import requests

response = requests.post(
    f"{os.environ['PLAS_BASE_URL']}/patron/registration/possible",
    params={
        "version": "0.6.7",
    },
    headers={
        "Accept": "application/json",
        "Content-Type": "application/json",
        "Authorization": f"Bearer {os.environ['PLAS_TOKEN']}",
    },
    json={
        "identifier": {
            "type": "local",
            "value": "N00012345",
        },
        "password": "correct-horse-battery",
    },
)
data = response.json()
The host and token are environment variables: PLAS_BASE_URL the provider’s base URL · PLAS_TOKEN an access token.

Parameters

Shared across operations: version. See the shared contract on the version page.

Request body

application/json · required · IsPatronRegistrationPossibleRequestBody
  • Show 2 fieldsHide 2 fields
    • A type identifier that tells which type of identifier is used.

      This is an open enum, so values other than the known ones are allowed. GET /configuration says which types the provider accepts for each flow, in patron.login.identifierTypes, patron.registration.identifierTypes and patron.deletion.identifierTypes.

      One of: local · email · phone · norway_national_library_card · norway_national_birth_number · denmark_cpr

      Show 2 variantsHide 2 variants

      Variant: PatronIdentifierTypeEnum

      PatronIdentifierTypeEnum

      Variant: PatronIdentifierTypeLiteral

      PatronIdentifierTypeLiteral

    • valuestringrequired

      Identifier value. This information may be sensitive.

  • passwordstring

    The credential for the identifier.

    In authentication, registration and deletion this field carries whichever credential the provider uses, so at a provider that uses pin codes the value is a pin code even though the field is named password. For authentication, patron.login.credentials in GET /configuration says which it is.

    In POST /patron/{patronId}/credential/change the value is always a password. That request body carries a pin code in currentPin and newPin instead.

Responses

200 Success IsPatronRegistrationPossibleResponseBody
Generated from the schema

Example

{
  "registries": [
    {
      "type": "norway_national_library_card"
    }
  ]
}

Schema

IsPatronRegistrationPossibleResponseBody

  • registriesarray of objectrequired

    Any entry in this array is a possible way a new patron be registered through, based on the provided identifier.

    Show 1 fieldHide 1 field
    • typePatronRegistryTyperequired

      Identifies the registry which a new patron can be registered through.

      This is an open enum, so values other than the known ones are allowed. A registry is where the patron would be registered, and not the kind of identifier they gave, even where a registry and a PatronIdentifierType share a name.

      One of: norway_national_library_card

      Show 2 variantsHide 2 variants

      Variant: PatronRegistryTypeEnum

      PatronRegistryTypeEnum

      Variant: PatronRegistryTypeLiteral

      PatronRegistryTypeLiteral

400 The list of errors. Errors

Shared response, defined once for the whole API. See the shared contract on the version page.

Generated from the schema

Example

{
  "errors": [
    {
      "code": 200103,
      "info": "200103: invalid/unsupported query parameter value"
    }
  ]
}

Schema

Errors

  • errorsarray of Errorrequiredmin items 1

    The first error should always be the most relevant.

    Show 2 fieldsHide 2 fields
    • codeintegerrequired

      A number representing the type of error.

      List of error codes:

      • \<error code\>: \<error description\>
      • 500: System error
      • 600: Unsupported Open Library API version
      • 10001: Endpoint disabled
      • 71001: Consent has not been given for 'loan history'
      • 100001: Wrong patron identifier, password or pin code
      • 100011: New password or pin code rejected, because it does not meet the provider's requirements
      • 100013: The provider does not let the patron change the given credential
      • 100023: Patron ID not found
      • 100101: Patron could not be deleted, because the patron has something unresolved issue with the library (this could be anything from a loan to a fee, and so on ...)
      • 100211: maxNumberOfEmailAddresses exceeded
      • 100215: maxNumberOfPhoneNumbers exceeded
      • 100221: Pickup location cannot contain sections
      • 100411: Updating patron consent failed
      • 100611: Updating patron notification settings failed
      • 101001: Reservation ID not found
      • 101047: Branch ID cannot be used as pick up branch
      • 101053: Section ID cannot be used as pick up branch
      • 102001: Loan ID not found
      • 102301: Loan not renewable, because it is an interlibrary loan
      • 102311: Loan not renewable, because it is reserved
      • 110001: Branch ID not found
      • 200001: Publication ID not found
      • 200077: ui language not supported
      • 200101: missing required query parameter
      • 200103: invalid/unsupported query parameter value
      • 300001: Initialize payment should not be used
      • 300005: Initialize payment should be used
      • 300009: Payment method not supported
      • 300013: Payment method does not support partial payment
      • 300301: Finalized payment can not de changed
      • 300311: FinalizePaymentRequest.fees contains fees with the same ID
      • 310001: Loan history ID not found
      • 310011: Loan history ID already exists
      • 330001: List ID not found
      • 330011: List ID already exists
      • 330101: List item ID not found
      • 330111: List item ID already exists

      One of: 500 · 600 · 10001 · 71001 · 100001 · 100011 · 100013 · 100023 · 100101 · 100211 · 100215 · 100221 · 100411 · 100611 · 101001 · 101047 · 101053 · 102001 · 102301 · 102311 · 110001 · 200001 · 200077 · 200101 · 200103 · 300001 · 300005 · 300009 · 300013 · 300301 · 300311 · 310001 · 310011 · 330001 · 330011 · 330101 · 330111

    • infostringrequired

      Starts with the text matching the error code field (defined above), and a describing text could be added.

401 Bearer token invalid, missing, or expired.

Shared response, defined once for the whole API. See the shared contract on the version page.

No response body.