En quoi pouvons-nous vous aider ?
đ API GERO â Stats : vue dâensemble, auth, conventions
Pour qui ? Développeurs, intégrateurs, data/BI
Objet : Comprendre la surface /api/stats de GERO telle quâexposĂ©e par le service NestJS (controller AppController) et dĂ©marrer rapidement.
đ§ PĂ©rimĂštre
- Type dâAPI : REST JSON (NestJS)
- Doc interactive : Swagger UI (bouton Authorize disponible)
- Encodage : UTF-8, réponses JSON
- Horodatage : ISO-8601 en UTC recommandé pour les paramÚtres
start/end
âčïž Le service prĂ©pare des agrĂ©gations par Ă©vĂ©nement (
:eventId) et par fenĂȘtre temporelle (start,end).
Les réponses suivent deux modÚles simples :
- GroupCountStat[] â
[{ name: string, value: number }]- SeriesStat[] â
[{ name: string, series: [{ name: string, value: number }] }]
đ Authentification
Le controller est annoté @ApiBasicAuth() et protégé par un @UseGuards(AuthGuard).
CÎté client, utilisez HTTP Basic sur HTTPS :
Authorization: Basic <base64(username:password)>
- Identifiants fournis par GERO (compte technique / partner).
- Sur Swagger UI, cliquez Authorize, sélectionnez Basic et renseignez vos credentials.
- Si un autre schĂ©ma est activĂ© dans ton instance (token, header custom), garde la mĂȘme logique de header dâauth sur chaque requĂȘte.
đ Conventions dâappel
- Path param :
:eventId(identifiant dâĂ©vĂ©nement) - Query params :
start,end(obligatoires sur la plupart des routes) â ISO-8601 recommandĂ©- Exemple :
start=2024-10-15T00:00:00.000Z&end=2024-10-16T00:00:00.000Z - Codes de retour :
200 OK: succĂšs (peut renvoyer[]si aucun rĂ©sultat)401/403: authentication/authorization manquante4xx: paramĂštres invalides (format de date, eventIdâŠ)5xx: erreur serveur / backend datastore
đ§Ș Exemples gĂ©nĂ©riques
cURL (Basic Auth)
curl -u "<USERNAME>:<PASSWORD>" \
-H "Accept: application/json" \
"https://app.gero.fr/api/stats/<eventId>/incidents/total?start=2024-10-15T00:00:00.000Z&end=2024-10-16T00:00:00.000Z"
JavaScript (fetch)
const url = new URL(`https://app.gero.fr/api/stats/${eventId}/patients/sex`);
url.searchParams.set('start', '2024-10-15T00:00:00.000Z');
url.searchParams.set('end', '2024-10-16T00:00:00.000Z');
const res = await fetch(url, {
headers: {
'Accept': 'application/json',
'Authorization': 'Basic ' + btoa(username + ':' + password)
}
});
const data = await res.json(); // -> GroupCountStat[]
đ§± Bonnes pratiques
- Dates ISO UTC systématiques (
YYYY-MM-DDTHH:mm:ss.sssZ). - GĂ©rer le cas âaucune donnĂ©eâ : beaucoup dâendpoints renvoient
[]si vide. - Idempotence : ce sont des
GETde lecture dâagrĂ©gats, aucune mutation. - Throttling cĂŽtĂ© client si vous enchaĂźnez de grands intervalles (ex. par heure sur une semaine) : privilĂ©giez des fenĂȘtres raisonnables.
đ©ș Healthcheck
GET /healthzâ Stats service online (non authentifiĂ©,@ApiExcludeEndpoint), utile pour supervision.