Logging a patron in and getting their patron ID, either with an identifier and a credential, with an identifier alone where the provider allows it, or through an identity provider. Also changing a credential the patron knows, and resetting one they have forgotten.

6 operasjoner
POST /patron/{patronId}/credential/change

Change the patron's own password or pin code.

Bearer-token ChangePatronCredential

Change a credential the patron already knows.

The credential field says which credential is being changed, and the current and new values are named after it, so a password and a pin code can never be sent in each other's place. It must be one of the credentials in patron->credentials->changeable in the configuration, otherwise the provider returns the error code 100013.

The provider must verify the current credential before applying the new one, and returns the error code 100001 if it is wrong. This is the only proof in the request that the caller is the patron, since the bearer token identifies the vendor and patronId is just an identifier.

PLAS states no format for a password or a pin code. If the provider rejects the new value it returns the error code 100011, and the info should say what was wrong, since there is nothing in the configuration for the vendor to validate against beforehand.

The endpoint is also a way to guess the current credential, so the provider is expected to rate limit it per patron, and should answer 429 rather than 400 once the limit is reached. This matters most for a pin code, which is short enough to be guessed outright if nothing throttles the attempts.

A patron who does not know their current credential uses POST /patron/credential/reset instead.

Eksempel på kall

cURL

curl -X POST "$PLAS_BASE_URL/patron/40218873/credential/change?version=0.6.7" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $PLAS_TOKEN" \
  -d '{
  "credential": "password",
  "currentPassword": "correct-horse-battery",
  "newPassword": "lantern-river-staple"
}'

JavaScript

const response = await fetch(`${process.env.PLAS_BASE_URL}/patron/40218873/credential/change?version=0.6.7`, {
  method: "POST",
  headers: {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": `Bearer ${process.env.PLAS_TOKEN}`,
  },
  body: JSON.stringify({
    "credential": "password",
    "currentPassword": "correct-horse-battery",
    "newPassword": "lantern-river-staple"
  }),
});

Python

import os
import requests

response = requests.post(
    f"{os.environ['PLAS_BASE_URL']}/patron/40218873/credential/change",
    params={
        "version": "0.6.7",
    },
    headers={
        "Accept": "application/json",
        "Content-Type": "application/json",
        "Authorization": f"Bearer {os.environ['PLAS_TOKEN']}",
    },
    json={
        "credential": "password",
        "currentPassword": "correct-horse-battery",
        "newPassword": "lantern-river-staple",
    },
)
response.raise_for_status()
Verten og tokenet er miljøvariabler: PLAS_BASE_URL providerens adresse · PLAS_TOKEN et access token.

Parametere

patronIdpåkrevd
path · string

Patron ID from authentication.

Eksempel: 40218873
Felles for operasjonene: version. Se den felles kontrakten på versjonssiden.

Request body

application/json · påkrevd · ChangePatronCredentialRequestBody

Velges av feltet credential

Variant: password

ChangePatronPasswordRequestBody

  • credentialstringpåkrevd

    Én av: password

  • currentPasswordstringpåkrevd

    The patron's current password.

    The provider must verify this before applying newPassword. It is the only proof in the request that the caller is the patron, and not someone who knows the patron ID.

  • newPasswordstringpåkrevd

    The password the patron wants from now on.

Variant: pin

ChangePatronPinRequestBody

  • credentialstringpåkrevd

    Én av: pin

  • currentPinstringpåkrevd

    The patron's current pin code.

    The provider must verify this before applying newPin. It is the only proof in the request that the caller is the patron, and not someone who knows the patron ID.

  • newPinstringpåkrevd

    The pin code the patron wants from now on.

Svar

204 The credential was changed, and the current value no longer works.

Ikke noe innhold i svaret.

400 The list of errors. Errors

Felles svar, definert én gang for hele API-et. Se den felles kontrakten på versjonssiden.

Generert fra skjemaet

Eksempel

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

Skjema

Errors

  • errorsarray of Errorpåkrevdmin. antall 1

    The first error should always be the most relevant.

    Vis 2 felterSkjul 2 felter
    • codeintegerpåkrevd

      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

      Én av: 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

    • infostringpåkrevd

      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.

