Bonjour Monsieur, une documentation complète de l’API est disponible sur /api/doc, générée avec NelmioApiDocBundle. Si jamais cette documentation ne fonctionne pas correctement, vous pouvez consulter celle présente sur cette page, qui reprend toutes les routes et leur fonctionnement. Sur ce projet, j’ai essayé d’expérimenter avec des concepts que je ne connaissais pas encore, comme les DTO, les Enum, et d’autres bonnes pratiques liées à Symfony. J’espère les avoir utilisés correctement, et j’ai tenté de rendre l’API claire et fonctionnelle
Inscrire un nouvel utilisateur
{
"email": "[email protected]",
"password": "MotDePasse123",
"displayName": "MonPseudo"
}
200
{
"id": 1,
"email": "[email protected]",
"displayName": "MonPseudo"
}
400 - validation échouée
409 - email ou displayName déjà utilisé
500 - échec envoi email
Connexion d’un utilisateur
{
"email": "[email protected]",
"password": "MotDePasse123"
}
200
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
401 - Identifiants invalides
Vérification de l’email utilisateur
id - ID utilisateur (integer)
200 - Email vérifié
{
"message": "Email vérifié avec succès"
}
400 - Bad Request
Créer un nouvel événement
{
"description": "Anniversaire de Jean",
"startDate": "2025-12-20T14:00:00",
"endDate": "2025-12-20T18:00:00",
"status": "PUBLIC",
"locationType": "INDOOR",
"eventStatus": "PLANNED",
"street": "123 Rue Exemple",
"city": "Paris",
"zipCode": "75001",
"country": "France"
}
200 - Événement créé avec succès
{
"id": 10,
"description": "Anniversaire de Jean",
"startDate": "2025-12-20 14:00:00",
"endDate": "2025-12-20 18:00:00",
"visibilitystatus": "PUBLIC",
"locationType": "INDOOR",
"eventStatus": "PLANNED",
"organizer": [{"id": 1, "displayName": "Jean", "email": "[email protected]"}],
"location": {
"street": "123 Rue Exemple",
"city": "Paris",
"zipCode": "75001",
"country": "France"
}
}
400 - Mauvaise requête
401 - Non autorisé
Mettre à jour un événement existant
id - ID de l’événement
{
"description": "Nouvelle description",
"startDate": "2025-12-21T14:00:00",
"endDate": "2025-12-21T18:00:00",
"eventStatus": "ONGOING",
"street": "456 Rue Nouvelle",
"city": "Paris",
"zipCode": "75002",
"country": "France"
}
200 - Événement mis à jour
{
"id": 10,
"description": "Nouvelle description",
"startDate": "2025-12-21 14:00:00",
"endDate": "2025-12-21 18:00:00",
"eventStatus": "ONGOING",
"location": {
"street": "456 Rue Nouvelle",
"city": "Paris",
"zipCode": "75002",
"country": "France"
}
}
400 - Mauvaise requête
401 - Non autorisé
403 - Forbidden (non organisateur)
Récupérer tous les événements
200 - Liste des événements
[
{
"id": 10,
"description": "Anniversaire de Jean",
"startDate": "2025-12-20 14:00:00",
"endDate": "2025-12-20 18:00:00",
"visibilitystatus": "PUBLIC",
"locationType": "INDOOR",
"eventStatus": "PLANNED"
}
]
Récupérer tous les événements publics
200 - Liste des événements publics
[
{
"id": 10,
"description": "Anniversaire de Jean",
"startDate": "2025-12-20 14:00:00",
"endDate": "2025-12-20 18:00:00",
"visibilitystatus": "PUBLIC",
"locationType": "INDOOR",
"eventStatus": "PLANNED"
}
]
Récupérer les détails d’un événement par ID
id - ID de l’événement
200 - Détails de l’événement
{
"id": 10,
"description": "Anniversaire de Jean",
"location": "123 Rue Exemple, Paris, 75001, France",
"startDate": "2025-12-20 14:00:00",
"endDate": "2025-12-20 18:00:00",
"organizer": [{"id": 1, "displayName": "Jean", "email": "[email protected]"}],
"contributions": [],
"participants": [{"id": 2, "displayName": "Marie"}],
"guests": [{"id": 3, "displayName": "Paul", "status": "PENDING"}],
"suggestions": [{"id": 1, "label": "Décoration anniversaire", "status": "TO_TAKE", "who": null}]
}
401 - Non autorisé
403 - Forbidden (événement privé non accessible)
Participer à un événement public
id - ID de l’événement
200 - Inscription réussie
{
"message": "You have successfully registered for the event: Anniversaire de Jean"
}
400 - Déjà inscrit
401 - Non autorisé
403 - Événement privé
Annuler la participation à un événement public
id - ID de l’événement
200 - Participation annulée
{
"message": "You have successfully canceled your participation for the event: Anniversaire de Jean"
}
401 - Non autorisé
403 - Événement privé
Envoyer une invitation à un invité pour un événement privé
id - ID de l’événement
guestid - ID de l’invité
200 - Invitation envoyée
{
"message": "Invitation sent successfully to: Paul"
}
400 - Bad Request
401 - Non autorisé
404 - Invité non trouvé
Prendre une suggestion comme contribution
id - ID de la suggestion
201 - Suggestion prise
{
"id": 15,
"label": "Décoration anniversaire",
"taken": true
}
400 - Suggestion non disponible
401 - Non autorisé
Créer une contribution personnalisée pour un événement
id - ID de l’événement
{
"label": "Gâteau au chocolat"
}
201 - Contribution créée
{
"id": 20,
"eventId": 10,
"label": "Gâteau au chocolat"
}
400 - Bad Request
401 - Non autorisé
Supprimer une contribution
id - ID de la contribution
200 - Contribution supprimée
{
"message": "Contribution supprimée avec succès"
}
401 - Non autorisé
403 - Pas d’autorisation
404 - Contribution non trouvée
Mettre à jour une contribution
id - ID de la contribution
{
"label": "Gâteau aux fraises",
"suggestionId": 15
}
200 - Contribution mise à jour
{
"id": 20,
"label": "Gâteau aux fraises",
"suggestionId": 15
}
400 - Bad Request
401 - Non autorisé
404 - Contribution non trouvée
Récupérer les invitations de l’utilisateur connecté
200 - Liste des invitations
[
{
"id": 5,
"eventId": 10,
"status": "PENDING"
}
]
401 - Non autorisé
Accepter une invitation par ID
id - ID de l’invitation
200 - Invitation acceptée
{
"id": 5,
"status": "ACCEPTED"
}
400 - Action impossible (événement passé ou annulé, déjà accepté)
401 - Non autorisé
403 - Invitation non destinée à l’utilisateur
404 - Invitation non trouvée
Refuser une invitation par ID
id - ID de l’invitation
200 - Invitation refusée
{
"id": 5,
"status": "DECLINED"
}
400 - Action impossible (événement passé ou annulé, déjà refusé)
401 - Non autorisé
403 - Invitation non destinée à l’utilisateur
404 - Invitation non trouvée
Uploader une image pour un événement
id - ID de l’événement
200 - Image uploadée
{
"message": "Image uploadée avec succès",
"url": "/uploads/event/10/image.jpg"
}
401 - Non autorisé
403 - Non organisateur
Promouvoir un participant en organisateur
id - ID de l’événement
profileId - ID du profil à promouvoir
200 - Profil promu
{
"profileId": 12,
"role": "ORGANIZER"
}
400 - Profil non participant
401 - Non autorisé
403 - Non organisateur
Démouvoir un organisateur en participant
id - ID de l’événement
profileId - ID du profil à rétrograder
200 - Profil démotivé
{
"profileId": 12,
"role": "PARTICIPANT"
}
400 - Profil non organisateur
401 - Non autorisé
403 - Non organisateur
Créer une suggestion pour un événement privé
id - ID de l’événement
{
"label": "Décoration anniversaire"
}
200 - Suggestion créée avec succès
{
"id": 1,
"label": "Décoration anniversaire",
"status": "TO_TAKE",
"event": {
"id": 10,
"description": "Anniversaire de Jean",
"startDate": "2025-12-20 14:00:00",
"endDate": "2025-12-20 18:00:00",
"location": {
"street": "123 Rue Exemple",
"city": "Paris",
"zipCode": "75001",
"country": "France"
}
}
}
400 - Mauvaise requête (événement public ou suggestion déjà existante)
{
"error": "Cannot add suggestions to a public event"
}
{
"error": "Suggestion Already Exist"
}
401 - Non autorisé
{
"error": "Unauthorized"
}
403 - L’utilisateur n’est pas organisateur
"YOU ARE NOT ADMIN"
Récupérer les événements du profil authentifié
id - ID du profil
200 - Liste des événements
[
{
"id": 10,
"description": "Anniversaire de Jean",
"startDate": "2025-12-20 14:00:00",
"endDate": "2025-12-20 18:00:00",
"visibilitystatus": "PUBLIC",
"locationType": "INDOOR",
"eventStatus": "PLANNED"
}
]
401 - Non autorisé
403 - Forbidden (accès à un autre profil)
Uploader une image pour le profil
id - ID du profil
img: [fichier image]
200 - Image uploadée avec succès
{
"message": "image successfully upload"
}
401 - Non autorisé
403 - Forbidden (profil autre que le sien)
Récupérer tous les profils
200 - Liste des profils
[
{
"id": 1,
"displayName": "Jean",
"email": "[email protected]"
},
{
"id": 2,
"displayName": "Marie",
"email": "[email protected]"
}
]
401 - Non autorisé
Modifier le profil authentifié
id - ID du profil
{
"displayName": "New Display Name"
}
200 - Profil mis à jour
{
"id": 1,
"displayName": "New Display Name",
"email": "[email protected]"
}
401 - Non autorisé
403 - Forbidden (profil autre que le sien)
409 - Conflit, displayName déjà utilisé