API Réclamations - Loyalty
Points de terminaison pour gérer les demandes de réclamation de récompenses - création, approbation et rejet des échanges pour l'API Loyalty.
/api/v1/loyalty/claims/
Flux de Réclamation Complet
Voici le flux typique pour le traitement d'un échange de récompense :
Le Membre Initie la Réclamation
Le membre sélectionne une récompense et confirme vouloir échanger ses points.
Demander OTP
Appelez /claims/request-otp pour envoyer une vérification à l'email du membre.
Créer une Demande de Réclamation
Soumettez la réclamation avec le code OTP via /claims.
Le Staff Approuve/Rejette
Le staff examine et traite la réclamation via les points de terminaison d'approbation ou de rejet.
Demander OTP de Réclamation
/api/v1/loyalty/claims/request-otp
Demander un code de vérification pour réclamer une récompense. L'OTP est envoyé à l'email du membre.
Corps de la Requête
{
"member_email": "ahmed@example.com",
"card_id": 5,
"reward_id": 1
}
member_email (string, requis) - Email du membre
card_id (integer, requis) - ID de la carte
reward_id (integer, optionnel) - ID de la récompense
Réponse
{
"success": true,
"data": {
"expires_at": "2025-01-15T10:40:00Z",
"expires_in_minutes": 10
},
"message": "Code de vérification envoyé à l'email du membre."
}
Créer une Demande de Réclamation
/api/v1/loyalty/claims
Créer une nouvelle demande de réclamation de récompense. Vérification OTP requise.
Corps de la Requête
{
"member_email": "ahmed@example.com",
"card_id": 5,
"reward_id": 1,
"verification_code": "123456",
"member_note": "Retrait à la succursale du centre-ville"
}
member_email (string, requis) - Email du membre
card_id (integer, requis) - ID de la carte
reward_id (integer, requis) - ID de la récompense
verification_code (string, requis) - Code OTP de 6 chiffres
member_note (string, optionnel) - Note du membre
Réponse
{
"success": true,
"data": {
"claim_request": {
"id": 100,
"status": "pending",
"created_at": "2025-01-15T10:30:00Z"
}
}
}
Lister les Demandes de Réclamation
/api/v1/loyalty/claims?card_id={card_id}&status={status}
Obtenir toutes les demandes de réclamation pour une carte, filtrées optionnellement par statut.
Paramètres de Requête
card_id=5
status=pending
card_id (integer, requis) - L'ID de la carte
status (string, optionnel) - Filtre : pending, approved, rejected, expired
Obtenir une Demande de Réclamation
/api/v1/loyalty/claims/{request_id}
Obtenir les détails d'une demande de réclamation spécifique.
Paramètre d'URL : request_id (entier, requis) - L'ID de la demande
Approuver une Demande de Réclamation
/api/v1/loyalty/claims/{request_id}/approve
Approuver une demande de réclamation en attente et traiter la récompense. Les points sont déduits du solde du membre.
Corps de la Requête
{
"staff_note": "Approuvé via API"
}
staff_note (string, optionnel) - Note du staff
Réponse
{
"success": true,
"data": {
"claim_request": {
"id": 100,
"status": "approved",
"points_deducted": 500,
"approved_at": "2025-01-15T11:00:00Z"
}
}
}
Rejeter une Demande de Réclamation
/api/v1/loyalty/claims/{request_id}/reject
Rejeter une demande de réclamation en attente. Les points restent avec le membre.
Corps de la Requête
{
"staff_note": "Solde de points insuffisant"
}
staff_note (string, optionnel) - Note du staff
Réponse
{
"success": true,
"data": {
"claim_request": {
"id": 100,
"status": "rejected",
"rejected_at": "2025-01-15T11:00:00Z"
}
}
}