Felles svar, definert én gang for hele API-et. Se den felles kontrakten på versjonssiden.

Ikke noe innhold i svaret.

404 Resource not found.

Felles svar, definert én gang for hele API-et. Se den felles kontrakten på versjonssiden.

Ikke noe innhold i svaret.

429 Too many requests. The provider is rate limiting and did not carry out the request.

The response should have a Retry-After header saying how many seconds to wait. Show the patron "try again later", not an error about what they sent.

Felles svar, definert én gang for hele API-et. Se den felles kontrakten på versjonssiden.

Headere
Retry-After integer

Seconds to wait before sending the request again.

Ikke noe innhold i svaret.

POST /patron/authentication

Authenticate patron

Bearer-token AuthenticatePatron

Authenticate patron by credentials.

Eksempel på kall

cURL

curl -X POST "$PLAS_BASE_URL/patron/authentication?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/authentication?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/authentication",
    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()
Verten og tokenet er miljøvariabler: PLAS_BASE_URL providerens adresse · PLAS_TOKEN et access token.

Parametere

Felles for operasjonene: version. Se den felles kontrakten på versjonssiden.

Request body

application/json · påkrevd · PatronAuthenticationRequestBody

Authentication Patron

  • Vis 2 felterSkjul 2 felter
    • 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.

      Én av: local · email · phone · norway_national_library_card · norway_national_birth_number · denmark_cpr

      Vis 2 varianterSkjul 2 varianter

      Variant: PatronIdentifierTypeEnum

      PatronIdentifierTypeEnum

      Variant: PatronIdentifierTypeLiteral

      PatronIdentifierTypeLiteral

    • valuestringpåkrevd

      Identifier value. This information may be sensitive.

  • passwordstringpåkrevd

    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.

Svar

200 Success PatronAuthenticationResponseBody
Generert fra skjemaet

Eksempel

{
  "patron": {
    "address": {
      "city": "Nordby",
      "country": "Norway",
      "postalCode": "0182",
      "street": "Storgata 12"
    },
    "emails": [
      {
        "default": true,
        "email": "kari.nordmann@example.no",
        "verified": "yes"
      }
    ],
    "fullName": "Kari Nordmann",
    "givenName": "Kari",
    "identifiers": [
      {
        "type": "local",
        "value": "N00012345"
      }
    ],
    "patronId": "40218873",
    "permissions": [
      {
        "reason": "The patron has unpaid fees above the library’s limit.",
        "status": "allowed",
        "type": "off_hours"
      }
    ],
    "phoneNumbers": [
      {
        "default": true,
        "number": "+4791234567",
        "type": "mobile",
        "verified": "yes"
      }
    ],
    "pickupLocation": {
      "branchId": "nordby-main",
      "branchName": "Nordby Main Library",
      "sections": [
        {
          "id": "nordby-main-children",
          "name": "Children’s department",
          "type": "department"
        }
      ]
    },
    "reservation": {
      "postpone": {
        "fromDate": "2025-03-01",
        "toDate": "2025-03-31"
      }
    },
    "surname": "Nordmann"
  }
}

Skjema

