{
  "openapi": "3.1.0",
  "info": {
    "title": "Olivier Legras public API",
    "version": "1.0.0",
    "description": "Public catalog, health, markdown and MCP endpoints for olivierlegras.com.",
    "contact": {
      "name": "Olivier Legras",
      "email": "contact@olivierlegras.com",
      "url": "https://www.olivierlegras.com/contact"
    }
  },
  "servers": [
    {
      "url": "https://www.olivierlegras.com"
    }
  ],
  "paths": {
    "/api/health": {
      "get": {
        "summary": "Health check",
        "operationId": "getHealth",
        "responses": {
          "200": {
            "description": "Service is up"
          }
        }
      }
    },
    "/api/catalog": {
      "get": {
        "summary": "Public site catalog",
        "operationId": "getCatalog",
        "responses": {
          "200": {
            "description": "JSON catalog of pages, services and contact details"
          }
        }
      }
    },
    "/mcp": {
      "post": {
        "summary": "MCP JSON-RPC endpoint",
        "operationId": "postMcp",
        "responses": {
          "200": {
            "description": "JSON-RPC response"
          }
        }
      }
    },
    "/docs/api": {
      "get": {
        "summary": "Human and agent API documentation (markdown)",
        "operationId": "getApiDocs",
        "responses": {
          "200": {
            "description": "Markdown documentation"
          }
        }
      }
    }
  }
}
