{"openapi":"3.1.0","info":{"title":"Brett Schneider portfolio API","version":"1.0.0","description":"Read-only access to Brett Schneider’s public profile, projects, and article index. No authentication is required. Full pages are available at their canonical URLs with Accept: text/markdown.","contact":{"name":"Brett Schneider","url":"https://bretts.dev/contact","email":"brett.c.schneider@gmail.com"}},"servers":[{"url":"https://bretts.dev"}],"security":[],"externalDocs":{"url":"https://bretts.dev/docs","description":"Portfolio API documentation"},"paths":{"/api":{"get":{"operationId":"getPortfolio","summary":"Read Brett Schneider’s public portfolio","description":"Returns public profile details, software projects, and all article metadata ordered newest first. Follow article URLs with Accept: text/markdown to read full text. No parameters or pagination. Responses may be cached for one hour.","responses":{"200":{"description":"Public portfolio content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Portfolio"}}}},"503":{"description":"Content temporarily unavailable. Wait before retrying.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"components":{"schemas":{"Portfolio":{"type":"object","required":["profile","projects","articles"],"properties":{"profile":{"$ref":"#/components/schemas/Profile"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/Project"}},"articles":{"type":"array","items":{"$ref":"#/components/schemas/Article"}}}},"Profile":{"type":"object","required":["name","url","description","jobTitle","location","email","sameAs"],"properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"},"description":{"type":"string"},"jobTitle":{"type":"string"},"location":{"type":"string"},"email":{"type":"string","format":"email"},"sameAs":{"type":"array","items":{"type":"string","format":"uri"}}}},"Project":{"type":"object","required":["name","description","href","label"],"properties":{"name":{"type":"string"},"description":{"type":"string"},"href":{"type":"string","format":"uri"},"label":{"type":"string"}}},"Article":{"type":"object","required":["slug","title","description","author","date","url"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"author":{"type":"string"},"date":{"type":"string","format":"date"},"url":{"type":"string","format":"uri"}}},"Problem":{"type":"object","required":["type","status","code","title","detail","resolution","docs"],"properties":{"type":{"type":"string","format":"uri"},"status":{"type":"integer","minimum":400,"maximum":599},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"resolution":{"type":"string"},"docs":{"type":"string","format":"uri"}}}}}}