PatronAuthenticationResponseBody

  • patronPatronpåkrevd
    Vis 11 felterSkjul 11 felter
    • Vis 4 felterSkjul 4 felter
      • citystringpåkrevd

        This field refers to the city, town, or locality where the address is located.

      • countrystring

        This field specifies the name of the country where the address is located.

      • postalCodestring

        This field represents the numeric or alphanumeric code assigned to a specific area for efficient mail sorting and delivery.

      • streetstringpåkrevd

        This field represents the name of the road, street, or thoroughfare where the address is located.
        The field should also contain the building number assigned to a building at the location, and the field should also contain identifiers such as apartment numbers, suite numbers, or floor numbers.

    • emailsarray of PatronEmailpåkrevd

      The size of this array must not exceed (if specified) the ´maxNumberOfEmailAddresses´ value given in the configuration.

      Vis 3 felterSkjul 3 felter
      • defaultboolean

        At most one email can de marked as default.

      • emailstringpåkrevd

        Patron email, following RFC 5322.

      • verifiedstring

        Tells the state of verification of the email.

        Én av: yes · no · pending

    • fullNamestringpåkrevd

      FullName is always provided, but givenName and surname are only specified if the data is organized in such a detailed manner.

    • givenNamestring

      Patron's given name.

    • Vis 2 felterSkjul 2 felter
      • 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.

        Én av: local · email · phone · norway_national_library_card · norway_national_birth_number · denmark_cpr

        Se PatronIdentifierType i skjemaindeksen

      • valuestringpåkrevd

        Identifier value. This information may be sensitive.

    • patronIdstringpåkrevd

      Unique patron identifier (unique for that customer).

    • permissionsarray of object

      This is a list of activities, locations, etc. that the patron is either allowed or blocked from accessing.

      Vis 3 felterSkjul 3 felter
      • reasonstring

        Human readable text that explains why the patron is blocked.

      • statusstringpåkrevd

        Én av: allowed · blocked

      • typestringpåkrevd

        Some suggested access types:

        • off_hours Access to the libraries outside normal opening hours.
        • self_service Block checkout and checkin on self service clients.
        • exclusion Patron is excluded from all library uses.
    • phoneNumbersarray of PatronPhoneNumberpåkrevd

      The size of this array must not exceed (if specified) the ´maxNumberOfPhoneNumbers´ value given in the configuration.

      Vis 4 felterSkjul 4 felter
      • defaultbooleanpåkrevd

        At most one phone number can be marked as default.

      • numberstringpåkrevdmønster ^\+[1-9]\d{1,14}$

        The phone number, in ITU standard E.164 format.

      • typestringpåkrevd

        This tells which type of phone the number is associated with

        Én av: mobile · landline

      • verifiedstring

        Tells the state of verification of the phone number.

        Én av: yes · no · pending

    • pickupLocationPickupLocationpåkrevd

      The object tells where a reservation item can be picked up.

      This is the default pickup location for the patron.

      Vis 3 felterSkjul 3 felter
    • Vis 1 feltSkjul 1 felt
      • postponeobject

        This describes an interval (possibly an open interval, but only in one end) where the patron is not interested in reservations being fulfilled, e.g. while on vacation.

    • surnamestring

      Patron surname.

400 The list of errors. Errors

Felles svar, definert én gang for hele API-et. Se den felles kontrakten på versjonssiden.

Generert fra skjemaet

Eksempel

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

Skjema

Errors

  • errorsarray of Errorpåkrevdmin. antall 1

    The first error should always be the most relevant.

    Vis 2 felterSkjul 2 felter
    • codeintegerpåkrevd

      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

      Én av: 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

    • infostringpåkrevd

      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.

Felles svar, definert én gang for hele API-et. Se den felles kontrakten på versjonssiden.

Ikke noe innhold i svaret.

GET /patron/authentication/identity-provider

This will fetch a SSO URL used for patron login, matching the chosen identity provider.

Bearer-token GetPatronAuthenticationUrl

Eksempel på kall

cURL

curl -X GET "$PLAS_BASE_URL/patron/authentication/identity-provider?identity_provider=norway_id_portal&code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM&state=af0ifjsldkj&version=0.6.7" \
  -H 'Accept: application/json' \
  -H "Authorization: Bearer $PLAS_TOKEN"

JavaScript

