<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[The ReadMe Blog]]></title><description><![CDATA[The ReadMe Blog]]></description><link>https://blog.readme.com/</link><image><url>https://blog.readme.com/favicon.png</url><title>The ReadMe Blog</title><link>https://blog.readme.com/</link></image><generator>Ghost 5.80</generator><lastBuildDate>Fri, 15 Mar 2024 10:18:37 GMT</lastBuildDate><atom:link href="https://blog.readme.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[How to Do Developer Marketing That Doesn't Suck]]></title><description><![CDATA[<p><em>Today we&#x2019;ve got a special guest on the blog &#x2014; </em><a href="https://calyx.substack.com/?ref=blog.readme.com"><em><u>Ceci Stallsmith</u></em></a><em>! If you were at API Mixtape 2023, you got to </em><a href="https://www.youtube.com/watch?v=xJcUCMs9YjY&amp;ref=blog.readme.com"><em><u>see her in action as a speaker</u></em></a><em>. If you missed her talk, you&#x2019;re in luck, because today&#x2019;s post is covering the same</em></p>]]></description><link>https://blog.readme.com/how-to-do-developer-marketing-that-doesnt-suck/</link><guid isPermaLink="false">65baaaba8e7a9e0001f08fd7</guid><category><![CDATA[Developer Experience]]></category><dc:creator><![CDATA[Miche Nickolaisen]]></dc:creator><pubDate>Wed, 07 Feb 2024 18:00:58 GMT</pubDate><media:content url="https://blog.readme.com/content/images/2024/02/Libraryfull.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.readme.com/content/images/2024/02/Libraryfull.png" alt="How to Do Developer Marketing That Doesn&apos;t Suck"><p><em>Today we&#x2019;ve got a special guest on the blog &#x2014; </em><a href="https://calyx.substack.com/?ref=blog.readme.com"><em><u>Ceci Stallsmith</u></em></a><em>! If you were at API Mixtape 2023, you got to </em><a href="https://www.youtube.com/watch?v=xJcUCMs9YjY&amp;ref=blog.readme.com"><em><u>see her in action as a speaker</u></em></a><em>. If you missed her talk, you&#x2019;re in luck, because today&#x2019;s post is covering the same topic: how to create developer marketing that doesn&#x2019;t suck.&#xA0;</em></p><p><em>Take it away, Ceci:&#xA0;</em></p><p>This post explores specific ways to make your developer marketing <em>notably</em> not bad &#x2014; maybe even good! Read on to learn about what to do (and what to avoid) to hit the mark with your developer audience.&#xA0;</p><h2 id="things-to-avoid-the-bad">Things to avoid: the bad&#xA0;</h2><h3 id="bad-1-tone-deaf-content">Bad 1: Tone-deaf content</h3><p><em>&#x1F4AB; Join the movement, create customer magic, drive success, better-together, instant innovation, unleash the power, the platform of platforms. &#x1F4AB;</em></p><p>Phrases like these are why people say that &#x201C;developers hate marketing.&#x201D; Tone deaf copy is, in my opinion, the greatest offender in the world of bad dev marketing.&#xA0;</p><p><strong>You can always tell when marketing content was written and built by someone who doesn&#x2019;t think about, talk to, or understand what motivates developers.</strong></p><p><strong>Example 1:</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2024/02/image.png" class="kg-image" alt="How to Do Developer Marketing That Doesn&apos;t Suck" loading="lazy" width="739" height="157" srcset="https://blog.readme.com/content/images/size/w600/2024/02/image.png 600w, https://blog.readme.com/content/images/2024/02/image.png 739w" sizes="(min-width: 720px) 720px"></figure><p>If you show this hiring plea to most developers, especially &#x201C;good&#x201D; ones, it feels overly try-hard. It looks developer-y, it&#x2019;s code! But it repels. You could say this is &#x201C;code-washed&#x201D; &#x2014; the marketer <em>thinks</em> they&#x2019;re speaking the developer&#x2019;s language, but their assumption is in error.</p><p><strong>Example 2:</strong></p><p>Companies often hire B2B marketers with track records of successfully marketing to enterprise buyers. Sometimes these marketers use phrases like &#x201C;strategic alignment&#x201D; and &#x201C;drive success&#x201D; and &#x201C;join the movement&#x201D; and &#x201C;create customer magic.&#x201D;</p><p>Those aren&#x2019;t inherently bad words.</p><p>They are actually <strong>great</strong> words for enterprise software buyers. In fact, I took most of them from the Salesforce homepage! But these aren&#x2019;t words you hear from most developers. If you need to market to both enterprise buyers and developers, consider having different &#x201C;venues&#x201D; for doing so (a separate blog, a community of developer users, etc.), along with creating different style guides for each audience.&#xA0;</p><p><strong>Example 3:</strong></p><p>Companies hire a big-budget, brand-heavy marketing agency, who then comes up with things that look and smell &#x201C;developer-y.&#x201D; They probably put brackets &lt;&gt; or slashes // in front of the logo or on pages developers will see. Again, they aren&apos;t actually talking to developers, they&#x2019;re just doing things that feel &#x201C;developer-y&#x201D; to them. It&#x2019;s like adding Helvetica to a page on your site to appeal to designers &#x2014; because designers like Helvetica, right?&#xA0;</p><h3 id="developers-come-in-many-flavors">Developers come in many flavors</h3><p>One more note before I turn the tables: there are many, many types of developers. &#x201C;Developers&#x201D; aren&#x2019;t one, single audience. There are frontend developers, backend developers, data engineers, and DevOps, to name a few. Even within those buckets, developers have varying language preferences, levels of seniority, and expertise. &#x201C;Developers,&#x201D; without any qualifications, is not a valid audience. If you&#x2019;re targeting developers, dial in an understanding of what types of developers you&#x2019;re working with.&#xA0;</p><p><strong>Good developer marketing copy is concise, uses language that your target audience uses, and focuses on their actual pain points. Good developer marketing is done by people who work with, get feedback from, and understand developers.&#xA0;</strong></p><p>I wish I could share some cringe examples out in the wild&#x2026;but that would be too cruel. Let&#x2019;s look at good examples instead:</p><p><strong>AWS: </strong>I have a lot of respect for AWS&apos;s product marketing. They aren&#x2019;t as cute as some companies in the dev space, but they are gloriously straightforward. The copy cuts right to the value, with no jargon. Knowing their user, they are not afraid to expect their audience to do some reading. If you&#x2019;re feeling lost, copy AWS&#x2019;s style and you&#x2019;ll instantly be in better shape.&#xA0;</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2024/02/AWSLambda.png" class="kg-image" alt="How to Do Developer Marketing That Doesn&apos;t Suck" loading="lazy" width="1456" height="834" srcset="https://blog.readme.com/content/images/size/w600/2024/02/AWSLambda.png 600w, https://blog.readme.com/content/images/size/w1000/2024/02/AWSLambda.png 1000w, https://blog.readme.com/content/images/2024/02/AWSLambda.png 1456w" sizes="(min-width: 720px) 720px"></figure><p><strong>Vercel: </strong>Vercel&#x2019;s homepage is another example of great audience awareness and quality product marketing. Unlike AWS, they bring a bit of personality to the table. The copy doesn&#x2019;t get lost in personality, though &#x2014; it tells us right away (1) who the product is for and (2) what it can do for me. Again, no jargon that makes my eyes glaze over.&#xA0;&#xA0;</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2024/02/vercel.png" class="kg-image" alt="How to Do Developer Marketing That Doesn&apos;t Suck" loading="lazy" width="1456" height="504" srcset="https://blog.readme.com/content/images/size/w600/2024/02/vercel.png 600w, https://blog.readme.com/content/images/size/w1000/2024/02/vercel.png 1000w, https://blog.readme.com/content/images/2024/02/vercel.png 1456w" sizes="(min-width: 720px) 720px"></figure><p><strong>Now -</strong> <strong>let&#x2019;s look at the two examples together through the lens of understanding your audience.</strong> AWS and Vercel are trying to attract different types of developers. Vercel&#x2019;s homepage is super smooth and focuses on getting straight into the action. They&#x2019;re nicely packaged up and make me feel like I could use their product, even without being an expert.&#xA0;</p><p>If AWS used Vercel&#x2019;s homepage vibe, it would frustrate users. Vercel is targeting individuals who want to bypass the hassle of setup. Their focus is on developers of varying skill and experience levels, who are looking for a solution that internal stakeholders can use without it being too technical to access. AWS, on the other hand, is not trying to position itself for beginners. Their content is deeper, more descriptive, and more heavily technical &#x2014; right off the bat.</p><h3 id="bad-2-do-nothing">Bad 2: Do nothing</h3><p><em>Developers hate marketing, so let&#x2019;s just not do it.&#xA0;</em></p><p>Actually, a number of very successful developer companies have taken this approach.</p><p>There are companies that &#x201C;do&#x201D; this and succeed, so I want to be careful on this point. Here&#x2019;s my thesis: <strong>even if your company doesn&#x2019;t have a marketing team, you are doing marketing. Marketing is how you show up to the world, the way you talk to the industry and users, and the way your product gets discovered. You don&#x2019;t need a card carrying marketer in order to &#x201C;do&#x201D; marketing.&#xA0;</strong></p><p>But, if you don&#x2019;t have anyone who:&#xA0;</p><ol><li>Carries the brand or cares about how the company looks and feels to outsiders</li><li>Can effectively position the product (explain what it does and why use it on a website, blog, etc.)</li><li>Can help the company win more developers over&#xA0;</li></ol><p><strong>Then it&#x2019;s time to figure out how to do developer marketing. </strong>This can mean hiring DevX, or &#x201C;growth!&#x201D; or actual marketing, I don&#x2019;t care what you call it.</p><p>Worst case here:&#xA0;</p><ol><li>If you build it, they usually won&#x2019;t just come (unless you built OpenAI or a product with ridiculously good product-market fit)&#xA0;</li><li>You look messy and inconsistent externally, which doesn&#x2019;t engender trust</li><li>Some developers can use your product, but a lot of them either never hear of it or, if they do, they find it confusing or unappealing and move on quickly</li></ol><p>So, consider your company. Who might be doing &#x201C;developer marketing&#x201D; without the official role? How can you enable them to do it more? If you do hire a marketer, but feel that you&#x2019;ve been doing a decent job with your developer brand, make sure that the new marketer sits down with each of your shadow marketers to understand the look, feel, and language of your &#x201C;developer brand.&#x201D; Some of the best marketers I&#x2019;ve met don&#x2019;t have marketing titles. They&#x2019;re DevRel, widely read CEOs, devs or PMs on Twitter/X, and developers who frequent and write on HN.&#xA0;</p><h3 id="bad-3-try-to-out-market-a-weak-product">Bad 3: Try to out-market a weak product</h3><p>This can work in enterprise and consumer land &#x2014; you can out-market a weak product <em>in the short run</em>. Influencers can push thousands of units of products before consumers realize that they&#x2019;re wasting money. Sales teams can close annual subscriptions that might not renew.</p><p>But with developer products&#x2026;you can&#x2019;t do the same thing. The user (developer) is too intimate with your product and too picky to deal with junk. If the product isn&#x2019;t there, fix that first. This sounds obvious, but sadly isn&#x2019;t at many companies.&#xA0;</p><p>One big exception: if you&#x2019;re building an ecosystem, you can have a bad platform API and acquire developers<strong> <em>if</em> you are winning them users</strong>. This can be abided. But you can&#x2019;t have a weak developer <em>tool</em> and expect marketing to solve that problem.&#xA0;</p><p>So, don&#x2019;t:</p><ul><li>Over promise</li><li>Avoid investing in documentation or DevX&#xA0;</li><li>Try to be super cute without delivering value</li></ul><h3 id="bad-4-forget-about-the-other-audiences">Bad 4: Forget about the other audiences</h3><p>Developers don&#x2019;t build in a vacuum. Product managers, security teams, procurement, legal, etc. are all part of the process &#x2014; don&#x2019;t forget them. They can be surprising champions! Beware of alienating these audiences. Give them on-ramps with your product, even a landing page or friendly blog post that helps them understand <em>why</em> they should want to hang out with you. <strong>Giving a non-dev audience the chance to look cool championing your product is a win.&#xA0;</strong></p><p>Developers tend to consume developer products, but other stakeholders do access them and block or approve their use. A couple of examples of companies that have kept secondary audiences in mind:</p><ul><li>When it comes to <strong>Twilio</strong>, developers care about the API for sending texts, but a product manager is worrying about deliverability and ability to send to WhatsApp &#x2014; both audiences need to be won over.</li><li><strong>Figma</strong> (I know, designer product, but hang with me) has done an excellent job with extending to non-design audiences. The core product is readily accessible to non-designers (unlike many other design tools), so the non-core user still has a great experience in Figma. And FigJam is their product for everyone, bringing periphery or secondary users in as newly minted product champions.</li></ul><h2 id="so-what%E2%80%99s-good">So, what&#x2019;s good?&#xA0;</h2><h3 id="good-1-show-don%E2%80%99t-tell">Good 1: Show, don&#x2019;t tell</h3><p><strong>The consummate thing to learn about developer marketing is &quot;show, don&#x2019;t tell.&quot; </strong>Developers want to build and they&#x2019;re a sophisticated audience. Your goal is to <em>unblock </em>them with marketing, and literally showing the product in action is one of the best ways to do that.&#xA0;</p><p>Show the code snippet. Show the product doing something. Help the developer &#x201C;get it&#x201D; and they <em>will</em> get started.</p><p><strong>Example 1: Retool</strong>. ReTool&#x2019;s homepage shows the drag and drop power of their product in action, front and center. The video is even partially above the fold, so users barely have to scroll to see the mini-demo. </p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2024/02/retool.png" class="kg-image" alt="How to Do Developer Marketing That Doesn&apos;t Suck" loading="lazy" width="1600" height="592" srcset="https://blog.readme.com/content/images/size/w600/2024/02/retool.png 600w, https://blog.readme.com/content/images/size/w1000/2024/02/retool.png 1000w, https://blog.readme.com/content/images/2024/02/retool.png 1600w" sizes="(min-width: 720px) 720px"></figure><p><strong>Example 2: WorkOS</strong> showcases their APIs and language support:</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2024/02/workOS.png" class="kg-image" alt="How to Do Developer Marketing That Doesn&apos;t Suck" loading="lazy" width="1456" height="752" srcset="https://blog.readme.com/content/images/size/w600/2024/02/workOS.png 600w, https://blog.readme.com/content/images/size/w1000/2024/02/workOS.png 1000w, https://blog.readme.com/content/images/2024/02/workOS.png 1456w" sizes="(min-width: 720px) 720px"></figure><p><strong>Example 3: Astral. </strong>Maybe my favorite example, here&#x2019;s a screenshot from the Astral homepage. They&#x2019;re demonstrating just how fast RUFF (a Python linter) runs with a literal speed test &#x2014; excellent showing.</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2024/02/astral.png" class="kg-image" alt="How to Do Developer Marketing That Doesn&apos;t Suck" loading="lazy" width="1456" height="996" srcset="https://blog.readme.com/content/images/size/w600/2024/02/astral.png 600w, https://blog.readme.com/content/images/size/w1000/2024/02/astral.png 1000w, https://blog.readme.com/content/images/2024/02/astral.png 1456w" sizes="(min-width: 720px) 720px"></figure><h2 id="good-2-your-marketing-site-matters-but-your-docs-really-matter"><strong>Good 2: Your marketing site matters, but your docs REALLY matter</strong></h2><p>Say what you want, Stripe has built the most iconic developer brand of the last decade. What made them so amazing? My take: docs.</p><p>Great docs:</p><ol><li><strong>Are clear and well written, well ordered, and have good information architecture.</strong> It is really easy to end up with hairy, messy docs that are too long and hard to parse, or don&#x2019;t explain enough. Invest here.&#xA0;</li><li><strong>Have excellent samples to pull from quickly.</strong> Again, unblock your audience. If they want to try it out, make it easy for them. Add links to a product like Codesandbox or Replit to let people try the product out right away.&#xA0;&#xA0;&#xA0;</li><li><strong>I defer to ReadMe&#x2019;s </strong><a href="https://blog.readme.com/why-dx-matters-driving-api-success-with-a-user-first-approach/"><strong><u>guidance on building great docs</u></strong></a><strong>. </strong>They do it for tons of companies and Greg is one of the <a href="https://blog.readme.com/how-to-write-good-api-errors/"><u>most thoughtful DX people</u></a> in the business.&#xA0;</li></ol><h2 id="good-3-be-succinct"><strong>Good 3: Be succinct</strong></h2><p>This is the opposite of the first &#x201C;bad,&#x201D; which is to be tone-deaf, and is also part of what makes for good docs, but it needs to be repeated. <strong>Be ruthless about marketing copy.</strong> Eliminate jargon and business lingo. Speak plainly. Be technical. Speak like your audience.</p><p>How can you do this?</p><ol><li><strong>Conduct user interviews.</strong> It&#x2019;s so basic, but if you have developers who use your product, then interview them, understand them, and literally record their words. Make sure your copy matches their tone (as a group). So many companies don&#x2019;t talk to users. Don&#x2019;t be that company!</li><li><strong>Use the </strong><a href="https://hemingwayapp.com/?ref=blog.readme.com"><strong><u>Hemingway tool</u></strong></a><strong> to trim your writing down. </strong>Or try an AI writing tool. There are a lot of them right now. Somehow I didn&#x2019;t use one to write this post and feel like that was a little dumb.&#xA0;</li><li><strong>Run content by your dev team.</strong> If they cringe, edit.&#xA0;</li></ol><h2 id="good-4-high-value-content-marketing"><strong>Good 4: High-value content marketing</strong></h2><p>Fluffy content marketing like listicles are not going to pay off for your team. Do content marketing like <a href="https://fly.io/?ref=blog.readme.com"><u>Fly.io</u></a>, <a href="https://www.honeycomb.io/blog/future-ops-platform-engineering?ref=blog.readme.com"><u>Honeycomb</u></a>, or <a href="https://earthly.dev/?ref=blog.readme.com"><u>Earthly.dev</u></a>.</p><p>What makes it good?</p><p>They&#x2019;re serving up steaks. Their writing is technical and they understand what they are talking about. There aren&#x2019;t paragraphs of fluff to wade through in order to get something of value. It&#x2019;s harder to write technical content with depth, but will drive your content engine: fueling impressions, SEO boost, and overall growth of your audience. Writing puff pieces to try and fill a content calendar won&#x2019;t get you anywhere.</p><p>Fly.io has great content. These articles are <strong>specific</strong> and they <strong>explain how to solve a real problem.</strong> Best of all, they are not written for SEO bots, but for real humans. <a href="https://fly.io/blog/soc2-the-screenshots-will-continue-until-security-improves/?ref=blog.readme.com"><u>Here&#x2019;s a great example</u></a> &#x2014; this is a 25 minute read, but with a lot of real, valuable information. Yes, SEO will pick it up because there are keywords in it, but that post is written for a human to consume. </p><h2 id="good-5-provide-a-variety-of-on-ramps"><strong>Good 5: Provide a variety of on ramps&#xA0;</strong></h2><p>Provide everything from drag and drop or copy/paste integration options to totally raw endpoints. Why? Developer use cases vary.&#xA0;</p><p>Stripe is, again, a great example here. They have options and instructions for everything from adding payments with no code to building the full, robust, customized integration with their APIs. You might be surprised to find that often the people using the no or low-code options for your product <em>are actually highly technical developers</em>! Your product is often a small step in a bigger project, and making it really easy to integrate with or build on can help them move on to other technical challenges.&#xA0;</p><p>Your audience may also have different levels of skill and/or <em>desire </em>to build with your product. Be ready for both! Provide:</p><ul><li>Samples of varying level</li><li>Quick starts</li><li>Copy paste options&#xA0;</li></ul><p>See Stripe&#x2019;s many levels of getting started:</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2024/02/stripe.png" class="kg-image" alt="How to Do Developer Marketing That Doesn&apos;t Suck" loading="lazy" width="1456" height="816" srcset="https://blog.readme.com/content/images/size/w600/2024/02/stripe.png 600w, https://blog.readme.com/content/images/size/w1000/2024/02/stripe.png 1000w, https://blog.readme.com/content/images/2024/02/stripe.png 1456w" sizes="(min-width: 720px) 720px"></figure><p>And Plaid&#x2019;s quick-start guides:</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2024/02/plaid.png" class="kg-image" alt="How to Do Developer Marketing That Doesn&apos;t Suck" loading="lazy" width="1456" height="817" srcset="https://blog.readme.com/content/images/size/w600/2024/02/plaid.png 600w, https://blog.readme.com/content/images/size/w1000/2024/02/plaid.png 1000w, https://blog.readme.com/content/images/2024/02/plaid.png 1456w" sizes="(min-width: 720px) 720px"></figure><h1 id="let%E2%80%99s-conclude"><strong>Let&#x2019;s conclude</strong></h1><p>I hope this guide is helpful! What else would you add to the list? Any further sins or virtues of developer marketing that you consider?</p><p>Send us your examples of excellent developer marketing &#x2014; whether you&#x2019;ve built them as a team, or you&#x2019;re admiring them from afar! We want to showcase more companies succeeding at this work. Don&#x2019;t be a stranger: ceci@calyx.consulting.</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2024/02/unnamed--2--1.png" class="kg-image" alt="How to Do Developer Marketing That Doesn&apos;t Suck" loading="lazy" width="225" height="200"></figure><p><em>Ceci runs Calyx Consulting with her business partner Paige, where they help companies ranging from Stripe, Airtable, and Zoom to earlier stage startups, like Replit and Render, with developer go-to-market. She is currently the fractional CMO at Prefect, a data orchestration platform. Previously she built and ran platform marketing at Slack, invested in developer tools at Bessemer Venture Partners, and helped build the platform at Box as a DevRel.&#xA0;</em></p><h2 id="thank-you-ceci">Thank you, Ceci!&#xA0;</h2><p>If you want to learn more about Ceci, you can check out <a href="https://calyx.substack.com/p/how-to-do-developer-marketing-that?ref=blog.readme.com"><u>this post in its original home</u></a>, browse the rest of <a href="https://calyx.substack.com/?ref=blog.readme.com"><u>the Calyx Consulting Substack</u></a>, check out the <a href="https://www.calyx.consulting/?ref=blog.readme.com"><u>Calyx Consulting site</u></a>, or <a href="https://twitter.com/CeciStalls?ref=blog.readme.com"><u>follow Ceci on X</u></a>.&#xA0;</p><p></p>]]></content:encoded></item><item><title><![CDATA[ReadMe in Review: January 2024]]></title><description><![CDATA[<p>Happy Groundhog Day! While you&#x2019;re waiting to find out if we have six more weeks of winter, why don&#x2019;t you take a look at our news and updates from January? We&#x2019;ve got new features, improvements, and even some events on the horizon. Read on</p>]]></description><link>https://blog.readme.com/readme-in-review-january-2024/</link><guid isPermaLink="false">65baaa7c8e7a9e0001f08fcf</guid><category><![CDATA[ReadMe Journey]]></category><category><![CDATA[Product Updates]]></category><dc:creator><![CDATA[Miche Nickolaisen]]></dc:creator><pubDate>Fri, 02 Feb 2024 18:00:50 GMT</pubDate><media:content url="https://blog.readme.com/content/images/2024/01/Groundhog-full.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.readme.com/content/images/2024/01/Groundhog-full.png" alt="ReadMe in Review: January 2024"><p>Happy Groundhog Day! While you&#x2019;re waiting to find out if we have six more weeks of winter, why don&#x2019;t you take a look at our news and updates from January? We&#x2019;ve got new features, improvements, and even some events on the horizon. Read on to see what our team got up to last month, find out how to make the most of those updates, and where to catch us live (virtually <em>and</em> in person):&#xA0;</p><h2 id="more-nested-levels-%F0%9F%AA%BA">More Nested Levels &#x1FABA;</h2><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2024/02/second-level_subpage_nesting-1.gif" class="kg-image" alt="ReadMe in Review: January 2024" loading="lazy" width="492" height="702"></figure><p>Looking for more flexibility and options in how you structure your Guides and API Reference? We&#x2019;ve got good news for you: we&#x2019;ve introduced an additional level of nesting! That makes for a total of three levels of pages per category. Now, any parent page can have subpages and those subpages can have nested (second-level) subpages. You can <a href="https://docs.readme.com/main/changelog/additional-level-of-sidebar-nesting?ref=blog.readme.com"><u>read more here</u></a> and see it for yourself by checking the Guides or API Reference sidebar in your dashboard.&#xA0;</p><h2 id="webhooks-%F0%9F%AA%9D">Webhooks &#x1FA9D;</h2><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2024/02/webhooks_for_oas_3.1.png" class="kg-image" alt="ReadMe in Review: January 2024" loading="lazy" width="2000" height="1348" srcset="https://blog.readme.com/content/images/size/w600/2024/02/webhooks_for_oas_3.1.png 600w, https://blog.readme.com/content/images/size/w1000/2024/02/webhooks_for_oas_3.1.png 1000w, https://blog.readme.com/content/images/size/w1600/2024/02/webhooks_for_oas_3.1.png 1600w, https://blog.readme.com/content/images/2024/02/webhooks_for_oas_3.1.png 2000w" sizes="(min-width: 720px) 720px"></figure><p>Another popular request has been support for <a href="https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md?ref=blog.readme.com"><u>OpenAPI webhooks</u></a>, so we&#x2019;re thrilled to announce that webhooks support is officially live in our API Reference! This means that now, if you sync an API definition with us that contains webhook definitions, ReadMe will render those definitions as pages that look like the API Reference pages you know and love (rather than ignoring your webhook definitions, which is what happened previously). Right now, we support OpenAPI through v3.1.0 &#x2014; you can keep an eye on our evolving support for the OpenAPI Specification at our <a href="https://docs.readme.com/main/docs/openapi-compatibility-chart?ref=blog.readme.com"><u>OpenAPI Compatibility Chart</u></a>. And if you want to try it out, you can use <a href="https://github.com/OAI/OpenAPI-Specification/blob/main/examples/v3.1/webhook-example.json?ref=blog.readme.com"><u>this example webhooks definition</u></a>.&#xA0;</p><h2 id="readme-labs-%F0%9F%A7%AA">ReadMe Labs &#x1F9EA;</h2><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2024/02/readme_labs.png" class="kg-image" alt="ReadMe in Review: January 2024" loading="lazy" width="2000" height="1061" srcset="https://blog.readme.com/content/images/size/w600/2024/02/readme_labs.png 600w, https://blog.readme.com/content/images/size/w1000/2024/02/readme_labs.png 1000w, https://blog.readme.com/content/images/size/w1600/2024/02/readme_labs.png 1600w, https://blog.readme.com/content/images/2024/02/readme_labs.png 2000w" sizes="(min-width: 720px) 720px"></figure><p>Want to enable experimental features and be among the first ReadMe users to try them? We&#x2019;ve added ReadMe Labs to the project dashboard, which lets you test experimental features, starting with GraphQL. You can find it under the &#x201C;Admin&#x201D; section of the &#x201C;Configuration&#x201D; settings panel &#x2014; you might also notice that we&#x2019;ve reorganized that sidebar to make it easier to find the settings you&#x2019;re looking for.&#xA0;</p><h2 id="reusable-content-%E2%99%BB%EF%B8%8F">Reusable Content &#x267B;&#xFE0F;</h2><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2024/02/Docs_Used-in-Menu-Close-Up.png" class="kg-image" alt="ReadMe in Review: January 2024" loading="lazy" width="1756" height="670" srcset="https://blog.readme.com/content/images/size/w600/2024/02/Docs_Used-in-Menu-Close-Up.png 600w, https://blog.readme.com/content/images/size/w1000/2024/02/Docs_Used-in-Menu-Close-Up.png 1000w, https://blog.readme.com/content/images/size/w1600/2024/02/Docs_Used-in-Menu-Close-Up.png 1600w, https://blog.readme.com/content/images/2024/02/Docs_Used-in-Menu-Close-Up.png 1756w" sizes="(min-width: 720px) 720px"></figure><p>We <a href="https://blog.readme.com/reusable-content-comes-to-readme/"><u>launched Reusable Content</u></a> in December, and we&#x2019;ve been thrilled with the feedback so far! We have, of course, continued to perfect it &#x2014; updates this month included adding a link to manage Reusable Content from within the editor and adding support for renaming Reusable Content blocks. If you want to learn more about Reusable Content and how to set it up, <a href="https://docs.readme.com/main/docs/reusable-content?ref=blog.readme.com"><u>head to the docs</u></a> to get started.&#xA0;</p><h2 id="api-reference-guides-and-docs-%F0%9F%93%9A">API Reference, Guides, and Docs &#x1F4DA;</h2><p>We rolled out lots of updates across these three areas in January:</p><ul><li>We&#x2019;ve added improvements in how the API Reference handles null values in enums from your OpenAPI file</li><li>The API Reference response schema examples now expand by default instead of being nested in a modal (you can change this in your configuration, if you prefer the previous setting)</li><li>In your Docs, the deprecated banner now spans the full width of the page</li><li>We&#x2019;ve refactored the mobile page navigation in Guides and Reference to support more interactions and additional levels of nesting</li><li>We&#x2019;ve improved the consistency in navigation between the Guides and the Reference sections</li><li>In your Guides and API References, there&#x2019;s now <a href="https://docs.readme.com/main/docs/redirect-scenarios?ref=blog.readme.com#updated-page-slug-redirects"><u>an automatic redirect</u></a> after the slug is changed on nested pages</li></ul><h2 id="other-readme-changes-and-updates-%F0%9F%AA%84">Other ReadMe changes and updates &#x1FA84;</h2><ul><li>All plans can now choose between setting Dark/Light/Auto as the default theme</li><li>Search results now include the contents of your HTML tables</li><li>Various improvements to table views in Developer Dashboard&#xA0;</li><li>Our Slack integration now notifies you when an anonymous user makes suggested edits</li><li>Updated and improved sidebar performance in the Editor for users with a large amount of categories and/or pages</li></ul><h2 id="meetups-events-%F0%9F%8D%BB">Meetups &amp; events &#x1F37B;</h2><p>If you&#x2019;ll be going to <a href="https://www.developerweek.com/?ref=blog.readme.com"><u>Developer Week</u></a> later this month, come say hi. Our CEO, Greg, will be discussing how to improve your DX (without having to overhaul your API) on Friday at 10 AM PST. Can&#x2019;t make the event in person? That&#x2019;s fine &#x2014; you can also join for the virtual version on the 29th, also at 10AM PST. We hope to see you there!</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.readme.com/content/images/2024/02/SNAP1B_0048.jpg" class="kg-image" alt="ReadMe in Review: January 2024" loading="lazy" width="2000" height="1333" srcset="https://blog.readme.com/content/images/size/w600/2024/02/SNAP1B_0048.jpg 600w, https://blog.readme.com/content/images/size/w1000/2024/02/SNAP1B_0048.jpg 1000w, https://blog.readme.com/content/images/size/w1600/2024/02/SNAP1B_0048.jpg 1600w, https://blog.readme.com/content/images/2024/02/SNAP1B_0048.jpg 2000w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Laura and Manna, making the most of photo booth props</span></figcaption></figure><p>In other event news, we had our company holiday party and it was, as usual, a blast, complete with a skating rink visit and a skiing-themed photo booth. We&#x2019;re already looking forward to next year!&#xA0;</p><p>That&#x2019;s all for this round. If you want more details on the product updates and improvements, head <a href="https://docs.readme.com/main/changelog?ref=blog.readme.com"><u>to the ReadMe changelog</u></a> to get the scoop and stay up to date as changes are announced. We&#x2019;ll keep you posted on any upcoming events or other news, but in the meantime, if you have any questions, feel free to <a href="https://mail.google.com/mail/?view=cm&amp;fs=1&amp;tf=1&amp;to=support%40readme.io&amp;ref=blog.readme.com"><u>reach out to our team</u></a>. Stay warm, and enjoy your February!</p>]]></content:encoded></item><item><title><![CDATA[API Documentation 101: Everything You Need to Get Started]]></title><description><![CDATA[<p>Ever tried to put together a complex piece of furniture without the instructions? We all know that&#x2019;s typically a recipe for disaster. But that&#x2019;s exactly what some companies expect developers to do, when they have API documentation that&#x2019;s hard to find, poorly maintained, or</p>]]></description><link>https://blog.readme.com/api-documentation-101-everything-you-need-to-get-started/</link><guid isPermaLink="false">65b4064d3bb93b0001d2ae9b</guid><category><![CDATA[API Tips]]></category><dc:creator><![CDATA[Miche Nickolaisen]]></dc:creator><pubDate>Fri, 26 Jan 2024 19:48:29 GMT</pubDate><media:content url="https://blog.readme.com/content/images/2024/01/Startup-School.psd.full.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.readme.com/content/images/2024/01/Startup-School.psd.full.png" alt="API Documentation 101: Everything You Need to Get Started"><p>Ever tried to put together a complex piece of furniture without the instructions? We all know that&#x2019;s typically a recipe for disaster. But that&#x2019;s exactly what some companies expect developers to do, when they have API documentation that&#x2019;s hard to find, poorly maintained, or difficult to understand&#x2026;or worse yet, don&#x2019;t have any API documentation at all &#x1F631;</p><p>As<a href="https://twitter.com/rubenv/status/578927198922518528?ref=blog.readme.com"> <u>Ruben Vermeersch said</u></a>, &#x201C;Your APIs are only as good as the documentation that comes with them. Invest time in getting docs right.&#x201D; If you want developers to successfully use your API and enjoy the experience of using it (and you do, or the API wouldn&#x2019;t exist in the first place), your documentation needs to <a href="https://blog.readme.com/onboarding-users-with-personalized-docs/"><u>get them to first call as fast as possible</u></a>.&#xA0;</p><p>Whether you&#x2019;re learning the ropes for the first time, looking for a refresher course, or want to improve your existing API documentation, we&#x2019;ll walk you through what exactly API documentation is, why writing good docs matters, and share our best practices and tips for writing it along the way. Let&#x2019;s get started &#x1F4AA;</p><h2 id="what-is-api-documentation-%F0%9F%93%96">What is API documentation? &#x1F4D6;</h2><p>For most developers, API docs are a means to an end. Devs want all the details about how to use your API and successfully integrate it into their application of choice. At the same time, they&#x2019;re often busy people who don&#x2019;t have the time or attention span to sort through disorganized or unclear information. This means you have to be strategic about how you present your API information.&#xA0;</p><p><strong>Think about your API docs like a reference manual:&#xA0;</strong></p><ul><li>A table of contents and clear hierarchy of information indicates where to find important information</li><li>Topics are first outlined at a high level</li><li>Sub-topics have more details and examples to hit your points home&#xA0;</li></ul><p>End users should be able to get the gist of things by skimming your docs, but they should also have the option to dive deeper into the details if and when issues come up.</p><p>In the past, conversations around APIs have mostly been focused on usability and reliability issues &#x2014; poor design, uptime, latency, etc. These are, of course, critically important; it doesn&#x2019;t matter how good your API documentation is if the API itself is badly designed or unreliable. Conversely, though, even the best API imaginable will be painful to use without documentation that&#x2019;s comprehensive and easy to navigate, ideally with code samples and an interactive playground to give new users a quick way to get started.&#xA0;</p><h2 id="why-document-apis-%F0%9F%A4%94">Why document APIs? &#x1F914;</h2><p>Especially if you&#x2019;re approaching API documentation from a non-technical background, you might wonder why it&#x2019;s so important. After all, developers are&#x2026;developers, right? They can pick things up quickly, so surely it doesn&#x2019;t matter if you don&#x2019;t have the best docs in the world, as long as they&#x2019;re acceptable. However, as usual, that&#x2019;s not the full picture.&#xA0;</p><p><strong>Not only are developers a complex and diverse group of individuals, but they are often the decision makers when it comes to API adoption, and/or critical stakeholders in the integration process. </strong>Documentation should <em>always</em> be <a href="https://blog.readme.com/why-dx-matters-driving-api-success-with-a-user-first-approach/"><u>optimized for developer experience</u></a>. Good developer experience helps to decrease onboarding time, increase user satisfaction, and improve adoption rates.</p><p>It&#x2019;s also worth noting that<a href="https://hbr.org/2021/04/apis-arent-just-for-tech-companies?ref=blog.readme.com"> <u>API-led or API-first companies are becoming more and more mainstream</u></a>. If your docs are clearer and easier to use than others in your industry, you have a better chance of becoming the first choice for whatever use case your API serves.</p><p><strong>Finally, good documentation saves your team money and effort in the long run.</strong> Comprehensive references can decrease the amount of support tickets and time spent training new users. One example is ReadMe <a href="https://readme.com/customers/drivewealth?ref=blog.readme.com"><u>customer DriveWealth</u></a>, who found that a manual process for updating documentation created more support tickets, as customers would occasionally see outdated information before the team could finish updating it.&#xA0;</p><h2 id="how-does-api-documentation-impact-developer-experience-%F0%9F%A7%91%E2%80%8D%F0%9F%92%BB">How does API documentation impact developer experience? <strong>&#x1F9D1;&#x200D;&#x1F4BB;</strong></h2><p><strong>Your goal is for your API documentation to establish a great developer experience.</strong> On the most basic level, your documentation should be clear and thorough, accurate and up-to-date, and simple enough for someone without any prior API experience to use.&#xA0;</p><p>That&#x2019;s the bare minimum, though. Ideally, a documentation hub will differentiate between how-to guides and <a href="https://docs.readme.com/main/docs/adding-your-api-reference?ref=blog.readme.com"><u>API references</u></a>, contain <a href="https://docs.readme.com/main/docs/recipes?ref=blog.readme.com"><u>code snippets</u></a> with step-by-step tutorials built around those snippets, and include an interactive playground to help developers start using the information right away. If you really want to go the extra mile, you can add community elements so developers can interact with other users (and your team) to get the information they need.&#xA0;</p><p>These small things add up when it comes to API adoption. <strong>Remember: if your API docs offer a subpar developer experience, your end users might just choose a competitor API instead.</strong></p><p><strong>Want to learn more about developer experience?</strong> Start here:&#xA0;</p><ul><li><a href="https://blog.readme.com/why-dx-matters-driving-api-success-with-a-user-first-approach/"><u>Why DX Matters: Driving API Success with a User-First Approach</u></a></li><li><a href="https://www.commonroom.io/resources/ultimate-guide-to-developer-experience/?ref=blog.readme.com"><u>Guide to Developer Experience</u></a></li><li><a href="https://blog.readme.com/webinar-recap-apis-aws/"><u>Webinar Recap &#x1F3A4; Developer Experience, API Performance, and More with AWS</u></a> (with our very own CEO!)</li><li><a href="https://blog.readme.com/hubs-we-love-little-details-with-a-big-dx-impact/" rel="noreferrer">Hubs We Love &#x2764;&#xFE0F; Little Details With a Big DX Impact</a></li></ul><h2 id="how-to-get-started-documenting-your-api-%E2%9C%8D%EF%B8%8F">How to get started documenting your API &#x270D;&#xFE0F;</h2><p><a href="https://dev.to/rachfop/crash-course-in-apis-for-technical-writers-25gm?ref=blog.readme.com"><u>Writing API documentation</u></a> can seem daunting &#x2014; there&#x2019;s just so much information to distill. That&#x2019;s why many in the API space rely on tools like<a href="https://blog.readme.com/how-to-use-openapi-and-swagger-spec-for-documentation/"> <u>OpenAPI</u></a> as a starting point. OpenAPI offers a powerful ecosystem of tools to get comprehensive API documentation up and running quickly, so users can update their docs as the API evolves.</p><p><strong>Whether you opt for OpenAPI or decide to document your API manually, follow these four steps to get going:</strong></p><ol><li><strong>Know your audience.</strong> Everyone knows that API docs are primarily for developers. But not all developers have the same level of experience, and it&#x2019;s becoming increasingly common for people in other roles to also interact with APIs in their day-to-day work. As a best practice, aim to publish documentation that can be used by people of all skill levels.</li><li><strong>Understand the API adoption journey. </strong>Put yourself in the shoes of a developer who&#x2019;s never come across your product before. What are the use cases they&#x2019;re solving for? What other ways might they use your API in the future? Keep asking yourself this series of questions and map out the user journey, step-by-step. This can help you create an outline and structure for your documentation.</li><li><strong>Edit and edit again</strong>. No documentation is perfect at the outset. It goes without saying that you should use spell check and aim to keep sentences and paragraphs short. You can also read your docs out loud &#x2014; any confusing spots or unnecessarily long sentences will become much more obvious. Do they make sense? Is there any missing context or information?&#xA0;</li><li><strong>Structure for skimmability.</strong> Even if the content itself is good, it will probably get skipped over if it&#x2019;s all one massive block of text without any clear hierarchy of information. Aim to create short paragraphs, bold important information, use numbered and/or bulleted lists when it makes sense, and have clear headers and subheaders to break up the text.&#xA0;</li><li><strong>Peer review.</strong> Despite your editing efforts, there are bound to be mistakes you don&#x2019;t find. Set up a peer review system where teammates read your documentation, test out your coding samples, and work through your tutorials. You&#x2019;ll be glad you had a second pair of eyes to examine your docs before releasing them to the public.</li></ol><h3 id="fundamental-components-of-api-documentation-%F0%9F%8C%9F">Fundamental components of API documentation &#x1F31F;</h3><p>There are <a href="https://blog.readme.com/types-of-documentation/"><u>plenty of ways to provide API guidance to your end-users</u></a>: topical guides, tutorials, and support forums, to name a few. <strong>No matter what you go with, there should always be these essential sections in your docs:</strong></p><ul><li><strong>Authentication: </strong>Each API handles authentication differently, so it&#x2019;s vital to describe how your API does authentication upfront. Pretend you&#x2019;re a new developer and showcase the authentication process in detail, from initializing API keys to how to send them in your API requests, and anything else they might need to know.</li><li><strong>Error messages: </strong>Listing out every possible error message won&#x2019;t make for very useful docs. Providing background on your errors and how to troubleshoot once one occurs is much more practical. <em>(Learn more about </em><a href="https://blog.readme.com/how-to-write-good-api-errors/"><em><u>how to write good API errors here</u></em></a><em>!)</em></li><li><strong>Endpoints:</strong> Help your users understand the best use cases for each endpoint and/or set of endpoints. The same use case might have multiple ways to get the job done, so it&#x2019;s critical to distinguish each of them. The more explicit, the better!</li><li><strong>Terms of use</strong>: Yes, unfortunately, you have to add in some legalese. But think of it as a formal way of letting developers know how to properly use your services. This section is also the perfect place to talk about API rate limits and any other constraints they should keep in mind.</li><li><strong>Changelog: </strong>An API is never &#x201C;finished,&#x201D; so you need to establish a process for updating documentation as your API evolves. This keeps your docs fresh and shows developers that your API is getting the engineering attention it deserves.</li></ul><h3 id="successful-api-calls-%E2%98%8E%EF%B8%8F">Successful API calls &#x260E;&#xFE0F;</h3><p><strong>In addition to the fundamentals, you&#x2019;ll want to get specific about what users should expect from a successful API call. </strong>To ensure you&#x2019;re not leaving them in the lurch, be sure to include:</p><ul><li><strong>HTTP status code and message examples</strong>: Every <a href="https://blog.readme.com/how-to-write-good-api-errors/"><u>error message</u></a> should be documented alongside its HTTP status code, and the messages themselves should include detailed stack trace information and details on fixing the issue.</li><li><strong>Request parameter examples</strong>: Even if your API is extremely intuitive, providing request examples is always a good idea. Beyond explaining what each parameter does, give a real-life example for each one, so it&#x2019;s crystal-clear what the API expects.</li><li><strong>Code samples and tutorials</strong>: Developers usually have an end goal in mind when they begin the API integration process. So why not put some code samples of the most common use cases front and center? Each sample should have detailed context for each step, as if you&#x2019;re taking them on a live tour of your API. If you have the time, you can insert hints or tips on how to adjust the example to work for other related use cases.</li><li><strong>SDK examples</strong>: SDKs are a great way to abstract away the complexity of HTTP APIs. SDKs may include built-in types or other kinds of documentation, but that may only go so far. Be sure to reference relevant SDK examples so that users can build with your SDK successfully.</li><li><strong>Static vs interactive documentation:</strong> Think about buying a car &#x2014; rather than just reading about it online, you want to give it a test drive. Developers also want to try before they &#x201C;buy.&quot; They want to know that your API works for their use case and won&#x2019;t cause any major issues before proceeding with the integration. To ease their worries, give end-users a playground or sandbox they can use to test out responses to various endpoints without deploying real code.</li></ul><h2 id="all-together-now-%E2%9C%85">All together now... &#x2705; </h2><p><strong>In a nutshell, outstanding API documentation is straightforward and educational.</strong> Review these<a href="https://blog.readme.com/best-practices-for-writing-api-docs-and-keeping-them-up-to-date/"> <u>best practices for writing API documentation</u></a> to ensure your docs are checking off all the boxes. Your docs should be:</p><ol><li>Making your developers&#x2019; lives easier</li><li>Digestible no matter the audience&#x2019;s level of technical expertise</li><li>Well-planned and in a logical order</li><li>In an easily navigable layout</li><li>Written with appropriate, popular use cases in mind</li><li>Filled with examples, tutorials, sample code, and error handling</li><li>Clear about terms of use and limitations</li><li>Free of spelling and grammatical mistakes that could confuse the reader</li><li>Interactive, with real-life examples</li><li>Maintained with every release, with updates recorded in a changelog</li></ol><h2 id="what-tools-should-i-be-using-to-document-my-api-%F0%9F%9B%A0">What tools should I be using to document my API? &#x1F6E0;</h2><p>When you&#x2019;re starting, it&#x2019;s often best to use OpenAPI to document your spec. Instead of writing reference pages by hand, users can import OpenAPI files to reference pages and push changes to docs in a few seconds.</p><p>Once you&#x2019;ve got a baseline API reference, it&#x2019;s important to decide whether you&#x2019;re going to use static or interactive documentation. Interactive documentation lets developers make live calls to your API straight from your docs. This form of documentation eliminates the need for a full developer environment in order to make API calls, saving developers time and frustration. <strong>While static documentation might be a simpler way to get started, giving live results is a much quicker way to showcase what&#x2019;s possible with your API.</strong></p><h2 id="ready-to-get-started-%F0%9F%92%AA">Ready to get started? &#x1F4AA;</h2><p><strong>Outstanding API documentation is the cornerstone of a superb developer experience.</strong> If your docs aren&#x2019;t something developers rave about, you&#x2019;re limiting your API&#x2019;s potential before you&#x2019;ve even started. Word of mouth is always the best advertising, so why not get that going for your API?&#xA0;</p><p>If you&#x2019;re looking to get started &#x2014; whether you&#x2019;re building from the ground-up or revamping stale documentation &#x2014; we&#x2019;d love to help. Our team is always happy to answer questions about API documentation and how you can improve yours. You can <a href="mailto:support@readme.io"><u>reach out here to get a demo and learn more</u></a>, or <a href="https://dash.readme.com/signup?ref=blog.readme.com"><u>head here</u></a> to sign up for a free trial. </p>]]></content:encoded></item><item><title><![CDATA[DriveWealth's Justin Jenkins on DX & Improving Your Docs]]></title><description><![CDATA[<p>At ReadMe, we think a lot about creating a great experience for the developers that are building with our customers&#x2019; APIs. But we care a lot about the folks responsible for those APIs, too! Behind the scenes of every developer hub, there&#x2019;s a team of engineers, product</p>]]></description><link>https://blog.readme.com/drivewealths-justin-jenkins-on-dx-improving-your-docs/</link><guid isPermaLink="false">65820b6c9507be0001fa8407</guid><category><![CDATA[Behind the Docs]]></category><category><![CDATA[Developer Experience]]></category><dc:creator><![CDATA[Miche Nickolaisen]]></dc:creator><pubDate>Wed, 17 Jan 2024 16:00:28 GMT</pubDate><media:content url="https://blog.readme.com/content/images/2023/12/Library.psd.full.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.readme.com/content/images/2023/12/Library.psd.full.png" alt="DriveWealth&apos;s Justin Jenkins on DX &amp; Improving Your Docs"><p>At ReadMe, we think a lot about creating a great experience for the developers that are building with our customers&#x2019; APIs. But we care a lot about the folks responsible for those APIs, too! Behind the scenes of every developer hub, there&#x2019;s a team of engineers, product managers, and technical writers who make the magic happen &#x2728;</p><p>Today, we&apos;re talking to Justin Jenkins from <a href="https://www.drivewealth.com/?ref=blog.readme.com" rel="noreferrer">DriveWealth</a>, who provides APIs that power investing for 100+ fintechs, brokers, and advisors across the world. </p><h2 id="can-you-share-a-little-bit-about-how-you-wound-up-in-your-current-job-and-what-your-career-trajectory-has-been-like-have-there-been-any-surprise-developments-over-time-for-example-jobs-or-projects-that-you-wouldn%E2%80%99t-have-predicted-you-would-be-doing-but-were-drawn-to-and-found-you-enjoyed-or-something-similar">Can you share a little bit about how you wound up in your current job and what your career trajectory has been like? Have there been any surprise developments over time? For example, jobs or projects that you wouldn&#x2019;t have predicted you would be doing, but were drawn to and found you enjoyed, or something similar?</h2><p>Howdy! Yes, right now at DriveWealth my official title is &#x201C;Sr. Product Manager, Partnerships&#x201D; but at most startups, this just qualifies me as &#x201C;I can do a little bit of everything.&#x201D; My background is in development, specifically backend engineering working with large data sets and REST services. After building this experience in development, I started working with clients pre- and post-sale. I&#x2019;ve always enjoyed working with clients and helping to solve their issues, and one of the ways we do that at DriveWealth is with our developer documentation.</p><p>Around Christmas 2022, we had a goal of redoing our documentation to be all in OpenAPI. We completed 50+ different public routes with different combinations in six weeks. On February 8 2023, <a href="https://developer.drivewealth.com/?ref=blog.readme.com" rel="noreferrer">the documentation</a> launched to ReadMe via OpenAPI.&#xA0; I enjoyed this project very much because the long-term result is that we can make updates easier and faster than ever before.</p><h2 id="what-drew-you-to-working-on-documentation-and-learning-more-about-developer-experience">What drew you to working on documentation and learning more about developer experience?&#xA0;</h2><p>When working for startups, no matter what your official role is, one of your unofficial duties is to find and fix issues. Our developer documentation was one of the things I knew we could improve to help our external developers. The common goal DriveWealth and I had was to reduce overall integration times of our partners. Developers asking less questions on Slack means more efficient development cycles and our partners being able to launch products faster.&#xA0;</p><h2 id="did-you-have-any-strong-opinions-about-dx-going-into-these-projects-based-on-your-own-experiences">Did you have any strong opinions about DX going into these projects, based on your own experiences?&#xA0;</h2><p>Having only been a developer and not in a position to think about other developers and their experience, I didn&#x2019;t have strong opinions on DX when we started. I did have an opinion on needing a solution to solve our internal/external documentation.</p><h2 id="what%E2%80%99s-the-most-surprising-thing-you%E2%80%99ve-learned-in-taking-on-these-more-dx-focused-projects">What&#x2019;s the most surprising thing you&#x2019;ve learned in taking on these more DX-focused projects?&#xA0;</h2><p>That no organization out there has a formula that will work for all engineers or developers. The biggest thing we can do is recognize this fact and constantly get feedback from the developers/engineers in question to see where tooling, communication, and productivity can be improved.</p><h2 id="are-there-any-misconceptions-you-had-ahead-of-time-that-you%E2%80%99ve-learned-more-about-through-this-work">Are there any misconceptions you had ahead of time that you&#x2019;ve learned more about through this work?&#xA0;</h2><p>I would say a misconception is that, &#x201C;If you build it, they will come.&#x201D; The fact is, just because you add a tool or make a process easier doesn&#x2019;t mean anyone will actually use or follow it. Let&#x2019;s be honest, some developers are lazy &#x2014; not all, but some! And even if they aren&#x2019;t, they&#x2019;re probably busy and have a million other things on their plate. So if using your new process or tool means learning something new, you need to remember that and keep it in mind as you introduce and onboard users.&#xA0;</p><h2 id="what-are-the-most-important-lessons-you%E2%80%99ve-learned-and-how-have-they-impacted-the-way-you-approach-your-day-to-day-work">What are the most important lessons you&#x2019;ve learned, and how have they impacted the way you approach your day-to-day work?</h2><p>I&#x2019;ve learned that context in reviewing a PR on publicly facing documentation is extremely important. The more information a developer can provide on the &#x201C;why&#x201D; behind a change, the better. As a reviewer, we may not know the context or may have lost the context, because it was discussed weeks ago. When developers err on the side of providing more information, it helps the content reviewers review more quickly and give better feedback when necessary.&#xA0;</p><h2 id="what-are-your-favorite-resources-for-learning-more-about-developer-experience-apis-and-documentation">What are your favorite resources for learning more about developer experience, APIs, and documentation?&#xA0;</h2><p>My favorite resource is attending conferences or like-minded meetups. I can always read about different approaches to things like developer experience, APIs, and documentation, but that information is always in a silo. I learn the best from those road-to-rubber moments that come from speaking to others at more mature organizations and their methods. Hearing about real applicable experience/metrics from others is a great way to better inform our organization of the specific benefits of a process and/or tool.&#xA0;</p><h2 id="what-would-be-your-top-piece-of-advice-for-someone-who-wants-to-learn-more-about-these-kinds-of-projects-and-incorporate-them-into-their-work">What would be your top piece of advice for someone who wants to learn more about these kinds of projects and incorporate them into their work?</h2><p>I&#x2019;d say if you&apos;re working in developer experience, then the goal is to be constantly improving. Just because you get to a state where things are good doesn&#x2019;t mean you should stop &#x2014; change your POV a little and you can probably find something else that needs improvement. And have fun with it!&#xA0;</p><h2 id="thank-you-justin">Thank you, Justin! </h2><p>We&apos;re excited to hear more about the new developments at DriveWealth, and you can learn more about their experience with ReadMe <a href="https://readme.com/customers/drivewealth?ref=blog.readme.com" rel="noreferrer">in their customer story</a>. </p><h3 id="more-about-justin"><em>More about Justin: </em><br></h3><p><em>Hey, I&#x2019;m Justin Jenkins, a Senior Product Manager, Head of Partnerships at DriveWealth. My passions are solving complicated problems with tactical solutions for people and technology. In my spare time, I like to think I&#x2019;m a great salsa dancer and car enthusiast. I&#x2019;m always driven by the need to understand what is next and what is needed to overcome the current objective. I am super excited about the advancements in DevEx and technology, and how we can bring that knowledge to DriveWealth.</em></p>]]></content:encoded></item><item><title><![CDATA[ReadMe in Review: December 2023]]></title><description><![CDATA[<p>Welcome to the first ReadMe in Review of 2024! We know how busy it is during the holidays, so we&#x2019;ve collected all of our news and updates from last month in one spot for easier perusal.&#xA0;</p><p><strong>Of course, our biggest update from December was the Reusable Content</strong></p>]]></description><link>https://blog.readme.com/readme-in-review-december-2023/</link><guid isPermaLink="false">658342099507be0001fa841b</guid><category><![CDATA[ReadMe Journey]]></category><category><![CDATA[Product Updates]]></category><dc:creator><![CDATA[Miche Nickolaisen]]></dc:creator><pubDate>Fri, 05 Jan 2024 19:00:25 GMT</pubDate><media:content url="https://blog.readme.com/content/images/2023/12/Party.psd.full.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.readme.com/content/images/2023/12/Party.psd.full.png" alt="ReadMe in Review: December 2023"><p>Welcome to the first ReadMe in Review of 2024! We know how busy it is during the holidays, so we&#x2019;ve collected all of our news and updates from last month in one spot for easier perusal.&#xA0;</p><p><strong>Of course, our biggest update from December was the Reusable Content release.</strong> If you want to read more about what&#x2019;s included in that, you can <a href="https://blog.readme.com/reusable-content-comes-to-readme/"><u>head here</u></a>. Ready to set it up? <a href="https://docs.readme.com/main/docs/reusable-content?ref=blog.readme.com"><u>Our docs can help you get started</u></a>.&#xA0;</p><p>Other than that, let&#x2019;s see what the team got up to last month:&#xA0;</p><h2 id="owlbot-ai-%F0%9F%A4%96">Owlbot AI &#x1F916;</h2><ul><li>You can now customize how Owlbot responds to questions, including tweaking the tone, adjusting the length of responses, and setting a default response for times it doesn&#x2019;t know an answer</li><li>You can also now prevent Owlbot from using specific words in its responses (for example, names of your competitors)</li><li>On Enterprise plans, we added API access to ask OwlBot AI questions programmatically, which means Owlbot can be embedded directly within a product or wherever else users might need easy access to documentation (<a href="https://docs.readme.com/main/reference/askowlbot?ref=blog.readme.com"><u>learn more here</u></a>)</li><li>We&#x2019;ve also updated the AI model to give more detailed responses and account for larger prompts (via GPT-4 Turbo)</li></ul><h2 id="seo-improvements-%F0%9F%94%8D">SEO improvements &#x1F50D;</h2><ul><li>We&#x2019;ve added more granular control over SEO settings for documentation hubs, including disabling robots.txt on a per-project basis, adding a noindex tag to specific pages, and editing metadata keywords for pages&#xA0;</li><li>When editing SEO metadata, you can now automatically generate a short description of the page with AI</li></ul><h2 id="other-changes-and-updates-%F0%9F%AA%84">Other changes and updates &#x1FA84;</h2><ul><li>We&#x2019;ve created a new Slack group for ReadMe users to ask questions and share their experiences &#x2014; <a href="https://readme.com/slack?ref=blog.readme.com"><u>join here!</u></a>&#xA0;</li><li>In Developer Dashboard, Try It requests will now populate with user emails if the user is logged in, without any extra configuration required</li><li>In the editor, callout headings are now H2 tags for better accessibility, and reordering pages is now faster and more reliable&#xA0;</li><li>For <a href="https://docs.readme.com/ent/docs/setting-up-sso?ref=blog.readme.com#our-permissions-system-and-saml"><u>SAML users</u></a>, we&#x2019;ve added an optional redirect URL upon logout</li></ul><p>That&#x2019;s all for this round! If you want more details on the product updates and improvements, head <a href="https://docs.readme.com/main/changelog?ref=blog.readme.com"><u>to the ReadMe changelog</u></a> to get the scoop and stay up to date as these changes are announced. We&#x2019;ll keep you posted on any upcoming events or other news, but in the meantime, if you have any questions, feel free to <a href="https://mail.google.com/mail/?view=cm&amp;fs=1&amp;tf=1&amp;to=support%40readme.io&amp;ref=blog.readme.com"><u>reach out to our team</u></a>. We hope your January is off to a great start! &#x1F389;</p>]]></content:encoded></item><item><title><![CDATA[Edit Once, Update Everywhere: Reusable Content Comes to ReadMe]]></title><description><![CDATA[<p>The year is almost over, but before we officially say goodbye to 2023 and hello to 2024, we have one more holiday treat: we&#x2019;re launching the new Reusable Content feature today! We know this is something many users are excited to see, so we&#x2019;ll cut right</p>]]></description><link>https://blog.readme.com/reusable-content-comes-to-readme/</link><guid isPermaLink="false">657778969507be0001fa83c4</guid><category><![CDATA[ReadMe Journey]]></category><category><![CDATA[Product Updates]]></category><dc:creator><![CDATA[Miche Nickolaisen]]></dc:creator><pubDate>Thu, 14 Dec 2023 16:30:00 GMT</pubDate><media:content url="https://blog.readme.com/content/images/2023/12/blog.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.readme.com/content/images/2023/12/blog.png" alt="Edit Once, Update Everywhere: Reusable Content Comes to ReadMe"><p>The year is almost over, but before we officially say goodbye to 2023 and hello to 2024, we have one more holiday treat: we&#x2019;re launching the new Reusable Content feature today! We know this is something many users are excited to see, so we&#x2019;ll cut right to the chase.</p><h2 id="introducing-reusable-content">Introducing Reusable Content</h2><p>The concept behind Reusable Content is fairly self-explanatory: it allows Project Admins to create blocks of content that can be used across multiple pages and locations. When the Reusable Content block is edited, the content automatically updates everywhere that block has been used. Not only is this a huge time saver, it also means that you don&#x2019;t have to worry about stumbling across an outdated page section that got skipped over when that content was updated elsewhere in your docs.&#xA0;</p><p>Reusable Content acts as a block, and you can find it in the editor&#x2019;s slash menu:</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/12/Docs_Creating-New-RC-Block-from-Slash-Menu.gif" class="kg-image" alt="Edit Once, Update Everywhere: Reusable Content Comes to ReadMe" loading="lazy" width="1200" height="680" srcset="https://blog.readme.com/content/images/size/w600/2023/12/Docs_Creating-New-RC-Block-from-Slash-Menu.gif 600w, https://blog.readme.com/content/images/size/w1000/2023/12/Docs_Creating-New-RC-Block-from-Slash-Menu.gif 1000w, https://blog.readme.com/content/images/2023/12/Docs_Creating-New-RC-Block-from-Slash-Menu.gif 1200w" sizes="(min-width: 720px) 720px"></figure><p>The Reusable Content block isn&#x2019;t just for text &#x2014; it supports all Markdown, so you can include images, code snippets, callouts, and more. To see a full list of blocks that the Markdown editor supports, you can head to <a href="https://docs.readme.com/main/docs/new-markdown-editor-overview?ref=blog.readme.com#/creating-content-in-the-new-editor"><u>this page in our docs</u></a>.&#xA0;</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/12/Docs_adding-RC-block-with-image.gif" class="kg-image" alt="Edit Once, Update Everywhere: Reusable Content Comes to ReadMe" loading="lazy" width="1200" height="682" srcset="https://blog.readme.com/content/images/size/w600/2023/12/Docs_adding-RC-block-with-image.gif 600w, https://blog.readme.com/content/images/size/w1000/2023/12/Docs_adding-RC-block-with-image.gif 1000w, https://blog.readme.com/content/images/2023/12/Docs_adding-RC-block-with-image.gif 1200w" sizes="(min-width: 720px) 720px"></figure><p>Right now, Reusable Content is available to Business and Enterprise customers. Business customers can create, edit, and add Reusable Content blocks to pages in their project. Enterprise customers have a global Reusable Content page for creating and managing blocks that can be used across child projects, as well as being able to create blocks at the child project level that can only be used for that specific project. </p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/12/Docs_RC-Menu-in-Enterprise-Group.png" class="kg-image" alt="Edit Once, Update Everywhere: Reusable Content Comes to ReadMe" loading="lazy" width="2000" height="1095" srcset="https://blog.readme.com/content/images/size/w600/2023/12/Docs_RC-Menu-in-Enterprise-Group.png 600w, https://blog.readme.com/content/images/size/w1000/2023/12/Docs_RC-Menu-in-Enterprise-Group.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/12/Docs_RC-Menu-in-Enterprise-Group.png 1600w, https://blog.readme.com/content/images/size/w2400/2023/12/Docs_RC-Menu-in-Enterprise-Group.png 2400w" sizes="(min-width: 720px) 720px"></figure><h2 id="streamline-your-workflow">Streamline your workflow</h2><p>When we created Reusable Content, we were thinking about our users that spend the bulk of their time in ReadMe using the editor to create and update their documentation. Because of that, we&#x2019;ve designed this feature to make it as easy (and efficient) as possible to update and maintain documentation. </p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/12/Docs_Adding-Existing-RC-block-from-slash-menu.gif" class="kg-image" alt="Edit Once, Update Everywhere: Reusable Content Comes to ReadMe" loading="lazy" width="1200" height="770" srcset="https://blog.readme.com/content/images/size/w600/2023/12/Docs_Adding-Existing-RC-block-from-slash-menu.gif 600w, https://blog.readme.com/content/images/size/w1000/2023/12/Docs_Adding-Existing-RC-block-from-slash-menu.gif 1000w, https://blog.readme.com/content/images/2023/12/Docs_Adding-Existing-RC-block-from-slash-menu.gif 1200w" sizes="(min-width: 720px) 720px"></figure><p>Whether you want to&#x2026;</p><ul><li>Include version specific content</li><li>Add relevant callouts for specific plan types or user groups</li><li>Ensure that all related pages link back to one another</li><li>Answer frequently asked questions</li></ul><p>&#x2026;or do something else, Reusable Content blocks make it easier to scale your documentation production and update processes. Part of that is that Reusable Content makes it easier to share editing responsibilities across multiple people, since the blocks are visible and usable by all Project Admins. </p><h2 id="improve-your-dx">Improve your DX&#xA0;</h2><p>Streamlining the update workflow doesn&#x2019;t just save you time &#x2014; it also means there are fewer manual edits and more automated updates, which leaves less room for human error. Reusable Content blocks also make it much easier to unify how concepts are communicated and repeated through your API documentation.&#xA0;</p><p>For example, if you realize after you&#x2019;ve created a block that it answers a commonly asked question, you can always turn it into a Reusable Content block after the fact, and add it to other relevant pages in your hub: </p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/12/Docs_Make-Text-into-RC-block.png" class="kg-image" alt="Edit Once, Update Everywhere: Reusable Content Comes to ReadMe" loading="lazy" width="2000" height="1083" srcset="https://blog.readme.com/content/images/size/w600/2023/12/Docs_Make-Text-into-RC-block.png 600w, https://blog.readme.com/content/images/size/w1000/2023/12/Docs_Make-Text-into-RC-block.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/12/Docs_Make-Text-into-RC-block.png 1600w, https://blog.readme.com/content/images/size/w2400/2023/12/Docs_Make-Text-into-RC-block.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>And of course, when you spend less time manually updating your docs, you can spend more of that time giving hands-on help to your developers.&#xA0;</p><h2 id="ready-to-start-reusing">Ready to start reusing?&#xA0;&#xA0;</h2><p>As of today, Reusable Content is available to users on Enterprise and Business plans, so you can start using it now. If you&#x2019;re not currently a ReadMe user, you can test it (and all of our other features!) out by signing up for a 14-day free trial. And as always, if you have any questions, feel free to <a href="https://mail.google.com/mail/?view=cm&amp;fs=1&amp;tf=1&amp;to=support%40readme.io&amp;ref=blog.readme.com"><u>reach out to our team</u></a> &#x2014; we&#x2019;re happy to answer your questions and give you a tour! </p>]]></content:encoded></item><item><title><![CDATA[ReadMe in Review: November 2023]]></title><description><![CDATA[<p>Our team has been hard at work improving the ReadMe experience, and with so many updates, it can be hard to keep track of all of them. We&apos;ve got you covered, though, with ReadMe in Review, here to summarize all of the changes and news from last month</p>]]></description><link>https://blog.readme.com/readme-in-review-november-2023/</link><guid isPermaLink="false">65724bb4a7a3270001501b9c</guid><category><![CDATA[ReadMe Journey]]></category><category><![CDATA[Product Updates]]></category><dc:creator><![CDATA[Miche Nickolaisen]]></dc:creator><pubDate>Fri, 08 Dec 2023 15:00:38 GMT</pubDate><media:content url="https://blog.readme.com/content/images/2023/12/Snowman.psd.full.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.readme.com/content/images/2023/12/Snowman.psd.full.png" alt="ReadMe in Review: November 2023"><p>Our team has been hard at work improving the ReadMe experience, and with so many updates, it can be hard to keep track of all of them. We&apos;ve got you covered, though, with ReadMe in Review, here to summarize all of the changes and news from last month in one spot.&#xA0;</p><p>Let&#x2019;s see what Owlbert&#x2019;s gift bag has in store for you this month:</p><h2 id="owlbot-ai-%F0%9F%A6%BE">Owlbot AI &#x1F9BE;</h2><ul><li>If you&#x2019;re using Owlbot AI, you can now export the questions your customers asked as a CSV, and you can now also use filters to narrow down the data set</li><li>Indexing improvements, including hourly re-indexes (as opposed to every other hour) and an improved ability to handle especially content-rich pages&#xA0;</li></ul><h2 id="api-reference-developer-dashboard-%F0%9F%93%8A">API Reference &amp; Developer Dashboard&#xA0;&#x1F4CA;</h2><ul><li>API Keys in the API Reference section are now sorted by most recently used</li><li>ReadMe now renders OAS file information directly in the Getting Started page; you can enable and configure the Getting Started page by going to API Reference &#x2192; Developer Dashboard &#x2192; Getting Started</li><li>Developer Dashboard users will now be notified when making an export that exceeds our limit of 1 million rows</li><li>Added the ability for users to view their API calls directly in the reference section under the &#x201C;My Requests&#x201D; header</li></ul><h2 id="other-changes-updates-%E2%9C%A8">Other changes &amp; updates&#xA0;&#x2728;</h2><ul><li><strong>Changelog:</strong> Added more design customization options, including date formatting, author visibility, and text layout</li><li><strong>Accessibility: </strong>Made small changes to API Reference and navigation UI to increase contrast to a minimum of APCA Lc60, along with making accessibility improvements to code snippets, Owlbot AI, and the sidebar</li><li><strong>SEO: </strong>Added options to include keywords for pages and include/exclude projects from your robots.txt file</li><li><strong>Login preference:</strong> Users can choose to log into the documentation hub via an emailed link or by setting up an email and password, and ReadMe will now remember their preference when they log in in the future&#xA0;</li></ul><h2 id="meetups-events-%F0%9F%8D%BB">Meetups &amp; events &#x1F37B;</h2><p>November was a busy month for meetups and events! We had booths at GitHub Universe and AWS re:Invent, as well as hosting a meetup at Thriller Social Club on the 8th. Our team had a great time meeting new people, seeing familiar faces, and testing our skeeball skills at the meetup. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.readme.com/content/images/2023/12/AWSreinventbooth.jpeg" class="kg-image" alt="ReadMe in Review: November 2023" loading="lazy" width="2000" height="2164" srcset="https://blog.readme.com/content/images/size/w600/2023/12/AWSreinventbooth.jpeg 600w, https://blog.readme.com/content/images/size/w1000/2023/12/AWSreinventbooth.jpeg 1000w, https://blog.readme.com/content/images/size/w1600/2023/12/AWSreinventbooth.jpeg 1600w, https://blog.readme.com/content/images/size/w2400/2023/12/AWSreinventbooth.jpeg 2400w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">The ReadMe team at AWS re:Invent 2023</span></figcaption></figure><p>That&#x2019;s all for this round! If you want more details on the product updates and improvements, head <a href="https://docs.readme.com/main/changelog?ref=blog.readme.com"><u>to the ReadMe changelog</u></a> to get the scoop and stay up to date as these changes are announced. We&#x2019;ll keep you posted on any upcoming events or other news, but in the meantime, if you have any questions, feel free to <a href="mailto:support@readme.io"><u>reach out to our team</u></a>. </p>]]></content:encoded></item><item><title><![CDATA[Customize Your DX With Developer Dashboard]]></title><description><![CDATA[<p>When considering <a href="https://blog.readme.com/why-dx-matters-driving-api-success-with-a-user-first-approach/" rel="noreferrer nofollow noopener">what makes a great developer experience</a>, we usually break it down into the three stages of your developer lifecycle:</p><ul><li><strong>Evaluation &amp; onboarding</strong> &#x1F914; Educating users about what&#x2019;s possible and helping them make their first API call as quickly as possible</li><li><strong>Engagement &amp; support</strong> &#x2764;&#xFE0F; Giving</li></ul>]]></description><link>https://blog.readme.com/customize-dx-developer-dashboard/</link><guid isPermaLink="false">6540004859f20300011f258e</guid><category><![CDATA[Developer Experience]]></category><category><![CDATA[Product Updates]]></category><dc:creator><![CDATA[Miche Nickolaisen]]></dc:creator><pubDate>Tue, 31 Oct 2023 16:30:29 GMT</pubDate><media:content url="https://blog.readme.com/content/images/2023/10/Blog-1700x400px.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.readme.com/content/images/2023/10/Blog-1700x400px.png" alt="Customize Your DX With Developer Dashboard"><p>When considering <a href="https://blog.readme.com/why-dx-matters-driving-api-success-with-a-user-first-approach/" rel="noreferrer nofollow noopener">what makes a great developer experience</a>, we usually break it down into the three stages of your developer lifecycle:</p><ul><li><strong>Evaluation &amp; onboarding</strong> &#x1F914; Educating users about what&#x2019;s possible and helping them make their first API call as quickly as possible</li><li><strong>Engagement &amp; support</strong> &#x2764;&#xFE0F; Giving users the tools to build efficiently and helping them debug issues when they run into roadblocks</li><li><strong>Retention &amp; growth</strong> &#x1F4C8; Driving adoption of new API features, increasing usage over time, and ensuring a smooth transition for users to new API versions</li></ul><p>Supporting this full developer lifecycle &#x2014; from the first call through long-term integration &#x2014; is what we aim to do here at ReadMe. Creating a great experience for your API users is no different than for any other product: the exact tactics you use may vary, but at the end of the day, you&#x2019;re helping people with a problem to solve and a job to do.&#xA0;</p><p><em>What&#x2019;s possible with your API? How can your developers start building? And what can they do when things go wrong? </em>These are the answers users are looking for in your developer hub, and we&#x2019;re excited to help you deliver them &#x2705;</p><h2 id="introducing-developer-dashboard">Introducing Developer Dashboard</h2><p>API teams talk about &#x201C;Time to First Call&#x201D; as a north-star metric for their developer experience: how quickly they can engage and enable a new developer to make their first API call. There are several things that go into this process (and several potential pitfalls along the way), so we&#x2019;ve recently shipped improvements across the entire ReadMe experience to make this simpler for new users. Together, these features make up your Developer Dashboard, baked directly into your ReadMe dashboard and hub &#x1F389;</p><h2 id="lowering-the-on-ramp-for-new-users">Lowering the on-ramp for new users&#xA0;</h2><p>Instead of giving users complicated instructions on how to hunt down their keys, bring the keys into your hub exactly where they&#x2019;re needed! ReadMe&#x2019;s Getting Started &amp; Authentication pages give users instant access to their API keys so they can jump in right away. With their API keys front and center, new developers can easily use the Try It playground to send their first authenticated request &#x1F64C;</p><p>After they&#x2019;re up and running, their API keys are easily accessible in Try It anytime they&#x2019;re checking out a new endpoint. Server variables or other custom data can be piped in too, so everything they need is at their fingertips:</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/10/Authentication-page-in-Hub-1.png" class="kg-image" alt="Customize Your DX With Developer Dashboard" loading="lazy" width="2000" height="1088" srcset="https://blog.readme.com/content/images/size/w600/2023/10/Authentication-page-in-Hub-1.png 600w, https://blog.readme.com/content/images/size/w1000/2023/10/Authentication-page-in-Hub-1.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/10/Authentication-page-in-Hub-1.png 1600w, https://blog.readme.com/content/images/2023/10/Authentication-page-in-Hub-1.png 2000w" sizes="(min-width: 720px) 720px"></figure><p>In addition to improving the developer experience in the hub, we&#x2019;ve also improved the onboarding experience for ReadMe Admins by streamlining the setup process for these features. Now, both the &#x201C;Set Up API Keys&#x201D; page and the &#x201C;Set Up API Logs&#x201D; page are unified under the My Developers area of your project dashboard, with clearer indications of what&#x2019;s been configured and what setup steps still need to occur.</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/10/API-Keys-and-API-Logs---unified-onboarding.png" class="kg-image" alt="Customize Your DX With Developer Dashboard" loading="lazy" width="2000" height="1089" srcset="https://blog.readme.com/content/images/size/w600/2023/10/API-Keys-and-API-Logs---unified-onboarding.png 600w, https://blog.readme.com/content/images/size/w1000/2023/10/API-Keys-and-API-Logs---unified-onboarding.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/10/API-Keys-and-API-Logs---unified-onboarding.png 1600w, https://blog.readme.com/content/images/2023/10/API-Keys-and-API-Logs---unified-onboarding.png 2000w" sizes="(min-width: 720px) 720px"></figure><h2 id="getting-on-the-same-page-to-debug-issues">Getting on the same page to debug issues</h2><p>You&#x2019;ve made it easier for new users to get started &#x2014; now what? Inevitably, they&#x2019;ll run into issues (it happens to the best of us!), so making the debugging experience as efficient and painless as possible is the next priority.&#xA0;</p><p>Your first line of support should be to give users the tools to try to debug on their own. If they can figure out what&#x2019;s going on in a few minutes and avoid waiting for a support ticket to be answered, that&#x2019;s the dream &#x1F320; Now, users can see their previous requests for all API keys they have access to on the My Requests page in the API Reference, so they can quickly dig into failing requests and see what&#x2019;s going on.&#xA0;</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/10/My-Requests---in-hub.png" class="kg-image" alt="Customize Your DX With Developer Dashboard" loading="lazy" width="2000" height="1096" srcset="https://blog.readme.com/content/images/size/w600/2023/10/My-Requests---in-hub.png 600w, https://blog.readme.com/content/images/size/w1000/2023/10/My-Requests---in-hub.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/10/My-Requests---in-hub.png 1600w, https://blog.readme.com/content/images/2023/10/My-Requests---in-hub.png 2000w" sizes="(min-width: 720px) 720px"></figure><p>Using quick filters for endpoints, method, status, and/or user agent, users can hone in on failing requests (and check to see what&#x2019;s different about their successful calls). They can also click into any log to reveal even more details related to their request and response.</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/10/Custom-Error-Message---endpoint-page.png" class="kg-image" alt="Customize Your DX With Developer Dashboard" loading="lazy" width="2000" height="1094" srcset="https://blog.readme.com/content/images/size/w600/2023/10/Custom-Error-Message---endpoint-page.png 600w, https://blog.readme.com/content/images/size/w1000/2023/10/Custom-Error-Message---endpoint-page.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/10/Custom-Error-Message---endpoint-page.png 1600w, https://blog.readme.com/content/images/2023/10/Custom-Error-Message---endpoint-page.png 2000w" sizes="(min-width: 720px) 720px"></figure><p>Alternatively, users can navigate to the endpoint page to replay any individual log in the Try It playground to dive deeper. Bonus points for <a href="https://blog.readme.com/how-to-write-good-api-errors/" rel="noreferrer nofollow noopener">extra helpful error messages</a> that give them a hint at what&#x2019;s gone wrong &#x1F60E;</p><p>And for ReadMe Admins, we&#x2019;re taking this debugging workflow a step further with My Developers, in-depth developer profiles where your team can dig into API usage and quickly debug issues. Just as we surface API keys and real-time logs to end users in your developer hub, My Developers gives your team the backend interface to see who&#x2019;s having issues, identify fixes, and seamlessly support your developers to get them back on track.</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/10/My-Developers---main-page.png" class="kg-image" alt="Customize Your DX With Developer Dashboard" loading="lazy" width="2000" height="1101" srcset="https://blog.readme.com/content/images/size/w600/2023/10/My-Developers---main-page.png 600w, https://blog.readme.com/content/images/size/w1000/2023/10/My-Developers---main-page.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/10/My-Developers---main-page.png 1600w, https://blog.readme.com/content/images/2023/10/My-Developers---main-page.png 2000w" sizes="(min-width: 720px) 720px"></figure><p>Powered by your real-time API request logs, the magic of My Developers lies in filters &#x2728; By honing in on certain endpoints, methods, and status codes for a given time period, you can build and save segments to monitor usage of your APIs:&#xA0;</p><ul><li>Track who&#x2019;s getting lots of &#x1F534; 400s this week to reach out and offer a helping hand</li><li>See who&#x2019;s using the endpoint you recently launched &#x1F680; to get feedback on their use cases</li><li>Look up a user&#x2019;s logs &#x1F50D; when they write into support to help them debug issues</li></ul><p>And when users write into support with an issue, Admins can quickly look up a user by their API key, email address, or company to jump into their logs and see what&#x2019;s going on. No more copy and pasting request code back and forth in emails to try to get support reps on the same page &#x2014; with ReadMe, users in the hub and admins behind-the-scenes can look at the same logs together.</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/10/My-Developers---view-of-same-error-log-from-hub.png" class="kg-image" alt="Customize Your DX With Developer Dashboard" loading="lazy" width="2000" height="1092" srcset="https://blog.readme.com/content/images/size/w600/2023/10/My-Developers---view-of-same-error-log-from-hub.png 600w, https://blog.readme.com/content/images/size/w1000/2023/10/My-Developers---view-of-same-error-log-from-hub.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/10/My-Developers---view-of-same-error-log-from-hub.png 1600w, https://blog.readme.com/content/images/2023/10/My-Developers---view-of-same-error-log-from-hub.png 2000w" sizes="(min-width: 720px) 720px"></figure><h2 id="supporting-your-users-in-the-long-run">Supporting your users in the long run</h2><p>With the foundations of your API onboarding and debugging experience in place, it&#x2019;s time to look toward the future &#x1F6E3; In addition to the vision for your APIs coming from your team, ReadMe gives you valuable insights to help inform these decisions. You can easily track usage metrics, like API adoption over time and API error volume, to see where users are getting stuck. &#xA0;</p><p>The Home screen also provides an at-a-glance snapshot of your Docs Metrics where you can see your most popular pages and search terms, and track new users over time. These metrics can inform what pages to prioritize updating, or to see what pages might need to be labeled differently based on high volume keyword searches.</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/10/Home-screen---doc-metrics-v-api-metrics.png" class="kg-image" alt="Customize Your DX With Developer Dashboard" loading="lazy" width="2000" height="1052" srcset="https://blog.readme.com/content/images/size/w600/2023/10/Home-screen---doc-metrics-v-api-metrics.png 600w, https://blog.readme.com/content/images/size/w1000/2023/10/Home-screen---doc-metrics-v-api-metrics.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/10/Home-screen---doc-metrics-v-api-metrics.png 1600w, https://blog.readme.com/content/images/2023/10/Home-screen---doc-metrics-v-api-metrics.png 2000w" sizes="(min-width: 720px) 720px"></figure><p>Together, all of these insights bring a data-driven lens to decisions about where to add features and invest resources to improve your API and documentation. You can also export your metrics data as a .CSV file for further analysis or cross-referencing with other data.&#xA0;</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/10/metrics.png" class="kg-image" alt="Customize Your DX With Developer Dashboard" loading="lazy" width="1600" height="828" srcset="https://blog.readme.com/content/images/size/w600/2023/10/metrics.png 600w, https://blog.readme.com/content/images/size/w1000/2023/10/metrics.png 1000w, https://blog.readme.com/content/images/2023/10/metrics.png 1600w" sizes="(min-width: 720px) 720px"></figure><p>As you ship new versions or deprecate endpoints, My Developers makes it easy to diagnose who will be impacted so you can proactively reach out and help them through the transition. And as much as we don&#x2019;t like to talk about security incidents &#x1F62C; in the event of an API key leak, you can quickly pull a list of keys that were active during the affected time period for communications around revoking and rotating their keys. You&#x2019;ll be happy to have the tooling in place to support your team in these moments (infrequent as they may be): hope for the best, plan for the worst!</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/10/My-Developers---Outage-Segment.png" class="kg-image" alt="Customize Your DX With Developer Dashboard" loading="lazy" width="2000" height="1090" srcset="https://blog.readme.com/content/images/size/w600/2023/10/My-Developers---Outage-Segment.png 600w, https://blog.readme.com/content/images/size/w1000/2023/10/My-Developers---Outage-Segment.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/10/My-Developers---Outage-Segment.png 1600w, https://blog.readme.com/content/images/2023/10/My-Developers---Outage-Segment.png 2000w" sizes="(min-width: 720px) 720px"></figure><h2 id="what%E2%80%99s-coming-next">What&#x2019;s coming next&#xA0;</h2><p>You&#x2019;re here to support your developers, and we&#x2019;re here to support you! We&#x2019;d love to hear your feedback on Developer Dashboard as you start exploring the features and functionalities. <a href="https://docs.readme.com/main/docs/developer-dashboard?ref=blog.readme.com#/" rel="noreferrer nofollow noopener">Head over to the docs</a> to learn about all the features and benefits of the full Developer Dashboard experience &#x1F389; Access to 24 hours of data is included in every ReadMe plan, so you can take it for a spin worry-free.</p>]]></content:encoded></item><item><title><![CDATA[Take Your Docs to the Next Level With Owlbot AI]]></title><description><![CDATA[<p>It takes a lot of dedication to create and maintain excellent documentation &#x2014; but if your developers can&#x2019;t find the information they need when they need it, that effort was all for naught. And that discoverability problem only increases as you add more content to your developer hubs.</p>]]></description><link>https://blog.readme.com/owlbot-ai/</link><guid isPermaLink="false">651b067a4e3de60001f9876a</guid><category><![CDATA[Product Updates]]></category><category><![CDATA[Developer Experience]]></category><dc:creator><![CDATA[Miche Nickolaisen]]></dc:creator><pubDate>Tue, 03 Oct 2023 17:00:12 GMT</pubDate><media:content url="https://blog.readme.com/content/images/2023/10/Jetpack.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.readme.com/content/images/2023/10/Jetpack.png" alt="Take Your Docs to the Next Level With Owlbot AI"><p>It takes a lot of dedication to create and maintain excellent documentation &#x2014; but if your developers can&#x2019;t find the information they need when they need it, that effort was all for naught. And that discoverability problem only increases as you add more content to your developer hubs. </p><p>To help you solve that problem for you <em>and</em> your developers, we created Owlbot AI: a new way to enhance your developer experience across your documentation. Owlbot AI is a chatbot that lives inside your hub&#x2019;s search, so developers can ask Owlbot their questions and get an instant response. It&#x2019;s your docs, made better and more powerful &#x1F4AA;</p><h2 id="what-exactly-is-owlbot-ai-%F0%9F%A4%96">What exactly <em>is</em> Owlbot AI? &#x1F916;</h2><p>The standard search functionality included in ReadMe pulls up relevant information based on keywords that the user types in. On the other hand, Owlbot AI is trained on your documentation using the power of GPT-4 and GPT-3.5 Turbo. It goes a step further than keywords by &#x201C;reading&#x201D; the information in your developer hub and generating an answer based on that information. In addition to supplying an answer, Owlbot AI also links to the pages that the information was pulled from, so the reader can get as much extra context as they need. </p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/10/Owlbot-Email-Hero-1--1-.png" class="kg-image" alt="Take Your Docs to the Next Level With Owlbot AI" loading="lazy" width="2000" height="1061" srcset="https://blog.readme.com/content/images/size/w600/2023/10/Owlbot-Email-Hero-1--1-.png 600w, https://blog.readme.com/content/images/size/w1000/2023/10/Owlbot-Email-Hero-1--1-.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/10/Owlbot-Email-Hero-1--1-.png 1600w, https://blog.readme.com/content/images/2023/10/Owlbot-Email-Hero-1--1-.png 2000w" sizes="(min-width: 720px) 720px"></figure><p>Owlbot AI is integrated into the search experience, which means that it&#x2019;s accessible on every page of the hub, ready to guide your developers whenever they need help. After typing in a question or keyword string, the search results and Owlbot&#x2019;s answer are shown in the same place. This way, the querent can get the highlights, while having further information easily accessible if they need it. </p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/10/Owlbot-gif-for-launch-FINAL.gif" class="kg-image" alt="Take Your Docs to the Next Level With Owlbot AI" loading="lazy" width="860" height="476" srcset="https://blog.readme.com/content/images/size/w600/2023/10/Owlbot-gif-for-launch-FINAL.gif 600w, https://blog.readme.com/content/images/2023/10/Owlbot-gif-for-launch-FINAL.gif 860w" sizes="(min-width: 720px) 720px"></figure><h2 id="learn-more-about-your-developers-%F0%9F%94%8D">Learn more about your developers<strong> &#x1F50D;</strong></h2><p>After Owlbot AI is enabled, you&#x2019;ll be able to see a dedicated page for it in the Project section of your dashboard. Here, you can see all of the questions that visitors to your hub have asked, and what answers were generated. </p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/10/Owlbot-AI-in-dash---for-launch.png" class="kg-image" alt="Take Your Docs to the Next Level With Owlbot AI" loading="lazy" width="2000" height="1066" srcset="https://blog.readme.com/content/images/size/w600/2023/10/Owlbot-AI-in-dash---for-launch.png 600w, https://blog.readme.com/content/images/size/w1000/2023/10/Owlbot-AI-in-dash---for-launch.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/10/Owlbot-AI-in-dash---for-launch.png 1600w, https://blog.readme.com/content/images/2023/10/Owlbot-AI-in-dash---for-launch.png 2000w" sizes="(min-width: 720px) 720px"></figure><p>When Owlbot AI creates an answer, querents have the ability to upvote or downvote the answer based on how helpful it was (or wasn&#x2019;t). By looking at the questions that your developers are asking and which answers were upvoted/downvoted, you can learn more about what people are looking for. It&#x2019;s also a great way to keep an eye on which pages of documentation may need to be added, updated, or clarified.</p><h2 id="your-data-stays-private-%F0%9F%A4%90">Your data stays private &#x1F910;<br></h2><p>Venturing into the territory of AI often comes with privacy concerns, so it&#x2019;s important for you to know that none of your data will be used to train any of OpenAI&#x2019;s models. Your project data is only used to answer specific user questions, after which your questions and answers will be stored by ReadMe for the admin UI, and OpenAI retains logs of API requests for 30 days.<a href="https://openai.com/security?ref=blog.readme.com"> You can read more about OpenAI&apos;s data usage policies here</a>.</p><p>Owlbot AI uses your Guides, API Reference, and Discussions pages to generate answers, and hidden pages are never indexed or used to create answers. This keeps your private content private, as Owlbot AI will only use content from the pages that your readers can see in the sidebar. For Enterprise ReadMe users who use permissioning features, only the content the user has access to is used to answer questions. If a user is granted permissions to see Project A, but not Project B, none of the content from Project B will be used to generate answers for that user.</p><h2 id="how-to-get-started-%F0%9F%9A%80">How to get started &#x1F680;</h2><p>If you&#x2019;re a self-service customer, you can enable Owlbot AI on the Owlbot or Manage Plan pages in your dashboard: </p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/10/enable-owlbot-in-dash---self-serve.png" class="kg-image" alt="Take Your Docs to the Next Level With Owlbot AI" loading="lazy" width="2000" height="1083" srcset="https://blog.readme.com/content/images/size/w600/2023/10/enable-owlbot-in-dash---self-serve.png 600w, https://blog.readme.com/content/images/size/w1000/2023/10/enable-owlbot-in-dash---self-serve.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/10/enable-owlbot-in-dash---self-serve.png 1600w, https://blog.readme.com/content/images/2023/10/enable-owlbot-in-dash---self-serve.png 2000w" sizes="(min-width: 720px) 720px"></figure><p>If you&apos;re an Enterprise user, you can get started by navigating to the same page and contacting your CSM. After Owlbot AI is enabled, the admin UI will be visible on project and group dashboards. </p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/10/Add-Owlbot-AI-to-Enterprise-project.png" class="kg-image" alt="Take Your Docs to the Next Level With Owlbot AI" loading="lazy" width="2000" height="1068" srcset="https://blog.readme.com/content/images/size/w600/2023/10/Add-Owlbot-AI-to-Enterprise-project.png 600w, https://blog.readme.com/content/images/size/w1000/2023/10/Add-Owlbot-AI-to-Enterprise-project.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/10/Add-Owlbot-AI-to-Enterprise-project.png 1600w, https://blog.readme.com/content/images/2023/10/Add-Owlbot-AI-to-Enterprise-project.png 2000w" sizes="(min-width: 720px) 720px"></figure><p><strong>Want to learn more? </strong>You can get more details and <a href="https://readme.com/ai?ref=blog.readme.com">request a demo here</a>. And, as always, if you have any questions or want to share your thoughts, we&apos;re <a href="mailto:support@readme.io">just an email away</a>. You can also get in touch by sending a message via the Intercom widget in your dashboard or hub, or reach out right now by clicking on the icon in the lower right-hand corner of your screen. We&apos;ll happily help you find what you&apos;re looking for (just like Owlbot! &#x1F9BE;).</p>]]></content:encoded></item><item><title><![CDATA[ReadMe Micro: Because Microservices Deserve Big Solutions]]></title><description><![CDATA[<p>ReadMe already makes it easy to create great developer hubs for public and partner APIs. But we know that companies often have hundreds (if not thousands!) of internal APIs to track, and that tracking and documenting that many APIs can be something of a logistical nightmare &#x1F631;</p><p>That&#x2019;s</p>]]></description><link>https://blog.readme.com/readme-micro-microservices-solutions/</link><guid isPermaLink="false">6500e57ca504df00017f5773</guid><category><![CDATA[Product Updates]]></category><dc:creator><![CDATA[Miche Nickolaisen]]></dc:creator><pubDate>Mon, 18 Sep 2023 07:00:00 GMT</pubDate><media:content url="https://blog.readme.com/content/images/2023/09/Blog.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.readme.com/content/images/2023/09/Blog.jpg" alt="ReadMe Micro: Because Microservices Deserve Big Solutions"><p>ReadMe already makes it easy to create great developer hubs for public and partner APIs. But we know that companies often have hundreds (if not thousands!) of internal APIs to track, and that tracking and documenting that many APIs can be something of a logistical nightmare &#x1F631;</p><p>That&#x2019;s why we&#x2019;ve created ReadMe Micro. With it, our goal was to create an elegant solution for engineering teams looking for a better way to organize and maintain their internal APIs and microservices. Think of Micro as a developer hub for your engineering team: one centralized place to discover, organize, and share all your company&#x2019;s internal APIs. To get started, select all the repositories in your GitHub organization or Bitbucket workspace with the OpenAPI files you want documented. You&#x2019;ll have a new Micro developer hub in no time! </p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/09/Github-listing---Micro-shot-2--1-.png" class="kg-image" alt="ReadMe Micro: Because Microservices Deserve Big Solutions" loading="lazy" width="2000" height="1038" srcset="https://blog.readme.com/content/images/size/w600/2023/09/Github-listing---Micro-shot-2--1-.png 600w, https://blog.readme.com/content/images/size/w1000/2023/09/Github-listing---Micro-shot-2--1-.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/09/Github-listing---Micro-shot-2--1-.png 1600w, https://blog.readme.com/content/images/size/w2400/2023/09/Github-listing---Micro-shot-2--1-.png 2400w" sizes="(min-width: 720px) 720px"></figure><h2 id="masterful-docs-with-minimal-work-%F0%9F%8E%A8">Masterful docs with minimal work &#x1F3A8;</h2><p>Documentation is crucial to keeping your API users happy, but creating and maintaining excellent docs is a job in and of itself. At the end of the day, internal APIs (and their users) often don&#x2019;t get the same level of attention as external APIs. Without some sort of hub or homebase for those internal APIs, it&#x2019;s hard for engineers to find them and learn about how they work and what the best use-cases are. This is frustrating for the engineer in question, and often leads to duplicated or delayed work. </p><p>As a team building a product by engineers, for engineers, we wanted to make those problems disappear, and Micro is our solution. </p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/09/API-Reference-within-MIcro--1-.png" class="kg-image" alt="ReadMe Micro: Because Microservices Deserve Big Solutions" loading="lazy" width="2000" height="1085" srcset="https://blog.readme.com/content/images/size/w600/2023/09/API-Reference-within-MIcro--1-.png 600w, https://blog.readme.com/content/images/size/w1000/2023/09/API-Reference-within-MIcro--1-.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/09/API-Reference-within-MIcro--1-.png 1600w, https://blog.readme.com/content/images/size/w2400/2023/09/API-Reference-within-MIcro--1-.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>Once a GitHub or Bitbucket repository with an OpenAPI file is connected, Micro auto-generates a polished and professional API Reference for it, where you can copy and paste code samples and add more information. Preview versions of your docs are generated for every PR, and the continuous deployment process includes built-in linting and validation, so issues are caught before they hit your actual docs. </p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/09/micro---pull-requests.png" class="kg-image" alt="ReadMe Micro: Because Microservices Deserve Big Solutions" loading="lazy" width="954" height="486" srcset="https://blog.readme.com/content/images/size/w600/2023/09/micro---pull-requests.png 600w, https://blog.readme.com/content/images/2023/09/micro---pull-requests.png 954w" sizes="(min-width: 720px) 720px"></figure><p>Docs writers can then add a Markdown file to provide more instructions or helpful tips for each connected repository. This significantly cuts down the amount of time a team has to spend creating documentation, while still creating professional, easy-to-use docs. No more lists of OpenAPI files living on a static page!</p><h2 id="maintenance-made-easy-%F0%9F%9B%A0%EF%B8%8F">Maintenance made easy &#x1F6E0;&#xFE0F;</h2><p>After that initial setup, changes made to the synced OpenAPI files in GitHub or Bitbucket are automatically synced to Micro. Then, the changes are noted in a changelog that&#x2019;s <em>also</em> automatically generated for each repository. Users can see recent updates and changes at a glance, and they can also switch between versions (if you choose to create them) with a simple dropdown menu. </p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/09/GHM---Micro-versioning-close-up-2.png" class="kg-image" alt="ReadMe Micro: Because Microservices Deserve Big Solutions" loading="lazy" width="2000" height="1063" srcset="https://blog.readme.com/content/images/size/w600/2023/09/GHM---Micro-versioning-close-up-2.png 600w, https://blog.readme.com/content/images/size/w1000/2023/09/GHM---Micro-versioning-close-up-2.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/09/GHM---Micro-versioning-close-up-2.png 1600w, https://blog.readme.com/content/images/size/w2400/2023/09/GHM---Micro-versioning-close-up-2.png 2400w" sizes="(min-width: 720px) 720px"></figure><h2 id="easy-to-use-easy-to-find-%F0%9F%94%8D">Easy to use, easy to find &#x1F50D;</h2><p>Of course, having automatically generated docs doesn&#x2019;t do an engineering team any good if it&#x2019;s impossible to find the documentation you need at any given moment. Micro&#x2019;s search functionality lets you search and filter by attributes like name, tags, or time synced, and you can also add topics to specific repositories for easier and more accurate searching. Have an API you use on a regular basis? You can bookmark it, so that it&#x2019;s always easy to find &#x2B50; </p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/09/micro---searching-by-topic.png" class="kg-image" alt="ReadMe Micro: Because Microservices Deserve Big Solutions" loading="lazy" width="2000" height="1052" srcset="https://blog.readme.com/content/images/size/w600/2023/09/micro---searching-by-topic.png 600w, https://blog.readme.com/content/images/size/w1000/2023/09/micro---searching-by-topic.png 1000w, https://blog.readme.com/content/images/size/w1600/2023/09/micro---searching-by-topic.png 1600w, https://blog.readme.com/content/images/size/w2400/2023/09/micro---searching-by-topic.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>Now, teams have all of the info they need to start using your APIs quickly, and don&apos;t have to worry about manually updating files.</p><h2 id="stay-secure-%F0%9F%94%90">Stay secure &#x1F510;</h2><p>We know how important security is and that you may be wondering exactly how much data you&#x2019;ll have to share for all of this automatic creation and syncing to function as designed. We&#x2019;ve worked hard to ensure that Micro requires as little data access as possible, and we&#x2019;ve designed the access model to be completely open-source. If you want, you can even audit our repository scanning tool and confirm that Micro only reads the files from your repository that it needs (e.g., your OpenAPI file) &#x2014; nothing more.</p><h2 id="what%E2%80%99s-the-limit-%F0%9F%93%88">What&#x2019;s the limit? &#x1F4C8;</h2><p>ReadMe Micro&#x2019;s pricing is user-based, rather than being based on synced APIs or repositories. We felt that basing pricing on either of those things would work against our goal of making documentation that is scalable and accessible for internal teams. Because of that, pricing is set at $10/month, per user, per organization. If you want to learn more about bulk pricing, you can <a href="mailto:support@readme.io"><strong>reach out to our sales team</strong></a> to set up a demo and discuss pricing for your organization. And no matter what, your first 30 days are always free for you and your team to try out Micro.</p><h2 id="and-that%E2%80%99s-not-all%E2%80%A6-%F0%9F%91%80">And that&#x2019;s not all&#x2026; &#x1F440;</h2><p>ReadMe Micro is live and available to use for private APIs. Very soon, you&#x2019;ll be able to use it for public APIs as well &#x2014; if the repository is public on GitHub or Bitbucket, it will be public in Micro. Of course, that&apos;s not all we&apos;re working on, so watch this space for future updates &#x1F4AB;</p><h2 id="learn-more-with-a-personalized-qa-%F0%9F%93%9D">Learn more with a personalized Q&amp;A &#x1F4DD;</h2><p>As always, we&#x2019;re happy to answer your questions and listen to your feedback. In fact, we&#x2019;re hosting <a href="https://dev.readme.com/readme-office-hours?ref=blog.readme.com">two virtual office hours sessions</a> on Thursday, September 21th at 10 AM and 2 PM Pacific. Greg, our founder and CEO, will be there to give you a live walkthrough and answer all of your questions, so you can get a deeper overview and learn more about Micro, learn how to best set up their organizations and sync their repositories, and ask any other questions you have. The sessions will be Zoom calls and capped at 50 attendees each. To learn more and sign up for your session of choice, <a href="https://dev.readme.com/readme-office-hours?ref=blog.readme.com">head here</a>.</p><p>Can&#x2019;t make the sessions but still want to learn more? <a href="mailto:support@readme.io"><strong>Reach out to the sales team here</strong></a> and they can get you sorted &#x2728;</p>]]></content:encoded></item><item><title><![CDATA[Authenticating Into ReadMe’s CLI With 1Password and Your Fingerprint ☝️]]></title><description><![CDATA[We're stoked to announce that ReadMe has partnered with 1Password to make your experience with ReadMe’s developer tools even more convenient and secure.]]></description><link>https://blog.readme.com/1password-shell-plugin/</link><guid isPermaLink="false">63d0041c17c402003d176762</guid><category><![CDATA[Developer Experience]]></category><category><![CDATA[Product Updates]]></category><dc:creator><![CDATA[Kanad Gupta]]></dc:creator><pubDate>Thu, 04 May 2023 15:53:29 GMT</pubDate><media:content url="https://blog.readme.com/content/images/2023/05/1p-banner-1360x500.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.readme.com/content/images/2023/05/1p-banner-1360x500.png" alt="Authenticating Into ReadMe&#x2019;s CLI With 1Password and Your Fingerprint &#x261D;&#xFE0F;"><p>Long-time followers of the ReadMe blog know <a href="https://blog.readme.com/two-factor-auth/">I have been absolutely shameless in my love for 1Password</a>. It&apos;s a great password manager that we use here at ReadMe to securely store shared logins, API keys, and more. Staying secure online is increasingly difficult these days, and we&#x2019;ve been able to safely rely on 1Password for best-in-class security with a convenience and user experience that lives up to one of <a href="https://readme.com/values?ref=blog.readme.com">our core ReadMe values</a>: &#x201C;strive for simplicity.&#x201D;</p><p>So it should come as no surprise that I&#x2019;m very stoked to announce ReadMe&apos;s partnership with 1Password. With <a href="https://developer.1password.com/docs/cli/shell-plugins/readme/?ref=blog.readme.com">the ReadMe shell plugin for the 1Password CLI</a>, together we&#x2019;re making your experience with ReadMe&#x2019;s developer tools even more convenient and secure. Get the details below! &#x1F91D;</p><h1 id="juggling-api-keys-a-necessary-dx-evil-%F0%9F%A4%B9">Juggling API keys: a necessary DX evil &#x1F939;</h1><p>Let&#x2019;s first start with some background. Over the last year or so, we&#x2019;ve been making several improvements to the developer experience around API keys in ReadMe:</p><ul><li>A <a href="https://github.blog/changelog/2022-08-17-readme-is-now-a-github-secret-scanning-partner/?ref=blog.readme.com">secret scanning partnership with GitHub</a> to automatically revoke exposed ReadMe API keys and notify our users &#x267B;&#xFE0F;</li><li>The <a href="https://docs.readme.com/main/reference/intro/authentication?ref=blog.readme.com#generating-new-api-keys-">ReadMe API key management dashboard</a> which gives you the ability to provision multiple keys for your project and makes it easier to rotate keys out &#x1F504;</li><li>Interactive <a href="https://docs.readme.com/main/reference/intro/authentication?ref=blog.readme.com">Getting Started and Authentication pages</a> in the API reference section, where you can browse your ReadMe API keys and make authenticated requests to the ReadMe API directly from the docs (and yes, you can also <a href="https://docs.readme.com/main/docs/reference-core-pages?ref=blog.readme.com">set these pages up for your users</a>!) &#x1F511;</li></ul><p>While these changes have been great from a security and developer experience standpoint, none of these could possibly address a common problem amongst developers: juggling lots of API keys. Figuring out where keys came from, rotating keys, maintaining separate keys for separate environments/users&#x2026;the list goes on! It&#x2019;s a necessary evil for developers when a key inevitably gets leaked &#x1F640;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.readme.com/content/images/2022/11/GS-A-Pages-in-Hub.gif" class="kg-image" alt="Authenticating Into ReadMe&#x2019;s CLI With 1Password and Your Fingerprint &#x261D;&#xFE0F;" loading="lazy"><figcaption><span style="white-space: pre-wrap;">The Getting Started and Authentication pages in the API reference &#x1F511;</span></figcaption></figure><p>Our knowledge base has grown to the point of <a href="https://docs.readme.com/main/changelog/2022-11-30-v4-286-0?ref=blog.readme.com">switching over to a multi-project setup for our docs</a>. Because of this, we&#x2019;re now working with many API keys across several ReadMe projects, which is also the case with many of our Enterprise customers. And once you start dealing with multiple API keys that you&#x2019;re sharing with your team, it can get chaotic rather quickly.</p><p>1Password has proven to be a useful management tool for API keys not only because of its security, but also because you can jot down notes for a given API key. You can use this to provide helpful context for fellow engineers, like expiration dates, links to management dashboards, where it&#x2019;s used, etc. While it&#x2019;s easy enough to store these credentials in your password manager, what about using your password manager as the single source of truth so you can load secrets into your developer environments in a secure, automated way?</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.readme.com/content/images/2023/01/CleanShot-2023-01-24-at-15.03.03@2x.png" class="kg-image" alt="Authenticating Into ReadMe&#x2019;s CLI With 1Password and Your Fingerprint &#x261D;&#xFE0F;" loading="lazy" width="1356" height="1248" srcset="https://blog.readme.com/content/images/size/w600/2023/01/CleanShot-2023-01-24-at-15.03.03@2x.png 600w, https://blog.readme.com/content/images/size/w1000/2023/01/CleanShot-2023-01-24-at-15.03.03@2x.png 1000w, https://blog.readme.com/content/images/2023/01/CleanShot-2023-01-24-at-15.03.03@2x.png 1356w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">When adding an API key to 1Password, include detailed notes for context &#x2014; your fellow engineers will thank you!</span></figcaption></figure><p>Luckily, <a href="https://blog.1password.com/shell-plugins-roundup/?ref=blog.readme.com">1Password introduced shell plugins</a>, which are integrations that securely pass API keys into your favorite command line tools, including <code>gh</code> (the GitHub CLI), <code>twilio</code> (the Twilio CLI), and (you can probably guess where I&#x2019;m going with this&#x2026;) <code>rdme</code> (the ReadMe CLI)! Let&#x2019;s dive into the ReadMe shell plugin below.</p><h1 id="say-hello-to-the-readme-shell-plugin-%F0%9F%90%9A">Say hello to the ReadMe shell plugin &#x1F41A;</h1><p>With the ReadMe shell plugin set up, you can keep your ReadMe API key in 1Password and securely pass it into your <code>rdme</code> commands. What does this look like in practice? A quick scan of your fingerprint (if you&#x2019;re a macOS user):</p><figure class="kg-card kg-video-card kg-width-wide" data-kg-thumbnail="https://blog.readme.com/content/images/2023/01/media-thumbnail-ember277.jpg" data-kg-custom-thumbnail>
            <div class="kg-video-container">
                <video src="https://blog.readme.com/content/media/2023/01/readme-1p.mp4" poster="https://img.spacergif.org/v1/2132x910/0a/spacer.png" width="2132" height="910" loop autoplay muted playsinline preload="metadata" style="background: transparent url(&apos;https://blog.readme.com/content/images/2023/01/media-thumbnail-ember277.jpg&apos;) 50% 50% / cover no-repeat;"></video>
                <div class="kg-video-overlay">
                    <button class="kg-video-large-play-icon">
                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                            <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                        </svg>
                    </button>
                </div>
                <div class="kg-video-player-container kg-video-hide">
                    <div class="kg-video-player">
                        <button class="kg-video-play-icon">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-pause-icon kg-video-hide">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                                <rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                            </svg>
                        </button>
                        <span class="kg-video-current-time">0:00</span>
                        <div class="kg-video-time">
                            /<span class="kg-video-duration">0:15</span>
                        </div>
                        <input type="range" class="kg-video-seek-slider" max="100" value="0">
                        <button class="kg-video-playback-rate">1&#xD7;</button>
                        <button class="kg-video-unmute-icon">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-mute-icon kg-video-hide">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/>
                            </svg>
                        </button>
                        <input type="range" class="kg-video-volume-slider" max="100" value="100">
                    </div>
                </div>
            </div>
            
        </figure><p>Pretty slick, right? Let&#x2019;s walk through how this all works:</p><ul><li>First, make sure you have <a href="https://github.com/readmeio/rdme?ref=blog.readme.com#readme">the latest version of <code>rdme</code></a>, <a href="https://1password.com/downloads?ref=blog.readme.com">the 1Password desktop app</a> (Mac or Linux only), and <a href="https://developer.1password.com/docs/cli/get-started/?ref=blog.readme.com#install">the 1Password CLI</a> (version 2.12.0 or above) installed &#x1F4BF;</li><li>Next, <a href="https://developer.1password.com/docs/cli/shell-plugins/readme/?ref=blog.readme.com">set up the ReadMe shell plugin for the 1Password CLI</a>. This will create (or import, if it already exists) a 1Password item that contains your ReadMe API key &#x1F41A;</li><li>Once everything is set up, 1Password CLI will listen to your terminal for <code>rdme</code> commands that require authentication (i.e., authenticated commands like <code>rdme openapi</code> are listened for and non-authenticated commands like <code>rdme --help</code> will be ignored) &#x1F442;</li><li>When a <code>rdme</code> command is executed that requires authentication, the 1Password CLI will prompt you for your fingerprint (or whatever authentication setup you have for the 1Password app) &#x261D;&#xFE0F;</li><li>The 1Password vault is unlocked, your ReadMe API key is securely passed into the terminal command, and <code>rdme</code> is connected to your ReadMe project &#x1F680;</li></ul><p>While this approach to passing credentials into <code>rdme</code> is both convenient and secure, do you want to know what&#x2019;s my favorite part about this experience? If you&#x2019;re juggling many API keys across several ReadMe projects like we are, you can store all of them in 1Password and have the ReadMe shell plugin confine your credentials to a specific directory or terminal session.</p><p>With the ReadMe shell plugin, you&#x2019;ll be an expert API key juggler in no time!</p><h1 id="some-bonus-%E2%80%9Caction%E2%80%9D-%F0%9F%8E%AC">Some bonus &#x201C;action&#x201D; &#x1F3AC;</h1><p>But wait, there&#x2019;s more! As an added benefit of securely storing API keys in your 1Password vault, you can safely <a href="https://developer.1password.com/docs/ci-cd/github-actions?ref=blog.readme.com">load them into CI/CD environments</a>, like GitHub Actions. This is great news, because <a href="https://blog.readme.com/auto-magically-sync-to-readme-with-github-actions/"><code>rdme</code> happens to have first-class support for GitHub Actions</a>!</p><p>Here&#x2019;s yet another great example of how 1Password and <code>rdme</code> can work together in harmony to securely sync a directory of Markdown files to ReadMe:</p><pre><code class="language-YAML"># Runs on every push to the `main` branch
