API
L'API de Churros permet l'interaction avec les données de l'application. C'est un API GraphQL, dont la documentation est disponible à /graphql
(par exemple, https://churros.inpt.fr/graphql). À l'API GraphQL s'ajoute quelques autres URLs fournissant des services divers:
- Un serveur de fichiers statiques pour les fichiers générés par les utilisateurs à
/storage
(sert par exemple à récupérer les photos de profil, les logos des clubs ou les documents sur La Frappe) - Un endpoint pour récupérer ses données personnelles à
/dump
(voir RGPD (données personnelles)) - Un webhook Lydia à
/lydia-webhook
, servant à recevoir les acquittements de paiements depuis Lydia - Un service pour télécharger en .pdf les billets d'évènements à
/print-booking/:pseudoID
, où:pseudoID
est le code de réservation du billet. - Un endpoint pour échanger un code d'autorisaton OAuth contre un token d'accès à
/token
(voir OAuth) - Un endpoint
/log
pour logger du contenu dans côté serveur depuis le côté client (utile, par exemple, pour le Service worker de l'application) - Un endpoint
/maintenance
servant une simple page de maintenance (voir Maintenance)
Architecture
Pour gérer ces divers endpoints, l'API est implémentée comme un server Express.
Le serveur GraphQL est servi avec GraphQL Yoga Server, et est implémenté avec Pothos.
Les données sont stockées dans une base de données PostgreSQL, dont la gestion des migrations, la spécification des tables et l'interaction avec l'API est gérée via Prisma.
Enfin, pour assurer la cohérence de caches serveur (comme les sessions utilisateurs, par exemple) et la gestion des subscriptions (pour le temps réel), l'API utilise une base de données Redis.
NOTE: La cohérence des caches n'est pour l'instant pas assurée via Redis.
Organisation des fichiers
NOTE: Une refonte de l'organisation des fichiers de l'API est en cours, voir !106.
Voir le [README de api/
](/../blob/main/api/README.md].