const response = await fetch(`${process.env.PLAS_BASE_URL}/patron/authentication/identity-provider?identity_provider=norway_id_portal&code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM&state=af0ifjsldkj&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/authentication/identity-provider",
    params={
        "identity_provider": "norway_id_portal",
        "code_challenge": "E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM",
        "state": "af0ifjsldkj",
        "version": "0.6.7",
    },
    headers={
        "Accept": "application/json",
        "Authorization": f"Bearer {os.environ['PLAS_TOKEN']}",
    },
)
data = response.json()
Verten og tokenet er miljøvariabler: PLAS_BASE_URL providerens adresse · PLAS_TOKEN et access token.

Parametere

identity_providerpåkrevd
query · string

The identity provider type, found in GET /configuration.

Eksempel: norway_id_portal
code_challengepåkrevd
query · string

A hashed value (of the code_verifier from a PKCE flow) used to secure the authorization code exchange.

Eksempel: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
statepåkrevd
query · string

A random string to protect against CSRF and track the request state. The value should be returned to the Vendor on the callback url after login.

Eksempel: af0ifjsldkj
prompt
query · string

If prompt is set to login, the returned url should force a new login, even if the user is already logged in.

Eksempel: login
app_redirect_url
query · string (uri)

This value should be returned to the Vendor on the callback url after login.

Eksempel: https://app.nordby.bibliotek.example/callback
Felles for operasjonene: version. Se den felles kontrakten på versjonssiden.

Svar

200 Success PatronAuthenticationIdentityProviderResponseBody
Generert fra skjemaet

Eksempel

{
  "url": "https://nordby.bibliotek.example/url"
}

Skjema

PatronAuthenticationIdentityProviderResponseBody

  • urlstring (uri)påkrevd
400 The list of errors. Errors

Felles svar, definert én gang for hele API-et. Se den felles kontrakten på versjonssiden.

Generert fra skjemaet

Eksempel

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

Skjema

Errors

  • errorsarray of Errorpåkrevdmin. antall 1

    The first error should always be the most relevant.

    Vis 2 felterSkjul 2 felter
    • codeintegerpåkrevd

      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

      Én av: 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

    • infostringpåkrevd

      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.

Felles svar, definert én gang for hele API-et. Se den felles kontrakten på versjonssiden.

Ikke noe innhold i svaret.

POST /patron/authentication/identity-provider

Authenticate patron by code and code verifier from SSO login.

Bearer-token AuthenticatePatronByCodeAndCodeVerifier

Eksempel på kall

cURL

curl -X POST "$PLAS_BASE_URL/patron/authentication/identity-provider?version=0.6.7" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H "Authorization: Bearer $PLAS_TOKEN" \
  --data-urlencode 'code=SplxlOBeZQQYbYS6WxSbIA' \
  --data-urlencode 'code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk' \
  --data-urlencode 'identity_provider=norway_id_portal'

JavaScript

const response = await fetch(`${process.env.PLAS_BASE_URL}/patron/authentication/identity-provider?version=0.6.7`, {
  method: "POST",
  headers: {
    "Accept": "application/json",
    "Content-Type": "application/x-www-form-urlencoded",
    "Authorization": `Bearer ${process.env.PLAS_TOKEN}`,
  },
  body: new URLSearchParams({
    "code": "SplxlOBeZQQYbYS6WxSbIA",
    "code_verifier": "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk",
    "identity_provider": "norway_id_portal",
  }),
});
const data = await response.json();

Python

import os
import requests

response = requests.post(
    f"{os.environ['PLAS_BASE_URL']}/patron/authentication/identity-provider",
    params={
        "version": "0.6.7",
    },
    headers={
        "Accept": "application/json",
        "Content-Type": "application/x-www-form-urlencoded",
        "Authorization": f"Bearer {os.environ['PLAS_TOKEN']}",
    },
    data={
        "code": "SplxlOBeZQQYbYS6WxSbIA",
        "code_verifier": "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk",
        "identity_provider": "norway_id_portal",
    },
)
data = response.json()
Verten og tokenet er miljøvariabler: PLAS_BASE_URL providerens adresse · PLAS_TOKEN et access token.

Parametere

Felles for operasjonene: version. Se den felles kontrakten på versjonssiden.

Request body

application/x-www-form-urlencoded · påkrevd · PatronAuthenticationByCodeAndCodeVerifierRequestBody
  • codestringpåkrevd

    The code obtained from a SSO patron authentication.

  • code_verifierstringpåkrevd

    The code verifier use to create the code challenge use to obtained the code.

  • identity_providerstringpåkrevd

    The identity provider type, found in GET /configuration.

    Én av: norway_id_portal · norway_nl_oidc · norway_feide_oidc · denmark_mit_id · denmark_dbc_access_platform

Svar

200 Success PatronAuthenticationByCodeAndCodeVerifierResponseBody
Generert fra skjemaet

Eksempel

{
  "patron": {
    "address": {
      "city": "Nordby",
      "country": "Norway",
      "postalCode": "0182",
      "street": "Storgata 12"
    },
    "emails": [
      {
        "default": true,
        "email": "kari.nordmann@example.no",
        "verified": "yes"
      }
    ],
    "fullName": "Kari Nordmann",
    "givenName": "Kari",
    "identifiers": [
      {
        "type": "local",
        "value": "N00012345"
      }
    ],
    "patronId": "40218873",
    "permissions": [
      {
        "reason": "The patron has unpaid fees above the library’s limit.",
        "status": "allowed",
        "type": "off_hours"
      }
    ],
    "phoneNumbers": [
      {
        "default": true,
        "number": "+4791234567",
        "type": "mobile",
        "verified": "yes"
      }
    ],
    "pickupLocation": {
      "branchId": "nordby-main",
      "branchName": "Nordby Main Library",
      "sections": [
        {
          "id": "nordby-main-children",
          "name": "Children’s department",
          "type": "department"
        }
      ]
    },
    "reservation": {
      "postpone": {
        "fromDate": "2025-03-01",
        "toDate": "2025-03-31"
      }
    },
    "surname": "Nordmann"
  }
}

Skjema

PatronAuthenticationByCodeAndCodeVerifierResponseBody

  • patronPatronpåkrevd
    Vis 11 felterSkjul 11 felter
    • Vis 4 felterSkjul 4 felter
      • citystringpåkrevd

        This field refers to the city, town, or locality where the address is located.

      • countrystring

        This field specifies the name of the country where the address is located.

      • postalCodestring

        This field represents the numeric or alphanumeric code assigned to a specific area for efficient mail sorting and delivery.

      • streetstringpåkrevd

        This field represents the name of the road, street, or thoroughfare where the address is located.
        The field should also contain the building number assigned to a building at the location, and the field should also contain identifiers such as apartment numbers, suite numbers, or floor numbers.

    • emailsarray of PatronEmailpåkrevd

      The size of this array must not exceed (if specified) the ´maxNumberOfEmailAddresses´ value given in the configuration.

      Vis 3 felterSkjul 3 felter
      • defaultboolean

        At most one email can de marked as default.

      • emailstringpåkrevd

        Patron email, following RFC 5322.

      • verifiedstring

        Tells the state of verification of the email.

        Én av: yes · no · pending

    • fullNamestringpåkrevd

      FullName is always provided, but givenName and surname are only specified if the data is organized in such a detailed manner.

    • givenNamestring

      Patron's given name.

    • Vis 2 felterSkjul 2 felter
      • 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.

        Én av: local · email · phone · norway_national_library_card · norway_national_birth_number · denmark_cpr

        Se PatronIdentifierType i skjemaindeksen

      • valuestringpåkrevd

        Identifier value. This information may be sensitive.

    • patronIdstringpåkrevd

      Unique patron identifier (unique for that customer).

    • permissionsarray of object

      This is a list of activities, locations, etc. that the patron is either allowed or blocked from accessing.

      Vis 3 felterSkjul 3 felter
      • reasonstring

        Human readable text that explains why the patron is blocked.

      • statusstringpåkrevd

        Én av: allowed · blocked

      • typestringpåkrevd

        Some suggested access types:

        • off_hours Access to the libraries outside normal opening hours.
        • self_service Block checkout and checkin on self service clients.
        • exclusion Patron is excluded from all library uses.
    • phoneNumbersarray of PatronPhoneNumberpåkrevd

      The size of this array must not exceed (if specified) the ´maxNumberOfPhoneNumbers´ value given in the configuration.

      Vis 4 felterSkjul 4 felter
      • defaultbooleanpåkrevd

        At most one phone number can be marked as default.

      • numberstringpåkrevdmønster ^\+[1-9]\d{1,14}$

        The phone number, in ITU standard E.164 format.

      • typestringpåkrevd

        This tells which type of phone the number is associated with

        Én av: mobile · landline

      • verifiedstring

        Tells the state of verification of the phone number.

        Én av: yes · no · pending

    • pickupLocationPickupLocationpåkrevd

      The object tells where a reservation item can be picked up.

      This is the default pickup location for the patron.

      Vis 3 felterSkjul 3 felter
    • Vis 1 feltSkjul 1 felt
      • postponeobject

        This describes an interval (possibly an open interval, but only in one end) where the patron is not interested in reservations being fulfilled, e.g. while on vacation.

    • surnamestring

      Patron surname.

400 The list of errors. Errors

Felles svar, definert én gang for hele API-et. Se den felles kontrakten på versjonssiden.

Generert fra skjemaet

Eksempel

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

Skjema

Errors

  • errorsarray of Errorpåkrevdmin. antall 1

    The first error should always be the most relevant.

    Vis 2 felterSkjul 2 felter
    • codeintegerpåkrevd

      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

      Én av: 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

    • infostringpåkrevd

      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.

Felles svar, definert én gang for hele API-et. Se den felles kontrakten på versjonssiden.

Ikke noe innhold i svaret.

POST /patron/authentication/no-password

Authenticate patron without use of a password

Bearer-token AuthenticatePatronNoPassword

Authenticate patron without use of a password. This should only be used when absolutely necessary.

Eksempel på kall

cURL

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

JavaScript

const response = await fetch(`${process.env.PLAS_BASE_URL}/patron/authentication/no-password?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"
    }
  }),
});
const data = await response.json();