on:
  push:
    branches: [main]

jobs:
  sync-to-readme:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Load secret from 1Password
        uses: 1password/load-secrets-action@v1
        with:
          # Export loaded secrets as environment variables
          export-env: true
        env:
          OP_CONNECT_HOST: &lt;Your Connect instance URL&gt;
          OP_CONNECT_TOKEN: ${{ secrets.OP_CONNECT_TOKEN }}
          RDME_API_KEY: &quot;op://engineering/readme/api-key&quot;

      - name: Sync OpenAPI file to ReadMe &#x1F989;
        uses: readmeio/rdme@v8
        with:
          # `rdme` automatically reads the `RDME_API_KEY` env variable
          rdme: docs ./documentation</code></pre><p>Let&#x2019;s break down what&#x2019;s happening in the example above:</p><ul><li>This workflow kicks off when a commit is pushed to the <code>main</code> branch of your GitHub repository.</li><li><a href="https://developer.1password.com/docs/ci-cd/github-actions?ref=blog.readme.com#export-secrets-as-environment-variables">1Password&#x2019;s GitHub Action</a> establishes a secure connection to 1Password, grabs the ReadMe API key value and exports that as an environmental variable called <code>RDME_API_KEY</code>.</li><li>The <a href="https://github.com/marketplace/actions/rdme-sync-to-readme?ref=blog.readme.com#authentication"><code>rdme</code> GitHub Action automatically detects</a> <code>RDME_API_KEY</code> as an environmental variable containing your ReadMe API key, and uses that to sync your Markdown docs (located in the <code>documentation/</code> folder) to your ReadMe project.</li></ul><p>With the power of 1Password and <code>rdme</code>, you can securely sync your docs to ReadMe &#x2014; whether you&#x2019;re working in the command line or in a GitHub Actions runner &#x1F60C;</p><h1 id="now-let%E2%80%99s-get-you-plugged-in-%F0%9F%94%8C">Now let&#x2019;s get you plugged in &#x1F50C;</h1><p>Ready to start syncing? The integrations described above are available now:</p><ul><li>Head over to <a href="https://developer.1password.com/docs/cli/shell-plugins/readme/?ref=blog.readme.com">the 1Password Developer docs</a> to get the ReadMe shell plugin up and running &#x1F41A;</li><li>Check out our docs on <a href="https://docs.readme.com/main/docs/rdme?ref=blog.readme.com#github-actions-usage">setting up the <code>rdme</code> GitHub Action</a> and <a href="https://developer.1password.com/docs/ci-cd/github-actions/?ref=blog.readme.com">1Password&#x2019;s docs on loading secrets into your GitHub Actions workflows</a> &#x1F30A;</li><li>Check out my appearance on the <a href="https://randombutmemorable.simplecast.com/episodes/the-developer-special?ref=blog.readme.com">&quot;The Developer Special&quot; episode of 1Password&apos;s &quot;Random but Memorable&quot; podcast</a>. We have a wide-ranging conversation about 1Password&apos;s developer tools, developer tools in general, and upcoming projects we&apos;re cooking up here at ReadMe &#x1F399;&#xFE0F;</li><li>Join us on May 11th in SF at <a href="https://apimixtape.com/?ref=blog.readme.com">API Mixtape</a>, where we&apos;ll be talking all things developers with folks from 1Password, Twilio, and more. Use the code 1PASS for a <strong>free</strong> ticket (hurry, just a few of these codes are available!)  &#x1F4FC;</li></ul><p>We&#x2019;re always looking for ways to make ReadMe&#x2019;s developer tools safer and more enjoyable to use. If you have any feedback about your ReadMe experience, feel free to reach out to us at <a href="mailto:support@readme.io">support@readme.io</a> or <a href="https://github.com/readmeio/rdme/issues/new?ref=blog.readme.com">open up an issue in the <code>rdme</code> repository</a>. We&#x2019;d love to hear from you! &#x1F989;</p>]]></content:encoded></item><item><title><![CDATA[Take a Tour of the New Editor, Sidebar, and Page Controls 🗺️]]></title><description><![CDATA[Get to know ReadMe's Markdown editor, Sidebar, and Page Controls to make editing and maintaining your API documentation a breeze.]]></description><link>https://blog.readme.com/tour-new-editor-sidebar/</link><guid isPermaLink="false">640fcbc3eb12b2003d00aa98</guid><category><![CDATA[Product Updates]]></category><dc:creator><![CDATA[Miche Nickolaisen]]></dc:creator><pubDate>Tue, 28 Mar 2023 13:00:00 GMT</pubDate><media:content url="https://blog.readme.com/content/images/2023/03/Blog-1.webp" medium="image"/><content:encoded><![CDATA[<img src="https://blog.readme.com/content/images/2023/03/Blog-1.webp" alt="Take a Tour of the New Editor, Sidebar, and Page Controls &#x1F5FA;&#xFE0F;"><p>When it comes to documentation, it&#x2019;s easy to focus on the reader experience &#x2014; is it well-written? Easy to skim? Full of helpful code samples for getting started? <br>But creating that documentation should be a great experience, too. And most importantly, when making updates is a breeze, you&#x2019;re more likely to keep your docs up-to-date for your users. </p><p>With that in mind, over the last year our team has been working on a new version of our Markdown editor focused on creating a lightning-fast, intuitive writer experience. We&#x2019;ve also revamped the sidebar and page controls to make organizing your docs simpler, and better match the experience of the new editor. <br>Today, we&#x2019;re thrilled to announce that the new editing experience is live. Keep reading &#x2014; we&#x2019;ll show you around &#x1F973;</p><figure class="kg-card kg-image-card"><img src="https://paper-attachments.dropboxusercontent.com/s_1C2EFD824784296CE0F8B9DF6A7DF0EF7412FA3C2C10E80525D3F79FA1BE03C2_1678754868524_Blog+post+intro+gif.gif" class="kg-image" alt="Take a Tour of the New Editor, Sidebar, and Page Controls &#x1F5FA;&#xFE0F;" loading="lazy"></figure><h2 id="get-to-know-the-new-markdown-editor-%F0%9F%91%8B">Get to Know the New Markdown Editor &#x1F44B;</h2><p>Our goal with this editor was to combine the best elements of Markdown syntax with the previewing abilities of WYSIWYG editors. We aimed to remove any unnecessary steps like the need for a separate &#x201C;preview&#x201D; mode and instead allow you to see your rendered text styling in real time. We also wanted to prevent the dreaded experience of finding yourself stuck in WYSIWYG mode, with no clear path back to plain text. Showing the Markdown syntax makes it easy to see where the formatting stops and starts, so you can focus more on writing your docs and less on fiddling with formatting. </p><figure class="kg-card kg-image-card"><img src="https://paper-attachments.dropboxusercontent.com/s_1C2EFD824784296CE0F8B9DF6A7DF0EF7412FA3C2C10E80525D3F79FA1BE03C2_1678752007560_markdown+syntax+and+blocks.gif" class="kg-image" alt="Take a Tour of the New Editor, Sidebar, and Page Controls &#x1F5FA;&#xFE0F;" loading="lazy"></figure><p><br>The next time you create or edit a page in ReadMe, you&#x2019;ll notice Owlbert welcoming you to the new editor experience and sharing a few tips. Here&#x2019;s a few highlights of what to expect &#x1F989;</p><ul><li>Quickly add headers, images, tables, and other embed blocks with the new slash command menu &#x2014; just hit &#x201C;/&#x201D; to get started &#x1F9F1;</li><li>Easily copy and paste Markdown content into ReadMe, while maintaining all of the syntax and formatting, making content migrations a breeze &#x2702;&#xFE0F;</li><li>Make quick formatting changes with a new in-line hover menu to bold, italicize, strikethrough, or link any highlighted text &#x1F58C;&#xFE0F;</li><li>Prefer to skip the menus? No problem &#x2014; you can always format text using Markdown or use keyboard shortcuts to get the same results &#x2328;&#xFE0F;</li></ul><h2 id="build-great-docs-with-blocks-%F0%9F%9B%A0%EF%B8%8F">Build Great Docs with Blocks &#x1F6E0;&#xFE0F;</h2><p>Our philosophy is that good docs aren&#x2019;t just about words on the page &#x2014; they&#x2019;re about showing users the information they need to quickly get started or troubleshoot their problems. Being helpful and accessible is essential, but we&#x2019;d argue they can (and should!) be fun to use, too &#x1F38A;</p><figure class="kg-card kg-image-card"><img src="https://paper-attachments.dropboxusercontent.com/s_1C2EFD824784296CE0F8B9DF6A7DF0EF7412FA3C2C10E80525D3F79FA1BE03C2_1678751988281_embed+youtube+vid.gif" class="kg-image" alt="Take a Tour of the New Editor, Sidebar, and Page Controls &#x1F5FA;&#xFE0F;" loading="lazy"></figure><p>Embeds are a great way to do that &#x2014; following the age-old writing advice of &#x201C;show, don&#x2019;t tell&#x201D;! So we&#x2019;ve updated everything about our docs blocks to match the new Editor features. Using embeddable blocks, you can: </p><ul><li>Surface useful examples and tutorials with code sample blocks and <a href="https://docs.readme.com/main/docs/recipes?ref=blog.readme.com" rel="noreferrer nofollow noopener">Recipes</a> &#x1F373;</li><li>Embed content from third-party sites, like GitHub Gists or Loom videos, to support your written documentation with tutorials and demos &#x1F4F9;</li><li>Use callouts, GIFs, blockquotes, and dividers to break up large blocks of text and give your docs some personality &#x1F60E;</li></ul><h2 id="find-your-way-with-new-navigation-%F0%9F%A7%AD">Find Your Way With New Navigation &#x1F9ED;</h2><p>The new editing interface isn&#x2019;t the only improvement we&#x2019;ve made to creating docs. Our fully redesigned sidebar makes it easier than ever to take a visual inventory of your docs and re-organize them to your heart&#x2019;s desire &#x1F49E;</p><figure class="kg-card kg-image-card"><img src="https://paper-attachments.dropboxusercontent.com/s_1C2EFD824784296CE0F8B9DF6A7DF0EF7412FA3C2C10E80525D3F79FA1BE03C2_1678752031775_sidebar+overview.gif" class="kg-image" alt="Take a Tour of the New Editor, Sidebar, and Page Controls &#x1F5FA;&#xFE0F;" loading="lazy"></figure><p>With our newly revamped sidebar in Guides and API Reference, you can: </p><ul><li>Collapse pages into categories or their parent pages to make your content easy to scan &#x1F50E;</li><li>Use the improved drag-and-drop UI to easily move pages between categories or re-arrange categories within your sidebar &#x1F449;</li><li>Rename, delete, and move pages between sections from the three dot menu next to all pages and categories &#x1F3B2;</li><li>More easily access your project&#x2019;s API Definitions, Getting Started, and Authentication pages, which are now anchored at the top of the API Reference section of the sidebar &#x2693;&#xFE0F;</li></ul><p>Our page controls have also gotten an upgrade &#x2014; it&#x2019;s now easier to view and change your page type, switch between your page&#x2019;s status (public vs. hidden), and edit a page&#x2019;s metadata. Plus, our upgraded Page History simplifies tracking changes between versions. Versions are now grouped by month and are collapsible, so it&#x2019;s easy to go as far back as you need to to find the version you want. </p><figure class="kg-card kg-image-card"><img src="https://paper-attachments.dropboxusercontent.com/s_1C2EFD824784296CE0F8B9DF6A7DF0EF7412FA3C2C10E80525D3F79FA1BE03C2_1678756673696_Page+History+Overview.gif" class="kg-image" alt="Take a Tour of the New Editor, Sidebar, and Page Controls &#x1F5FA;&#xFE0F;" loading="lazy"></figure><h2 id="let-end-users-give-you-a-hand">Let End Users Give You a Hand </h2><p>Why keep the new editing experience to yourself? We&#x2019;ve upgraded our <a href="https://docs.readme.com/main/docs/suggested-edits?ref=blog.readme.com" rel="noreferrer nofollow noopener">&#x201C;Suggest Edits&#x201D; feature</a> to showcase a version of our new Markdown editor so that your developers can try it out too!<br></p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/03/new-suggested-edits-flow.gif" class="kg-image" alt="Take a Tour of the New Editor, Sidebar, and Page Controls &#x1F5FA;&#xFE0F;" loading="lazy" width="1200" height="660" srcset="https://blog.readme.com/content/images/size/w600/2023/03/new-suggested-edits-flow.gif 600w, https://blog.readme.com/content/images/size/w1000/2023/03/new-suggested-edits-flow.gif 1000w, https://blog.readme.com/content/images/2023/03/new-suggested-edits-flow.gif 1200w" sizes="(min-width: 720px) 720px"></figure><p><br>Whether a developer catches a simple typo or proposes feedback, enabling Suggest Edits makes it that much easier for you to know what changes are needed in your docs and crowdsource that help from your community! The Discussions section has also gotten an upgrade, so your developers can ask questions in style &#x1F929;</p><h2 id="now-it%E2%80%99s-your-turn-%E2%8F%AD%EF%B8%8F">Now It&#x2019;s Your Turn &#x23ED;&#xFE0F;</h2><p>You can watch a full demo on the new experience <a href="https://www.youtube.com/watch?v=Lca2fpkzD1U&amp;ref=blog.readme.com">here</a>, and read our docs on the new editor <a href="https://docs.readme.com/docs/new-markdown-editor-overview-beta?ref=blog.readme.com" rel="noreferrer nofollow noopener">here</a> and on the upgraded sidebar and page controls <a href="https://docs.readme.com/main/docs/new-sidebar-page-navigation?ref=blog.readme.com" rel="noreferrer nofollow noopener">here</a>. Most importantly, we hope you jump in and try it out. We&#x2019;ve worked hard to make the new editing experience as delightful as possible, so we&#x2019;d love to hear what you think &#x2728;</p><p>Speaking of hard work, we want to take a moment to recognize all of the <a href="https://readme.com/about?ref=blog.readme.com">ReadMe team members</a> who worked to bring these new experiences to life: Aaron Hedges, Brendan Luna, Daniels Lee, Ellie Rossuck, Ilias Tsangaris, Julia Hotaling, Kelly Price, Kevin Ports, Naomi Day, Rafe Goldberg, Ryan Visek, and Trisha Le &#x1F44F;</p><p>As always, if you have any questions about it (or anything else), feel free to reach out via email at support@readme.io, or by sending a message via the Intercom widget in your dashboard or hub. Happy editing!</p>]]></content:encoded></item><item><title><![CDATA[Webinar Recap 🎤 Developer Experience, API Performance, and More with AWS]]></title><description><![CDATA[<p>Recently, we co-hosted an AMA (Ask Me Anything) webinar with Josh Nickerson, Senior Manager of Product Management for Amazon API Gateway, and our founder &amp; CEO, Greg Koberger. Over the course of the hour, Dave (the moderator and VP of Sales here at ReadMe) was able to ask them audience</p>]]></description><link>https://blog.readme.com/webinar-recap-apis-aws/</link><guid isPermaLink="false">63e4019b5982b7003df9cd1e</guid><category><![CDATA[API Tips]]></category><category><![CDATA[Developer Experience]]></category><dc:creator><![CDATA[Miche Nickolaisen]]></dc:creator><pubDate>Thu, 09 Feb 2023 15:35:02 GMT</pubDate><media:content url="https://blog.readme.com/content/images/2023/02/Radio-DJ.psd.full.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.readme.com/content/images/2023/02/Radio-DJ.psd.full.png" alt="Webinar Recap &#x1F3A4; Developer Experience, API Performance, and More with AWS"><p>Recently, we co-hosted an AMA (Ask Me Anything) webinar with Josh Nickerson, Senior Manager of Product Management for Amazon API Gateway, and our founder &amp; CEO, Greg Koberger. Over the course of the hour, Dave (the moderator and VP of Sales here at ReadMe) was able to ask them audience questions covering everything from the future of APIs to getting leadership buy-in on new API initiatives. Read on to find out what they said, and if you&#x2019;re curious about our partnership with AWS, you can learn more about that <a href="https://blog.readme.com/announcing-our-amazon-partnership-developer-hubs-for-amazon-api-gateway/" rel="noreferrer nofollow noopener">here</a>. </p><p><em>Editor&#x2019;s note: Answers have been lightly edited for brevity and clarity.</em></p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_AMA_AWS_-_The_ReadMe_Blog_and_1Password.png" class="kg-image" alt="Webinar Recap &#x1F3A4; Developer Experience, API Performance, and More with AWS" loading="lazy" width="1515" height="858" srcset="https://blog.readme.com/content/images/size/w600/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_AMA_AWS_-_The_ReadMe_Blog_and_1Password.png 600w, https://blog.readme.com/content/images/size/w1000/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_AMA_AWS_-_The_ReadMe_Blog_and_1Password.png 1000w, https://blog.readme.com/content/images/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_AMA_AWS_-_The_ReadMe_Blog_and_1Password.png 1515w" sizes="(min-width: 720px) 720px"></figure><h1 id="driving-api-adoption">Driving API Adoption</h1><h2 id="what-are-the-must-haves-if-you%E2%80%99re-launching-a-new-public-api-at-your-company">What are the must-haves if you&#x2019;re launching a new public API at your company?</h2><p><strong>Josh: </strong>There&apos;s a lot to keep in mind, but availability and security are my top two concerns: </p><ul><li><strong>Availability: </strong>You should have an idea of how much traffic you&#x2019;re expecting and be confident that you can handle it</li><li><strong>Security: </strong>You want to be confident that you&#x2019;re not opening up your systems to a potential data breach</li></ul><p>Other potential concerns include: </p><ul><li><strong>What sort of authentication authorization setup do you have?</strong> Will this be an open API that anyone can use, or do you want to know the details of and set permissions for users?</li><li><strong>How are people going to find out about the API? </strong>As you launch multiple APIs and package them into products, what scalable tools are you using to document and share them?</li></ul><p><strong>Greg:</strong> My biggest concern before you start: have strong use cases for why someone would use your API. People launch APIs and then nobody uses them, because the endpoints don&#x2019;t make sense for real-life use cases. </p><p><strong>Avoid the &#x201C;build it and they will come&#x201D; mentality &#x2014; you&#x2019;re asking people to dedicate resources, time, effort, and trust. </strong>Make sure there are very clear use cases that people are actually excited about and accommodate those use cases when building the API. Focus on knowing what it is that users want to build and designing your API to give them a head start on that.</p><p></p><h2 id="after-launching-your-api-how-do-you-gather-and-prioritize-developer-feedback">After launching your API, how do you gather and prioritize developer feedback?</h2><p><strong>Josh:</strong> There are a lot of key factors to take into account: </p><ul><li>What&apos;s the input? How are they going to give you this feedback? <a href="https://readme.com/community?ref=blog.readme.com" rel="noreferrer nofollow noopener">Built-in feedback options on documentation</a>, emails to your team, a support forum? Whatever they&#x2019;ll be doing to share feedback, make it as easy as possible.</li><li>What are you going to do with that feedback when you get it? How will you prioritize issues, estimate the resources it will need to fix them, and incorporate those fixes into development sprints?</li></ul><p><strong>Greg:</strong> I notice that developers have a tendency to &#x201C;just figure it out&#x201D; and often don&#x2019;t raise their hands to ask questions, which can result in developers:</p><ul><li>Assuming that the problem/issue is their fault</li><li>Getting frustrated and moving on, writing off the product/API as a result</li></ul><p>That self-sufficient DIY mentality is one reason docs are so important; it&#x2019;s also important to actively solicit feedback to counteract it. Not just via thumbs up/down on docs, but also watching metrics for errors on specific endpoints and reaching out to users to help fix that problem. In watching for and then being proactive with with ReadMe errors, we&#x2019;ve improved the documentation and fixed bugs, but also made customers happier and gathered valuable feedback. </p><p></p><h2 id="what-metrics-do-you-look-at-to-understand-api-health">What metrics do you look at to understand API health?</h2><p><strong>Josh: </strong>Depends on the targets you have for the API, but in general: </p><ul><li>Engagement and growth relative to the targets you have. How many people are using it? Is that number growing?</li><li>Operational metrics like error rates. Are you seeing fatal errors? What&#x2019;s the error trend-line look like? Is latency relative to where you want it to be?</li></ul><p>Then, depending on what the API is, others can come into play from a security perspective or a monetization perspective, but those are common top ones.</p><p><strong>Greg: </strong>It&apos;s very important to look at not just big picture graphs/metrics, but that&#x2019;s not enough &#x2014; it tends to fall apart when it comes to early users. Things to consider: </p><ul><li>The sheer volume of API calls you get (in general and from heavy users) can easily skew success percentages</li><li>Looking at new customers and their usage metrics can help offset that and keep you from losing early users when they run into errors</li><li>People interact with APIs in two major ways: actual developers trying to get a response back, and in production with the API running behind the scenes</li><li>Separating those scenarios is important, something running like clockwork for a year+ is a different data set than the people making changes and trying to make something new happen (and potentially running into errors)</li></ul><p>I agree with everything Josh said, but I want to emphasize that it&apos;s important to realize every failed API request is a real person trying to do something for real, for their customers, for themselves, etc. Make sure it&apos;s easier to highlight those very few small amounts of errors, especially with new users.</p><h1 id="the-state-and-future-of-apis">The State (and Future) of APIs</h1><h2 id="how-do-you-see-the-api-landscape-changing-in-2023-based-on-the-startup-tech-market-right-now">How do you see the API landscape changing in 2023 based on the startup tech market right now?</h2><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_AMA_AWS_-_The_ReadMe_Blog_and_Signal.png" class="kg-image" alt="Webinar Recap &#x1F3A4; Developer Experience, API Performance, and More with AWS" loading="lazy" width="1513" height="857" srcset="https://blog.readme.com/content/images/size/w600/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_AMA_AWS_-_The_ReadMe_Blog_and_Signal.png 600w, https://blog.readme.com/content/images/size/w1000/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_AMA_AWS_-_The_ReadMe_Blog_and_Signal.png 1000w, https://blog.readme.com/content/images/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_AMA_AWS_-_The_ReadMe_Blog_and_Signal.png 1513w" sizes="(min-width: 720px) 720px"></figure><p><strong>Josh: </strong>It&#x2019;s important to recognize that cloud and serverless operation is still pretty new. The move to microservices and API-first is a newer trend &#x2014; I expect that trend to continue and only get bigger from here. That trend will likely accelerate because companies get cost savings when they don&#x2019;t have an in-house data center and they can decentralize things, make them more modular. That ability to move faster becomes important in times of economic shifts. </p><p>Security is big factor; the threat landscape and potential of bad actors isn&#x2019;t getting any less scary. I expect emphasis on API security to continue with more scrutiny around data breaches and protection of sensitive data. </p><p>More emergence and refinement of industry-specific API standards. OpenAPI already exists, but we&#x2019;re seeing open banking, open charge point protocol, fast healthcare interoperability requirements, etc. For example, there are government types of customers in public sectors where, if you&apos;re building an API in this kind of space, it needs to meet specific requirements and standards. Companies need to take compliance and regulations into account. It&apos;s important for API providers to think about how they can make it easier to manage those requirements. </p><p><strong>Greg:</strong> It&apos;s less about this year in specific, but I&#x2019;ve always thought there will be a convergence (if not a complete one) between traditionally technical/non-technical people and roles. 10 years ago, if someone said they worked on APIs, it would be a near-guarantee they&#x2019;re a developer, but that&#x2019;s not necessarily the case now. </p><p>The line between technical and non-technical is getting more and more blurred; people are becoming more technical just due to growing up around technology, as well as tools becoming easier and easier to use. More and more people are able to take advantage of tools that have traditionally been locked up in this highly technical knowledge.</p><p>The last thing: I&#x2019;m really intrigued by companies that are realizing that developer tools don&apos;t necessarily mean users have to build everything from scratch or go for the most complex solution. Seeing more and more &#x201C;choose your own adventure&#x201D; type options that let users set the level of complexity to match their comfort level and goals. The best tools can meet customers at every single level based on their needs; I expect to see that more and more over the next few years and I&#x2019;m looking forward to it. </p><p></p><h2 id="how-do-you-think-the-emergence-of-ai-will-affect-the-api-landscape">How do you think the emergence of AI will affect the API landscape?</h2><p><strong>Greg:</strong> This is a good dovetail with last answer. An example: As an engineer, OpenAPI&#x2019;s API can be frustrating, because it uses prompts, which can feel unpredictable when used to standard coding methods. At the same time, it&#x2019;s fascinating and interesting, and a good showcase of changing how people think about interacting with the system. Before, we&#x2019;ve always interacted with systems after letting computers do most of the decision-making about how we talk, since they need specific structure. </p><p>AI flipped that, so that we&#x2019;re no longer communicating on the computer&#x2019;s terms. I expect this to bring more and more people into the field and make it easier to do more and more complex things. I&#x2019;m excited to see what it will look like to interact with computers in 5, 10, 15 years with some of these changes/evolutions. </p><p><strong>Josh:</strong> I&apos;ve worked in Alexa AI for three years, owning internal machine learning platform that Alexa scientists and engineers used to build a different model. After that experience, I have two thoughts: </p><ul><li>Agree with what Greg said earlier &#x2014; AI and the emergence of AI will make it easier for people to build APIs</li><li>What&#x2019;s happening in machine learning parallels what happened in the previous software generation, where we&#x2019;re seeing machine learning ops (similar to dev ops) emerge; people want to track the evolution and lineage of a model across lifecycle from raw data to model to in production</li></ul><p>APIs play into all of this and it&#x2019;s something we need to start thinking about as we build APIs. Does this enable a machine-learning driven use-case? Does it plug into their data pipeline or machine learning ops? These are some new things to consider when thinking about business cases for an API. </p><p></p><h2 id="how-can-employees-make-an-effective-argument-for-getting-more-resources-for-api-efforts">How can employees make an effective argument for getting more resources for API efforts?</h2><p><strong>Josh: </strong>Two things come to mind from how Amazon operates: </p><ul><li><strong>Being data driven: </strong>You need to understand what the ROI is, whether that&#x2019;s in terms of cost, time, productivity, etc., and be able to clearly communicate that</li><li><strong>Customer obsession: </strong>What&#x2019;s the voice of the customer here? How does what you want to do with the API relate to what customers are asking for? Can you bring in direct quotes from customers to back this up?</li></ul><p>Potential third consideration: pattern recognition. Point to other successful examples of companies that did something similar and it worked out well for them.</p><p><strong>Greg: </strong>100% agreed. Make sure you&#x2019;re tracking metrics from the jump, so you can showcase how many people are using it and how they&#x2019;re using it.</p><p></p><h2 id="when-should-you-consider-switching-api-service-providers">When should you consider switching API service providers?</h2><p><strong>Greg: </strong>If you&apos;re thinking about switching to ReadMe, do it now. If you&apos;re trying to switch from ReadMe, maybe that&apos;s more of a 2024 thing? &#x1F914;</p><p><strong>Josh: </strong>Ditto for Amazon API Gateway and AWS more generally. Aside from that, returning to availability and security: </p><ul><li><strong>Availability: </strong>Can they support the kind of scale you need for your API? Not just anecdotally, but do they have a published service level agreement where they specify exactly what you can expect? What&#x2019;s your recourse as a customer if they don&#x2019;t meet those expectations?</li><li><strong>Security: </strong>What&#x2019;s their track record in terms of dealing with the threat landscape? What&#x2019;s their reputation when it comes to security?</li></ul><p>Other things you may want to think about: </p><ul><li><strong>Features:</strong> Can include specific feature needs that you may not be getting at your current provider, but also making sure the feature set is well-rounded, that the roadmap includes updates that are relevant to your needs, etc.</li><li><strong>Cost: </strong>Obviously a factor in any business decision &#x2014; consider pricing model as well as total cost, whether it&#x2019;s easy to understand and independently estimate your cost, whether it&#x2019;s actually based on your usage or not, etc.</li><li><strong>Support: </strong>What are the options for getting support? Is it capped at a specific number of requests per month? Do you have to pay more for extra support?</li></ul><p></p><h1 id="api-usage-and-accessibility">API Usage and Accessibility</h1><h2 id="how-can-api-documentation-best-serve-a-diverse-audience-of-both-technical-and-non-technical-consumers">How can API documentation best serve a diverse audience of both technical and non-technical consumers?</h2><p><strong>Greg:</strong> This is very important thing to think about &#x2014; people want to build things and the coolest thing about the internet is that it enables anyone to be a creator. The more you can do to show that not every API call has to involve writing code, the better. Zapier is a good example, the word API is in their name, but they never talk about APIs outside of that. A lot of other companies have built out components where you don&#x2019;t have to write the full thing, you can just copy and paste one line of code into your docs. </p><p>That&#x2019;s also the downside: people will do that and think they&#x2019;re done. APIs should be really easy, you send data out and you get data back, but they often aren&#x2019;t that easy. The thing that&#x2019;s exciting is remembering that you can really simplify it and the gradually build layers on top to create a bespoke experience. Every API is very bespoke and that&#x2019;s why ReadMe as a product is so customizable. </p><p>There&#x2019;s not a one-size-fits-all solution for any API, but it&#x2019;s not enough to just do docs. You should be showing people clicking around, generating code snippets in their language, giving them API keys when and where they need them, etc. </p><p>I don&apos;t think there&apos;s a one size fits all solution for any API. People used to ask all the time, &quot;Can you just magically have it all work? I don&apos;t want to write docs.&quot; And I think you really need to do everything, you can&apos;t do just docs. Showing people clicking around, generating code snippets in their language, giving them API keys where they need it, things like that are also incredibly important. But I do really think you need both. Maybe AI will come along in two years and that all is moot, but for the next few years, that&apos;s my answer.</p><p><strong>Josh:</strong> It&#x2019;s worth thinking about if it&#x2019;s equally easy (or at least equally accessible) for both non-tech and tech audiences in terms of documentation. For a developer using your API, it should feel familiar &#x2014; it should be consistent with standard naming, formatting, etc. conventions and be consistent with the way similar APIs in your industry operate. This helps it stay intuitive. </p><p><strong>Greg:</strong> I both agree and disagree with that, although it&#x2019;s more of a different perspective than actually disagreeing. I&#x2019;m not necessarily creating the API, I&#x2019;m creating a tool for APIs. Best practices is an interesting concept &#x2014; you should follow them, in general. But the way big breakthroughs in developer experience happen is because of people questioning the best practices. Everyone can&#x2019;t question <em>all </em>best practices <em>all</em> the time, but it&#x2019;s good to take a few steps back and consider whether the big-picture way you&#x2019;ve been approaching things is the best way. Don&#x2019;t let familiarity keep you from thinking critically about your API.</p><p></p><h2 id="what-guidelines-do-you-use-for-deprecating-vs-maintaining-old-api-versions-what%E2%80%99s-the-best-way-to-smoothly-sunset-old-versions-and-get-users-to-upgrade">What guidelines do you use for deprecating vs. maintaining old API versions? What&#x2019;s the best way to smoothly sunset old versions and get users to upgrade?</h2><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_Blog_post__AWS_AMA_recap_-_Dropbox_Paper_and_1Password-1.png" class="kg-image" alt="Webinar Recap &#x1F3A4; Developer Experience, API Performance, and More with AWS" loading="lazy" width="1514" height="856" srcset="https://blog.readme.com/content/images/size/w600/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_Blog_post__AWS_AMA_recap_-_Dropbox_Paper_and_1Password-1.png 600w, https://blog.readme.com/content/images/size/w1000/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_Blog_post__AWS_AMA_recap_-_Dropbox_Paper_and_1Password-1.png 1000w, https://blog.readme.com/content/images/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_Blog_post__AWS_AMA_recap_-_Dropbox_Paper_and_1Password-1.png 1514w" sizes="(min-width: 720px) 720px"></figure><p><strong>Greg:</strong> I think that&apos;s the wrong question &#x2014; I don&#x2019;t think you can smoothly sunset something. People have built on it, they&#x2019;re relying on it (unless there&#x2019;s a large security breach or something similar). Changing things puts a lot of effort and work on the people who have built on it already. </p><p>Instead, I&#x2019;m in favor of proxying old APIs instead, where you only have one version of the code running, but keep old versions running by proxying and doing mapping behind the scenes to match new names, etc. That way, you never disrupt anything. We&#x2019;re still using Stripe&#x2019;s API and built on it initially in 2014, they&#x2019;ve changed a lot of things since then and it&#x2019;s never broken, and they&#x2019;ve never asked us to upgrade or change or rewrite things. That would have been a frustrating user experience if they had. </p><p>The best way to do it is to find a way to keep the API (and its current users) running without being beholden to the past. Don&#x2019;t make your users suffer and rewrite code. </p><p><strong>Josh: </strong>I agree &#x2014; ideally, you don&#x2019;t do this. Changing customer behavior is hard and asking them to do a lot of work to move to your API isn&#x2019;t a great customer experience. It also creates churn risk; if they have to do the work to switch to your new version, they very well may investigate all of your competitors&#x2019; versions as well. </p><p>Ideally, when building API, you think through one-way and two-way doors and create the semantics of requests, responses, naming conventions, etc. in a stable, future-proof way. The entire value of an API is as an abstraction layer, where you can improve things and the customer doesn&#x2019;t have to worry because the API stays the same. </p><p>If it&#x2019;s something you absolutely <em>have</em> to do, you need to communicate transparently. Why are you doing this? When? What do your customers need to do? Give them a really easy way to do it and maybe an incentive for moving over, like plan credits or upgrades if they move by X date. Or do what Greg said and make the changes behind the scenes. Whatever you do, make sure the new version works and scales and have monitoring in place, so you can see when users have moved off and phase out slowly, instead of yanking the rug out from under the users. </p><p></p><h2 id="what-are-your-biggest-pet-peeves-when-it-comes-to-apis">What are your biggest pet peeves when it comes to APIs?</h2><p><strong>Josh:  </strong>I just mentioned deprecating APIs out from under people, that&#x2019;s a big pet peeve of mine, but aside from that:</p><ul><li>We&#x2019;ve also touched on lack of documentation or unclear documentation and how that affects users &#x2014; that&apos;s another one of my pet peeves</li><li>When it&#x2019;s not clear how to use an API, get registered and set up with it, what a request or response looks like</li><li>No testing environment &#x2014; it&apos;s important to have a sandbox where people can try it and (if monetized) try before they buy</li><li>Inconsistency in naming conventions and semantics</li></ul><p><strong>Greg:</strong> APIs are supposed to be really simple: you send data, you get data back, maybe an action happens during that time&#x2026;but every API does things slightly differently. Everything else in tech is getting easier and nicer to use, but APIs still feel exactly the same as they did in the 90s. </p><p>People just believe that when they&#x2019;re creating an API that the confusion and slight differences are the way it has to be, which makes something that should be simple be confusing. I&#x2019;m really excited for people to care more about developer experience; people will say they do, but then do things because it makes sense for them as the API creator, without thinking about end users. </p><p>I&#x2019;d love to see people take a step back and ask themselves how to simplify it, make it easier. People make their APIs super complex and forget that nobody cares about your API &#x2014; they care about what cool things they can do with it.</p><p></p><h2 id="how-are-customer-stories-and-their-readme-usage-impacting-what-readme-is-building-next">How are customer stories and their ReadMe usage impacting what ReadMe is building next?</h2><p><strong>Greg: </strong>ReadMe is a very different product than it was five years ago, people care more about different things. Before, people just wanted to render an OAS file. Now, people are using their documentation as a marketing tool. We get different feature requests. People are really excited about things like layering realtime logs on top of docs and five years ago that wasn&apos;t the mentality.</p><p>Five years ago the mentality, and our tagline, was &#x201C;really nice docs in five minutes.&#x201D; Now, no one thinks that way. Implementations take months, because people put so much time and effort into it. People want to plan launches around their docs. Teams have gone from 1-2 users to 20-40 people using ReadMe. I&#x2019;m really excited about current roadmap; it feels like now what we&apos;re building and what people want is converging.</p><p></p><h2 id="what-are-you-most-excited-about-in-your-2023-roadmap">What are you most excited about in your 2023 roadmap?</h2><p><strong>Josh:</strong> There&apos;s not a lot I can share in this setting, but I can say there are top customer asks for 2023: </p><ul><li>Returning to availability and security, they&#x2019;re the number one priorities</li><li>Even under the face of rapid growth, constantly raising the bar for uptime and scalability</li><li>Security can be weird to talk about because it&apos;s measured by the negative case and the bad things that aren&#x2019;t happening, but doing well on that front</li><li>Continuing to improve both of those things, along with delivering some new things customers are asking for</li></ul><p><strong>Greg: </strong>There are lots of exciting things coming up:</p><ul><li>Getting more into internal microservices &#x2014; not just doing public APIs, but internal APIs as well, which can be just as (if not more) important</li><li>Our goal for this year is to make it so that all of our docs are backed by Git, so you can write and automate the process however you want</li><li>I&apos;m excited about layering GPT-4 on top of the docs, so you can ask questions, which may be a little gimmicky, but is also really fascinating &#x2014; being able to actually ask it to write code snippets for you, as opposed to having to write them yourself</li></ul><p>The last thing I&apos;m really excited about is ReadMe is going to become more of a developer hub, like a developer dashboard. We want to bring it all together and have it all in one spot; lots of upcoming launches around that. Other than that, we&apos;re having a conference in San Francisco in May &#x2014;not a roadmap thing, but watch out for that if you want to see more ReadMe stuff, especially if you&apos;re in San Francisco and want to do it in person! </p><h2 id="thats-all-folks">That&apos;s all, folks! </h2><p>We hope you enjoyed reading Greg and Josh&#x2019;s thoughts &#x2014; we certainly enjoyed hearing them! If you&#x2019;d like to read the full transcript, you can <a href="https://blog.readme.com/ama-webinar-readme-aws-transcript/">do that here</a>. And if you want to learn more about what ReadMe can do for your team, <a href="https://readme.com/customers?ref=blog.readme.com" rel="noreferrer nofollow noopener">take a look at our customer stories</a>, or <a href="https://dash.readme.com/signup?ref=blog.readme.com" rel="noreferrer nofollow noopener">sign up for a free trial here</a>.</p>]]></content:encoded></item><item><title><![CDATA[Helping Your Users Write Succinct API Calls With "api" ✍️]]></title><description><![CDATA[We’re always looking for new ways to make APIs more accessible and lower the on-ramp to getting started. Today, we’re sharing more about "api", our open-source SDK generator.]]></description><link>https://blog.readme.com/helping-your-users-write-simpler-api-calls-with-api/</link><guid isPermaLink="false">63a0b332364c3d003ddac0a2</guid><category><![CDATA[Developer Experience]]></category><category><![CDATA[API Tips]]></category><dc:creator><![CDATA[Kanad Gupta]]></dc:creator><pubDate>Wed, 21 Dec 2022 20:09:31 GMT</pubDate><media:content url="https://blog.readme.com/content/images/2022/12/Boarding-Plane.psd.full.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.readme.com/content/images/2022/12/Boarding-Plane.psd.full.png" alt="Helping Your Users Write Succinct API Calls With &quot;api&quot; &#x270D;&#xFE0F;"><p>When it comes to <a href="https://blog.readme.com/why-dx-matters-driving-api-success-with-a-user-first-approach/">developer experience (DX) at ReadMe</a>, two mantras often come to mind:</p><ol><li><strong>Awesome by default</strong> &#x1F192; While developers often benefit from having a slew of configuration options and flags available in their tooling, <em><strong>too</strong></em> many options can feel overwhelming, particularly for first-time users. Having a sensible default experience will help your developers get to that first successful API call even faster.</li><li><strong>Meet users where they are</strong> &#x1F91D; No two developers are alike, so your API (<a href="https://blog.readme.com/onboarding-users-with-personalized-docs/">and your docs!</a>) should reflect that. Your developers will often have different use cases, different technical stacks, and different levels of experience with APIs. The more your API can accommodate your developers and their diverse needs, the higher your API adoption.</li></ol><p>With these in mind, we&#x2019;re always looking for new ways to make APIs more accessible and lower the on-ramp to getting started. Today, we&#x2019;re sharing more about <a href="https://github.com/readmeio/api?ref=blog.readme.com"><code>api</code>, our open-source SDK generator</a>.</p><p><code>api</code> takes your OpenAPI definition and generates a powerful SDK that&#x2019;s custom-tailored to your API. With the world-class developer experience that an <code>api</code> SDK provides, making API calls has never felt easier or more magical &#x1FA84;</p><h1 id="the-api-origin-story-%F0%9F%92%AD">The <code>api</code> origin story &#x1F4AD;</h1><p>You&#x2019;ve probably heard a lot about APIs, but what exactly is <code>api</code> and why does it matter?</p><p>Let&#x2019;s start by looking at a typical code sample for an API call. In this example, the sample is written in JavaScript, and it uses <a href="https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API?ref=blog.readme.com">the Fetch API</a> to <a href="https://docs.readme.com/main/reference/getopenroles?ref=blog.readme.com">fetch our current job openings from the ReadMe API</a>:</p><pre><code class="language-js">fetch(&apos;https://dash.readme.com/api/v1/apply&apos;, {
  method: &apos;GET&apos;,
  headers: { accept: &apos;application/json&apos; },
})
  .then(res =&gt; res.json())
  .then(json =&gt; console.log(json))
  .catch(err =&gt; console.error(&apos;error:&apos; + err));</code></pre><p>ReadMe&#x2019;s API reference automatically generates code samples for your endpoints in dozens of languages and libraries, including <code>fetch</code>. And for good reason too &#x2014; <code>fetch</code> is popular, versatile, and it&#x2019;s available everywhere!</p><ul><li>It&#x2019;s baked into every modern web browser (including the one you&#x2019;re likely reading this on!) &#x1F310;</li><li>It can run on the server out-of-the-box (thanks to runtimes like <a href="https://deno.com/deploy/docs/runtime-fetch?ref=blog.readme.com">deno</a> and <a href="https://nodejs.org/en/blog/announcements/v18-release-announce/?ref=blog.readme.com#fetch-experimental">Node.js 18</a>) &#x1F4E6;</li><li>It offers a tremendous amount of flexibility to handle a wide variety of API use cases &#x1F4AA;</li></ul><p>But this approach isn&apos;t for everybody. Since <code>fetch</code> and other generic HTTP clients are designed to make calls to nearly every API under the sun, there&#x2019;s inherently going to be verbosity, boilerplate code, and a whole lot of configuration options. This makes your typical, off-the-shelf HTTP client pretty confusing for many API users.</p><p>At ReadMe, we&#x2019;re constantly keeping an eye on the best DX out there, and we&#x2019;ve come to notice a trend. Many of the top <a href="https://techcrunch.com/2022/06/18/the-rise-of-api-first-companies-in-fintech-and-beyond/?ref=blog.readme.com">API-first companies</a> out there offer their own custom <a href="https://en.wikipedia.org/wiki/Software_development_kit?ref=blog.readme.com">SDKs</a>, such as <a href="https://stripe.com/docs/js?ref=blog.readme.com">Stripe</a>, <a href="https://www.twilio.com/docs/libraries/js-libraries?ref=blog.readme.com">Twilio</a>, and <a href="https://github.com/plaid/plaid-node?ref=blog.readme.com">Plaid</a> (and I&#x2019;m only linking to their JavaScript SDKs!).</p><p>Those companies and their respective SDKs are the tip of the iceberg. API-first companies are continually investing in SDKs for a variety of programming languages, and for good reason. With an SDK that&#x2019;s custom-tailored to a single API, their users have much less boilerplate code and confusing configuration options to deal with, so they can get to that first successful API call even faster.</p><p>Thousands of great APIs run their developer hubs on ReadMe, where our customers are already documenting every little detail about their API using <a href="https://docs.readme.com/docs/openapi?ref=blog.readme.com">the OpenAPI Specification</a>. This got us thinking: &#x201C;the OpenAPI Specification already provides a ton of valuable information about an API, what if we use this to generate an SDK that&#x2019;s as good as <a href="https://github.com/makenotion/notion-sdk-js?ref=blog.readme.com">Notion&#x2019;s JavaScript SDK</a>&#x201D;?</p><p>And that, my friends, is how <code>api</code> came to fruition. &#x1F331;</p><h1 id="making-fetch-api-happen-%F0%9F%92%84">Making <s>fetch</s> <code>api</code> happen &#x1F484;</h1><p>Let&#x2019;s revisit our previous example: fetching current job openings from the ReadMe API. The <code>fetch</code> sample we looked at works perfectly fine, but what would an API call look like if the ReadMe API had a custom-tailored SDK? That&#x2019;s where <code>api</code> comes in.</p><p>Here&#x2019;s what <a href="https://docs.readme.com/main/reference/getopenroles?ref=blog.readme.com">the same API call</a> looks like with a code snippet using the <code>api</code>-generated SDK:</p><pre><code class="language-js">readme.getOpenRoles()
  .then(({ data }) =&gt; console.log(data))
  .catch(err =&gt; console.error(err));</code></pre><p>Notice how there is far less boilerplate code than the <code>fetch</code> example, and much of the complexity is abstracted away. But the code sample does the exact same thing!</p><p>Let&#x2019;s break down the process of SDK generation, end to end:</p><ol><li>The ReadMe API is documented using an OpenAPI definition. Within that definition, there is an <a href="https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md?ref=blog.readme.com#operationObject">operation</a> with an ID (i.e., <code>operationId</code>) called <code>getOpenRoles</code>.</li><li>Anytime an API user (in this case, someone that wishes to <a href="https://readme.com/careers?ref=blog.readme.com">apply for a job at ReadMe</a>) runs the installation command to set up the SDK, <code>api</code> takes the OpenAPI definition and generates an SDK that&#x2019;s completely customized to the ReadMe API. It contains methods for every operation available in the API definition, as well as detailed descriptions of every request and response parameter.</li><li>Once the installation is complete, the user imports the SDK into their code and starts writing. Thanks to the comprehensive TypeScript definitions produced by <code>api</code>, code completion platforms like <a href="https://code.visualstudio.com/docs/editor/intellisense?ref=blog.readme.com">IntelliSense</a> can guide them along as they write their snippet. They&#x2019;re able to successfully hit the ReadMe API with a code snippet that&#x2019;s a fraction of the length and complexity of the corresponding <code>fetch</code> snippet.</li></ol><p>That&#x2019;s the developer experience ethos we&#x2019;re going for with <code>api</code>: a readable, succinct code snippet that will get you to that first successful call in a jiffy. &#x1F95C;</p><h1 id="elevate-your-openapi-powered-dx-with-api-%F0%9F%93%88">Elevate your OpenAPI-powered DX with <code>api</code> &#x1F4C8;</h1><p>One important design consideration as we built <code>api</code> is that we wanted the SDK generation to be completely agnostic of your documentation platform, much like OpenAPI itself. Because <code>api</code> is built on top of the OpenAPI specification, anybody that describes their API using OpenAPI can step up their DX with a custom SDK generated by <code>api</code>.</p><p>There are a few requirements to get started:</p><ul><li><a href="https://nodejs.org/?ref=blog.readme.com">Node.js</a> and <code>npm</code> installed</li><li>A local directory with a <code>package.json</code> file created</li><li>An OpenAPI definition, either located in your directory or served from a URL</li></ul><p>Once you have everything in order, you can generate a custom-tailored SDK by running the following command from the root of your directory and following the prompts:</p><pre><code class="language-bash">npx api install [path-to-api-definition]
