Page de présentation du programme
Le widget "Page de présentation du programme " d'Enkore met à disposition des consommateurs les éléments du programme de fidélité de la boutique (solde, historique, récompenses, parrainage).
Appels HTTP au chargement
1. Configuration du widget
GET {API_ENDPOINT}/store/widget/program-presentation?domain={domain}
- Authentification : paramètre
domainuniquement (endpoint public) - Rôle : récupère la configuration visuelle et textuelle du widget
Format de réponse :
{
"customCss": "/* CSS personnalisé injecté dans <head> */",
"headerSection": {
"backgroundImageUrl": "https://...",
"text": "<h1>Programme de fidélité</h1>",
"primaryButtonText": "Gagner des points",
"secondaryButtonText": "Échanger les récompenses"
},
"historySection": {
"backgroundColor": "#FFFFFF",
"text": "<h2>Tu as <strong>{{balance}}</strong> points</h2>"
},
"pointSystemSection": {
"backgroundColor": "#f6f6f6",
"text": "<h2>Comment gagner des points</h2>"
},
"redeemSection": {
"backgroundColor": "#FFFFFF",
"text": "<h2>Convertis tes points en avantages</h2>"
},
"FAQSection": {
"backgroundColor": "#f6f6f6"
},
"referralSection": {
"display": true,
"backgroundColor": "#FFFFFF",
"text": "<h2>Parrainez un ami</h2>"
}
}
Utilisation par le widget:
- Chaque champ
textest injecté comme HTML brut dans la section correspondante {{balance}}danshistorySection.textest remplacé dynamiquement par le solde du clientcustomCssest injecté dans<head>sous forme de balise<style id="enkore-custom-css">- Les
backgroundColors'appliquent au fond de chaque section
remarque
Ce endpoint est facultatif et n'a d'intérêt que si on souhaite pouvoir configurer la page depuis le Back-Office.
2. Solde et historique du client
GET {API_ENDPOINT}/point/user-history/{externalId}?domain={domain}&hash={hash}
- Authentification : voir la page : Authentification Hash
- Rôle : récupère le solde actuel et l'historique des mouvements de points
Format de réponse :
{
"balance": 2000,
"history": [
{
"reason": "Attribution manuelle",
"points": 2000,
"happenedAt": "2026-01-02T15:59:16.993654+00:00"
}
]
}
Utilisation par le widget :
balance: Indique le nombre de points fidélité du consommateur, détermine les récompenses accessibleshistory: Affiche les mouvements de points encore valides (date, raison, points)
3. Liste des récompenses
GET {API_ENDPOINT}/reward/list?domain={domain}
- Authentification :
domainuniquement (endpoint public) - Rôle : récupère toutes les récompenses disponibles pour la boutique
Format de réponse :
[
{
"reference": "monstore-recompense-50",
"name": "Bon d'achat de 50€",
"triggerValue": 500,
"value": 5000,
"type": "amount",
"minimumPurchaseAmount": 3000
},
{
"reference": "monstore-recompense-10pct",
"name": "Réduction de 10%",
"triggerValue": 800,
"value": 10,
"type": "percentage",
"minimumPurchaseAmount": 3000
}
]
| Champ | Type | Description |
|---|---|---|
reference | string | Identifiant unique de la récompense |
name | string | Libellé affiché |
triggerValue | number | Nombre de points requis |
value | number | Valeur du bon (en centimes si type: "amount", en % si type: "percentage") |
type | "amount" | "percentage" | Type de récompense |
minimumPurchaseAmount | number | Montant minimum d'achat en centimes |
Utilisation par le widget :
- Chaque récompense est affichée sous forme de carte
- Valeur affichée :
value / 100 + "€"sitype === "amount", sinonvalue + "%" - Si non-authentifié : toutes les récompenses sont affichées mais le bouton indique "Connectez-vous"
Appels ponctuels (actions utilisateur)
Échanger les points contre une récompense
POST {API_ENDPOINT}/reward/claim/{externalId}?domain={domain}&hash={hash}
Content-Type: application/json
{ "reference": "monstore-recompense-50" }
Réponse :
{ "code": "KLJTRD" }
Utilisation par le widget :
- Le code est affiché dans une modale pour que le client le copie.
Parrainer un ami
POST {API_ENDPOINT}/point/referral?domain={domain}&hash={hash}&externalId={externalId}
Content-Type: application/json
{ "refereeEmail": "ami@example.com" }
Réponse succès :
{ "hash": "18531e28-a8ba-4fa7-ad47-a2be6b70dd57" }
Réponse erreur (400/401) :
{
"statusCode": 401,
"error": "Unauthorized",
"messages": [
{
"property": "email",
"message": "Veuillez passer une commande avant de parrainer"
}
]
}
Utilisation par le widget :
- Le widget expose un champ de formulaire permettant de saisir un email, c'est cet email qui est envoyé dans l'appel
Récupérer un code de parrainage (côté filleul)
POST {API_ENDPOINT}/reward/referral/get-referee-code
Content-Type: application/json
{ "referral-hash": "18531e28-a8ba-4fa7-ad47-a2be6b70dd57" }
- Authentification : aucune (endpoint public)
- Déclenchement : le hash est lu dans le query param
?referral-hash=...de l'URL de la page
Réponse :
{
"match": true,
"code": "KLJTRD",
"value": 1500,
"minimumPurchaseAmount": 5000,
"validityPeriod": "14"
}
Utilisation par le widget :
- le hash est lu dans le query param
?referral-hash=...de l'URL de la page à l'affichage - une modale propose au filleul de récupérer son code filleul
- Si
match: false, le code estnullet une erreur est affichée.