{"openapi":"3.1.1","info":{"title":"Paras Madan Public Content API","version":"1.0.0","description":"Read-only portfolio and publishing APIs. No key or authentication required. Updates deploy with repository changes. Hosting rate limits are not contractually fixed; back off on 429 and honor Retry-After when supplied.","contact":{"name":"Paras Madan","email":"paras@varnan.tech","url":"https://www.parasmadan.in/contact"}},"servers":[{"url":"https://www.parasmadan.in"}],"security":[],"externalDocs":{"description":"Quickstart, formats, errors, and live API explorer","url":"https://www.parasmadan.in/developers"},"paths":{"/api/portfolio":{"get":{"operationId":"getPortfolio","summary":"Retrieve profile, services, contact, collaborations, speaking and every published article.","description":"Retrieve profile, services, contact, collaborations, speaking and every published article.","security":[],"responses":{"200":{"description":"Successful retrieval.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Portfolio"}}}},"405":{"description":"RFC 9457 problem details; code and resolution are documented extension members.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"Allow":{"description":"Supported HTTP methods.","schema":{"type":"string"}}}}}}},"/agents/site.json":{"get":{"operationId":"getContentDirectory","summary":"Retrieve public pages, sources, article sections, and all indexable article metadata.","description":"Retrieve public pages, sources, article sections, and all indexable article metadata.","security":[],"responses":{"200":{"description":"Successful retrieval.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentDirectory"}}}},"405":{"description":"RFC 9457 problem details; code and resolution are documented extension members.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"Allow":{"description":"Supported HTTP methods.","schema":{"type":"string"}}}}}}},"/feed.json":{"get":{"operationId":"getFullTextFeed","summary":"Retrieve JSON Feed 1.1 with full authored article text.","description":"Retrieve JSON Feed 1.1 with full authored article text.","security":[],"responses":{"200":{"description":"Successful retrieval.","content":{"application/feed+json":{"schema":{"$ref":"#/components/schemas/Feed"}}}},"405":{"description":"RFC 9457 problem details; code and resolution are documented extension members.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"Allow":{"description":"Supported HTTP methods.","schema":{"type":"string"}}}}}}},"/rss.xml":{"get":{"operationId":"getRssFeed","summary":"Retrieve publication updates in RSS 2.0 format.","description":"Retrieve publication updates in RSS 2.0 format.","security":[],"responses":{"200":{"description":"Successful retrieval.","content":{"application/rss+xml":{"schema":{"type":"string"}}}},"405":{"description":"RFC 9457 problem details; code and resolution are documented extension members.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"Allow":{"description":"Supported HTTP methods.","schema":{"type":"string"}}}}}}},"/sitemap.xml":{"get":{"operationId":"getSitemap","summary":"Retrieve canonical public pages and article URLs in the XML sitemap.","description":"Retrieve canonical public pages and article URLs in the XML sitemap.","security":[],"responses":{"200":{"description":"Successful retrieval.","content":{"application/xml":{"schema":{"type":"string"}}}},"405":{"description":"RFC 9457 problem details; code and resolution are documented extension members.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"Allow":{"description":"Supported HTTP methods.","schema":{"type":"string"}}}}}}},"/blog/{slug}/markdown":{"get":{"operationId":"getArticleMarkdown","summary":"Retrieve a published article as Markdown.","description":"Retrieve a published article as Markdown.","security":[],"responses":{"200":{"description":"Complete article.","content":{"text/markdown":{"schema":{"type":"string","description":"Complete authored Markdown, including author and publication date."}}}},"404":{"description":"Markdown error with discovery links.","content":{"text/markdown":{"schema":{"type":"string"}}}},"405":{"description":"RFC 9457 problem details; code and resolution are documented extension members.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"description":"Exact article slug from getContentDirectory; drafts and missing slugs return 404.","schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"example":"nobody-knows-which-model-to-pick"}]}},"/":{"get":{"operationId":"getHomepage","summary":"Retrieve the homepage. Request Accept: text/markdown for agent-readable Markdown; normal browsers receive HTML.","description":"Retrieve the homepage. Request Accept: text/markdown for agent-readable Markdown; normal browsers receive HTML.","security":[],"responses":{"200":{"description":"Negotiated homepage; Vary: Accept is present for both representations.","headers":{"Vary":{"schema":{"type":"string"}}},"content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string","description":"Complete authored Markdown, including author and publication date."}}}},"405":{"description":"RFC 9457 problem details; code and resolution are documented extension members.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"parameters":[{"name":"Accept","in":"header","description":"Media preference; weighted Accept negotiation is supported.","schema":{"type":"string"},"example":"text/markdown"}]}}},"components":{"schemas":{"Article":{"type":"object","required":["slug","title","description","date","category","url","sourceUrl","sourceFormat"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"previewTitle":{"type":"string"},"description":{"type":"string"},"date":{"type":"string","format":"date"},"updated":{"type":"string","format":"date"},"category":{"type":"string"},"featured":{"type":"boolean"},"sample":{"type":"boolean"},"readingTime":{"type":"integer","minimum":1},"url":{"type":"string","format":"uri"},"previewImage":{"type":"string","format":"uri"},"sourceUrl":{"type":"string","format":"uri"},"sourceFormat":{"type":"string","enum":["Markdown/MDX"]}}},"ContentDirectory":{"type":"object","properties":{"version":{"type":"integer"},"url":{"type":"string"},"profile":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}},"organization":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}}},"sameAs":{"type":"array","items":{"type":"string"}}}},"contact":{"type":"object","properties":{"url":{"type":"string"},"emails":{"type":"array","items":{"type":"string"}},"booking":{"type":"object","properties":{"url":{"type":"string"},"durationMinutes":{"type":"number"}}}}},"story":{"type":"object","properties":{"title":{"type":"string"},"subtitle":{"type":"string"},"introduction":{"type":"array","items":{"type":"string"}},"chapters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"paragraphs":{"type":"array","items":{"type":"string"}}}}},"url":{"type":"string"},"context":{"type":"string"}}},"pages":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"url":{"type":"string"}}}},"articleSections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"category":{"anyOf":[{"type":"null"},{"type":"string"}]},"url":{"type":"string"}}}},"resources":{"type":"object","properties":{"openApi":{"type":"string"},"developerDocs":{"type":"string"},"portfolioApi":{"type":"string"},"sitemap":{"type":"string"},"rss":{"type":"string"},"jsonFeed":{"type":"string"}}},"collaborations":{"type":"object","properties":{"url":{"type":"string"},"context":{"type":"string"},"entries":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"focus":{"type":"string"},"impact":{"type":"string"},"links":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string"}}}},"caseStudy":{"type":"string"},"video":{"type":"string"}}}}}},"speaking":{"type":"object","properties":{"url":{"type":"string"},"talks":{"type":"array","items":{"type":"object","properties":{"event":{"type":"string"},"year":{"type":"string"},"title":{"type":"string"},"topic":{"type":"string"},"source":{"type":"string"},"recording":{"type":"string"},"recordingLabel":{"type":"string"}}}},"workshops":{"type":"array","items":{"type":"object","properties":{"organization":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"detail":{"type":"string"},"date":{"type":"string"},"source":{"type":"string"}}}},"additionalWorkshops":{"type":"array","items":{"type":"object","properties":{"organization":{"type":"string"},"description":{"type":"string"}}}},"workshopHighlights":{"type":"string"},"hackathon":{"type":"object","properties":{"title":{"type":"string"},"organizer":{"type":"string"},"status":{"type":"string"},"duration":{"type":"string"},"format":{"type":"string"},"theme":{"type":"string"},"description":{"type":"string"},"sourceUrl":{"type":"string"},"sourceContext":{"type":"string"},"judges":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"role":{"type":"string"},"image":{"type":"string"},"href":{"type":"string"}}}},"projects":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}}}},"url":{"type":"string"}}}}},"articles":{"type":"array","items":{"$ref":"#/components/schemas/Article"}}}},"Portfolio":{"type":"object","required":["version","url","profile","services","portfolio","contact","sources"],"properties":{"version":{"type":"integer"},"url":{"type":"string","format":"uri"},"profile":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}},"organization":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}}},"sameAs":{"type":"array","items":{"type":"string"}}}},"services":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"}}}},"contact":{"type":"object","properties":{"url":{"type":"string"},"emails":{"type":"array","items":{"type":"string"}},"booking":{"type":"object","properties":{"url":{"type":"string"},"durationMinutes":{"type":"number"}}}}},"sources":{"type":"object","additionalProperties":{"type":"string","format":"uri"}},"portfolio":{"type":"object","required":["story","collaborations","speaking","articles","articleSections"],"properties":{"story":{"type":"object","properties":{"title":{"type":"string"},"subtitle":{"type":"string"},"introduction":{"type":"array","items":{"type":"string"}},"chapters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"paragraphs":{"type":"array","items":{"type":"string"}}}}},"url":{"type":"string"},"context":{"type":"string"}}},"collaborations":{"type":"object","properties":{"url":{"type":"string"},"context":{"type":"string"},"entries":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"focus":{"type":"string"},"impact":{"type":"string"},"links":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string"}}}},"caseStudy":{"type":"string"},"video":{"type":"string"}}}}}},"speaking":{"type":"object","properties":{"url":{"type":"string"},"talks":{"type":"array","items":{"type":"object","properties":{"event":{"type":"string"},"year":{"type":"string"},"title":{"type":"string"},"topic":{"type":"string"},"source":{"type":"string"},"recording":{"type":"string"},"recordingLabel":{"type":"string"}}}},"workshops":{"type":"array","items":{"type":"object","properties":{"organization":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"detail":{"type":"string"},"date":{"type":"string"},"source":{"type":"string"}}}},"additionalWorkshops":{"type":"array","items":{"type":"object","properties":{"organization":{"type":"string"},"description":{"type":"string"}}}},"workshopHighlights":{"type":"string"},"hackathon":{"type":"object","properties":{"title":{"type":"string"},"organizer":{"type":"string"},"status":{"type":"string"},"duration":{"type":"string"},"format":{"type":"string"},"theme":{"type":"string"},"description":{"type":"string"},"sourceUrl":{"type":"string"},"sourceContext":{"type":"string"},"judges":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"role":{"type":"string"},"image":{"type":"string"},"href":{"type":"string"}}}},"projects":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}}}},"url":{"type":"string"}}}}},"articles":{"type":"array","items":{"$ref":"#/components/schemas/Article"}},"articleSections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"category":{"anyOf":[{"type":"null"},{"type":"string"}]},"url":{"type":"string"}}}}}}}},"Problem":{"type":"object","required":["type","title","status","detail","instance","code","resolution"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"instance":{"type":"string","format":"uri-reference"},"code":{"type":"string"},"resolution":{"type":"string"}}},"Feed":{"type":"object","required":["version","title","items"],"properties":{"version":{"type":"string","const":"https://jsonfeed.org/version/1.1"},"title":{"type":"string"},"home_page_url":{"type":"string","format":"uri"},"feed_url":{"type":"string","format":"uri"},"description":{"type":"string"},"language":{"type":"string"},"authors":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"}}}},"items":{"type":"array","items":{"type":"object","required":["id","url","title","content_text"],"properties":{"id":{"type":"string"},"url":{"type":"string","format":"uri"},"title":{"type":"string"},"summary":{"type":"string"},"content_text":{"type":"string"},"date_published":{"type":"string","format":"date-time"},"date_modified":{"type":"string","format":"date-time"},"tags":{"type":"array","items":{"type":"string"}},"_source":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"format":{"type":"string"}}}}}}}}}}}