<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Openapi on doismiu - dispatches from the infernal archive</title><link>https://doismiu.blog/tags/openapi/</link><description>Recent content in Openapi on doismiu - dispatches from the infernal archive</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 16 Dec 2025 00:00:00 +0100</lastBuildDate><atom:link href="https://doismiu.blog/tags/openapi/index.xml" rel="self" type="application/rss+xml"/><item><title>Contract First or Die Trying: The Only Sane Way to Design APIs</title><link>https://doismiu.blog/posts/contract-first-or-die-trying/</link><pubDate>Tue, 16 Dec 2025 00:00:00 +0100</pubDate><guid>https://doismiu.blog/posts/contract-first-or-die-trying/</guid><description>&lt;p&gt;I need to get something off my chest. Something that has been festering in my soul since the first time I joined a project mid-development and asked the fateful question: &amp;ldquo;Where is the API documentation?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The answer, invariably, was one of the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;ldquo;Check the Postman collection.&amp;rdquo; (Translation: a graveyard of 200 requests, half of which are outdated, named things like &lt;code&gt;GET users FINAL v2 (copy)&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Just look at the code.&amp;rdquo; (Translation: reverse-engineer our spaghetti and good luck)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;We&amp;rsquo;ll document it later.&amp;rdquo; (Translation: we will never document it)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src="https://doismiu.blog/posts/contract-first-or-die-trying/quit.gif" alt="I Quit!" loading="lazy" decoding="async" data-full="/posts/contract-first-or-die-trying/quit.gif" width="250" height="198"&gt;
&lt;/figure&gt;&lt;/p&gt;</description></item></channel></rss>