Aller au contenu

Statistiques agrégées d'un client (séjours, nuits, dépensé) — NON-PII

GET
/v1/guests/{id}/stats
curl --request GET \
--url https://example.com/v1/guests/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/stats \
--header 'X-API-Key: <X-API-Key>'
id
required
string format: uuid

Identifiant du profil client

Statistiques agrégées (aucune donnée personnelle) + segment RFM (ADR-00D99 §11)

Media type application/json
object
data
required
object
staysCount
required

Nombre de séjours (lignes stays du client ; inclut le séjour en cours)

integer
nightsTotal
required

Total des nuits des séjours TERMINÉS uniquement (un séjour en cours compte 0 — calcul déterministe, pas d’horloge système). Garder nightsTotal>0 avant tout calcul d’ADR.

integer
firstStayDate

Date de 1re arrivée (« client depuis »). null si profil anonymisé (RGPD).

string format: date
nullable
lastStayDate

Date de dernière arrivée. null si profil anonymisé (RGPD).

string format: date
nullable
totalSpentCents
required

CA généré TTC en centimes (bigint string ; charges des folios de séjour, HORS débours et taxe collectée)

string
currency
string
nullable
Allowed values: EUR GBP
recencyDays

Nombre de jours depuis le dernier séjour (date courante serveur — calcul marketing, non fiscal). null si aucun séjour enregistré ou profil anonymisé (RGPD art.17 : lastStayDate masquée).

integer
nullable
segment
required

Segment RFM dérivé on-read (ADR-00D99 §11). Seuils : récent ≤ 365 j, perdu > 730 j, champion ≥ 5 séjours + ≥ 2 000 € TTC. Profil anonymisé → prospect (neutre, pas de fuite).

string
Allowed values: prospect nouveau fidele champion a_reactiver perdu
Example
{
"data": {
"currency": "EUR",
"segment": "prospect"
}
}

Profil introuvable

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}