Python

import os
import requests

response = requests.post(
    f"{os.environ['PLAS_BASE_URL']}/patron/authentication/no-password",
    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",
        },
    },
)
data = response.json()
Verten og tokenet er miljøvariabler: PLAS_BASE_URL providerens adresse · PLAS_TOKEN et access token.

Parametere

Felles for operasjonene: version. Se den felles kontrakten på versjonssiden.

Request body

application/json · påkrevd · PatronAuthenticationNoPasswordRequestBody

Authentication Patron without using password

  • Vis 2 felterSkjul 2 felter
    • 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.

      Én av: local · email · phone · norway_national_library_card · norway_national_birth_number · denmark_cpr

      Vis 2 varianterSkjul 2 varianter

      Variant: PatronIdentifierTypeEnum

      PatronIdentifierTypeEnum

      Variant: PatronIdentifierTypeLiteral

      PatronIdentifierTypeLiteral

    • valuestringpåkrevd

      Identifier value. This information may be sensitive.

Svar

200 Success PatronAuthenticationNoPasswordResponseBody
Generert fra skjemaet

Eksempel

{
  "patron": {
    "address": {
      "city": "Nordby",
      "country": "Norway",
      "postalCode": "0182",
      "street": "Storgata 12"
    },
    "emails": [
      {
        "default": true,
        "email": "kari.nordmann@example.no",
        "verified": "yes"
      }
    ],
    "fullName": "Kari Nordmann",
    "givenName": "Kari",
    "identifiers": [
      {
        "type": "local",
        "value": "N00012345"
      }
    ],
    "patronId": "40218873",
    "permissions": [
      {
        "reason": "The patron has unpaid fees above the library’s limit.",
        "status": "allowed",
        "type": "off_hours"
      }
    ],
    "phoneNumbers": [
      {
        "default": true,
        "number": "+4791234567",
        "type": "mobile",
        "verified": "yes"
      }
    ],
    "pickupLocation": {
      "branchId": "nordby-main",
      "branchName": "Nordby Main Library",
      "sections": [
        {
          "id": "nordby-main-children",
          "name": "Children’s department",
          "type": "department"
        }
      ]
    },
    "reservation": {
      "postpone": {
        "fromDate": "2025-03-01",
        "toDate": "2025-03-31"
      }
    },
    "surname": "Nordmann"
  }
}

