Documentation

Authentification

Obtenir, utiliser et sécuriser vos clés API SFE NAFA.

L'API SFE NAFA utilise des clés API (API Keys) pour authentifier les requêtes.

Principes essentiels

  • Une clé API est liée à votre organisation.
  • Chaque clé doit avoir des permissions minimales nécessaires.
  • Une clé compromise doit être révoquée immédiatement.

Créer une clé API

  1. Connectez-vous à votre espace SFE NAFA
  2. Allez dans Paramètres → API → Clés API
  3. Cliquez sur Nouvelle clé API
  4. Donnez un nom descriptif à votre clé (ex: Integration ERP, Script comptabilité)
  5. Sélectionnez les permissions nécessaires (principe du moindre privilège)
  6. Copiez et sauvegardez la clé — elle ne sera plus affichée après cette étape

Traitez vos clés API comme des mots de passe. Ne les partagez jamais, ne les committez jamais dans un dépôt Git.

Utiliser la clé API

Incluez votre clé dans l'en-tête Authorization de chaque requête :

Authorization: Bearer sfn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Exemples

curl https://api.sfenafa.com/v1/invoices?skip=0\&take=20 \
  -H "Authorization: Bearer sfn_live_xxxxxxxxxx" \
  -H "Accept: application/json"
const response = await fetch('https://api.sfenafa.com/v1/invoices', {
  headers: {
    'Authorization': `Bearer ${process.env.SFE_API_KEY}`,
    'Accept': 'application/json',
  },
});

if (!response.ok) {
throw new Error(`Erreur API (${response.status})`);
}

const data = await response.json();
import os
import requests

headers = {
    "Authorization": f"Bearer {os.environ['SFE_API_KEY']}",
    "Accept": "application/json",
}
response = requests.get("https://api.sfenafa.com/v1/invoices", headers=headers)
response.raise_for_status()
data = response.json()

Format des clés

TypePréfixeUsage
Productionsfn_live_Données réelles
Test (sandbox)sfn_test_Tests et développement

Permissions des clés

Lors de la création d'une clé, sélectionnez uniquement les permissions nécessaires :

PermissionDescription
invoices:readLire les factures
invoices:writeCréer et modifier les factures
clients:readLire les clients
clients:writeCréer et modifier les clients
products:readLire les produits
products:writeCréer et modifier les produits
payments:readLire les paiements
payments:writeEnregistrer des paiements
reports:readAccéder aux rapports

Créez une clé par intégration (ERP, e-commerce, synchronisation comptable) afin de pouvoir révoquer une seule intégration sans impacter les autres.

Rotation recommandée

Bonnes pratiques de rotation :

  1. Créez une nouvelle clé avec les mêmes permissions.
  2. Déployez la nouvelle clé dans votre intégration.
  3. Vérifiez les appels API en production.
  4. Révoquez l'ancienne clé.

Checklist de mise en production

  • Une clé dédiée existe pour chaque intégration (ERP, e-commerce, script batch).
  • Les permissions de chaque clé suivent le principe du moindre privilège.
  • Les clés sont stockées dans des variables d'environnement sécurisées.
  • Aucun secret n'est présent dans le code source ou les logs applicatifs.
  • Un plan de rotation trimestrielle des clés est défini.
  • Une procédure de révocation d'urgence est documentée et testée.

Observabilité minimale recommandée

Journalisez au minimum pour chaque appel API :

  • endpoint appelé ;
  • code HTTP ;
  • code d'erreur applicatif ;
  • identifiant interne de corrélation ;
  • horodatage et durée de la requête.

Ces informations accélèrent fortement le diagnostic en cas d'incident.

Révoquer une clé

Pour révoquer une clé compromise ou inutilisée :

Paramètres → API → Clés API → [Votre clé] → Révoquer

La révocation est immédiate. Toute requête utilisant cette clé recevra une erreur 401.

Réponse d'authentification échouée

{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Clé API invalide ou expirée."
  }
}