{
    "openapi": "3.1.0",
    "info": {
        "title": "Recette de cuisine — API recettes",
        "version": "1.0.0",
        "description": "Recherche et lecture des recettes publiées (lecture seule, sans authentification).",
        "license": {
            "name": "Voir conditions",
            "url": "https://www.recette-de-cuisine.be/licence-images"
        }
    },
    "servers": [
        {
            "url": "https://www.recette-de-cuisine.be"
        }
    ],
    "paths": {
        "/api/recettes": {
            "get": {
                "operationId": "searchRecipes",
                "summary": "Chercher des recettes, ou lire une recette complète avec « slug »",
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Ingrédient, plat ou mot-clé (ex. « pommes de terre »)"
                    },
                    {
                        "name": "categorie",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Slug de catégorie : entrees, plats, desserts, patisserie, aperitif, boissons, vegetarien"
                    },
                    {
                        "name": "slug",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Adresse courte d'une recette : renvoie la recette complète (ingrédients, étapes)"
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 12
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Liste ou recette",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "oneOf": [
                                        {
                                            "type": "object",
                                            "properties": {
                                                "total": {
                                                    "type": "integer"
                                                },
                                                "results": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "title": {
                                                                "type": "string"
                                                            },
                                                            "url": {
                                                                "type": "string",
                                                                "format": "uri"
                                                            },
                                                            "slug": {
                                                                "type": "string"
                                                            },
                                                            "description": {
                                                                "type": "string"
                                                            },
                                                            "category": {
                                                                "type": "string"
                                                            },
                                                            "image": {
                                                                "type": "string",
                                                                "format": "uri"
                                                            },
                                                            "totalMinutes": {
                                                                "type": "integer"
                                                            },
                                                            "difficulty": {
                                                                "type": "string",
                                                                "enum": [
                                                                    "facile",
                                                                    "moyen",
                                                                    "difficile"
                                                                ]
                                                            },
                                                            "servings": {
                                                                "type": "integer"
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "type": "string"
                                                },
                                                "url": {
                                                    "type": "string",
                                                    "format": "uri"
                                                },
                                                "slug": {
                                                    "type": "string"
                                                },
                                                "description": {
                                                    "type": "string"
                                                },
                                                "category": {
                                                    "type": "string"
                                                },
                                                "image": {
                                                    "type": "string",
                                                    "format": "uri"
                                                },
                                                "totalMinutes": {
                                                    "type": "integer"
                                                },
                                                "difficulty": {
                                                    "type": "string",
                                                    "enum": [
                                                        "facile",
                                                        "moyen",
                                                        "difficile"
                                                    ]
                                                },
                                                "servings": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Recette introuvable"
                    }
                }
            }
        }
    }
}