50 lines
1.6 KiB
Markdown
50 lines
1.6 KiB
Markdown
# easybill client
|
|
|
|
Python client for the easybill REST API with a generated API layer, Pydantic-based convenience models, and webhook parsing helpers for middleware integration.
|
|
|
|
## Current status
|
|
|
|
The initial implementation is in place and includes:
|
|
|
|
- a project scaffold with packaging and tests
|
|
- sync and async wrapper clients
|
|
- authentication helpers for bearer and basic auth
|
|
- typed Pydantic facades for customers, documents, positions, and document payments
|
|
- pagination helpers and basic retry handling for HTTP 429 rate limits
|
|
- a webhook parser for JSON and form payloads
|
|
- a reproducible generation script based on the provided Swagger specification
|
|
|
|
## Development
|
|
|
|
Install the local project dependencies and run the tests:
|
|
|
|
```powershell
|
|
python -m pytest -q
|
|
```
|
|
|
|
Generate the raw clients from the API description:
|
|
|
|
```powershell
|
|
python scripts/generate_client.py --mode both
|
|
```
|
|
|
|
## Usage
|
|
|
|
```python
|
|
from easybill_client import EasybillClient
|
|
|
|
with EasybillClient(api_key="YOUR_API_TOKEN", max_retries=2, retry_backoff=1.0) as client:
|
|
customer_page = client.list_customers(limit=50)
|
|
position = client.get_position(5)
|
|
payment = client.create_document_payment(document_id=10, amount=1999, reference="INV-10")
|
|
|
|
for customer in client.iter_all_customers(limit=100):
|
|
print(customer.id, customer.company_name)
|
|
```
|
|
|
|
## Structure
|
|
|
|
- `src/easybill_client`: public package and middleware-friendly helpers
|
|
- `tests`: focused verification for auth and webhook behavior
|
|
- `scripts/generate_client.py`: generation entrypoint for the raw REST layer
|
|
- `generated`: generated sync and async clients derived from the Swagger description
|