Authentification
Apprenez comment authentifier vos requêtes API en utilisant les en-têtes et les meilleures pratiques de sécurité.
En-têtes Requis
Chaque requête API doit inclure ces en-têtes :
X-App-Id: app_votre_id_application
X-Api-Key: test_sk_votre_cle_api
Content-Type: application/json
Accept: application/json
| En-tête | Requis | Description |
|---|---|---|
X-App-Id |
Oui | L'identifiant unique de votre application |
X-Api-Key |
Oui | Votre clé API avec les portées appropriées |
Content-Type |
Oui (POST) | Doit être application/json pour les requêtes POST |
Accept |
Recommandé | Définir sur application/json |
Vérifier la Connexion
Pour vérifier que vos identifiants fonctionnent correctement et tester votre connexion, nous recommandons d'effectuer une simple requête GET qui ne nécessite aucun paramètre dans le corps.
curl -X GET "https://app.raba7ni.com/api/v1/loyalty/cards" \
-H "X-App-Id: app_votre_id_application" \
-H "X-Api-Key: test_sk_votre_cle_api" \
-H "Accept: application/json"
Exemple de Requête
curl -X POST "https://app.raba7ni.com/api/v1/loyalty/members/validate" \
-H "X-App-Id: app_abc123def456" \
-H "X-Api-Key: test_sk_xyz789ghi012" \
-H "Content-Type: application/json" \
-d '{"card_id": 5, "phone_number": "+21612345678"}'
Authentification Membre
Certains endpoints nécessitent l'authentification d'un membre en plus de l'authentification API. Cela se fait via le header X-Member-Token.
Obtention du Token Membre
Le flux d'authentification membre utilise un OTP (One-Time Password) :
Envoyer l'OTP
Demandez un OTP pour le numéro de téléphone du membre.
curl -X POST "https://app.raba7ni.com/api/v1/members/auth/request-otp" \
-H "X-App-Id: app_abc123" \
-H "X-Api-Key: prod_sk_xyz789" \
-H "Content-Type: application/json" \
-d '{"phone_number": "+21612345678"}'
Vérifier l'OTP
Le membre saisit le code reçu par SMS. Vérifiez-le pour obtenir le token.
curl -X POST "https://app.raba7ni.com/api/v1/members/auth/verify-otp" \
-H "X-App-Id: app_abc123" \
-H "X-Api-Key: prod_sk_xyz789" \
-H "Content-Type: application/json" \
-d '{"phone_number": "+21612345678", "otp": "123456"}'
{
"success": true,
"data": {
"member_token": "eyJhbGciOiJIUzI1NiIs...",
"expires_at": "2025-01-16T10:30:00Z",
"member_id": 123
}
}
Utiliser le Token
Incluez le token dans les requêtes nécessitant l'authentification membre.
curl -X POST "https://app.raba7ni.com/api/v1/stamps/add" \
-H "X-App-Id: app_abc123" \
-H "X-Api-Key: prod_sk_xyz789" \
-H "X-Member-Token: eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{"card_id": 5, "stamps": 2}'
Expiration du Token
Les tokens membre expirent après 24 heures. Conservez le token et demandez-en un nouveau uniquement lorsqu'il expire.
Bonnes Pratiques de Sécurité
Ne Jamais Exposer les Clés dans le Code Côté Client
Effectuez toujours les appels API depuis votre serveur, pas depuis le JavaScript du navigateur. Le code côté client peut être inspecté par n'importe qui.
Utilisez des Variables d'Environnement
Stockez vos clés API dans des variables d'environnement, pas dans des fichiers de code qui pourraient être commités dans le contrôle de version.
RABA7NI_APP_ID=app_abc123def456
RABA7NI_API_KEY=prod_sk_xyz789ghi012
Utilisez le Minimum de Portées Requises
Ne demandez que les portées dont votre application a réellement besoin. Cela limite les dommages potentiels si une clé est compromise.
Renouvelez les Clés Régulièrement
Créez de nouvelles clés périodiquement et révoquez les anciennes. Cela limite la fenêtre d'exposition si une clé fuite.
Surveillez l'Utilisation de l'API
Vérifiez régulièrement votre tableau de bord développeur pour détecter des modèles d'activité inhabituels qui pourraient indiquer une clé compromise.
Limitation de Débit
Les requêtes API sont limitées en débit en fonction de votre niveau développeur :
| Niveau | Requêtes/Heure | Requêtes/Jour |
|---|---|---|
| Sandbox SANDBOX | 100 | 500 |
| Basic Developer | 1,000 | 10,000 |
| Pro Developer | 5,000 | 50,000 |
| Enterprise Developer | 20,000 | 200,000 |
En-têtes de Limite de Débit
Vérifiez les en-têtes X-RateLimit-Remaining et X-RateLimit-Reset dans les réponses pour surveiller votre utilisation.