Table des matiĂšres
< Tous les sujets
Imprimer

🚀 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 manquante
  • 4xx : 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 GET de 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.
Catégories