</code></pre><p>Once the SDK is generated, you&#x2019;ll be writing succinct code snippets and getting to that successful first API call in no time &#x1F680;</p><h1 id="two-birds-%F0%9F%90%A6-one-incredible-dx-%F0%9F%8C%9F">Two birds &#x1F426;, one incredible DX &#x1F31F;</h1><p>If there&#x2019;s one thing that developers, technical writers, and pretty much <strong><strong><strong>anyone</strong></strong></strong> enjoys, it&#x2019;s being able to stretch your work so it goes further and saves you time. And that&#x2019;s another reason why we&#x2019;re so excited about <code>api</code> and how it leverages the existing OpenAPI ecosystem to supercharge your users&#x2019; developer experience in ReadMe.</p><p>Before <code>api</code> came around, there were already many great ways that a comprehensive OpenAPI definition could set your API reference apart and further set your users up for success:</p><ul><li>Comprehensive security scheme definitions can help your users navigate one of the trickiest parts of getting started with an API: authentication!</li></ul><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2022/12/GS-A-Pages-in-Hub.gif" class="kg-image" alt="Helping Your Users Write Succinct API Calls With &quot;api&quot; &#x270D;&#xFE0F;" loading="lazy" width="1200" height="660" srcset="https://blog.readme.com/content/images/size/w600/2022/12/GS-A-Pages-in-Hub.gif 600w, https://blog.readme.com/content/images/size/w1000/2022/12/GS-A-Pages-in-Hub.gif 1000w, https://blog.readme.com/content/images/2022/12/GS-A-Pages-in-Hub.gif 1200w" sizes="(min-width: 720px) 720px"></figure><ul><li>Detailed request parameter descriptions and definitions (with default values, enums, and examples!) eliminate ambiguity and help your users understand exactly what data to send to your API:</li></ul><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2022/12/CleanShot-2022-12-14-at-13.33.10.gif" class="kg-image" alt="Helping Your Users Write Succinct API Calls With &quot;api&quot; &#x270D;&#xFE0F;" loading="lazy" width="960" height="526" srcset="https://blog.readme.com/content/images/size/w600/2022/12/CleanShot-2022-12-14-at-13.33.10.gif 600w, https://blog.readme.com/content/images/2022/12/CleanShot-2022-12-14-at-13.33.10.gif 960w" sizes="(min-width: 720px) 720px"></figure><ul><li>By capturing exhaustive response schemas and plenty of examples for every edge case, your users will know exactly what to expect from your API&#x2019;s responses:</li></ul><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2022/12/CleanShot-2022-12-14-at-13.38.12.gif" class="kg-image" alt="Helping Your Users Write Succinct API Calls With &quot;api&quot; &#x270D;&#xFE0F;" loading="lazy" width="918" height="620" srcset="https://blog.readme.com/content/images/size/w600/2022/12/CleanShot-2022-12-14-at-13.38.12.gif 600w, https://blog.readme.com/content/images/2022/12/CleanShot-2022-12-14-at-13.38.12.gif 918w" sizes="(min-width: 720px) 720px"></figure><p>But who said that a great developer experience should start and end with your docs? By investing in the above aspects of your OpenAPI definition, your users&#x2019; experience with your <code>api</code>-generated SDK becomes even more magical:</p><ul><li>Thanks to that security scheme definition, passing in authentication credentials into your SDK is a one-liner:</li></ul><pre><code class="language-js">sdk.auth(&apos;API_KEY&apos;);
</code></pre><ul><li>Because of those detailed request parameter definitions, passing in request parameters is a much more straightforward exercise that uses a fraction of the boilerplate code. And thanks to the power of TypeScript, users will get helpful cues about the parameters as they write in their editor:</li></ul><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2022/12/CleanShot-2022-12-14-at-13.16.15.gif" class="kg-image" alt="Helping Your Users Write Succinct API Calls With &quot;api&quot; &#x270D;&#xFE0F;" loading="lazy" width="960" height="384" srcset="https://blog.readme.com/content/images/size/w600/2022/12/CleanShot-2022-12-14-at-13.16.15.gif 600w, https://blog.readme.com/content/images/2022/12/CleanShot-2022-12-14-at-13.16.15.gif 960w" sizes="(min-width: 720px) 720px"></figure><ul><li>And because of those exhaustive response schemas, users will also be able to leverage TypeScript hints to parse out response bodies:</li></ul><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2022/12/CleanShot-2022-12-14-at-13.28.15.gif" class="kg-image" alt="Helping Your Users Write Succinct API Calls With &quot;api&quot; &#x270D;&#xFE0F;" loading="lazy" width="960" height="384" srcset="https://blog.readme.com/content/images/size/w600/2022/12/CleanShot-2022-12-14-at-13.28.15.gif 600w, https://blog.readme.com/content/images/2022/12/CleanShot-2022-12-14-at-13.28.15.gif 960w" sizes="(min-width: 720px) 720px"></figure><p>There&#x2019;s already a tremendous amount of value in putting together a rock-solid OpenAPI definition. With <code>api</code>, you get even more developer experience bang for your OpenAPI buck &#x1F4B8;</p><h1 id="available-now-in-your-readme-api-reference-%F0%9F%A6%89">Available now in your ReadMe API reference &#x1F989;</h1><p>If you have an API reference section that&#x2019;s powered by ReadMe, your users can start writing better API calls with <code>api</code> today. They can select <strong><strong><strong><strong>Node</strong></strong></strong></strong> in the language selector and select the <strong>api</strong> library to get started.</p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2022/12/CleanShot-2022-12-14-at-13.30.09@2x.png" class="kg-image" alt="Helping Your Users Write Succinct API Calls With &quot;api&quot; &#x270D;&#xFE0F;" loading="lazy" width="912" height="892" srcset="https://blog.readme.com/content/images/size/w600/2022/12/CleanShot-2022-12-14-at-13.30.09@2x.png 600w, https://blog.readme.com/content/images/2022/12/CleanShot-2022-12-14-at-13.30.09@2x.png 912w" sizes="(min-width: 720px) 720px"></figure><p>If you run into any issues, check out <a href="https://api.readme.dev/docs?ref=blog.readme.com">our docs</a> and feel free to contact us at <a href="https://www.notion.so/Plan-for-bin-readme-com-2ad33cb9b9aa431abdb2b1bc80028b9c?ref=blog.readme.com">support@readme.io</a>. <code>api</code> is proudly open-source (shoutout to <a href="https://twitter.com/sharpfarts?ref=blog.readme.com">Jon</a> for your all your hard work on this!) so feel free to open up an issue in <a href="https://github.com/readmeio/api?ref=blog.readme.com">the <code>api</code> GitHub repository</a>.</p>]]></content:encoded></item><item><title><![CDATA[Behind The Docs ✍️ Q&A with Beth Favini, Director of Product Documentation at Couchbase]]></title><description><![CDATA[<p>At ReadMe, we think a lot about creating a great experience for developers building with our customers&#x2019; APIs. But we care a lot about the folks responsible for those APIs, too! Behind the scenes of every developer hub, there&#x2019;s a team of engineers, product managers, and technical</p>]]></description><link>https://blog.readme.com/behind-the-docs-q-a-with-beth-favini-senior-director-of-ux-technical-writing-at-akamai/</link><guid isPermaLink="false">638a3fa2afeb78003d6c41e2</guid><category><![CDATA[Behind the Docs]]></category><category><![CDATA[Developer Experience]]></category><dc:creator><![CDATA[Miche Nickolaisen]]></dc:creator><pubDate>Wed, 14 Dec 2022 19:27:42 GMT</pubDate><media:content url="https://blog.readme.com/content/images/2022/12/Sherlock.psd.full.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.readme.com/content/images/2022/12/Sherlock.psd.full.png" alt="Behind The Docs &#x270D;&#xFE0F; Q&amp;A with Beth Favini, Director of Product Documentation at Couchbase"><p>At ReadMe, we think a lot about creating a great experience for developers building with our customers&#x2019; APIs. But we care a lot about the folks responsible for those APIs, too! Behind the scenes of every developer hub, there&#x2019;s a team of engineers, product managers, and technical writers who make the magic happen &#x2728;</p><p>Today, we&#x2019;re excited to kick off our first &#x201C;Behind the Docs&quot; user Q&amp;A &#x2014; giving you a closer look not just at how they&#x2019;re using ReadMe, but at their career learnings, perspective on working with APIs, and favorite growth resources.</p><p>First up? Beth Favini, Senior Director of Product Documentation at Couchbase. We <a href="https://readme.com/customers/akamai?ref=blog.readme.com">worked closely with Beth</a> during her time at Akamai as Senior Director of UX Technical Writing and Learning, and she recently took on this exciting new role to scale the documentation team at Couchbase. Below, she shares her insights on breaking into technical writing, becoming a leader, and what keeps her motivated as an industry vet in the growing field of technical writing.</p><h2 id="let%E2%80%99s-talk-about-your-career-path-how-did-you-get-into-technical-writing">Let&#x2019;s talk about your career path. How did you get into technical writing? </h2><p>In college, I majored in English and had always intended on becoming an English teacher. But after about two days in the classroom, I realized that was not for me. After that, I pivoted and altered my major, adding a specialization in professional writing. I studied technical writing, then I got an internship and started my career as a technical writer.</p><p>Early in my career, I was really intimidated by all of the smart technical people around me that had a more technical background than I did. &#xA0;As a result, I was afraid to ask questions when I didn&#x2019;t understand something., But then one day, I was at a product design review and I realized that what everyone was talking about didn&#x2019;t make sense to me. At first, I was afraid to say anything because I assumed it was <em>me</em> &#x2014; that I just wasn&apos;t getting it. <strong>But finally, I realized I wasn&apos;t going to be able to do my job if I didn&apos;t ask the question.</strong> I forget exactly what it was, but &#xA0;I seem to recall they were discussing a feature with a requirement that wouldn&#x2019;t be supported in the new release. The logic didn&apos;t add up. So I said, &#x201C;I don&apos;t understand. How do we reconcile that?&#x201D; And the room was silent for a minute and I thought, &#x201C;Oh no, they&apos;re going to fire me. They found me out.&#x201D;</p><p>Then the leader turned and said, &quot;Oh wow, that is a good question. We didn&apos;t think about that.&quot; And they had to start over. Over time, I became more confident and would ask questions when things didn&apos;t make sense to me. The aha moment for me was that I had always assumed that I didn&#x2019;t have a technical mind because I was an English major. I liked writing. I was not a math person. <strong>But what I learned from working in tech was that I had a very analytical mind and the questions I asked added value.</strong></p><p>Learning that helped me gain confidence and grow in my career. <strong>I try to share that with young people who are just starting out, because being a technical writer is not one size fits all. </strong>You can come from a variety of backgrounds and still add a lot of value and have a really great career. The more I asked, the better I did. It really helped me rise in my career, the fact that I wasn&apos;t afraid to ask questions and they were generally really good ones.</p><h2 id="what-drew-you-to-your-role-at-akamai-the-company-the-position-the-team">What drew you to your role at Akamai? The company, the position, the team?</h2><p>A bit of all three, but I think the big draw was that I was finally going to be working within a User Experience team. For my whole career, I&apos;d been doing UX work, but I was never part of the actual official department. Akamai was the first opportunity I had to be one of the pillars of UX.<strong> </strong>They have three pillars now, but at the time, the pillars were UX research, UX strategy, UX design, and UX writing. So I came on board as a director of UX writing and joined this UX team and feel like I learned so much about UX processes. I had always operated using common sense and having empathy for the user, but I learned a lot about UX best practices and how to design things properly based on research, data, and insights.</p><h2 id="and-how-did-you-grow-from-technical-writer-to-where-you-are-now-leading-a-team">And how did you grow from technical writer to where you are now, leading a team?</h2><p>That was a little bit of a windy path too, because I never wanted to be a manager.<br>When I finally did take a management position, I found it to be really challenging and stressful, and went back to being an individual contributor, which I loved. But at that point, I missed the collaborative dynamic I had with other managers and having more of a voice in decision making. So, over the course of the next seven years or so, I went back and forth between management and writing. I wasn&#x2019;t really sure which I wanted to pursue.</p><p><strong>In the end I settled on management, and now I&apos;ve been managing teams, large teams even, for about 20 years. I find it really rewarding.</strong> I learn new things all the time. It&apos;s never boring &#x2014; sometimes it&apos;s really hard. I feel like I&#x2019;ve found my sweet spot, and Akamai allowed me to rise to a level I had never been before, along with giving me a role in UX. I loved the variety in my job there, but it was certainly been a zig-zaggy road to get there.</p><h2 id="how-has-managing-people-changed-your-perspective-on-work">How has managing people changed your perspective on work?</h2><p><strong>First, I find it really rewarding to help people find their strengths and to use the strengths of people to get something done. </strong>I&#x2019;ve had several interns whom I mentored that have now surpassed me in their careers. I love to see their success! It was great passing what I knew on to them and helping them thrive. I found that very rewarding.</p><p><strong>Secondly, managing people means I can make a bigger impact with a team than I could all by myself. </strong>And it&apos;s been wonderful, especially this transition to ReadMe. During the migration over to ReadMe, we did so many customizations. We had to work with your team, my IT team, and Akamai&apos;s InfoSec team. It really wasn&#x2019;t an easy project at all, but when I think about how it all came together and how everybody contributed their own special superpower to the project, I&apos;m so proud of the results. I find it really rewarding, and I never could do that if I weren&apos;t in the position I was in. <strong>I was able to influence a lot because of my position and it ended up yielding great results. Not because I did everything myself, but because I was able to get a team to work together.</strong></p><h2 id="do-you-have-any-advice-for-people-who-are-looking-for-similar-technical-writing-roles">Do you have any advice for people who are looking for similar technical writing roles?</h2><p><strong>The biggest piece of advice that I&#x2019;d give to someone is first of all, don&apos;t think that because you&apos;re an English major, you&apos;re not a technical person, to go back to that for a minute.</strong> Aside from that, if someone wanted to go into technical writing, especially at this point in the evolution of high tech, I&apos;d say, get some API skills. Become knowledgeable about Git and DevOps and APIs, because that&apos;s really the future. <strong>Gone are the days where you could just describe a workflow on a UI. </strong>People really need to have API writing skills, so I would encourage that.</p><p>If you want to get into UX, I would say read up on some of these proven processes and become a little bit more educated in UX than I was. I stumbled into it. But I think if you wanted to pursue a job in UX or UI writing, there&apos;s a lot of ways that you can prepare yourself better than I did.</p><h2 id="what-drew-you-to-this-new-position-at-couchbase">What drew you to this new position at Couchbase?</h2><p>The position at Couchbase appeals to me because it gives me chance to once again work in the database space &#x2014; I led the doc team at Vertica for several years before joining Akamai. It also allows me to join a smaller company at an earlier stage of growth and help the documentation team scale with the business. I feel good about what we accomplished and where things stand at Akamai, and felt it was time for a new challenge.</p><h2 id="any-favorite-resources-for-learning-about-technical-writing">Any favorite resources for learning about technical writing?</h2><p>Here are a few of my favorites:</p><ul><li>Tom Johnson&#x2019;s <a href="https://idratherbewriting.com/learnapidoc/?ref=blog.readme.com">API Documentation course</a>, in his I&#x2019;d Rather Be Writing blog</li><li><a href="https://docsfordevelopers.com/?ref=blog.readme.com">Docs for Developers</a>, a collaboration between doc leads at Splunk, Google, and Microsoft</li><li><a href="https://apithedocs.org/?ref=blog.readme.com">API The Docs</a> writing community, which provides resources and conferences that support API writers everywhere &#x2014; along with their <a href="https://apithedocs.org/podcast?ref=blog.readme.com">podcast</a>!</li></ul><h2 id="thanks-beth">Thanks, Beth!</h2><p>We&apos;re excited to hear more about the exciting developments at Couchbase as Beth gets started in her new role, and you can learn more about her developer experience transformation at Akamai in <a href="https://readme.com/customers/akamai?ref=blog.readme.com" rel="noopener noreferrer">their customer story</a>. Stay tuned for the next Behind the Docs!</p><p></p>]]></content:encoded></item></channel></rss>