Base URL : / — Authentification par JWT (header Authorization: Bearer <token>)
Le site Vesta utilisant l'API est disponible ici (à consulter en vue mobile).
Github back-end (API) : github/sae401-bilan-carbone/back-end
Github front-end (API) : github/sae401-bilan-carbone/front-end
Crée un nouveau compte et retourne un token JWT.
Body (JSON) :
{
"email": "string (requis)",
"password": "string (requis)",
"name": "string"
}
Réponses :
201 — { message, token, user: { id, email, name } }400 — champs manquants ou invalides409 — email déjà utiliséAuthentifie un utilisateur et retourne un token JWT via LexikJWTAuthenticationBundle.
Body (JSON) :
{
"email": "string (requis)",
"password": "string (requis)"
}
Réponses :
200 — { user: email, id }401 — identifiants incorrectsRoutes protégées — JWT requis.
Retourne les informations du compte connecté.
Réponses :
200 — { id, email, name, profilePicture, locale }401 — non authentifiéMet à jour les informations du compte connecté.
Body (JSON, tous les champs sont optionnels) :
{
"name": "string",
"profilePicture": "string",
"locale": "string"
}
Réponses :
200 — { message, user: { id, email, name, profilePicture, locale } }400 — JSON invalide ou erreur de validation401 — non authentifiéRoutes protégées — JWT requis.
Enregistre une nouvelle activité et calcule son empreinte carbone (CO₂).
Body (JSON) :
{
"type": "string (requis) — ex. \"shopping\", \"food\", \"journey\"",
"data": "object (requis) — paramètres spécifiques au type d'activité"
}
Réponses :
201 — { status, message, id, calculated_co2, type }400 — champs type ou data manquants401 — non authentifié500 — erreur lors du calcul CO₂Retourne la liste des activités de l'utilisateur connecté.
Réponses :
200 — [{ id, type, data, co2, createdAt }]401 — non authentifiéid (entier, dans l'URL) — identifiant de l'activité à supprimerRéponses :
204 — suppression réussie401 — non authentifié403 — l'activité n'appartient pas à l'utilisateur404 — activité introuvableRetourne les statistiques CO₂ de l'utilisateur connecté.
Réponses :
200 —
{
"total_emitted": "float — total CO₂ de l'utilisateur (kg)",
"average_total_emitted": "float — moyenne globale tous utilisateurs (kg)",
"by_category": {
"shopping": "float",
"food": "float",
"journey": "float"
},
"by_week": [
{
"week": "string — ex. \"2024-W14\"",
"total_co2": "float",
"average_co2": "float|null — moyenne tous utilisateurs pour cette semaine"
}
]
}
401 — non authentifié