{"openapi":"3.1.0","info":{"title":"Ry Walker Public Content API","version":"1.0.0","description":"Read-only access to the published essays and research on rywalker.com. No authentication is required. Stable operations use a major version in the URL. Breaking changes ship under a new major version; additive changes may ship within v1. Deprecations are documented here before removal. Use canonical page URLs when citing content.","contact":{"name":"Ry Walker","url":"https://rywalker.com/contact","email":"ry@rywalker.com"}},"servers":[{"url":"https://rywalker.com","description":"Production"}],"tags":[{"name":"Content","description":"Discover and retrieve public essays and research reports."}],"paths":{"/api/v1/content":{"get":{"operationId":"listPublishedContent","summary":"List published content","description":"Returns public essay and research metadata, optionally filtered by content type or exact tag. Results are ordered by most recent modification date.","tags":["Content"],"parameters":[{"name":"type","in":"query","required":false,"description":"The kind of public content to return.","schema":{"type":"string","enum":["all","essays","research"],"default":"all"}},{"name":"tag","in":"query","required":false,"description":"Return only items with this exact tag.","schema":{"type":"string","minLength":1}},{"name":"limit","in":"query","required":false,"description":"Maximum number of items to return.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"A list of matching public content.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentListResponse"}}}},"400":{"description":"A structured error with a stable code and recovery hint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/content/{type}/{slug}":{"get":{"operationId":"getPublishedContent","summary":"Retrieve one published item","description":"Returns metadata and Markdown source for one public essay or research report. Drafts and unknown slugs return a structured 404 response.","tags":["Content"],"parameters":[{"name":"type","in":"path","required":true,"description":"The collection containing the item.","schema":{"type":"string","enum":["essays","research"]}},{"name":"slug","in":"path","required":true,"description":"The lowercase, hyphenated public slug returned by listPublishedContent.","schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}],"responses":{"200":{"description":"The requested public item, including its Markdown source.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentDetailResponse"}}}},"400":{"description":"A structured error with a stable code and recovery hint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"A structured error with a stable code and recovery hint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"ContentType":{"type":"string","enum":["essay","research"],"description":"The editorial collection containing the item."},"ContentItem":{"type":"object","required":["id","type","slug","title","description","url","datePublished","dateModified","tags","wordCount"],"properties":{"id":{"type":"string","description":"Stable type-prefixed content identifier."},"type":{"$ref":"#/components/schemas/ContentType"},"slug":{"type":"string","description":"URL-safe public content slug."},"title":{"type":"string","description":"Human-readable title."},"description":{"type":"string","description":"Short editorial summary."},"url":{"type":"string","format":"uri","description":"Canonical public page URL."},"datePublished":{"type":"string","format":"date","description":"Original publication date."},"dateModified":{"type":"string","format":"date","description":"Most recent editorial update date."},"tags":{"type":"array","description":"Exact topic tags assigned to the item.","items":{"type":"string"}},"wordCount":{"type":"integer","minimum":0,"description":"Approximate Markdown word count."}}},"ContentDetail":{"unevaluatedProperties":false,"allOf":[{"$ref":"#/components/schemas/ContentItem"},{"type":"object","required":["contentMarkdown"],"properties":{"contentMarkdown":{"type":"string","description":"Published source in Markdown/MDX form."}}}]},"ContentListResponse":{"type":"object","additionalProperties":false,"required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ContentItem"}},"meta":{"type":"object","additionalProperties":false,"required":["total","returned","limit","type","tag"],"properties":{"total":{"type":"integer","minimum":0},"returned":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":100},"type":{"type":"string","enum":["all","essays","research"]},"tag":{"type":["string","null"]}}}}},"ContentDetailResponse":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ContentDetail"}}},"ErrorResponse":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","hint"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable explanation."},"hint":{"type":"string","description":"A concrete recovery action."}}}}}}}}