Rowland I. Ekemezie developer resources
Use these resources when software, search systems, or AI agents need a stable machine-readable view of this site instead of extracting identity and capabilities from presentation markup.
The public API is deliberately small and read-only. It exposes canonical profile data and links to the resources on this domain. It does not provide private résumé data, unpublished work, account access, newsletter management, or actions on Rowland's behalf. No API key is required for the public profile endpoint.
Machine-readable resources
- OpenAPI 3.1 specification for the supported public API.
- llms.txt with site identity, when-to-use guidance, and canonical links.
- Agent instructions in Markdown for retrieval and attribution.
- XML sitemap and RSS feed for content discovery.
Public profile API
Send GET /api/v1/profile to retrieve canonical public profile data. The response is JSON, uses a versioned URL, and includes rate-limit headers so clients can self-throttle. Unsupported methods and unknown v1 resources return application/problem+json with a stable error code, a human-readable message, and a recovery hint.
curl -H "Accept: application/json" https://rowlandekemezie.com/api/v1/profileMarkdown negotiation
The homepage, the About page and every essay support HTTP content negotiation. Send Accept: text/markdown to the homepage, https://rowlandekemezie.com/, for a concise Markdown representation, or to any essay URL such as https://rowlandekemezie.com/posts/external-systems-lie/ for the article as Markdown. Each essay is also published at a stable .md URL, linked from its page with<link rel="alternate" type="text/markdown">. Normal browser requests continue to receive the existing HTML site. Negotiated responses include Vary: Accept, Accept-Encoding so shared caches do not mix HTML and Markdown. The About page is also at /about.md.
Markdown responses carry Content-Signal: ai-train=no, search=yes, ai-input=yes: the writing may be indexed for search and used by agents answering a request, but not used to train models.
Versioning and deprecation
Public API versions are encoded in the URL. Compatible additions can be made within v1; breaking changes require a new major version. If an operation is deprecated, it will remain available for at least 90 days after the public deprecation announcement. Deprecated responses will include a Deprecation header and a Sunset header with the planned removal date. The OpenAPI document will also mark the operation as deprecated during that migration window.
Clients should use the operation IDs and schemas in the OpenAPI document, follow canonical URLs returned by the API, respect the RateLimit headers, and avoid inventing actions that the documented API does not expose.