{
  "openapi": "3.1.0",
  "info": {
    "title": "트렌드브리프 Content API",
    "description": "Read-only HTTP API for published content: RSS feed, sitemaps, agent indexes (llms.txt), and Markdown/HTML article twins. Unauthenticated GET requests only.",
    "version": "1.0.0"
  },
  "servers": [
    { "url": "https://trendbrief.news" }
  ],
  "paths": {
    "/rss.xml": {
      "get": {
        "summary": "RSS 2.0 feed of the latest 20 articles",
        "responses": { "200": { "description": "RSS 2.0 document", "content": { "application/xml": {} } } }
      }
    },
    "/sitemap.xml": {
      "get": {
        "summary": "XML sitemap of all pages (with lastmod)",
        "responses": { "200": { "description": "Sitemap document", "content": { "application/xml": {} } } }
      }
    },
    "/sitemap.md": {
      "get": {
        "summary": "Markdown sitemap listing every page path",
        "responses": { "200": { "description": "Markdown sitemap", "content": { "text/markdown": {} } } }
      }
    },
    "/llms.txt": {
      "get": {
        "summary": "Content index with summaries (llmstxt.org)",
        "responses": { "200": { "description": "Markdown index", "content": { "text/plain": {} } } }
      }
    },
    "/llms-full.txt": {
      "get": {
        "summary": "Merged Markdown of all articles",
        "responses": { "200": { "description": "Merged Markdown", "content": { "text/plain": {} } } }
      }
    },
    "/index.md": {
      "get": {
        "summary": "Markdown version of the home page",
        "responses": { "200": { "description": "Markdown home", "content": { "text/markdown": {} } } }
      }
    },
    "/articles/{slug}.md": {
      "get": {
        "summary": "Markdown version of an article",
        "parameters": [
          { "name": "slug", "in": "path", "required": true, "schema": { "type": "string" } }
        ],
        "responses": {
          "200": { "description": "Article as Markdown", "content": { "text/markdown": {} } },
          "404": { "description": "Unknown article" }
        }
      }
    },
    "/articles/{slug}.html": {
      "get": {
        "summary": "Article HTML. Sending Accept: text/markdown returns the Markdown twin from the same URL.",
        "parameters": [
          { "name": "slug", "in": "path", "required": true, "schema": { "type": "string" } }
        ],
        "responses": {
          "200": { "description": "Article page", "content": { "text/html": {}, "text/markdown": {} } },
          "404": { "description": "Unknown article" }
        }
      }
    },
    "/status.json": {
      "get": {
        "summary": "Service status (static hosting: 200 means the content service is up)",
        "responses": { "200": { "description": "Status document", "content": { "application/json": {} } } }
      }
    }
  }
}