{
  "openapi": "3.1.0",
  "info": {
    "title": "E² = CM² Public API",
    "version": "0.2.0",
    "description": "Public, unauthenticated endpoints exposing the E² = CM² notebook as a machine-readable knowledge system.",
    "contact": {
      "name": "Guardians of Love Inc.",
      "url": "https://e2cm2.org"
    },
    "license": {
      "name": "CC BY 4.0",
      "url": "https://creativecommons.org/licenses/by/4.0/"
    }
  },
  "servers": [
    {
      "url": "https://e2cm2.org"
    }
  ],
  "paths": {
    "/api/public/hello": {
      "get": {
        "summary": "Self-describing hello endpoint.",
        "responses": {
          "200": {
            "description": "JSON description of the endpoint."
          }
        }
      },
      "post": {
        "summary": "Voluntary hello signal.",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "message": {
                    "type": "string"
                  },
                  "source": {
                    "type": "string"
                  },
                  "word": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Signal accepted."
          }
        }
      }
    },
    "/project-graph.jsonld": {
      "get": {
        "summary": "Complete typed project knowledge graph.",
        "responses": {
          "200": {
            "description": "JSON-LD Dataset with typed edges and rich node metadata.",
            "content": {
              "application/ld+json": {}
            }
          }
        }
      }
    },
    "/graph.json": {
      "get": {
        "summary": "Graph in plain JSON (nodes, edges, triples).",
        "responses": {
          "200": {
            "description": "JSON graph.",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/ontology.jsonld": {
      "get": {
        "summary": "Ontology: node kinds, predicates, categories, provenance.",
        "responses": {
          "200": {
            "description": "JSON-LD DefinedTermSet.",
            "content": {
              "application/ld+json": {}
            }
          }
        }
      }
    },
    "/vocabulary.jsonld": {
      "get": {
        "summary": "Canonical vocabulary for core project terms.",
        "responses": {
          "200": {
            "description": "JSON-LD DefinedTermSet.",
            "content": {
              "application/ld+json": {}
            }
          }
        }
      }
    },
    "/timeline.jsonld": {
      "get": {
        "summary": "Chronological milestones linked to graph nodes.",
        "responses": {
          "200": {
            "description": "JSON-LD ItemList of Events.",
            "content": {
              "application/ld+json": {}
            }
          }
        }
      }
    },
    "/resonance/between-mathematics-and-watermelon.resonance.json": {
      "get": {
        "summary": "Symbolic resonance manifest for the ambient composition.",
        "responses": {
          "200": {
            "description": "JSON-LD resonance manifest."
          }
        }
      }
    },
    "/resonance/between-mathematics-and-watermelon.audio-features.json": {
      "get": {
        "summary": "Empirical audio features (librosa-derived).",
        "responses": {
          "200": {
            "description": "JSON with measured spectral features."
          }
        }
      }
    },
    "/mcp": {
      "post": {
        "summary": "Model Context Protocol endpoint. See /.mcp/list-tools for the tool manifest.",
        "responses": {
          "200": {
            "description": "MCP streamable HTTP response."
          }
        }
      }
    },
    "/sitemap.xml": {
      "get": {
        "summary": "Public sitemap.",
        "responses": {
          "200": {
            "description": "XML sitemap."
          }
        }
      }
    },
    "/llms.txt": {
      "get": {
        "summary": "Structured markdown for LLM readers.",
        "responses": {
          "200": {
            "description": "text/markdown."
          }
        }
      }
    }
  }
}