{"data":{"version":"v1","endpoints":[{"method":"GET","path":"/api/v1","description":"This index","url":"https://your-project.vercel.app/api/v1"},{"method":"GET","path":"/api/v1/content/profile","description":"Identity, summary, avatar config and public contact links","url":"https://your-project.vercel.app/api/v1/content/profile"},{"method":"GET","path":"/api/v1/content/experience","description":"Roles, dates, highlights and stack","url":"https://your-project.vercel.app/api/v1/content/experience"},{"method":"GET","path":"/api/v1/content/systems","description":"Case studies: problem, design, safeguards, outcome","url":"https://your-project.vercel.app/api/v1/content/systems"},{"method":"GET","path":"/api/v1/content/skills","description":"Grouped skills","url":"https://your-project.vercel.app/api/v1/content/skills"},{"method":"GET","path":"/api/v1/content/education","description":"Education","url":"https://your-project.vercel.app/api/v1/content/education"},{"method":"GET","path":"/api/v1/content/achievements","description":"Awards and recognition","url":"https://your-project.vercel.app/api/v1/content/achievements"},{"method":"GET","path":"/api/v1/content/threat-model","description":"Threats considered for this site and how each is mitigated","url":"https://your-project.vercel.app/api/v1/content/threat-model"},{"method":"POST","path":"/api/v1/contact","description":"Send a message (form token required)","url":"https://your-project.vercel.app/api/v1/contact"},{"method":"GET","path":"/api/health","description":"Readiness report (?probe=liveness for liveness)","url":"https://your-project.vercel.app/api/health"}],"conventions":{"envelope":"{ data, meta } on success; { error: { code, message, requestId } } on failure","caching":"GET responses carry a strong ETag; send If-None-Match to receive 304","rateLimits":"RateLimit-Limit / RateLimit-Remaining / RateLimit-Reset headers; 429 + Retry-After when exceeded","tracing":"Every response carries X-Request-Id; send your own to correlate"}},"meta":{}}