{
  "openapi": "3.1.0",
  "info": {
    "title": "Roberto Enterprise Search API",
    "version": "1.0.0",
    "description": "Unified Elasticsearch and Meilisearch demonstration API."
  },
  "servers": [
    {
      "url": "/"
    }
  ],
  "paths": {
    "/api/health": {
      "get": {
        "summary": "Runtime health",
        "responses": {
          "200": {
            "description": "Healthy"
          }
        }
      }
    },
    "/api/search": {
      "get": {
        "summary": "Query-string search",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Search results"
          }
        }
      },
      "post": {
        "summary": "Unified search",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ranked search response"
          }
        }
      }
    },
    "/api/index/documents": {
      "post": {
        "summary": "Index document",
        "responses": {
          "201": {
            "description": "Indexed"
          }
        }
      }
    },
    "/api/index/status": {
      "get": {
        "summary": "Index status",
        "responses": {
          "200": {
            "description": "Index metrics"
          }
        }
      }
    },
    "/api/analytics": {
      "get": {
        "summary": "Search analytics",
        "responses": {
          "200": {
            "description": "Analytics summary"
          }
        }
      }
    },
    "/api/facets": {
      "get": {
        "summary": "Facet registry",
        "responses": {
          "200": {
            "description": "Facet values"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "SearchRequest": {
        "type": "object",
        "required": [
          "query"
        ],
        "properties": {
          "query": {
            "type": "string"
          },
          "mode": {
            "enum": [
              "fulltext",
              "semantic",
              "hybrid",
              "ai"
            ]
          },
          "engine": {
            "enum": [
              "auto",
              "elasticsearch",
              "meilisearch"
            ]
          },
          "filters": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "technology": {
                "type": "string"
              },
              "year": {
                "type": "string"
              }
            }
          },
          "weights": {
            "type": "object",
            "properties": {
              "lexical": {
                "type": "number"
              },
              "semantic": {
                "type": "number"
              },
              "quality": {
                "type": "number"
              }
            }
          }
        }
      }
    }
  }
}