Skjema

PatronAuthenticationNoPasswordResponseBody

  • patronPatronpåkrevd
    Vis 11 felterSkjul 11 felter
    • Vis 4 felterSkjul 4 felter
      • citystringpåkrevd

        This field refers to the city, town, or locality where the address is located.

      • countrystring

        This field specifies the name of the country where the address is located.

      • postalCodestring

        This field represents the numeric or alphanumeric code assigned to a specific area for efficient mail sorting and delivery.

      • streetstringpåkrevd

        This field represents the name of the road, street, or thoroughfare where the address is located.
        The field should also contain the building number assigned to a building at the location, and the field should also contain identifiers such as apartment numbers, suite numbers, or floor numbers.

    • emailsarray of PatronEmailpåkrevd

      The size of this array must not exceed (if specified) the ´maxNumberOfEmailAddresses´ value given in the configuration.

      Vis 3 felterSkjul 3 felter
      • defaultboolean

        At most one email can de marked as default.

      • emailstringpåkrevd

        Patron email, following RFC 5322.

      • verifiedstring

        Tells the state of verification of the email.

        Én av: yes · no · pending

    • fullNamestringpåkrevd

      FullName is always provided, but givenName and surname are only specified if the data is organized in such a detailed manner.

    • givenNamestring

      Patron's given name.

    • Vis 2 felterSkjul 2 felter
      • 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.

        Én av: local · email · phone · norway_national_library_card · norway_national_birth_number · denmark_cpr

        Se PatronIdentifierType i skjemaindeksen

      • valuestringpåkrevd

        Identifier value. This information may be sensitive.

    • patronIdstringpåkrevd

      Unique patron identifier (unique for that customer).

    • permissionsarray of object

      This is a list of activities, locations, etc. that the patron is either allowed or blocked from accessing.

      Vis 3 felterSkjul 3 felter
      • reasonstring

        Human readable text that explains why the patron is blocked.

      • statusstringpåkrevd

        Én av: allowed · blocked

      • typestringpåkrevd

        Some suggested access types:

        • off_hours Access to the libraries outside normal opening hours.
        • self_service Block checkout and checkin on self service clients.
        • exclusion Patron is excluded from all library uses.
    • phoneNumbersarray of PatronPhoneNumberpåkrevd

      The size of this array must not exceed (if specified) the ´maxNumberOfPhoneNumbers´ value given in the configuration.

      Vis 4 felterSkjul 4 felter
      • defaultbooleanpåkrevd

        At most one phone number can be marked as default.

      • numberstringpåkrevdmønster ^\+[1-9]\d{1,14}$

        The phone number, in ITU standard E.164 format.

      • typestringpåkrevd

        This tells which type of phone the number is associated with

        Én av: mobile · landline

      • verifiedstring

        Tells the state of verification of the phone number.

        Én av: yes · no · pending

    • pickupLocationPickupLocationpåkrevd

      The object tells where a reservation item can be picked up.

      This is the default pickup location for the patron.

      Vis 3 felterSkjul 3 felter
    • Vis 1 feltSkjul 1 felt
      • postponeobject

        This describes an interval (possibly an open interval, but only in one end) where the patron is not interested in reservations being fulfilled, e.g. while on vacation.

    • surnamestring

      Patron surname.

