API Produit: Ces points de terminaison font partie de l'API Loyalty. Tous les points de terminaison commencent par: /api/v1/loyalty/claims/

Flux de Réclamation Complet

Voici le flux typique pour le traitement d'un échange de récompense :

1

Le Membre Initie la Réclamation

Le membre sélectionne une récompense et confirme vouloir échanger ses points.

2

Demander OTP

Appelez /claims/request-otp pour envoyer une vérification à l'email du membre.

3

Créer une Demande de Réclamation

Soumettez la réclamation avec le code OTP via /claims.

4

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

POST Demander OTP de Réclamation
points_write
/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

POST Créer une Demande de Réclamation
points_write
/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

GET Lister les Demandes de Réclamation
points_read
/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

GET Obtenir une Demande de Réclamation
points_read
/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

POST Approuver une Demande de Réclamation
points_write
/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

POST Rejeter une Demande de Réclamation
points_write
/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"
    }
  }
}
ESC