TP1 - Spec API Backend¶
Vous pouvez étendre/modifier cette spec API à votre guise.
C'est pour donner une idée de ce qui est attendu.
🍸 Unauthenticated routes¶
POST /auth/register¶
Appelée quand un user s'enregistre.
Request body :
Response :
POST /auth/login¶
Appelée quand un user (déjà enregistré à priori) se login.
Request body :
Response :
POST /vote¶
Appelée lorsqu'un QRCode est scanné.
Cette route doit être non-authentifiée puisque le QRCode peut être scanné par un autre device que celui qui est utilisé pour visiter le front.
Tu visites avec ton PC, et scan avec ton tél. Cela dit on veut pouvoir authentifier le user qui fait la requête pour comptabiliser le vote. Donc le JWT est bien envoyé.
Request body :
🔒 JWT Authenticated routes¶
Un JWT valide est nécessaire pour accéder à ces pages.
GET /config¶
Appelée pour que le front obtienne les infos à afficher.
Response :
{
"question": "How much meow per day would you like ?",
"voteEndsAt": "2026-01-10T10:30:00Z",
"choices": [
{
"id": 1,
"label": "1 Meow is nice",
"qrCodeUrl": "/qrcodes/1"
},
{
"id": 2,
"label": "2 Meow is better",
"qrCodeUrl": "/qrcodes/2"
},
{
"id": 3,
"label": "Yes.",
"qrCodeUrl": "/qrcodes/3"
}
]
}
]
}
GET /qrcodes/{choiceId}¶
Appelée pour que le front obtienne les 3 images à render.
Response : retourne le QRCode requêté (image/png).
Faut donc aller chercher {QR_STORAGE_PATH}/choice-{id}.png
GET /results¶
Appelée à intervalles réguliers par le front pour obtenir l'état actuel des votes
Response :