400 The list of errors. Errors

Felles svar, definert én gang for hele API-et. Se den felles kontrakten på versjonssiden.

Generert fra skjemaet

Eksempel

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

Skjema

Errors

  • errorsarray of Errorpåkrevdmin. antall 1

    The first error should always be the most relevant.

    Vis 2 felterSkjul 2 felter
    • codeintegerpåkrevd

      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

      Én av: 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

    • infostringpåkrevd

      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.

Felles svar, definert én gang for hele API-et. Se den felles kontrakten på versjonssiden.

Ikke noe innhold i svaret.

POST /patron/credential/reset

Request that a reset link is sent to the patron.

Bearer-token ResetPatronCredential

Request that the provider sends a link, so the patron can set a credential they no longer know.

The identifier follows patron->login->identifierTypes in the configuration, since this is the recovery path for login.

The credential field says which credential to reset, and must be one of the credentials in patron->credentials->resettable in the configuration. If the field is missing, the provider decides which credential to reset.

The email in the request selects which of the patron's registered addresses to use, and is never a destination in its own right.
The link is only sent if that address is already attached to the identified patron and verified there. An attached but unverified address is treated exactly like no match, since the vendor can write patron email addresses through PATCH /patron/{patronId}/information.

If no link is sent, for any reason including rate limiting, the response is still 202. The endpoint must not reveal whether a patron exists, or which email addresses are attached to one, so neither the response nor the time it takes should differ between a match and no match.

