{
  "openapi": "3.1.0",
  "info": {
    "title": "ChuťoMapa AI Cookbook API",
    "version": "0.1.0",
    "description": "Strojově čitelné API pro českou online kuchařku ChuťoMapa.cz."
  },
  "servers": [
    {
      "url": "http://127.0.0.1:5177",
      "description": "Lokální vývoj"
    }
  ],
  "paths": {
    "/api/health": {
      "get": {
        "summary": "Ověří dostupnost API",
        "responses": {
          "200": {
            "description": "API běží"
          }
        }
      }
    },
    "/api/recipes": {
      "get": {
        "summary": "Vrátí kompletní kuchařku",
        "responses": {
          "200": {
            "description": "Seznam receptů včetně kroků"
          }
        }
      }
    },
    "/api/recipes/{id}": {
      "get": {
        "summary": "Vrátí jeden recept",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Recept nalezen" },
          "404": { "description": "Recept neexistuje" }
        }
      }
    },
    "/api/search": {
      "get": {
        "summary": "Hledá recepty podle dotazu",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Výsledky hledání" }
        }
      }
    },
    "/api/suggest": {
      "get": {
        "summary": "Doporučí tři recepty podle spíže",
        "parameters": [
          {
            "name": "pantry",
            "in": "query",
            "description": "Suroviny oddělené čárkou",
            "schema": { "type": "string" }
          },
          {
            "name": "diet",
            "in": "query",
            "description": "Dietní režimy oddělené čárkou, např. glutenFree,lactoseFree",
            "schema": { "type": "string" }
          },
          {
            "name": "exclude",
            "in": "query",
            "description": "Alergie nebo vyloučené suroviny oddělené čárkou",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Doporučené recepty s připraveností a chybějícími surovinami" }
        }
      }
    },
    "/api/guide": {
      "get": {
        "summary": "Vrátí strukturovanou kuchařskou kartu pro AI režim",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "schema": { "type": "string" }
          },
          {
            "name": "pantry",
            "in": "query",
            "schema": { "type": "string" }
          },
          {
            "name": "stove",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": ["indukce", "trouba", "remoska"]
            }
          },
          {
            "name": "diet",
            "in": "query",
            "description": "Dietní režimy oddělené čárkou, např. glutenFree,lactoseFree",
            "schema": { "type": "string" }
          },
          {
            "name": "exclude",
            "in": "query",
            "description": "Alergie nebo vyloučené suroviny oddělené čárkou",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Validovatelná karta receptu s AI kontraktem" }
        }
      }
    },
    "/api/ingredients/normalize": {
      "get": {
        "summary": "Normalizuje názvy surovin",
        "parameters": [
          {
            "name": "items",
            "in": "query",
            "description": "Suroviny oddělené čárkou",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Kanonické názvy surovin" }
        }
      }
    },
    "/vision/ingredients": {
      "post": {
        "summary": "Budoucí vision kontrakt pro rozpoznání surovin z fotky",
        "description": "V lokální verzi je vision tok mockovaný v prohlížeči. Produkční endpoint má přijmout obrázek a vrátit kandidátní suroviny, confidence skóre a návrhy bylinek/koření.",
        "responses": {
          "200": { "description": "Rozpoznané suroviny a chuťové doplňky" }
        }
      }
    }
  }
}
