<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Api Design on theflyingcoders</title><link>https://theflyingcoders.dev/tags/api-design/</link><description>Recent content in Api Design on theflyingcoders</description><generator>Hugo</generator><language>en-gb</language><lastBuildDate>Tue, 27 Oct 2026 09:00:00 +0000</lastBuildDate><atom:link href="https://theflyingcoders.dev/tags/api-design/index.xml" rel="self" type="application/rss+xml"/><item><title>Spec-driven development: the OpenAPI file is the source of truth</title><link>https://theflyingcoders.dev/blog/spec-driven-development-openapi/</link><pubDate>Tue, 27 Oct 2026 09:00:00 +0000</pubDate><guid>https://theflyingcoders.dev/blog/spec-driven-development-openapi/</guid><description>&lt;p&gt;When I start a new service, I do not write the HTTP handlers by hand. I describe the API in an OpenAPI file first, and the handlers are generated from it. The compiler then will not let the spec and the code drift apart: you change the spec, run one command, and the build stays broken until the handlers match. I would not build a JSON API any other way now, and the reason is the mess it replaced.&lt;/p&gt;</description></item><item><title>A REST error taxonomy: frozen codes and three shapes</title><link>https://theflyingcoders.dev/blog/rest-error-taxonomy/</link><pubDate>Tue, 13 Oct 2026 09:00:00 +0100</pubDate><guid>https://theflyingcoders.dev/blog/rest-error-taxonomy/</guid><description>&lt;p&gt;If your API can return an error in fifty different JSON shapes, your clients handle none of them and everyone ends up parsing a &lt;code&gt;message&lt;/code&gt; string with a regex. So pick a small fixed set of shapes, give every error a stable code, and never let an endpoint invent its own. This is the taxonomy I put on every API, and it is the other half of the &lt;a href="https://theflyingcoders.dev/blog/behaviour-driven-error-handling-lathos/"&gt;lathos post from last time&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>