Documentation API
Intégrez BAARA directement dans votre système de caisse ou votre site e-commerce.
Authentification
Via Cookie (Web)
Lorsque vous êtes connecté sur la plateforme web, votre session est automatiquement gérée via un cookie.
Via Header (Mobile/API)
Pour les applications mobiles ou les intégrations externes, utilisez le header suivant :
🔐 Sécurité
La session est obtenue après connexion via /api/auth/signin(marchands) ou /api/auth/customer/signin (clients).
Endpoints API
/api/merchant/transactions/by-account-codeDescription
Enregistre une transaction et attribue des points au client. Supporte deux modes : simple (montant total) ou détaillé (lignes de produits).
Body
{
"accountCode": "CUST-1234-5678",
"mode": "simple", // ou "detailed"
"purchaseAmount": 5000,
"items": [ // Pour mode detailed
{
"productId": "prod_123",
"quantity": 2,
"price": 2500
}
],
"transactionId": "unique_id_for_idempotence",
"usePoints": false,
"applyPromotions": true
}Response
{
"success": true,
"account": {
"code": "CUST-1234-5678",
"points": 150,
"level": "silver"
},
"pointsAdded": 50,
"discountAmount": 0,
"finalAmount": 5000
}/api/merchant/loyalty/accounts/by-codeRécupère les informations d'un compte de fidélité (points, niveau, historique) à partir de son code.
Query params
?code=CUST-1234-5678/api/merchant/loyalty/rulesRécupère toutes les règles de fidélité actives de votre organisation.
/api/merchant/loyalty-levelsRécupère la configuration des niveaux de fidélité (Bronze, Argent, Or, etc.) avec leurs critères et avantages.
Codes de réponse HTTP
La requête a réussi. La réponse contient les données demandées.
Les données envoyées sont invalides. Vérifiez le format et les valeurs requises.
Vous devez être connecté pour accéder à cette ressource. Vérifiez votre session.
Vous n'avez pas les permissions nécessaires ou avez atteint une limite de votre abonnement.
La ressource demandée n'existe pas ou n'est plus disponible.
Une erreur interne s'est produite. Réessayez plus tard ou contactez le support.
Format de réponse
Réponse de succès
{
"success": true,
"data": {
// Données de la réponse
}
}Réponse d'erreur
{
"success": false,
"error": "Message d'erreur descriptif",
"code": "ERROR_CODE" // Optionnel
}Limites et bonnes pratiques
Pour éviter la surcharge du serveur, certaines limites s'appliquent :
- 100 requêtes par minute par défaut
- Les en-têtes de réponse incluent votre utilisation
- En cas de dépassement, attendez avant de réessayer
Pour les opérations critiques (transactions), utilisez un transactionId unique :
- Évite les doublons en cas de retry
- Génère un UUID côté client
- Le serveur ignore les requêtes dupliquées
Toujours vérifier le code de statut HTTP et le champ success :
- Gérer les erreurs réseau (timeout, connexion perdue)
- Implémenter un système de retry avec backoff
- Logger les erreurs pour le débogage
Optimisez vos appels API :
- Utilisez la pagination pour les grandes listes
- Mettez en cache les données statiques
- Évitez les appels inutiles
Exemples d'intégration
// JavaScript/TypeScript
const response = await fetch('/api/merchant/transactions/by-account-code', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Appwrite-Session': sessionSecret
},
body: JSON.stringify({
accountCode: 'CUST-1234-5678',
mode: 'simple',
purchaseAmount: 5000,
transactionId: crypto.randomUUID(),
usePoints: false,
applyPromotions: true
})
});
const result = await response.json();
if (result.success) {
console.log('Points ajoutés:', result.data.pointsAdded);
console.log('Nouveau solde:', result.data.account.points);
}Besoin d'aide avec l'API ?
Pour plus d'informations ou en cas de problème :
- Consultez la FAQ pour les questions fréquentes
- Parcourez les autres articles d'aide
- Contactez notre support technique