Guide de démarrage
Sécurité
Bonnes pratiques de sécurité pour l'utilisation de l'API Jèko
Protéger vos clés et vos webhooks
Protection des clés API
- Gardez vos clés API sécurisées : Ne les exposez jamais dans le code côté client
- Accès complet : Les clés API fournissent un accès complet à votre compte d'entreprise
- Rotation régulière : Faites tourner vos clés régulièrement pour une sécurité renforcée
- HTTPS obligatoire : Utilisez HTTPS pour toutes les requêtes API
Authentification des webhooks
Lorsque vous recevez des notifications webhook, vous devez vérifier leur authenticité :
- Vérification de la signature : Utilisez l'en-tête
Jeko-Signaturepour vérifier l'authenticité des webhooks - Algorithme : La signature est générée en utilisant HMAC-SHA256 avec votre secret webhook
- HTTPS pour les endpoints : Utilisez des endpoints HTTPS pour vos URLs de webhook
Ne jamais logguer une clé
- Ne loggez jamais les clés API dans vos journaux
- Ne partagez jamais vos clés API via des canaux non sécurisés
- Utilisez des variables d'environnement pour stocker vos clés API
500 requêtes par minute, par entreprise
Pour garantir la stabilité et la disponibilité de l'API pour tous les utilisateurs, Jèko applique des limites de débit au niveau applicatif.
Les limites sont appliquées par entreprise (business), et non par clé API. Cela signifie que la création de plusieurs clés API ne permet pas de contourner les limites.
Limite standard et limite burst
| Type de limite | Quota | Fenêtre de temps |
|---|---|---|
| Limite standard | 500 requêtes | par minute |
| Limite burst | 1000 requêtes | par 5 minutes |
Un dépassement bloque l'entreprise 10 à 15 minutes
Lorsque les limites sont dépassées :
- Blocage temporaire : Votre entreprise sera temporairement bloquée pendant 10 à 15 minutes
- Réponse HTTP 429 : Toutes les requêtes pendant la période de blocage recevront une réponse
429 Too Many Requests - Journalisation : Les dépassements de limite sont enregistrés pour le monitoring
Exemple de réponse 429
{
"statusCode": 429,
"error": "Too Many Requests",
"message": "Rate limit exceeded. Please retry after some time."
}Éviter le blocage
- Backoff exponentiel : après une 429, espacez les tentatives (1s, 2s, 4s, 8s…)
- Cache local : évitez de redemander des données qui changent peu, comme la liste des magasins ou des banques
- Requêtes groupées : préférez les endpoints de liste aux appels unitaires
- Monitoring : suivez votre consommation pour repérer les pics avant qu'ils ne déclenchent un blocage
Implémenter le backoff exponentiel
async function makeRequestWithRetry(url, options, maxRetries = 5) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fetch(url, options);
if (response.status === 429) {
// Backoff exponentiel: 1s, 2s, 4s, 8s, 16s
const waitTime = Math.pow(2, attempt) * 1000;
console.log(`Rate limited. Waiting ${waitTime}ms before retry...`);
await new Promise(resolve => setTimeout(resolve, waitTime));
continue;
}
return response;
}
throw new Error('Max retries exceeded');
}Si vous avez besoin de limites plus élevées pour votre cas d'utilisation, veuillez contacter notre équipe à hello@jeko.africa pour discuter de vos besoins.