Skip to main content

Bibliothèque souveraine pour utiliser l'API de facturation Henrri.

Project description

henrri-connect

PyPI Python License: MIT Documentation

Logo henrri-connect

Bibliothèque Python souveraine pour l'API de facturation Henrri. Fournit un client synchrone et asynchrone pour interagir avec l'ensemble des ressources de l'API : clients, factures, articles, unités, revenus, etc.

Ce SDK est un client Python non officiel pour l’API Henrri. Il n’est ni affilié, ni soutenu, ni approuvé par Henrri. Henrri est une marque déposée appartenant à son éditeur.


Sommaire


Installation

pip install henrri-connect

Dépendances : httpx et pydantic v2.


Démarrage rapide

Authentification

Le client se connecte automatiquement à la première requête et gère le renouvellement du token. Il n'est pas nécessaire d'appeler authenticate() explicitement.

from henrri_connect import HenrriClient

client = HenrriClient("votre_client_id", "votre_client_secret")

L'URL par défaut est l'environnement sandbox (https://api-sandbox.henrri.io). Pour pointer vers la production, passez base_url :

client = HenrriClient(
    "votre_client_id",
    "votre_client_secret",
    base_url="https://api.henrri.io",
)

Mode synchrone

from henrri_connect import HenrriClient

client = HenrriClient("client_id", "client_secret")

# Vérifier la connexion
print(client.secures.hello_world())

# Lister les clients (page 1, 20 résultats)
result = client.customers.list_customers(page=1, limit=20)
for customer in result.data:
    print(customer.name)

# Créer un document
from henrri_connect.models import Document
doc = client.documents.add(Document(customer_id=42, document_type_id=1))
print(doc.id)

Mode asynchrone

import asyncio
from henrri_connect import HenrriClient

async def main():
    client = HenrriClient("client_id", "client_secret", async_mode=True)

    # Lister les articles
    result = await client.items.list_items(limit=10)
    for item in result.data:
        print(item.name)

asyncio.run(main())

Modules disponibles

Le client expose un sous-client par ressource API. Chaque sous-client est identique en synchrone et asynchrone (les méthodes async renvoient des coroutines).

Attribut Description Documentation
client.secures Endpoint de santé de l'API docs/secures.md
client.users Utilisateurs et entreprises associées docs/users.md
client.companies Entreprises docs/companies.md
client.customers Clients (CRUD + contacts) docs/customers.md
client.documents Documents (factures, devis, BL…) docs/documents.md
client.document_lines Lignes de document docs/document_lines.md
client.document_types Types de document (référentiel) docs/document_types.md
client.document_line_types Types de ligne de document (référentiel) docs/document_line_types.md
client.items Articles / produits docs/items.md
client.item_categories Catégories d'articles docs/item_categories.md
client.units Unités de mesure docs/units.md
client.revenues Statistiques de revenus docs/revenues.md

Référence API complète : remiv1.github.io/henrri-connect


Gestion des erreurs

Toutes les erreurs HTTP sont converties en exceptions typées héritant de HenrriError :

Exception Code HTTP
HenrriAuthError 401 — Non authentifié
HenrriForbiddenError 403 — Accès interdit
HenrriNotFoundError 404 — Ressource introuvable
HenrriValidationError 400 / 422 — Données invalides
HenrriServerError 5xx — Erreur serveur
from henrri_connect import HenrriClient
from henrri_connect.exc import HenrriNotFoundError, HenrriAuthError

client = HenrriClient("client_id", "client_secret")

try:
    customer = client.customers.get(9999)
except HenrriNotFoundError:
    print("Client introuvable.")
except HenrriAuthError:
    print("Identifiants invalides.")

Développement

# Cloner le dépôt
git clone https://github.com/remiv1/henrri-connect.git
cd henrri-connect

# Créer un environnement virtuel et installer les dépendances dev
python -m venv venv
source venv/bin/activate
pip install -e ".[dev]"

# Lancer les tests
make test

# Générer la documentation
make docs

# Prévisualiser la documentation
make docs-serve

Commandes disponibles :

make test          # Lancer les 96 tests
make build         # Construire la distribution (wheel + sdist)
make build-verify  # Vérifier les artefacts avec twine
make publish       # Publier sur PyPI (demande confirmation)
make docs          # Générer la doc HTML dans docs/
make docs-serve    # Servir la doc localement (port 8080)
make docs-clean    # Nettoyer les fichiers générés
make all           # test + build + build-verify + publish + clean

Contribution

Les contributions sont les bienvenues ! Consultez CONTRIBUTING.md pour les conventions de code, le workflow de PR et les bonnes pratiques.


Licence

Distribué sous licence MIT. Voir LICENSE.

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

henrri_connect-0.1.2.tar.gz (34.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

henrri_connect-0.1.2-py3-none-any.whl (57.6 kB view details)

Uploaded Python 3

File details

Details for the file henrri_connect-0.1.2.tar.gz.

File metadata

  • Download URL: henrri_connect-0.1.2.tar.gz
  • Upload date:
  • Size: 34.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for henrri_connect-0.1.2.tar.gz
Algorithm Hash digest
SHA256 526053e0c140785ef264f17de616e87e8669624546bd8aa93861389bb6ab1977
MD5 a8eb4e7d8c99fcd0cf0c3a3a00068d5a
BLAKE2b-256 75d83447365fc76b5df01450c07511dbb957838f53b837f51f952a03c097a778

See more details on using hashes here.

File details

Details for the file henrri_connect-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: henrri_connect-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 57.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for henrri_connect-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c3167aab2a1b9fa6fdbe2ff3d6d62ddf5891cbf83a0c57d5de6f67c74e019ca9
MD5 c0739b7d6ccb1b43a923c9eee8f472e0
BLAKE2b-256 3d1feae8a665982d787552e11053e158e70256085cd4fc9ca58a41a5857cba70

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page