Intégration API

Intégrez Chaindoc à vos applications grâce à notre puissante API REST et à nos SDK. Automatisez les flux de travail documentaires, collectez les signatures et synchronisez les événements en temps réel.

Aperçu

Chaindoc propose une API REST complète qui te permet de créer des workflows personnalisés pour la signature de documents, d'automatiser des processus et de t'intégrer à tes systèmes existants. L'API est conçue pour les développeurs avec une prise en charge complète de TypeScript et des réessais automatiques.

Pour commencer

1. Obtenir un accès à l'API

2. Choisis la méthode d'intégration

Chaindoc propose trois façons de s'intégrer :

  • API REST - Demandes HTTP directes pour une flexibilité maximale
  • SDK serveur - SDK Node.js sécurisé avec réessais automatiques (@chaindoc_io/server-sdk)
  • SDK intégré - Interface de signature frontale pour les applications web (@chaindoc_io/embed-sdk)

3. Exemple rapide

curl -X POST https://api.chaindoc.io/api/v1/documents \
  -H "Authorization: Bearer sk_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Contract",
    "description": "Service agreement",
    "status": "published",
    "hashtags": ["#contract"],
    "meta": []
  }'

Concepts de base de l'API

Authentification

Toutes les requêtes API doivent être authentifiées à l'aide de clés API dans l'en-tête d'autorisation :

terminal
Authorization: Bearer sk_live_xxxxxxxxxxxxx
  • Clés publiques (pk_) - Accès en lecture seule pour les applications frontales
  • Clés secrètes (sk_) - Accès complet en lecture/écriture pour les serveurs backend
  • Clés de test (pk_test_, sk_test_) - Pour la mise en scène/le développement
  • Clés actives (pk_live_, sk_live_) - Pour la production

Limites de débit

Les points de terminaison API ont des limites de débit pour garantir une utilisation équitable :

terminal
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 8
X-RateLimit-Reset: 1640000000
  • Limites générales : 3 requêtes toutes les 10 secondes
  • Téléchargement de médias : 3 demandes toutes les 10 secondes
  • Opérations de lecture : 10 requêtes toutes les 60 secondes
  • Création de signature : 20 demandes toutes les 3 secondes

Gestion des erreurs

L'API renvoie des codes d'état HTTP standard avec des messages d'erreur détaillés :

terminal
{
  "statusCode": 400,
  "message": "Validation failed",
  "error": "Bad Request",
  "details": [
    {
      "field": "name",
      "message": "name must be a string"
    }
  ]
}

Modèles d'intégration courants

Téléchargement de documents et processus de signature

1Télécharger le fichierPOST /media/upload - Télécharge un PDF, un document Office ou une image

2Créer un documentPOST /documents - Crée un enregistrement de document avec status='published' pour la vérification de la blockchain.

3Créer une demande de signaturePOST /signatures/requests - Ajoute des destinataires et configure le flux de travail.

4Créer une session intégréePOST /embedded/sessions - Générer une session pour chaque signataire

5Ouvrir l'interface de signatureUtilise Embed SDK avec sessionId pour ouvrir le flux de signature dans l'interface utilisateur.

6Suivre la progressionGET /signatures/requests/:id/status - Surveillez la progression de la signature

7Recevoir un webhooksignature.request.completed événement lorsque toutes les signatures ont été recueillies

Flux de travail uniquement backend

Pour les cas où les signataires n'utilisent pas ton interface :

terminal
// Create signature request with email notifications
const sigRequest = await chaindoc.signatures.createRequest({
  versionId: documentVersionId,
  recipients: [{ email: 'signer@example.com' }],
  deadline: new Date('2024-12-31'),
  embeddedFlow: false, // Signers use Chaindoc email links
  message: 'Please review and sign this document',
});

// Chaindoc sends emails to recipients
// Track status via webhooks or API polling

Traitement de documents en masse

terminal
// Process multiple documents in batch
const documents = ['doc1.pdf', 'doc2.pdf', 'doc3.pdf'];

for (const file of documents) {
  const buffer = await readFile(file);
  const blob = new Blob([buffer], { type: 'application/pdf' });
  
  const { media } = await chaindoc.media.upload([blob]);
  
  await chaindoc.documents.create({
    name: file,
    description: 'Batch processed document',
    media: media[0],
    status: 'published',
    hashtags: ['#batch'],
    meta: [{ key: 'batch', value: 'import-2024' }],
  });
}

Fonctionnalités avancées

Webhooks

Recevez des notifications en temps réel pour les événements liés aux documents :

terminal
// Configure webhook endpoint
app.post('/webhooks/chaindoc', async (req, res) => {
  const event = req.headers['x-webhook-event'];
  
  switch (event) {
    case 'document.verified':
      await handleBlockchainVerification(req.body);
      break;
    case 'signature.request.completed':
      await notifyAllParties(req.body);
      break;
  }
  
  res.status(200).send('OK');
});

Intégration KYC

Intégrez la vérification d'identité pour les flux de travail hautement sécurisés :

terminal
// Create signature request with KYC required
const sigRequest = await chaindoc.signatures.createRequest({
  versionId: documentVersionId,
  recipients: [{ 
    email: 'signer@example.com',
    shareToken: 'sumsub_token_here' // Optional: pre-verified KYC
  }],
  deadline: new Date('2024-12-31'),
  isKycRequired: true, // Enforce identity verification
});

Contrôle d'accès

Gérez les autorisations d'accès aux documents grâce à un contrôle d'accès granulaire :

terminal
// Update document access rights
await chaindoc.documents.updateRights(documentId, {
  accessType: 'restricted',
  accessEmails: [
    { email: 'viewer@company.com', level: 'read' },
    { email: 'editor@company.com', level: 'write' },
  ],
  accessRoles: [
    { roleId: 1, level: 'read' }, // Team role
  ],
});

Bonnes pratiques

  • Garde les clés API dans les variables d'environnement, jamais dans le code.
  • Utilise des clés de test pour le développement et des clés actives pour la production.
  • Mets en place un backoff exponentiel pour gérer les limites de débit.
  • Vérifie les signatures des webhooks pour éviter les attaques par rejeu.
  • Mets en cache les réponses de l'API quand c'est nécessaire.
  • Charge les fichiers avant de créer des documents pour que tout marche mieux.
  • Utilise la pagination pour les gros ensembles de données.
  • Surveille les en-têtes de limite de débit et ajuste la fréquence des requêtes.

Exemples d'intégrations

Plateforme de commerce électronique

Génère et signe automatiquement les contrats d'achat pour les commandes de grande valeur.

Système RH

Intégrez le système HRIS pour automatiser la signature des contrats de travail pendant l'intégration.

Intégration CRM

Créez des demandes de signature directement à partir des dossiers clients dans Salesforce, HubSpot ou un CRM personnalisé.

Système de gestion des documents

Ajoutez la vérification par blockchain au système de gestion des documents existant pour obtenir des pistes d'audit inviolables.

Ressources

  • Documentation API - Référence API REST complète avec tous les points de terminaison
  • SDK - Documentation sur le SDK serveur et le SDK intégré avec des exemples de framework
  • Webhooks - Guide de configuration des notifications d'événements en temps réel
  • Démarrage rapide - Lancez votre première intégration en 10 minutes
  • Exemples GitHub - Exemples d'intégrations et extraits de code