lexio-rent : client Python de l'API Lexio Rent
Client Python de l'API publique de Lexio Rent. Il couvre les 93 opérations de la version 1 : flotte, catalogue, tarification, devis, locations, départ et retour, paiements, entretien et flux d'événements.
Lexio Rent est un logiciel de gestion de location de voitures, utilitaires et deux-roues pour les loueurs professionnels. Il gère le planning, les contrats, les états des lieux, les cautions et la flotte. L'API sert à brancher Lexio Rent sur votre site de réservation, votre comptabilité, un entrepôt de données ou un agent IA.
Installation
pip install lexio-rent
Python 3.9 ou plus récent. Seule dépendance : httpx.
Clé API
Dans Lexio : Paramètres → Développeur → Tokens API → Nouveau token. La clé commence par lck_. L'API est disponible avec le plan Business et n'a pas de bac à sable : testez sur une organisation dédiée.
export LEXIO_API_KEY="lck_..."
Démarrage
from lexio_rent import Lexio
lexio = Lexio() # lit LEXIO_API_KEY ; ou Lexio(api_key="lck_...")
# Organisation liée à la clé
print(lexio.organization.get()["data"]["name"])
# Toute la flotte active, page après page
for vehicle in lexio.paginate(lexio.vehicles.list, is_archived=False):
print(vehicle["registrationNumber"], vehicle["status"])
# Un devis, puis une location au prix du devis
quote = lexio.quotes.create({
"vehicleId": vehicle["id"],
"startAt": "2026-12-14T09:00:00", # heure locale du loueur, sans décalage
"endAt": "2026-12-16T18:00:00",
})["data"]
rental = lexio.rentals.create({
"quoteId": quote["id"],
"customer": {"firstName": "Camille", "lastName": "Martin", "email": "camille@example.com"},
})["data"]
Ce que le client fait pour vous
| Sujet | Comportement |
|---|---|
| Authentification | Authorization: Bearer lck_… sur chaque requête (seule méthode acceptée par la v1). |
| Idempotence | Une Idempotency-Key (UUID v4) est générée pour les écritures qui l'exigent. Elle est réutilisée à l'identique lors d'une nouvelle tentative, donc la location n'est jamais créée deux fois. Vous pouvez passer la vôtre : idempotency_key="...". |
| Nouvelles tentatives | En cas de 429 ou 5xx : jusqu'à 2 nouvelles tentatives (max_retries), en respectant Retry-After. Uniquement pour les GET et les écritures idempotentes. |
| Pagination | lexio.paginate(méthode_list, **filtres) suit nextCursor jusqu'au bout. |
| Erreurs | Les réponses application/problem+json deviennent des exceptions typées, avec code, detail et request_id. |
| Paramètres | Les filtres s'écrivent en snake_case (is_archived=False → isArchived=false). Les corps JSON gardent les noms de l'API (startAt, vehicleId…). |
Gestion des erreurs
from lexio_rent import ConflictError, RateLimitError, LexioError
try:
lexio.rentals.create({"quoteId": quote_id})
except ConflictError as e: # 409
if e.code == "VEHICLE_UNAVAILABLE":
...
except RateLimitError as e: # 429 après les nouvelles tentatives
print("réessayer dans", e.retry_after, "s")
except LexioError as e: # toute autre erreur de l'API
print(e.status, e.code, e.detail, e.request_id)
Hiérarchie des exceptions : LexioError → AuthenticationError (401), PermissionDeniedError (403), NotFoundError (404), ConflictError (409), ValidationError (400, 413, 415, 422), RateLimitError (429), ServerError (5xx).
Ressources disponibles
| Attribut | Méthodes |
|---|---|
organization |
get |
vehicles |
list, get, create, update, delete, archive, unarchive, list_maintenance_alerts |
vehicle_blocks |
list |
categories, options, deductibles, deposits, mileage_packages |
list, get, create, update, delete |
locations |
list |
customers |
list, get, create, update, delete |
availability |
list |
quotes |
create, get |
rentals |
list, get, create, update, delete, cancel, reschedule, change_vehicle, change_customer, change_coverage, set_option_quantity, remove_option, list_amendments, pick_up, return_, list_inspections, create_photo_uploads, register_photos, list_photos, get_photo, delete_photo, list_payments, create_payment, get_payment, delete_payment, list_invoices, get_contract |
pricing_settings |
get |
seasons |
list, get, update |
season_calendar |
list_months, get_month, replace_month |
duration_discounts |
list, get, create, update, delete |
lead_time_tiers |
list, get, update |
maintenance_operations |
list |
maintenance_records |
list, get, create, update, delete |
events |
list |
Chaque méthode porte en docstring le résumé et la description de l'opération OpenAPI correspondante (help(lexio.rentals.create)). Une opération pas encore couverte reste accessible avec lexio.request("GET", "/chemin", params=...).
Suivre les changements (polling d'événements)
L'API n'a pas de webhooks. On lit le flux /events avec un curseur que l'on conserve :
cursor = load_cursor() # None la première fois
page = lexio.events.list(cursor=cursor) if cursor else lexio.events.list(start="EARLIEST")
for event in page["data"]:
handle(event)
save_cursor(page["nextCursor"])
Exemple complet : examples/sync_events.py.
Développement
python scripts/generate.py # régénère src/lexio_rent/_resources.py depuis spec/openapi.json
pip install -e ".[test]" && pytest
spec/openapi.json est une copie de la spécification publiée sur https://docs.lexio.rent/openapi.json (version 1.0.5).
À propos
Ce client est maintenu par l'équipe de Lexio Rent, logiciel de location de voitures. Si vous gérez encore votre parc dans un tableur, notre modèle gratuit de gestion de parc automobile sous Excel reprend les mêmes champs que l'API (immatriculation, kilométrage, échéances d'entretien), ce qui facilite l'import le jour où vous passez à l'API.
- Documentation de l'API : https://docs.lexio.rent
- Spécification OpenAPI : https://docs.lexio.rent/openapi.json
- Confidentialité : https://lexio.rent/politique-de-confidentialite
- Contact : contact@lexio.rent
Licence MIT.
Metadata
Release files for lexio-rent 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| lexio_rent-0.1.0.tar.gz | 178.0 kB | Without provenance | Details for lexio_rent-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| lexio_rent-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for lexio_rent-0.1.0-py3-none-any.whl |
Total release size: 205.1 kB
Release files / lexio_rent-0.1.0.tar.gz
| Download URL | lexio_rent-0.1.0.tar.gz |
|---|---|
| Size | 178.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3e5ff207c9aee35ea353c7bfdce21932198a03db0587020f9153546bcdf86542
|
|
BLAKE2b-256 checksum How to use checksums |
175fee220bf300baf9f13f44bba4e1b41161ccb2ad446df3b59c9eb7a90ae783
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.0
|
Release files / lexio_rent-0.1.0-py3-none-any.whl
| Download URL | lexio_rent-0.1.0-py3-none-any.whl |
|---|---|
| Size | 27.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
912efa1f921c00935d65b8e016b9a5e5e5a9e45c64a9f83de36f35aebc90d7a5
|
|
BLAKE2b-256 checksum How to use checksums |
a17456ce81f36d50702c175c107bcf36c5c0d42915e59b187f8c385f99caa390
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.0
|
Security for lexio-rent 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.