En-têtes Requis

Chaque requête API doit inclure ces en-têtes :

En-têtes Requis
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 - Liste des Cartes
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 - API Points
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) :

1

Envoyer l'OTP

Demandez un OTP pour le numéro de téléphone du membre.

POST /v1/members/auth/request-otp
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"}'
2

Vérifier l'OTP

Le membre saisit le code reçu par SMS. Vérifiez-le pour obtenir le token.

POST /v1/members/auth/verify-otp
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"}'
Réponse
{
  "success": true,
  "data": {
    "member_token": "eyJhbGciOiJIUzI1NiIs...",
    "expires_at": "2025-01-16T10:30:00Z",
    "member_id": 123
  }
}
3

Utiliser le Token

Incluez le token dans les requêtes nécessitant l'authentification membre.

Header X-Member-Token
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.

1

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.

Fichier .env
RABA7NI_APP_ID=app_abc123def456
RABA7NI_API_KEY=prod_sk_xyz789ghi012
2

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.

3

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.

4

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.

ESC