Démarrage rapide : premier cachet
Créer un PDF cacheté avec l’API Click&Cert v1 et conserver le résultat.
Ce parcours utilise l’API v1 PAdES avec un document complet. Il montre un profil B-B. Pour un profil B-T, B-LT ou B-LTA, vérifiez l’activation de votre licence Premium.
Prérequis
Préparez un compte API Click&Cert, un abonnement actif, un certificat Cloud de cachet valide et son certificate_uid. L’utilisateur doit être explicitement habilité sur ce certificat. Utilisez un PDF de test et l’environnement remis à l’activation.
L’exemple Python ci-dessous construit la requête JSON à partir des octets du PDF, sans afficher de secret :
import base64
import json
from pathlib import Path
payload = {
"certificate_uid": "REMPLACER_PAR_UID_CERTIFICAT",
"document_base64": base64.b64encode(
Path("document.pdf").read_bytes()
).decode("ascii"),
"filename": "document.pdf",
"signature_level": "B-B",
"digest_algorithm": "sha256",
}
Path("demande-cachet.json").write_text(
json.dumps(payload), encoding="utf-8"
)Appeler l’API
curl --fail-with-body --silent --show-error \
--user 'UTILISATEUR_API' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data @demande-cachet.json \
--output resultat-cachet.json \
'https://my.datasure.net/api/clickncert/v1/document/pades/sign'cURL demande le mot de passe de manière interactive. En automatisation, utilisez un gestionnaire de secrets et un mécanisme d’injection adapté. Vérifiez le code de sortie et le statut HTTP avant la suite.
Récupérer le PDF
La réponse v1 réussie est un JSON sans enveloppe data. Le champ document_base64 contient le document signé ou le conteneur détaché selon l’endpoint.
import base64
import json
from pathlib import Path
result = json.loads(Path("resultat-cachet.json").read_text("utf-8"))
if result.get("format") != "pades" or result.get("mime_type") != "application/pdf":
raise ValueError("La réponse ne contient pas un PDF PAdES")
content = base64.b64decode(result["document_base64"], validate=True)
if not content.startswith(b"%PDF-"):
raise ValueError("Contenu PDF absent")
Path("document-cachete.pdf").write_bytes(content)
print("Référence de signature :", result["signature_uid"])Ce contrôle de format ne remplace pas la validation du cachet. Conservez le PDF final, le signature_uid, le certificat utilisé, le profil et votre référence métier. Le nom de fichier fourni dans la réponse doit être traité comme une donnée, pas comme un chemin de destination de confiance.
En cas de refus
Un 403 peut signaler un abonnement inactif ou une habilitation manquante. Un 422 peut indiquer un certificat indisponible, un document invalide ou une option non prise en charge. Voir Authentification et Erreurs.
Étape suivante : ajouter le profil et les options de PAdES adaptés à votre besoin.
Updated about 1 hour ago

