Python client library for Catapa API
Project description
CATAPA Python SDK
A comprehensive Python client library for the CATAPA API with ergonomic wrapper and automatic OAuth2 authentication handling.
Features
- 🔐 Automatic OAuth2 Authentication - Client credentials flow with automatic token refresh
- 🚀 Ergonomic API - Simple, intuitive interface for all CATAPA APIs
- 📝 Full Type Support - Complete type hints with generated models
- 📦 Direct Imports -
from catapa import EmployeeApi - 🎯 Auto-Refresh Tokens - Tokens are automatically refreshed on every API call
Installation
# Install from local directory
pip install -e /path/to/catapa-python
When installed, two packages are available:
catapa: The main package with wrapper and authentication logicopenapi_client: The raw generated OpenAPI client code
Quick Start
from catapa import Catapa, EmployeeApi
# 1. Initialize the client
client = Catapa(
tenant='your-tenant',
client_id='your-client-id',
client_secret='your-client-secret'
)
# 2. Create API instances and use them
employee_api = EmployeeApi(client)
employees = employee_api.list_all_employees(page=0, size=10)
print(f"Found {len(employees.content)} employees")
Usage Examples
Using Multiple APIs
You can import and use multiple API classes:
from catapa import Catapa, OrganizationApi, MasterDataApi, TaxApi
client = Catapa(
tenant='your-tenant',
client_id='your-client-id',
client_secret='your-client-secret'
)
# Use different APIs with the same client
org_api = OrganizationApi(client)
company = org_api.get_companies()
master_data_api = MasterDataApi(client)
countries = master_data_api.get_countries()
tax_api = TaxApi(client)
tax_rates = tax_api.get_tax_rates()
Long-Running Services
The SDK is perfect for long-running services - tokens are automatically refreshed on every API call:
from catapa import Catapa, EmployeeApi
import time
client = Catapa(tenant='your-tenant', client_id='your-id', client_secret='your-secret')
employee_api = EmployeeApi(client)
# Make an API call
employees = employee_api.list_all_employees(page=0, size=10)
# Wait an hour (token would normally expire)
time.sleep(3600)
# This call will automatically refresh the token if needed
employees = employee_api.list_all_employees(page=0, size=10) # ✅ Works!
Error Handling
from catapa import Catapa, EmployeeApi
from openapi_client.exceptions import ApiException
client = Catapa(tenant='your-tenant', client_id='your-id', client_secret='your-secret')
employee_api = EmployeeApi(client)
try:
employees = employee_api.list_all_employees(page=0, size=10)
except ApiException as e:
print(f"API Error: {e.status} - {e.reason}")
Available APIs
All CATAPA APIs are available through the catapa package:
from catapa import (
Catapa,
EmployeeApi,
OrganizationApi,
MasterDataApi,
TaxApi,
SalaryPaymentApi,
PayrollProcessSnapshotApi,
# ... and 40+ more APIs
)
Authentication
The client automatically handles OAuth2 authentication using client credentials flow. You don't need to manage tokens manually:
- Automatic Token Refresh: Tokens are refreshed on every API call (5-minute buffer before expiration)
- No Manual Management: No need to check token expiration or refresh manually
Requirements
- Python 3.11+
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 catapa-0.1.5.tar.gz.
File metadata
- Download URL: catapa-0.1.5.tar.gz
- Upload date:
- Size: 360.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e0560a828536130f940fbe8b193fc2f3b389bcd735e9e51eac9339d59b24e9db
|
|
| MD5 |
f18a45ba7197300e8e4c64653925930e
|
|
| BLAKE2b-256 |
c8f4fb847566fa469cfb9cabc60d1179a432bac08ac9bc39cd4f0791876d57f8
|
File details
Details for the file catapa-0.1.5-py3-none-any.whl.
File metadata
- Download URL: catapa-0.1.5-py3-none-any.whl
- Upload date:
- Size: 1.8 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e562c6a23acfc062cc9698894335e9edf0c4a85704b5484dd36a938136f36842
|
|
| MD5 |
e6bad489fcb571e816a349adf4620f8b
|
|
| BLAKE2b-256 |
63f7aef780b5c229bef6b2b0f2c8c761adbdd9503318aaf2441027ea37559e68
|