Skip to main content

A Python client for interacting with FOLIO's APIs.

Project description

pyfolioclient

A Python client for interacting with FOLIO's APIs.

Prerequisites

  • Python 3.9+
  • FOLIO Poppy release or newer (requires expiring tokens)

Configuration

The clients requires:

  • An URL to the FOLIO OKAPI (i.e. foliopath/okapi)
  • The username of the tenant in FOLIO
  • The username of a user with adequate permissions in FOLIO and the password for the user

Installation

Choose your preferred installation method:

pip install pyfolioclient
# or
pip3 install pyfolioclient
# or
uv add pyfolioclient

Features

FolioBaseClient

Features:

  • Authentication and token management
  • Re-authentication when token expires
  • Persistent connections using httpx Client
  • Support for all standard HTTP methods (GET, POST, PUT, DELETE)
  • Iterator implementation for paginated GET requests
  • Resource cleanup through context manager

FolioClient

Extends FolioBaseClient and provides useful methods for common operations in FOLIO. Provided for convencience. It contains convenience methods for:

  • Users
  • Inventory
    • Instances
    • Holdings
    • Items
  • Circulation
    • Loans
    • Requests
  • Data import

Usage Examples

FolioBaseClient

from pyfolioclient import FolioBaseClient

with FolioBaseClient(base_url, tenant, user, password) as folio:
    for user in folio.iter_data("/users", key="users", cql_query="username==bob*"):
        print(user)

FolioClient

from pyfolioclient import FolioClient, ItemNotFoundError

with FolioClient(base_url, tenant, user, password) as folio:
    for loan in folio.get_loans("status=Open"):
        print(loan.get("dueDate"))
    
    try:
        folio.delete_user_by_id("dcf1fabc-3165-4099-b5e6-aa74f95dee73")
    except ItemNotFoundError as err:
        print("No matching user")

A note on custom exceptions

A number of custom exceptions have been implemented:

  • BadRequestError (HTTP status code 400)
  • ItemNotFoundError (HTTP status code 404)
  • UnprocessableContentError (HTTP status code 422)

Through experience we have found these useful to be able to handle explicitly and separately, rather than being raised as a general HTTP error.

FOLIO API Notes

FOLIO provides two types of endpoints:

  1. Business Logic Modules (/inventory/items)
  2. Storage Modules (/item-storage/items)

For detailed information:

FOLIO API endpoints can be queried using the CQL query language. For an introduction refer to:

Note: Query capabilities may be limited to specific JSON response fields.

Credits

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyfolioclient-0.1.7.tar.gz (23.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyfolioclient-0.1.7-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file pyfolioclient-0.1.7.tar.gz.

File metadata

  • Download URL: pyfolioclient-0.1.7.tar.gz
  • Upload date:
  • Size: 23.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for pyfolioclient-0.1.7.tar.gz
Algorithm Hash digest
SHA256 ec27529930de975ec94fefe0a59f571619a9eff8a0fdef30ff81ff273381d387
MD5 b66f570da23efd95661090fdcb4c1a08
BLAKE2b-256 5d1473721a6aabdccbef70cef1ace0e7717c25c51024516fb6e9db794b654df4

See more details on using hashes here.

File details

Details for the file pyfolioclient-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: pyfolioclient-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 14.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for pyfolioclient-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 e416cd1b0096eb5731fb58de48ef28fdbb8e892118c64a0afdfa858d8e00d189
MD5 cc775d5c5e2cc2c89c0422d186254f25
BLAKE2b-256 cf423a3995762861686f196979ec1659238b7e44819b6b661d762cf27c1f1601

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page