Metadata-Version: 2.5
Name: opacte
Version: 0.1.0
Summary: SDK Python de l'API Opacte : attester et vérifier des documents, sans qu'ils quittent votre serveur pour être conservés.
Project-URL: Homepage, https://opacte.eu
Project-URL: Documentation, https://opacte.eu/api
Project-URL: Contrat HTTP, https://opacte.eu/api/openapi.json
Project-URL: Tutoriel, https://opacte.eu/api-tutorial
Author: Jean-Michel ARNAUD
License-Expression: MIT
License-File: LICENSE
Keywords: attestation,bitcoin,horodatage,opacte,opentimestamps,preuve,signature électronique
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: French
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Security :: Cryptography
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27
Provides-Extra: dev
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: ruff>=0.6; extra == 'dev'
Description-Content-Type: text/markdown

# opacte — SDK Python de l'API Opacte

Attestez et vérifiez des documents depuis votre logiciel, sans captcha ni code. Comme sur
[opacte.eu](https://opacte.eu), le document n'est jamais conservé : Opacte n'en garde que les empreintes, et la preuve
est ancrée dans Bitcoin.

## Installation

```
pip install opacte
```

Python 3.10 ou plus. Créez un compte sur [opacte.eu](https://opacte.eu/account), puis une clé API dans **Réglages**,
et rendez-la disponible dans la variable d'environnement `OPACTE_API_KEY` (jamais dans votre code).

## Exemple

```python
from opacte import Client, CreditsInsuffisants

client = Client()  # clé lue dans OPACTE_API_KEY
print(client.compte().solde)

# Attester un fichier : 1 crédit. Envoyé en flux, lu à la volée, jamais conservé.
attestation = client.attestations.creer("facture-2026-118.pdf", email_visible=False)
print(attestation.id_attestation, attestation.url_recu)  # gardez url_recu : accès pérenne au reçu

# Vérifier un document reçu : ses empreintes sont calculées ici, le fichier ne part pas. Gratuit.
for candidate in client.verifier("document-recu.pdf"):
    print(candidate["id_attestation"], candidate["horodatage"])
```

## Ce que fait le SDK

- **Fichiers en flux** : un fichier est envoyé par blocs, jamais chargé en entier en mémoire.
- **Nouvelles tentatives** : sur coupure, `429` ou `5xx`, l'appel est rejoué avec la même `Idempotency-Key` : jamais
  de second débit.
- **Erreurs typées** : `CleInvalide`, `CreditsInsuffisants` (avec `solde`), `TropDeDemandes`, `Introuvable`…
- **Typé** : annotations complètes, vérifiables par votre éditeur ou mypy.

## Liens

- Documentation et référence : [opacte.eu/api](https://opacte.eu/api)
- Tutoriel : [opacte.eu/api-tutorial](https://opacte.eu/api-tutorial)
- Contrat HTTP publié (OpenAPI) : [opacte.eu/api/openapi.json](https://opacte.eu/api/openapi.json) — le SDK n'en est
  qu'une mise en forme : vous pouvez vérifier ce qu'il envoie.

La signature électronique par l'API, avec le document chiffré chez vous, arrive dans une prochaine version.

Licence MIT.
