Aller au contenu principal

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 domain uniquement (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 text est injecté comme HTML brut dans la section correspondante
  • {{balance}} dans historySection.text est remplacé dynamiquement par le solde du client
  • customCss est injecté dans <head> sous forme de balise <style id="enkore-custom-css">
  • Les backgroundColor s'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 accessibles
  • history : Affiche les mouvements de points encore valides (date, raison, points)

3. Liste des récompenses

GET {API_ENDPOINT}/reward/list?domain={domain}
  • Authentification : domain uniquement (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
}
]
ChampTypeDescription
referencestringIdentifiant unique de la récompense
namestringLibellé affiché
triggerValuenumberNombre de points requis
valuenumberValeur du bon (en centimes si type: "amount", en % si type: "percentage")
type"amount" | "percentage"Type de récompense
minimumPurchaseAmountnumberMontant minimum d'achat en centimes

Utilisation par le widget :

  • Chaque récompense est affichée sous forme de carte
  • Valeur affichée : value / 100 + "€" si type === "amount", sinon value + "%"
  • 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 est null et une erreur est affichée.