{"version":"1.0.0","site":{"name":"Will Haering","description":"Personal website and writing of Will Haering.","url":"https://wch.io","author":"Will Haering"},"entrypoints":{"openapi":"/openapi.yaml","status":"/api/health","search":"/api/search?q={query}","posts":"/api/posts","post":"/api/posts/{id}","portfolio":"/api/portfolio","terminal":"/for-agents/terminal","repl":"/for-agents/repl"},"entities":[{"type":"schema:Article","idFormat":"post_{id}","canonicalUrl":"https://wch.io/writing/{slug}","properties":["id","title","content","datePublished","author","url","slug","tags"],"description":"Blog posts and articles with markdown content"},{"type":"schema:Person","idFormat":"person_will_haering","canonicalUrl":"https://wch.io/about","properties":["name","description","url","sameAs","expertise","experience"],"description":"Personal and professional information about Will Haering"},{"type":"schema:CreativeWork","idFormat":"project_{id}","canonicalUrl":"https://wch.io/grid/{idx}","properties":["id","name","description","url","dateCreated","images","technologies"],"description":"Portfolio projects and creative works"},{"type":"schema:ImageObject","idFormat":"img_{hash}","canonicalUrl":"https://wch.io/pictures/{category}/{filename}","properties":["id","contentUrl","description","dateCreated","category","location"],"description":"Photography collections and images"},{"type":"schema:NewsArticle","idFormat":"news_{timestamp}_{hash}","canonicalUrl":"https://wch.io/news/{id}","properties":["title","timestamp","sourceName","url","summary"],"description":"News coverage and media mentions"}],"actions":[{"name":"search","method":"GET","path":"/api/search","params":{"q":"string","page":"int?"},"returns":"SearchResult[]","description":"Search across all content with relevance scoring"},{"name":"get-posts","method":"GET","path":"/api/posts","params":{"page":"int?","limit":"int?"},"returns":"Post[]","description":"List all blog posts with pagination"},{"name":"get-post","method":"GET","path":"/api/posts/{id}","params":{"id":"string"},"returns":"Post","description":"Get specific post details and content"},{"name":"get-portfolio","method":"GET","path":"/api/portfolio","returns":"PortfolioData","description":"Get portfolio and project information"},{"name":"health-check","method":"GET","path":"/api/health","returns":"HealthStatus","description":"Check system health and status"}],"auth":{"read":"anonymous","write":"jwt-token","admin":"jwt-token"},"rateLimits":{"anonymous":"100/minute, 1000/hour","authenticated":"500/minute, 5000/hour"},"freshness":{"etag":true,"lastModified":true,"cacheControl":"public, max-age=300","contentUpdates":"immediate"},"contentTypes":{"posts":"markdown","images":"jpeg, png, webp","metadata":"json"},"contact":{"status":"/api/health","uptime":"99.5%","responseTime":"< 500ms"},"updatedAt":"2026-04-06T19:06:32.381Z"}