{
  "api": "kmshack.kr Content API",
  "version": "1.0.0",
  "description": "Read-only JSON API exposing the profile, projects, career history and blog index of kmshack.kr (Minsoo Kim).",
  "documentation": "https://kmshack.kr/developers/",
  "openapi": "https://kmshack.kr/openapi.json",
  "llms_txt": "https://kmshack.kr/llms.txt",
  "generated_at": "2026-09-13T09:48:44+09:00",
  "auth": "none",
  "cors": "*",
  "rate_limit": "No quota and no API key. The endpoints are static files on a CDN; please cache responses and avoid polling more than once per hour.",
  "license": {
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/"
  },
  "endpoints": [
    {
      "path": "/api/index.json",
      "method": "GET",
      "operationId": "getApiIndex",
      "summary": "API index",
      "description": "Discovery document listing every endpoint, the OpenAPI spec URL, licensing and rate-limit guidance."
    },
    {
      "path": "/api/profile.json",
      "method": "GET",
      "operationId": "getProfile",
      "summary": "Profile",
      "description": "Identity of the site owner: name, job title, location, languages, headline stats, skill groups and canonical social links."
    },
    {
      "path": "/api/projects.json",
      "method": "GET",
      "operationId": "listProjects",
      "summary": "Projects",
      "description": "Indie apps and professional products worked on, with platform, tech stack and download counts where public."
    },
    {
      "path": "/api/experience.json",
      "method": "GET",
      "operationId": "listExperience",
      "summary": "Experience",
      "description": "Career timeline in reverse-chronological order, one entry per organization."
    },
    {
      "path": "/api/posts.json",
      "method": "GET",
      "operationId": "listPosts",
      "summary": "Blog posts",
      "description": "Every blog post ever published, newest first, with slug, title, canonical URL, publish and modification dates, tags and a plain-text summary."
    },
    {
      "path": "/api/tags.json",
      "method": "GET",
      "operationId": "listTags",
      "summary": "Tags",
      "description": "All blog tags with post counts and the slugs of the posts carrying each tag."
    },
    {
      "path": "/openapi.json",
      "method": "GET",
      "operationId": "getOpenApiSpec",
      "summary": "OpenAPI specification",
      "description": "The OpenAPI 3.1 description of this API. Also mirrored at /api/openapi.json."
    }
  ]
}
