A lightweight Python client for PaymentsOS Management and Reporting APIs.
Project description
paymentsoslib
Package Description
A lightweight Python client for PaymentsOS Management and Reporting APIs.
This library wraps:
- Session creation (Management API)
- Report Request creation/retrieval (Reporting API)
- Downloading and decompressing gzip CSV report files
This client performs real HTTP calls to PaymentsOS. Provide valid credentials and account details. Avoid logging sensitive data.
Usage
# 0. Initialize PaymentsOS client
client = PaymentsOS(
email="account.email@company.com",
password="PASSWORD",
account_id="ACCOUNT_ID",
environment="live",
api_version="1.1.0",
timeout=30
)
# Example: Using date between 6 months ago and yesterday
from dateutil.relativedelta import relativedelta
date_from = datetime.now() - relativedelta(months=6)
date_from = date_from.replace(hour=0, minute=0, second=0, microsecond=0)
date_to = datetime.now() - relativedelta(days=1)
date_to = date_to.replace(hour=0, minute=0, second=0, microsecond=0)
# 1. Create report request
result = client.create_report_request(
report_template_id="REPORT_TEMPLATE_ID",
date_from = date_from,
date_to = date_to,
report_name="MY_REPORT_NAME",
filter_timezone="America/Bogota",
display_timezone="America/Bogota",
timezone="-05:00",
include_sftp_report_name_prefix=True
)
print("Report ID request created:", result["id"])
report_request_id = result["id"]
# Poll while status is 'in_progress'
poll_seconds = 30 # choose your interval
timeout_seconds = 600 # e.g., 10 minutes overall timeout
deadline = time.time() + timeout_seconds
while True:
# 2. Retrieve current status
response = client.retrieve_report_request(report_request_id=report_request_id)
response.raise_for_status()
status_body = response.json()
status = (status_body.get("status") or "").strip()
print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] Report {report_request_id} status: {status}")
if status != "in_progress":
if status == "completed_successfully":
print("Report completed successfully.")
report_body = response.json()
report_url = report_body.get("report_url")
print(report_url)
# 3. Download report
output_path = r"C:\Admin\Output\File.csv"
client.download_report_to_csv(report_url=report_url, output_path=output_path)
elif status in {"Failed", "Error"}:
print("Report failed. Decide whether to retry or alert.")
else:
print(f"Report finished with status '{status}'. Handle as needed.")
break
# Still in progress — check for timeout and sleep
if time.time() >= deadline:
raise TimeoutError(
f"Report request '{report_request_id}' still 'in_progress' after {timeout_seconds}s."
)
time.sleep(poll_seconds)
Installation
Install python and pip if you have not already.
Then run:
pip install pip --upgrade
For production:
pip install paymentsoslib
This will install the package and all of it's python dependencies.
If you want to install the project for development:
git clone https://github.com/aghuttun/paymentsoslib.git
cd paymentsoslib
pip install -e ".[dev]"
Docstring
The script's docstrings follow the numpydoc style.
License
BSD License (see license file)
Project details
Release history Release notifications | RSS feed
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 paymentsoslib-0.0.2.tar.gz.
File metadata
- Download URL: paymentsoslib-0.0.2.tar.gz
- Upload date:
- Size: 8.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2de0615bb430f8d55a2bdc921f9cec45ddf742e9246a1f66810aa57c1022ee44
|
|
| MD5 |
4aa5f532c6f645d531086e05edfb3598
|
|
| BLAKE2b-256 |
bdfee6f291e2bf01daa6ae9280ad3a8ea3755953924a229840144bfaa1f9cbce
|
File details
Details for the file paymentsoslib-0.0.2-py3-none-any.whl.
File metadata
- Download URL: paymentsoslib-0.0.2-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9596d231e53e0568580c64842def9f3484c770d61128dd3778719d27df20ccf
|
|
| MD5 |
324a2c4c82cab1dfec9cf19c58dd3c05
|
|
| BLAKE2b-256 |
ebe471a010ff45c00954d715ec7a0da4ec17ed40e72263211a5cc5f7af596cda
|