Skip to content

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) : true ou false\ (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_attente
  • valider
  • refuser

Réponse (200 OK)

{
  "id": 1,
  "titre": "Pâtes carbonara",
  "statut": "valider",
  ...
}

Erreurs possibles

  • 401 Unauthorized\
  • 404 Not Found ou 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 Request
  • 404 Not Found : Recette non trouvée