{
  "openapi": "3.1.0",
  "info": {"title": "EventiPerTe — API eventi La Spezia e Massa-Carrara", "version": "1.0.0",
    "description": "Eventi pubblici (sagre, concerti, teatro, mostre, trekking, sport, mercatini…) nelle province della Spezia e di Massa-Carrara, aggiornati ogni giorno. Dati liberamente riutilizzabili citando la fonte."},
  "servers": [{"url": "."}],
  "paths": {
    "/api/events.php": {"get": {"operationId": "searchEvents", "summary": "Cerca eventi",
      "parameters": [
        {"name": "q", "in": "query", "schema": {"type": "string"}, "description": "Ricerca testuale"},
        {"name": "when", "in": "query", "schema": {"type": "string", "enum": ["oggi", "domani", "weekend", "settimana", "mese"]}},
        {"name": "from", "in": "query", "schema": {"type": "string", "format": "date"}},
        {"name": "to", "in": "query", "schema": {"type": "string", "format": "date"}},
        {"name": "category", "in": "query", "schema": {"type": "string"}, "description": "Slug separati da virgola: sagre-feste, musica, teatro, cinema, arte-mostre, cultura, libri, enogastronomia, mercatini, tradizioni, outdoor, sport, motori, famiglie, benessere"},
        {"name": "comune", "in": "query", "schema": {"type": "string"}, "description": "Nomi o slug di comuni separati da virgola"},
        {"name": "provincia", "in": "query", "schema": {"type": "string", "enum": ["SP", "MS"]}},
        {"name": "free", "in": "query", "schema": {"type": "boolean"}},
        {"name": "family", "in": "query", "schema": {"type": "boolean"}},
        {"name": "outdoor", "in": "query", "schema": {"type": "boolean"}},
        {"name": "past", "in": "query", "schema": {"type": "boolean"}, "description": "Eventi conclusi (archivio)"},
        {"name": "sort", "in": "query", "schema": {"type": "string", "enum": ["data", "recenti", "popolari", "vicini"]}},
        {"name": "lat", "in": "query", "schema": {"type": "number"}}, {"name": "lon", "in": "query", "schema": {"type": "number"}},
        {"name": "page", "in": "query", "schema": {"type": "integer"}}, {"name": "limit", "in": "query", "schema": {"type": "integer", "maximum": 100}},
        {"name": "slug", "in": "query", "schema": {"type": "string"}, "description": "Se presente restituisce il dettaglio di un singolo evento"}
      ],
      "responses": {"200": {"description": "Elenco eventi", "content": {"application/json": {"schema": {"type": "object"}}}}}}},
    "/api/ask.php": {"post": {"operationId": "askEvents", "summary": "Domanda in linguaggio naturale (risposta AI + eventi)",
      "requestBody": {"content": {"application/json": {"schema": {"type": "object", "properties": {"q": {"type": "string"}}, "required": ["q"]}}}},
      "responses": {"200": {"description": "Risposta"}}}},
    "/api/ics.php": {"get": {"operationId": "icalFeed", "summary": "Calendario iCalendar", "responses": {"200": {"description": "text/calendar"}}}},
    "/api/mcp.php": {"post": {"operationId": "mcp", "summary": "Model Context Protocol (JSON-RPC 2.0)", "responses": {"200": {"description": "JSON-RPC"}}}}
  }
}
