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:
- Business Logic Modules (
/inventory/items) - 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
- Developed at Linköping University
- Inspired by FOLIO-FSE/FolioClient by Theodor Tolstoy @fontanka16
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec27529930de975ec94fefe0a59f571619a9eff8a0fdef30ff81ff273381d387
|
|
| MD5 |
b66f570da23efd95661090fdcb4c1a08
|
|
| BLAKE2b-256 |
5d1473721a6aabdccbef70cef1ace0e7717c25c51024516fb6e9db794b654df4
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e416cd1b0096eb5731fb58de48ef28fdbb8e892118c64a0afdfa858d8e00d189
|
|
| MD5 |
cc775d5c5e2cc2c89c0422d186254f25
|
|
| BLAKE2b-256 |
cf423a3995762861686f196979ec1659238b7e44819b6b661d762cf27c1f1601
|