{"openapi":"3.1.0","info":{"title":"Satyajit Ghana — site API","summary":"Read-only JSON API over an AI-native personal site.","description":"Read-only JSON API over the content layer of ai.satyajit.si — writing, projects, daily arXiv digests, resume, publications, patents and a quantified-self health panel.\n\n**Other agent surfaces on the same site**\n- Markdown twin of any page: append `.md`, or send `Accept: text/markdown` to the canonical URL.\n- `/llms.txt` — curated index. `/llms-full.txt` — the whole corpus in one file.\n- MCP endpoint (Streamable HTTP, read-only tools): `/api/mcp/mcp`.\n\n**Auth** — none. Everything is public.\n\n**Versioning** — this is v1. Every endpoint is also mounted under `/api/v1/*`; pin that prefix if you want a stable contract. Breaking changes ship under a new prefix (`/api/v2/*`), and the old prefix keeps serving for at least 180 days carrying `Deprecation` and `Sunset` response headers (RFC 9745 / RFC 8594).\n\n**Rate limits** — every response carries `RateLimit` and `RateLimit-Policy` (RFC 9331). A 429 adds `Retry-After`. Budget is 240 requests/minute with a 30-request burst; the model-backed endpoints are stricter.\n\n**Errors** — every non-2xx response is `application/problem+json` (RFC 9457) with a stable `code` field. Switch on `code`, not on the message.","version":"1.0.0","contact":{"name":"Satyajit Ghana","email":"satyajitghana7@gmail.com","url":"https://ai.satyajit.si/contact"},"license":{"name":"Content: CC BY 4.0","url":"https://ai.satyajit.si/colophon"},"termsOfService":"https://ai.satyajit.si/privacy"},"externalDocs":{"description":"Developer portal","url":"https://ai.satyajit.si/developers"},"servers":[{"url":"https://ai.satyajit.si/api/v1","description":"Versioned base path — pin this."},{"url":"https://ai.satyajit.si","description":"Unversioned root (paths below include /api)."}],"tags":[{"name":"identity","description":"Who Satyajit is: profile, resume, publications, patents."},{"name":"content","description":"Writing: articles, blog posts, logs, notes, snippets, arXiv digests."},{"name":"records","description":"Hand-curated data records: health, now, uses, reading."},{"name":"search","description":"Full-text search across the corpus."},{"name":"ai","description":"Model-backed endpoints. These are rate limited and can be offline."}],"paths":{"/api/profile":{"get":{"operationId":"getProfile","summary":"Profile, links, and GitHub seed stats","description":"Identity record: name, title, employer, location, bio, social links and cached GitHub counts. Start here to establish who the site belongs to.","tags":["identity"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Profile"}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/resume":{"get":{"operationId":"getResume","summary":"Full structured resume","description":"Complete CV as structured JSON: experience, education, skills. A JSON Resume formatted copy is at /resume.json and a PDF at /satyajit-ghana-resume.pdf.","tags":["identity"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyValueList"}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/publications":{"get":{"operationId":"listPublications","summary":"Peer-reviewed publications","description":"Journal and conference publications with DOIs.","tags":["identity"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Publication"}}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/patents":{"get":{"operationId":"listPatents","summary":"Patent applications","description":"Pending USPTO patent applications with application numbers and status.","tags":["identity"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Patent"}}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/projects":{"get":{"operationId":"listProjects","summary":"Projects with descriptions and stack","description":"Every project page, with tech stack, repository and demo links. `featured: true` marks the ones shown on the homepage.","tags":["content"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Project"}}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/articles":{"get":{"operationId":"listArticles","summary":"Long-form articles and explainers","description":"The site's flagship writing — paper explainers and model deep-dives, each with original interactive diagrams — with each article's rating, topic, kind, level, hardware, licence, 0–100 score, percentile tier, lens keys and page facts. Newest first; sort by `lenses` or `score` to match /articles. Fetch a body from the `.md` twin.","tags":["content"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Article"}}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/posts":{"get":{"operationId":"listPosts","summary":"Blog posts and daily logs","description":"Combined index of blog posts and dated build logs.","tags":["content"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ContentSummary"}}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/posts/{slug}":{"get":{"operationId":"getPost","summary":"One blog post or log, with body","description":"Full record for a single post including the raw MDX body. Get valid slugs from listPosts.","tags":["content"],"parameters":[{"name":"slug","in":"path","required":true,"description":"Post or log slug, e.g. `contextual-retrieval`.","schema":{"type":"string","pattern":"^[a-z0-9-]+$"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentDetail"}}}},"404":{"description":"No such resource.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/arxiv":{"get":{"operationId":"listArxivDigests","summary":"Daily arXiv digests with takes","description":"Dated digests of arXiv papers, each entry carrying the abstract plus a one-line editorial take and a standout flag.","tags":["content"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ArxivDigest"}}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/notes":{"get":{"operationId":"listNotes","summary":"Digital-garden notes","description":"Short interlinked notes. Bodies are at the `.md` twin of each URL.","tags":["content"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ContentSummary"}}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/snippets":{"get":{"operationId":"listSnippets","summary":"Code snippets","description":"Small copy-paste code samples, tagged by language (cuda, python, cpp, bash).","tags":["content"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ContentSummary"}}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/architectures":{"get":{"operationId":"listArchitectures","summary":"Model architecture diagrams","description":"Index of the reference-quality model architecture diagrams rendered on the site.","tags":["content"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ContentSummary"}}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/math":{"get":{"operationId":"listMathResults","summary":"AI breakthroughs in mathematics: openai/math result families, with videos","description":"Every result family of OpenAI's openai/math release (372) as shown on /math: our significance, kind and verdict, the release's Lean status, the claim as we read it, manuscript links pinned to a commit, a link to the section of our article that covers it, and its short narrated video (`reel`: mp4, poster, captions) when one has been rendered. Each entry's `detail` is the full record.","tags":["content"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"type":"object","required":["commit","counts","results"],"properties":{"commit":{"type":"string"},"counts":{"type":"object"},"results":{"type":"array","items":{"type":"object"}}}}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/math/{id}":{"get":{"operationId":"getMathResult","summary":"One openai/math result family, with review notes","description":"The /api/math record for one family plus our review notes: what the result means, caveats, what exactly is in Lean, and the release's own summary.","tags":["content"],"parameters":[{"name":"id","in":"path","required":true,"description":"Three-digit family id, e.g. `107`.","schema":{"type":"string","pattern":"^[0-9]{3}$"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"type":"object","required":["id","title","claim"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"claim":{"type":"string"}}}}}},"404":{"description":"No such resource.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/health":{"get":{"operationId":"getHealthPanel","summary":"Biomarker panel with derived statuses","description":"Quantified-self blood panel: each marker with its value, unit, reference range and a derived status.","tags":["records"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthPanel"}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/now":{"get":{"operationId":"getNow","summary":"Current focus","description":"What Satyajit is working on right now, in the /now page convention.","tags":["records"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyValueList"}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/uses":{"get":{"operationId":"getUses","summary":"Gear and tooling","description":"Hardware, editor, and daily-driver software.","tags":["records"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyValueList"}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/reading":{"get":{"operationId":"getReading","summary":"Reading list","description":"Papers and books, with status and notes.","tags":["records"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyValueList"}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/github":{"get":{"operationId":"getGithubStats","summary":"GitHub stats (live or seed)","description":"Repository, star and follower counts. Falls back to cached seed values when no GitHub token is configured; check the `live` flag.","tags":["identity"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubStats"}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/search":{"get":{"operationId":"searchContent","summary":"Full-text search across all content","description":"BM25 search over contextualized chunks of every article, architecture explainer, post, log, project, digest, snippet and note. Returns ranked matches with the matching heading and a snippet. This is the fastest way to find the right page before fetching it.","tags":["search"],"parameters":[{"name":"q","in":"query","required":true,"description":"Search terms.","schema":{"type":"string","minLength":1}},{"name":"limit","in":"query","required":false,"description":"Maximum results to return.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResult"}}}},"400":{"description":"Invalid request — a required parameter is missing or malformed.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/ask":{"get":{"operationId":"getAskStatus","summary":"Check whether the site AI is online","description":"Cheap liveness probe for the ask endpoint. Call this before POSTing if you want to avoid a 503.","tags":["ai"],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskStatus"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"operationId":"askSatyajitSite","summary":"Ask the site AI a grounded, cited question","description":"Answers questions about Satyajit, his writing and his work, grounded in this site's content with inline citations. Use it for synthesis across pages; use searchContent when you only need to locate a page.","tags":["ai"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["question"],"properties":{"question":{"type":"string","minLength":1,"maxLength":4000,"description":"A natural-language question about the site's subject matter."}}}}}},"responses":{"200":{"description":"OK","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskAnswer"}}}},"400":{"description":"Invalid request — a required parameter is missing or malformed.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Upstream model error after the fallback chain was exhausted.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Model-backed endpoint is offline. Static surfaces are unaffected.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"components":{"schemas":{"Link":{"type":"object","additionalProperties":{"type":"string"}},"Profile":{"type":"object","required":["name","title","location"],"properties":{"name":{"type":"string"},"title":{"type":"string"},"company":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"}}},"location":{"type":"string"},"tagline":{"type":"string"},"bio":{"type":"array","items":{"type":"string"}},"links":{"type":"object","additionalProperties":{"type":"string"}},"seedStats":{"type":"object","properties":{"repos":{"type":"integer"},"stars":{"type":"integer"},"followers":{"type":"integer"}}}}},"ContentSummary":{"type":"object","required":["slug","title","url"],"description":"A content item without its body. Fetch the body from the .md twin at `url` + '.md'.","properties":{"slug":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"date":{"type":"string","format":"date"},"updated":{"type":"string","format":"date"},"tags":{"type":"array","items":{"type":"string"}},"url":{"type":"string","format":"uri"},"readingTimeMins":{"type":"integer"}}},"Article":{"allOf":[{"$ref":"#/components/schemas/ContentSummary"},{"type":"object","description":"An article with its editorial metadata and the signals computed from it. Every field below is present on every record; it is null while an article is unrated. `kind` stays the content kind (\"articles\"); the article's own kind is `articleKind`.","properties":{"featured":{"type":"boolean"},"rating":{"type":["object","null"],"description":"Eight rubric dimensions scored 0–3 (3 is rare; corpus means sit near 1.5) and a one-line `why`.","properties":{"novelty":{"type":"integer","minimum":0,"maximum":3},"verification":{"type":"integer","minimum":0,"maximum":3},"runnable":{"type":"integer","minimum":0,"maximum":3},"explains":{"type":"integer","minimum":0,"maximum":3},"takeaway":{"type":"integer","minimum":0,"maximum":3},"durability":{"type":"integer","minimum":0,"maximum":3},"reach":{"type":"integer","minimum":0,"maximum":3},"unique":{"type":"integer","minimum":0,"maximum":3},"why":{"type":"string","maxLength":160}}},"topic":{"type":["string","null"],"enum":["llm-architecture","training-rl","inference-serving","quantization","agents","evals","multimodal","generative-media","speech-audio","spatial-3d","robotics","gpu-systems","security","interpretability","tools-infra","data",null]},"articleKind":{"type":["string","null"],"enum":["paper","model","tool","teardown","roundup","essay","guide","dataset",null]},"level":{"type":["string","null"],"enum":["intro","practitioner","research",null]},"runsOn":{"type":["string","null"],"enum":["browser","phone","cpu","consumer-gpu","workstation","datacenter","api","none",null],"description":"Smallest hardware the subject runs on, ordered browser < phone < cpu < consumer-gpu < workstation < datacenter; or api / none."},"licence":{"type":["string","null"],"description":"SPDX id, or proprietary | mixed | source-available | non-commercial | custom | unlicensed | n/a."},"score":{"type":["number","null"],"minimum":0,"maximum":100,"description":"Weighted rubric (normalised to 100) plus an evidence bonus of at most 6."},"tier":{"type":["object","null"],"description":"Percentile band over rated articles: Essential top 10%, High next 20%, Notable 30%, Solid 25%, Niche 15%.","properties":{"id":{"type":"string","enum":["essential","high","notable","solid","niche"]},"label":{"type":"string"},"level":{"type":"integer","minimum":1,"maximum":5}}},"rank":{"type":["integer","null"],"minimum":1,"description":"1 = highest score among rated articles."},"lenses":{"type":["object","null"],"description":"Sort keys, higher first: must-read, run-it, learn, new, deep.","additionalProperties":{"type":"number"}},"highlights":{"type":"array","items":{"type":"string"},"description":"Up to three plain-language highlights derived from the rating's strongest answers (e.g. \"Checked against the source\"), the same words the site shows. Empty when unrated or nothing scores above 1. Methodology: /articles/scoring."},"facts":{"type":"object","description":"Read off the page itself, never hand-entered.","properties":{"words":{"type":"integer"},"readingTimeMins":{"type":"integer"},"figures":{"type":"integer"},"interactives":{"type":"integer"},"film":{"type":"boolean"},"citations":{"type":"integer"},"cards":{"type":"integer"},"measured":{"type":"integer"},"inbound":{"type":"integer"},"lastUpdated":{"type":"string","format":"date"}}},"signal":{"type":["object","null"],"deprecated":true,"description":"Older 1–5 signal { interest, helpful, score, level, label, source }. `level` and `label` come from the tier when rated (source \"tier\"), else from interest + helpful (source \"legacy\"). interest, helpful and score (their 2–10 sum) are null for an article that only carries `rating`. Prefer `tier` and the top-level `score`."}}}]},"ContentDetail":{"allOf":[{"$ref":"#/components/schemas/ContentSummary"},{"type":"object","properties":{"body":{"type":"string","description":"Raw MDX source."}}}]},"Project":{"type":"object","required":["slug","title"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"date":{"type":"string","format":"date"},"stack":{"type":"array","items":{"type":"string"}},"repo":{"type":"string","format":"uri"},"demo":{"type":"string","format":"uri"},"featured":{"type":"boolean"},"url":{"type":"string","format":"uri"}}},"ArxivDigest":{"type":"object","required":["date","papers"],"properties":{"date":{"type":"string","format":"date"},"url":{"type":"string","format":"uri"},"papers":{"type":"array","items":{"type":"object","required":["arxivId","title"],"properties":{"arxivId":{"type":"string"},"title":{"type":"string"},"authors":{"type":"array","items":{"type":"string"}},"categories":{"type":"array","items":{"type":"string"}},"abstract":{"type":"string"},"take":{"type":"string","description":"Satyajit's one-line assessment."},"standout":{"type":"boolean"},"links":{"type":"object","additionalProperties":{"type":"string"}}}}}}},"Publication":{"type":"object","properties":{"title":{"type":"string"},"authors":{"type":"array","items":{"type":"string"}},"journal":{"type":"string"},"year":{"type":"integer"},"doi":{"type":"string"},"url":{"type":"string","format":"uri"}}},"Patent":{"type":"object","properties":{"title":{"type":"string"},"applicationNumber":{"type":"string"},"status":{"type":"string"},"filed":{"type":"string","format":"date"}}},"HealthPanel":{"type":"object","properties":{"updated":{"type":"string","format":"date"},"markers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"number"},"unit":{"type":"string"},"status":{"type":"string","enum":["optimal","normal","watch","high","low"]},"range":{"type":"string"}}}}}},"SearchResult":{"type":"object","required":["query","count","results"],"properties":{"query":{"type":"string"},"count":{"type":"integer"},"results":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["blog","articles","architectures","logs","projects","arxiv","snippets","notes"]},"slug":{"type":"string"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"score":{"type":"number"},"field":{"type":"string","description":"The heading of the section that matched, or \"body\" for text before the first heading."},"snippet":{"type":"string"}}}}}},"GithubStats":{"type":"object","properties":{"repos":{"type":"integer"},"stars":{"type":"integer"},"followers":{"type":"integer"},"live":{"type":"boolean","description":"false when serving seed stats because no token is configured."}}},"KeyValueList":{"type":"object","additionalProperties":true,"description":"Hand-curated record from data/*.ts. Shape is stable but intentionally open."},"AskAnswer":{"type":"object","required":["answer","model"],"properties":{"answer":{"type":"string","description":"Grounded answer with inline citations to site pages."},"model":{"type":"string"},"routed":{"type":"string","description":"Which tier the question was routed to."}}},"AskStatus":{"type":"object","properties":{"online":{"type":"boolean"},"model":{"type":"string"},"usage":{"type":"string"}}},"Problem":{"type":"object","required":["type","title","status","code","detail"],"properties":{"type":{"type":"string","format":"uri","description":"Link to documentation for this error code."},"title":{"type":"string","description":"Short, human-readable summary of the problem type."},"status":{"type":"integer","description":"HTTP status code, repeated in the body."},"code":{"type":"string","enum":["not_found","invalid_request","method_not_allowed","rate_limited","bad_gateway","service_unavailable","internal_error"],"description":"Stable machine-readable error code. Switch on this, not on the message."},"detail":{"type":"string","description":"Human-readable explanation of this occurrence."},"hint":{"type":"string","description":"What to do next to recover."},"instance":{"type":"string","description":"The request path that produced this problem."},"docs":{"type":"string","format":"uri","description":"Link to the OpenAPI spec."}}}},"headers":{"RateLimit":{"description":"RFC 9331 quota state, e.g. `limit=240, remaining=239, reset=60`.","schema":{"type":"string"}},"RateLimitPolicy":{"description":"RFC 9331 policy, e.g. `240;w=60, 30;w=10`.","schema":{"type":"string"}},"RetryAfter":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"responses":{"400":{"description":"Invalid request — a required parameter is missing or malformed.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such resource.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"Method not allowed on this path.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limited. Wait for Retry-After, then resume.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Upstream model error after the fallback chain was exhausted.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Model-backed endpoint is offline. Static surfaces are unaffected.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}