The 400 is only for a malformed request body. In particular the error codes 100023 and 100013 must not be returned.

The link is the provider's, but the token in it must be unguessable, must be single use, and must expire after a short period. The request deliberately carries no URL, so the link cannot be pointed at a host chosen by the caller.

Eksempel på kall

cURL

curl -X POST "$PLAS_BASE_URL/patron/credential/reset?version=0.6.7" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $PLAS_TOKEN" \
  -d '{
  "credential": "password",
  "email": "kari.nordmann@example.no",
  "identifier": {
    "type": "local",
    "value": "N00012345"
  }
}'

JavaScript

const response = await fetch(`${process.env.PLAS_BASE_URL}/patron/credential/reset?version=0.6.7`, {
  method: "POST",
  headers: {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": `Bearer ${process.env.PLAS_TOKEN}`,
  },
  body: JSON.stringify({
    "credential": "password",
    "email": "kari.nordmann@example.no",
    "identifier": {
      "type": "local",
      "value": "N00012345"
    }
  }),
});

Python

import os
import requests

response = requests.post(
    f"{os.environ['PLAS_BASE_URL']}/patron/credential/reset",
    params={
        "version": "0.6.7",
    },
    headers={
        "Accept": "application/json",
        "Content-Type": "application/json",
        "Authorization": f"Bearer {os.environ['PLAS_TOKEN']}",
    },
    json={
        "credential": "password",
        "email": "kari.nordmann@example.no",
        "identifier": {
            "type": "local",
            "value": "N00012345",
        },
    },
)
response.raise_for_status()
Verten og tokenet er miljøvariabler: PLAS_BASE_URL providerens adresse · PLAS_TOKEN et access token.

Parametere

Felles for operasjonene: version. Se den felles kontrakten på versjonssiden.

Request body

application/json · påkrevd · ResetPatronCredentialRequestBody
  • credentialstring

    The credential the patron wants reset.

    It must be one of the credentials in patron.credentials.resettable in GET /configuration. If this is missing, the provider decides which credential to reset.

    The patron is not logged in here, so the vendor cannot know which credentials this patron uses. It only knows what GET /configuration says. If the value is not one the provider can reset, nothing is sent, and the response looks the same as when it is.

    Én av: password · pin

  • emailstringpåkrevd

    The email address, following RFC 5322, that the reset link should be sent to.

    This selects which of the patron's already registered email addresses to use. The provider must only send the reset link if this email address is already attached to the patron identified by identifier and verified there, and must never send to an address that is not. If it is not attached, or attached but not verified, nothing must be sent, and the response is unchanged.

  • Vis 2 felterSkjul 2 felter
    • 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.

      Én av: local · email · phone · norway_national_library_card · norway_national_birth_number · denmark_cpr

      Vis 2 varianterSkjul 2 varianter

      Variant: PatronIdentifierTypeEnum

      PatronIdentifierTypeEnum

      Variant: PatronIdentifierTypeLiteral

      PatronIdentifierTypeLiteral

    • valuestringpåkrevd

      Identifier value. This information may be sensitive.

Svar

202 The request was accepted. Whether a link is sent is decided after this response, so this is also the response when no link will be sent at all.

Ikke noe innhold i svaret.

400 The list of errors. Errors

Felles svar, definert én gang for hele API-et. Se den felles kontrakten på versjonssiden.

Generert fra skjemaet

Eksempel

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

Skjema

Errors

  • errorsarray of Errorpåkrevdmin. antall 1

    The first error should always be the most relevant.

    Vis 2 felterSkjul 2 felter
    • codeintegerpåkrevd

      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

      Én av: 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

    • infostringpåkrevd

      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.

Felles svar, definert én gang for hele API-et. Se den felles kontrakten på versjonssiden.

Ikke noe innhold i svaret.