Recette
La manipulation des recettes se fera a travers ses endpoints.
Obtenir toutes les recettes
Endpoint :
GET /recettes/
Authentification : Non requise
Paramètres de requête
statut(optionnel) :ALL,EN_ATTENTE,VALIDER,REFUSER\ (par défaut :ALL)signaler(optionnel) :trueoufalse\ (par défaut :false)
Exemple
GET /recettes/?statut=VALIDER&signaler=false
Réponse (200 OK)
[
{
"id": 1,
"titre": "Pâtes carbonara",
...
}
]
Obtenir toutes les recettes (sans filtre)
Endpoint :
GET /recettes/toutes
Authentification : Non requise
Description
Retourne toutes les recettes, qu'elles soient signalées ou non, et quel que soit leur statut.
Réponse (200 OK)
[
{
"id": 1,
"titre": "Pâtes carbonara",
...
}
]
Obtenir une recette par ID
Endpoint :
GET /recettes/{recette_id}
Authentification : Non requise
Paramètre de chemin
recette_id(requis) : ID de la recette
Exemple
GET /recettes/1
Réponse (200 OK)
{
"id": 1,
"titre": "Pâtes carbonara",
...
}
Erreurs possibles
404 Not Found: Recette non trouvée
Rechercher des recettes par ingrédients
Endpoint :
GET /recettes/recherche/
Authentification : Non requise
Paramètres de requête
ingredient(requis, multiple) : noms des ingrédients
Exemple
GET /recettes/recherche/?ingredient=tomate&ingredient=fromage
Description
Retourne toutes les recettes contenant tous les ingrédients spécifiés.
Réponse (200 OK)
[
{
"id": 1,
"titre": "Pâtes à la tomate et fromage",
...
}
]
Créer une recette
Endpoint :
POST /recettes/
Authentification : Requise (Bearer token)
Headers
Authorization: Bearer {token}
Corps de la requête
{
"image": "https://example.com/image.jpg",
"titre": "Pâtes carbonara",
"description": "Une délicieuse recette de pâtes",
"temps_preparation": 15,
"temps_cuisson": 20,
"temps_total": 35,
"difficulte": "Facile",
"portions": 4,
"calories_par_portion": 450,
"auteur_id": 1,
"ustensiles_requis": "Poêle, spatule",
"conseils_chef": "Servir chaud",
"variantes": "Ajouter des champignons",
"allergenes": "Gluten, lactose",
"regime_alimentaire": "Omnivore",
"saison": "Toutes saisons",
"origine": "Italie"
}
Champs requis
titre
Les autres champs sont optionnels.
Réponse (200 OK)
{
"id": 1,
"titre": "Pâtes carbonara",
"statut": "en_attente",
...
}
Erreurs possibles
401 Unauthorized: Token manquant ou invalide
Modifier une recette
Endpoint :
PUT /recettes/{recette_id}
Authentification : Requise
Paramètre de chemin
recette_id(requis)
Headers
Authorization: Bearer {token}
Corps de la requête
Même format que la création (POST /recettes/).
Réponse (200 OK)
{
"id": 1,
"titre": "Pâtes carbonara modifiée",
...
}
Erreurs possibles
401 Unauthorized: Token manquant ou invalide\404 Not Found: Recette non trouvée
Modifier le statut d'une recette
Endpoint :
PATCH /recettes/{recette_id}/status`
Authentification : Requise
Description
Permet de changer le statut d'une recette (pour modérateurs/admin).
Paramètre de chemin
recette_id(requis)
Headers
Authorization: Bearer {token}
Corps de la requête
{
"id": 1,
"statut": "valider"
}
Statuts valides
en_attentevaliderrefuser
Réponse (200 OK)
{
"id": 1,
"titre": "Pâtes carbonara",
"statut": "valider",
...
}
Erreurs possibles
401 Unauthorized\404 Not Foundou statut invalide
Exemple d'erreur pour statut invalide
{
"message": "status a modifie incorrect"
}
Signaler une recette
Endpoint :
POST /recettes/{recette_id}/signaler
Authentification : Non requise
Paramètre de chemin
recette_id(requis)
Corps de la requête
{
"recette_id": 1,
"raison": "Contenu inapproprié"
}
Champs
recette_id(requis)\raison(optionnel, par défaut : "Non spécifiée")
Réponse (200 OK)
{
"message": "La recette avec l'id 1 a bien été reportée."
}
Erreurs possibles
400 Bad Request404 Not Found: Recette non trouvée