<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jay Cormier</title>
    <description>The latest articles on DEV Community by Jay Cormier (@jayku).</description>
    <link>https://dev.to/jayku</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F816425%2F3ce6e289-1840-4bd8-8704-493b085659c5.jpeg</url>
      <title>DEV Community: Jay Cormier</title>
      <link>https://dev.to/jayku</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jayku"/>
    <language>en</language>
    <item>
      <title>How Bump.sh works with… remote work?</title>
      <dc:creator>Jay Cormier</dc:creator>
      <pubDate>Mon, 17 Jul 2023 13:13:24 +0000</pubDate>
      <link>https://dev.to/bump/how-bumpsh-works-with-remote-work-4nhb</link>
      <guid>https://dev.to/bump/how-bumpsh-works-with-remote-work-4nhb</guid>
      <description>&lt;p&gt;Ever since a certain pandemic, remote work has become increasingly popular. It was enforced by lockdowns, adopted long-term by some teams, and criticized for allegedly hampering productivity. Lately, some companies have been reversing their approval of remote work. On the other hand, entire teams are advocating for it to become the norm.&lt;/p&gt;

&lt;p&gt;Our version of remote work has its own unique story. Legend has it that our two founders, Anthony and Sébastien, climbed to the top of the tallest building in France and held iPads to the sky to be etched by lightning with the founding principles of what would become &lt;a href="http://bump.sh/"&gt;Bump.sh&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Predictably, that wasn't covered by the warranty.&lt;/p&gt;

&lt;h2&gt;
  
  
  The usual suspects
&lt;/h2&gt;

&lt;p&gt;Our journey with remote work is a long story that began well before the pandemic. We have always had some portion of work-at-home (or elsewhere) in our previous professional experiences.&lt;br&gt;
Occasionally, for awaiting for a plumber or a delivery (that you missed. with no notice. and the delivery person rang but looks like you weren't at home. too bad.).&lt;br&gt;
Sometimes, a few days were spent working in peace, without the hustle and bustle of an open-space office.&lt;br&gt;
Or every week, because you lived far from the office and only drop by occasionally.&lt;/p&gt;

&lt;p&gt;Each in our own way, we gradually came to the conclusion that remote work is a natural way of working for us. It's aligned with how we view our work-life balance and our relationship with our team.&lt;/p&gt;

&lt;p&gt;You are probably familiar with the reasons.&lt;/p&gt;

&lt;p&gt;The ability to work from anywhere. Whether it's in the capital or in the remote countryside of Loire-Atlantique, an apartment or a cabin, or even if you want a change of scenery and decide to work astride a wild horse in Camargue.&lt;/p&gt;

&lt;p&gt;The gained autonomy has an undeniable impact on our daily life and overall well-being. The freedom of remote work means we can take our dog for a morning walk, see our kids off to school, or make a homemade lunch.&lt;/p&gt;

&lt;p&gt;Some of us take some time to go to the gym. Others would paint, play an instrument or fight a deadly threat hidden among the stars. Whatever. It's about having control over our day. We can seamlessly blend work and life without compromising on either.&lt;/p&gt;

&lt;p&gt;Not being geographically confined also allows us to &lt;a href="https://bump.sh/careers"&gt;recruit talent&lt;/a&gt;, wherever they may be (including in Camargue). By removing the constraint of a physical location and mandatory presence, we avoid the risk of missing out on individuals who have chosen to live where they feel their best.&lt;/p&gt;

&lt;h2&gt;
  
  
  Our magic recipe
&lt;/h2&gt;

&lt;p&gt;Upon your arrival at &lt;a href="http://bump.sh/"&gt;Bump.sh&lt;/a&gt;, you will be faced with a crucial choice. Seated behind a desk, dressed in a black leather coat, one of our co-founders will present you with a crucial decision. In their right hand, the option to work remotely from the comfort of your home. In their left hand, the opportunity to work in a coworking space, as you may crave social interactions and the company of others.&lt;/p&gt;

&lt;p&gt;Once you have made your decision amidst breathless anticipation, they will explain that you can also mix it up occasionally. Nothing is set in stone.&lt;br&gt;
The idea is to create the best working environment for us. It could be a dedicated room at home (some even have verandas for that purpose). Sometimes, the need arises to experience the adventures and dramatic twists of a coworking space once or twice a week (it's better than a telenovela).&lt;/p&gt;

&lt;p&gt;To facilitate daily communication, we have implemented meetings with one significant constraint: almost no one likes meetings. We are constantly seeking the best formula for this format, but we have arrived at a result that is starting to please us.&lt;/p&gt;

&lt;p&gt;There are two main teams at Bump.sh (Product, which includes our engineers, and GoToMarket) that have a weekly meeting to discuss current topics. Then, there is an All-hands meeting where a representative from each team presents a summary, providing everyone with an overview of where things stand and how everyone is progressing.&lt;/p&gt;

&lt;p&gt;Of course, we needed effective means to compensate for the absence of the sacred Coffee Machine for informal discussions. To address this, we have a daily reminder and a voice chat lounge where we can exchange stories and share our current moods and experiences.&lt;/p&gt;

&lt;p&gt;This is where the importance of using the right tools to stay up-to-date comes into sharp focus. You're familiar with the classics: a shared calendar, a few emails, a well-known professional chat tool that we won't mention just to add a few lines to this article without shame or remorse.&lt;/p&gt;

&lt;p&gt;How do you indicate that you're open to a coffee chat with the rest of the team? A slot on a shared calendar? A specific status on that infamous tool-whose-name-we-won't-speak? An emoji? A dedicated channel?&lt;/p&gt;

&lt;p&gt;Like many of you, we use Slack as our primary communication tool. We also tried Gather.town, but unfortunately, it didn't resonate with everyone. For a long time, our meetings took place on &lt;a href="http://meet.coop/"&gt;meet.coop&lt;/a&gt;, an open-source video conferencing solution. However, &lt;a href="https://forum.meet.coop/t/changes-coming-to-meet-coop-please-read/1287"&gt;their announcement&lt;/a&gt; of discontinuing the service in the coming months pushed us towards new horizons (which we are still exploring).&lt;/p&gt;

&lt;p&gt;Collaboration at &lt;a href="http://bump.sh/"&gt;Bump.sh&lt;/a&gt; revolves around well-known figures in the industry. Our internal knowledge base, project management, meeting notes, and article drafts find their place on Notion. The hottest designs in your area can be found on Figma. And our Engineering team works continuously (*wink*) with GitHub.&lt;br&gt;
In fact, discussing our tools alone would warrant an article, but we wanted to give you a glimpse.&lt;/p&gt;

&lt;p&gt;Of course, working remotely doesn't mean we live as reclusive hermits, in our cabins deep in the woods, munching on raw roots.&lt;/p&gt;

&lt;p&gt;All it takes is to look up to see the signs: a planetary alignment, a constellation that shines a little brighter than the others, or even a meteor shower. These are the heralds of our famous and popular In Real Life (IRL) meetups.&lt;/p&gt;

&lt;p&gt;Travelling across the country, we gather in secret locations to celebrate APIs and our joy of working together. These are days of jubilation where we work studiously and feast like never before, returning to our huts and leaving behind the most mysterious secrets about these gatherings.&lt;/p&gt;

&lt;p&gt;To be more precise, every 3 months, we organize an IRL (In Real Life) gathering to make up for missed after-work events and lost time. We select a location that accommodates everyone, with each event held in a different place from the previous one. We set a date, rent a nice space where we can both work and have fun. Around that, we plan various activities, evenings, board games, a few bottles... and the rest becomes part of the story.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxx4u1iv1w63iv8x2mn15.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxx4u1iv1w63iv8x2mn15.jpg" alt="Don't mind the scoreboard" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  It can be that smooth, right?
&lt;/h2&gt;

&lt;p&gt;But here's the thing, remote work sometimes feels a lot like real office work, the kind with the accounting department giving you side-eye at the coffee machine ever since they noticed that strange overconsumption of post-its in your department. Don't deny it, the numbers never lie, they know.&lt;/p&gt;

&lt;p&gt;There will always be those moments of frustration when communication is challenging. Or a written message causes teeth to grind due to its borderline tone. Or you think that this issue could have been solved in two minutes if you could have just gotten up and showed your diagrams at the neighboring desk.&lt;/p&gt;

&lt;p&gt;We also might miss inviting a colleague for a drink after work. Or having a chair race in the open-space office (don't do this, it's highly risky and generates a lot of paperwork for HR, we won't back you up).&lt;/p&gt;

&lt;p&gt;But just as office work has its own challenges to overcome, we find ours much more comfortable to face. While working from home demands compartmentalization, discipline, trust (in oneself and in others), we still find ourselves in a healthy, comfortable, and caring environment.&lt;/p&gt;

&lt;p&gt;One could commute, wait for the elevator, settle at their desk, and keep an eye on the clock to await that perfect timing when taking a break won't offend anyone. Or one could work from home, on their sofa under a blanket with a good cup of coffee/tea within reach.&lt;/p&gt;

&lt;p&gt;But in the end, we all face the same situation: working together primarily means communicating with the tools we have. No one ever said it would be easy. But nothing stops you from making it more comfortable, inclusive, and warm for others and yourself.&lt;/p&gt;

&lt;p&gt;That's what we strive for at &lt;a href="http://bump.sh/"&gt;Bump.sh&lt;/a&gt;. And we have no intention of giving up.&lt;/p&gt;

</description>
      <category>remote</category>
      <category>workplace</category>
      <category>team</category>
    </item>
    <item>
      <title>The Best API Documentation Tools for Dev Teams in 2023</title>
      <dc:creator>Jay Cormier</dc:creator>
      <pubDate>Tue, 28 Mar 2023 08:37:11 +0000</pubDate>
      <link>https://dev.to/bump/the-best-api-documentation-tools-for-dev-teams-in-2023-4pon</link>
      <guid>https://dev.to/bump/the-best-api-documentation-tools-for-dev-teams-in-2023-4pon</guid>
      <description>&lt;p&gt;&lt;em&gt;by Alexander Yu&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In software engineering, dev teams often dismiss documentation as tangential—secondary to product development and feature work. While code design and implementation is a top priority for most software engineers, creating good documentation should carry equal weight in the product development process.&lt;/p&gt;

&lt;p&gt;In a nutshell, documentation is like a manual for your software: it tells users how to use your API. But in addition to the "how to," &lt;em&gt;great&lt;/em&gt; API documentation also helps users derive maximum value from your software, ensuring they don’t miss important features or waste time misusing your API. So having good API documentation is crucial in helping your product establish a strong user base and retain users in the long term.&lt;/p&gt;

&lt;p&gt;However, keeping your API documentation up-to-date can be difficult and tedious, especially if you have to manually edit it every time your API changes. Luckily, there's a wealth of API documentation tools out there to help simplify and automate doc generation.&lt;/p&gt;

&lt;p&gt;This article will focus on a handful of the most popular ones: SwaggerUI, ReDoc, ReadMe, apiDoc, Postman, and Bump.sh. In our discussion of each tool, you'll consider factors such as features, ease of usage, current community support, and pricing to help you determine which one is best for your use case. If your end goal is to create and maintain excellent API documentation without too much hassle, read on to learn more about these tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Swagger UI
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://swagger.io/"&gt;Swagger&lt;/a&gt; is a set of open source tools that help you design and build an API, which you define using an &lt;a href="https://swagger.io/resources/open-api/"&gt;OpenAPI Specification (OAS)&lt;/a&gt;. In particular, &lt;a href="https://swagger.io/tools/swagger-ui/"&gt;Swagger UI&lt;/a&gt; is a tool that takes your OAS and automatically generates documentation for your API in an interactive HTML page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xI7smXlz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://storage.googleapis.com/bump-blog-resources/2023-03-09-the-best-api-documentation-tools-for-dev-teams/swagger-ui-documentation.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xI7smXlz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://storage.googleapis.com/bump-blog-resources/2023-03-09-the-best-api-documentation-tools-for-dev-teams/swagger-ui-documentation.png" alt="A screenshot of the Swagger Petstore, a live demo of the Swagger UI tool" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Above is an example of what Swagger UI can generate based on an OAS. This API models a pet store where users might expect to be able to do operations like add a pet to the store and retrieve details of a particular pet.&lt;/p&gt;

&lt;p&gt;Here, a &lt;code&gt;POST&lt;/code&gt; method for uploading an image of a pet is expanded. Swagger UI includes all the documentation details required to use the API: endpoints, available operations, parameters, responses, data types, descriptions, and even examples. Also, notice how easily users can test the API by clicking the &lt;strong&gt;Try it out&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;Because so many APIs are already built using the Swagger framework, it takes little to no effort to automate API documentation using Swagger UI. This makes it an ideal use case for APIs that you build using an OAS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Choose Swagger UI?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Features&lt;/strong&gt;: Provided you have an OAS, Swagger UI automatically generates a full HTML visualization of your API, complete with API documentation and built-in testing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of use&lt;/strong&gt;: Swagger UI is suitable for developers of all skill levels. Everything generated by Swagger UI is taken from an OAS file, and there's no additional setup required beyond that. When your OAS changes, your Swagger UI documentation changes as well to automatically reflect your new API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community support&lt;/strong&gt;: Swagger is open source and is one of the most popular tools for creating RESTful APIs. Because of this, Swagger UI has a &lt;a href="https://swagger.io/community/"&gt;huge user base&lt;/a&gt;, making it easy to get actively involved with the community.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing&lt;/strong&gt;: You can access all Swagger UI features for free. For development teams that want a hosted version, Swagger’s cloud version, called Swagger Hub starts at $75/month. Swagger Hub’s paid plans also include more integrations like GitLab, Bitbucket, and Azure DevOps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limitations&lt;/strong&gt;: Swagger UI doesn't offer the best developer experience and is not SEO-friendly, if you need your documentation publicly published.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ReDoc
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/Redocly/redoc"&gt;ReDoc&lt;/a&gt; is a tool that's similar to Swagger UI. It also takes an OAS and renders an interactive HTML page with full API documentation details; however, it has a notable difference.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4s85cQ7P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://storage.googleapis.com/bump-blog-resources/2023-03-09-the-best-api-documentation-tools-for-dev-teams/redoc-documentation.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4s85cQ7P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://storage.googleapis.com/bump-blog-resources/2023-03-09-the-best-api-documentation-tools-for-dev-teams/redoc-documentation.png" alt="A screenshot of the same Swagger Petstore but this time rendered using ReDoc" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the above screenshot, we're looking at the same Swagger-based pet store API, specifically the same &lt;code&gt;/pet/{petId}/uploadImage&lt;/code&gt; &lt;code&gt;POST&lt;/code&gt; method as before. However, compared to Swagger UI, ReDoc arranges the page in a modern three-column format, where the left column is for navigation, the central panel contains documentation, and the right panel contains examples.&lt;/p&gt;

&lt;p&gt;The three-column format is perhaps the most popular API documentation format today, used by many well-known companies like &lt;a href="https://www.twilio.com/docs/usage/api"&gt;Twilio&lt;/a&gt; and &lt;a href="https://stripe.com/docs/api/customers/create?lang=java"&gt;Stripe&lt;/a&gt;. The three-column format allows developers to view API documentation in tandem with related code samples.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Choose ReDoc?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Features&lt;/strong&gt;: ReDoc automatically generates interactive API documentation based on your OAS. It's very similar to Swagger UI, but the main difference is that ReDoc renders the documentation in a modern three-column format.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of use&lt;/strong&gt;: Like Swagger UI, ReDoc is very easy to use if you already have an OAS. Whenever you make updates to your API, ReDoc re-renders automatically, so there's no need to make manual edits to your documentation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community support&lt;/strong&gt;: ReDoc is an open source tool with a large customer base, along with &lt;a href="https://redocly.com/docs/redoc/deployment/intro/"&gt;extensive documentation and tutorials&lt;/a&gt; to help you answer questions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing&lt;/strong&gt;: ReDoc is &lt;a href="https://redocly.com/"&gt;Redocly's&lt;/a&gt; community-edition product that's free to use. You can get more features on paid plans, for example, Redocly’s Basic tier ($69/month) lets you create public documentation and add multiple users, while the Professional tier ($300/month) allows you to remove their branding and get an integrated developer portal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limitations&lt;/strong&gt;: The documentation drift problem exists for ReDoc, and it’s not as easy to customize as some options on this list. That said, their &lt;a href="https://github.com/Redocly/redoc/blob/main/docs/redoc-vendor-extensions.md"&gt;vendor extensions&lt;/a&gt; allow for much more customization than in SwaggerUI does.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ReadMe
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://readme.com/documentation"&gt;ReadMe&lt;/a&gt; is a tool that offers a little more in terms of customization compared to Swagger UI and ReDoc. By default, it also generates a hub that contains all your API documentation in a three-column layout.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--z7ecSq27--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://storage.googleapis.com/bump-blog-resources/2023-03-09-the-best-api-documentation-tools-for-dev-teams/readme-documentation.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--z7ecSq27--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://storage.googleapis.com/bump-blog-resources/2023-03-09-the-best-api-documentation-tools-for-dev-teams/readme-documentation.png" alt="A screenshot taken from ReadMe's documentation that shows a rendered developer hub using ReadMe" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The above is taken directly from &lt;a href="https://docs.readme.com/main/docs/personalized-docs"&gt;ReadMe's documentation&lt;/a&gt;. You can clearly see the details of a particular &lt;code&gt;GET&lt;/code&gt; API, along with code samples and a &lt;strong&gt;Try it!&lt;/strong&gt; button in the right column for testing.&lt;/p&gt;

&lt;p&gt;ReadMe supports reading an OAS out-of-the-box for quick adoption. But what makes ReadMe stand out is that it allows for more customization in developing your documentation hub. In particular, you can add custom guides and tutorials, which is great if your APIs are designed to be used together. In addition, ReadMe has built-in monitoring features that allow you to track usage metrics for your APIs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Choose ReadMe?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Features&lt;/strong&gt;: ReadMe generates an API documentation hub based on an OAS or via a manual API editor. It also supports various customization features and ways to monitor your APIs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of use&lt;/strong&gt;: Since ReadMe has the option of uploading an OAS, it's still very easy to get started with. However, it also caters to more advanced users or those looking to write custom guides and tutorials in addition to the base API reference.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community support&lt;/strong&gt;: ReadMe has a wide customer base, including companies like &lt;a href="https://docs.clover.com/docs"&gt;Clover&lt;/a&gt; and &lt;a href="https://docs.uipath.com/"&gt;UiPath&lt;/a&gt;. There are also &lt;a href="https://docs.readme.com/main/docs/discussion-forums"&gt;discussion forums&lt;/a&gt; that you can use to pose questions to the community.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing&lt;/strong&gt;: ReadMe's Free tier is good for getting started with your API reference and metrics. To customize your guide, you'll need to upgrade to at least the Startup tier ($99/month) or above.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limitations&lt;/strong&gt;: ReadMe’s new editor doesn’t allow for as many formatting options as some other tools, and while you can write guides and tutorials in the platform, it doesn’t allow you to upload project files to the portal.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  apiDoc
&lt;/h2&gt;

&lt;p&gt;Compared to the first three tools, &lt;a href="https://apidocjs.com/"&gt;apiDoc&lt;/a&gt; takes a different approach towards generating documentation. Rather than rely on an API definition file like OAS, apiDoc is a package that allows you to add documentation directly into your source code through annotations. While there are third-party libraries that can create OAS files based on code annotations, having this built-in makes apiDoc slightly better if you want to control documentation through code instead of having a separate tool.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9aWNSTeC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://storage.googleapis.com/bump-blog-resources/2023-03-09-the-best-api-documentation-tools-for-dev-teams/apidoc-documentation.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9aWNSTeC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://storage.googleapis.com/bump-blog-resources/2023-03-09-the-best-api-documentation-tools-for-dev-teams/apidoc-documentation.png" alt="A screenshot of apiDoc's live demo that displays the results of using apiDoc annotations for documentation" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The screenshot above shows a typical apiDoc page (here's the &lt;a href="https://apidocjs.com/example/"&gt;live demo&lt;/a&gt;) displaying details for a &lt;code&gt;POST&lt;/code&gt; method. Content on this page is generated according to annotations in your source code: for example, the list of query parameters are generated through &lt;a href="https://apidocjs.com/#param-api-param"&gt;&lt;code&gt;@apiParam&lt;/code&gt;&lt;/a&gt; tags in your code. This allows you to keep your internal documentation (geared towards developers working on the codebase) and external documentation (geared towards your users) in sync.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Choose apiDoc?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Features&lt;/strong&gt;: apiDoc generates documentation based on content that you include in apiDoc annotations directly in your source code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of use&lt;/strong&gt;: Setting up apiDoc is easy, but it does require you to become somewhat familiar with apiDoc's capabilities before you can use it to its maximum potential. In addition, updating the documentation may require a deployment since your docs are embedded with your source code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community support&lt;/strong&gt;: apiDoc has a relatively smaller user base, but it's still used by over eleven thousand developers according to GitHub.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing&lt;/strong&gt;: apiDoc is absolutely free to use!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limitations&lt;/strong&gt;: Because apiDoc doesn't follow a community-led API specification, it’s harder to migrate to and from it. This also adds to the learning curve as you’ll have to make sure you know their rules for annotations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Postman
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.postman.com/"&gt;Postman&lt;/a&gt; is an API platform for designing and building APIs. Postman's &lt;a href="https://www.postman.com/api-documentation-tool/"&gt;API Documentation Tool&lt;/a&gt; helps you generate, edit, and publish your docs. Since Postman has one of the largest developer communities out there, it makes sense to choose Postman's API Documentation Tool if you're already integrated within their ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sgeZZIEH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://storage.googleapis.com/bump-blog-resources/2023-03-09-the-best-api-documentation-tools-for-dev-teams/postman-documentation.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sgeZZIEH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://storage.googleapis.com/bump-blog-resources/2023-03-09-the-best-api-documentation-tools-for-dev-teams/postman-documentation.png" alt="A screenshot taken from Postman's documentation showing docs generated by their API Documentation Tool" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The screenshot displays generated documentation in the three-column format. Postman can automatically generate basic documentation based on your API's schema (i.e., an OAS file), but you can also add custom documentation in certain areas. For example, under &lt;strong&gt;Get a list of items&lt;/strong&gt;, there's custom documentation to describe the operation in more detail. In the top right corner, &lt;strong&gt;Run in Postman&lt;/strong&gt; also allows you to test out APIs directly from the documentation page.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Choose Postman?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Features&lt;/strong&gt;: Postman generates documentation based on an API schema definition while also allowing you to customize and edit documentation before publishing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of use&lt;/strong&gt;: Like most tools on this list, Postman can take an existing OAS file and generate documentation. It can also be used as a standalone app, or directly in the browser.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community support&lt;/strong&gt;: As a platform, Postman is perhaps the most popular for building APIs (more so than Swagger). This means it has one of the largest developer communities in the software development world.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing&lt;/strong&gt;: For up to three users, Postman's Free tier will do. For more integrations and capabilities, Postman's paid tiers are usually more cost-efficient than some of the other tools, with its Basic tier priced at just $12/user per month.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limitations&lt;/strong&gt;: Postman is a very powerful tool with many features, but this can make it overwhelming for users who are new to the tool or who only need to create simple API documentation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Bump.sh
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://bump.sh/"&gt;Bump.sh&lt;/a&gt; is a tool that's swiftly gaining popularity as it combines many of the best features from the previous five entries in this roundup.&lt;/p&gt;

&lt;p&gt;To start off, you have OAS support: Bump.sh can take your existing OAS and instantly generate documentation for you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TBGJC03c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://storage.googleapis.com/bump-blog-resources/2023-03-09-the-best-api-documentation-tools-for-dev-teams/bump-sh-documentation.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TBGJC03c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://storage.googleapis.com/bump-blog-resources/2023-03-09-the-best-api-documentation-tools-for-dev-teams/bump-sh-documentation.png" alt="A screenshot of the Bump.sh documentation, which was generated using Bump.sh" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, documentation is generated in a three-column layout, which offers an ideal viewing experience. In addition, Bump.sh supports AsyncAPI specifications as well, so it allows you to automate documentation for event-driven applications in addition to REST APIs.&lt;/p&gt;

&lt;p&gt;Finally, Bump.sh's &lt;a href="https://developers.bump.sh/#webhook-documentation-change"&gt;webhooks&lt;/a&gt; can be used to notify other tools and services each time you make a change to your API. For example, you could broadcast changes to a Slack channel or send email alerts to consumers. This helps you ensure that teams are notified when you make structural changes to your API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Choose Bump.sh?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Features&lt;/strong&gt;: Bump.sh can generate documentation not only from RESTful API specs like OAS but also from event-driven API specs like AsyncAPI. It also allows for custom documentation, &lt;a href="https://docs.bump.sh/help/api-change-management/"&gt;automatically creates a changelog for you&lt;/a&gt;, and allows you to &lt;a href="https://bump.sh/blog/organize-your-api-documentation-with-bump-hubs"&gt;segment your API documentation into “hubs”&lt;/a&gt; for better organization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of use&lt;/strong&gt;: You can set up Bump.sh in just a few minutes and quickly start generating documentation. Any OAS or AsyncAPI spec can be used as a starting point, making it a very easy tool to use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community support&lt;/strong&gt;: Bump.sh is a new tool but has a growing developer community and &lt;a href="https://bump.sh/customers"&gt;customer base&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing&lt;/strong&gt;: Bump.sh is free to get started with. As you start to scale up, you'll need the Startup tier ($149/month) or Business tier ($599/per-month), although open-source projects can get access to all Business tier features for free upon request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limitations&lt;/strong&gt;: Bump.sh doesn’t have an API Explorer yet, but you can use a Postman collection in the meantime. Like many tools like Postman or Readme, Bump.sh is not fully open-source.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;API documentation is a task that developers should never overlook. Instead of manually updating documentation each time the API changes, many companies now use tools to automate doc generation.&lt;/p&gt;

&lt;p&gt;In this article, you got a roundup of six of these tools, all with their unique features and capabilities. You could opt for a more minimal tool like Swagger UI or one that allows for more customization in both content and presentation, such as ReadMe. Of course, ease of use, community support, and pricing are important considerations to make too.&lt;/p&gt;

&lt;p&gt;Bump.sh is the best way to automatically create API portals for internal and external users. It's also the only tool on our list that explicitly supports all &lt;a href="https://bump.sh/blog/what-is-openapi"&gt;OpenAPI&lt;/a&gt; specs (Swagger, v3.0, v3.1) or an asynchronous API definition like &lt;a href="https://bump.sh/blog/what-is-asyncapi"&gt;AsyncAPI&lt;/a&gt;, which is important for modern event-driven architecture (EDA). Feel free to look at our &lt;a href="https://bump.sh/users/sign_up"&gt;solution&lt;/a&gt;, and please reach out if you have any feedback, comments, or suggestions you'd like to share. We're always listening.&lt;/p&gt;

</description>
      <category>api</category>
    </item>
    <item>
      <title>What are the different API types?</title>
      <dc:creator>Jay Cormier</dc:creator>
      <pubDate>Thu, 08 Sep 2022 15:39:08 +0000</pubDate>
      <link>https://dev.to/bump/what-are-the-different-api-types-3p95</link>
      <guid>https://dev.to/bump/what-are-the-different-api-types-3p95</guid>
      <description>&lt;p&gt;APIs have become increasingly popular over the past few years, enabling products, projects and people to connect. In this article, we will try to present a snapshot of the most popular solutions available as of August 2022. We did our best to avoid bias, but some technologies are not mentioned on purpose, as we want to focus on the most used/popular.&lt;/p&gt;

&lt;h2&gt;
  
  
  History
&lt;/h2&gt;

&lt;p&gt;Always great to start from the beginning. If APIs have been here for a very long time, they began to get more and more popular in the early 2000s, when they got mainly used to push forward businesses on the web. Resellers or business partners could reach popular platforms, with APIs helping customers quickly find the products they were looking for on a single website.&lt;/p&gt;

&lt;p&gt;Some of the biggest technology companies released their APIs like Salesforce or Amazon in a few years. Their impact on the industry is unmatched, as they forever changed how we sell and shop online.&lt;/p&gt;

&lt;p&gt;We could continue this for a long time. After shopping, more APIs were released for different purposes and are now everywhere: social media, cloud computing, communication, mapping, voice AI…&lt;/p&gt;

&lt;h2&gt;
  
  
  RPC (Remote Procedure Call)
&lt;/h2&gt;

&lt;p&gt;The simplest form of API interaction basically relies on executing some code on a distant server. RPC is probably the oldest type of API you could meet today. You can imagine it as a simple function with arguments but in a web context that makes them a web API.&lt;/p&gt;

&lt;p&gt;RPC was designed for actions, executing procedures and commands with ease. One of the limitations is that it relies on the client mostly, which needs to know the endpoints and how and when to reach them. RPC itself is more an approach to APIs but with many existing specifications. We won’t talk about most of them but there’s one that is popular:&lt;/p&gt;

&lt;h2&gt;
  
  
  SOAP
&lt;/h2&gt;

&lt;p&gt;Introduced by Microsoft and IBM around 1998, SOAP is an actual communication protocol. Known to use a bit wordy XML, SOAP is from the beginning a true API contract: its strict guidelines confer it an image of stability and safety. Today, SOAP is still found on some legacy systems which rely on it, but has mostly been supplanted by REST. Among the companies that use SOAP for their APIs, &lt;a href="https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_quickstart_intro.htm"&gt;Salesforce&lt;/a&gt; is probably the most famous.&lt;/p&gt;

&lt;p&gt;Learn more on &lt;a href="https://en.wikipedia.org/wiki/SOAP"&gt;SOAP&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  More RPC types
&lt;/h3&gt;

&lt;p&gt;RPC has known some evolutions since its creation. One of them led directly to SOAP: &lt;strong&gt;&lt;a href="https://en.wikipedia.org/wiki/XML-RPC"&gt;XML-RPC&lt;/a&gt;&lt;/strong&gt; (basically, it continued to evolve until the decision to create a new standard from it). &lt;strong&gt;&lt;a href="https://en.wikipedia.org/wiki/JSON-RPC"&gt;JSON-RPC&lt;/a&gt;&lt;/strong&gt; has also been a bit popular at some point. Its main difference from XML-RPC is its capacity to handle notifications and work asynchronously.&lt;/p&gt;

&lt;h2&gt;
  
  
  REST
&lt;/h2&gt;

&lt;p&gt;REST APIs quickly grew in popularity, pushing SOAP on their passage. While RPC is a strict protocol, REST can be seen as general guidelines which define a standard, normalized architecture for APIs.&lt;/p&gt;

&lt;p&gt;Due to this, REST offers fast deployments in your environment. With URLs for the client/server relations, REST avoids the time-consuming part of writing code for each. Client and server can be developed on their side without information about each other, and their code can be updated without affecting the other.&lt;/p&gt;

&lt;p&gt;Another important part of REST is its Statelessness: to make it simple, it means that clients and servers don’t need to know the state of the other one. REST uses standard HTTP operations and doesn’t need to code a specific interface. Messages sent are automatically understood, without knowing the previous messages sent.&lt;/p&gt;

&lt;p&gt;REST supports webhooks enabling asynchronous requests. Imagine subscribing to an alert when a specific event occurs or when you need a reply/action from the server at a later moment.&lt;/p&gt;

&lt;p&gt;There are many ways to describe your REST API but one of the most popular solutions lately has been to use the OpenAPI specification, previously known as Swagger.&lt;/p&gt;

&lt;p&gt;Learn more on &lt;a href="https://en.wikipedia.org/wiki/Representational_state_transfer"&gt;REST&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  OpenAPI specification
&lt;/h2&gt;

&lt;p&gt;While REST APIs were growing on the main stage, several actors worked hard to push this forward. One of the main issues was standardizing how APIs should be described. Swagger was one of these neutral description formats and eventually joined the Linux Foundation. The name changed as well to OpenAPI. Now the most popular standard to describe REST APIs, its community greatly supports OpenAPI specification.&lt;/p&gt;

&lt;p&gt;Learn more on &lt;a href="https://bump.sh/blog/what-is-openapi"&gt;OpenAPI&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  GraphQL
&lt;/h2&gt;

&lt;p&gt;Initially created by Facebook in 2012, GraphQL was moved as an open-source project to the GraphQL Foundation in late 2018. GraphQL is a query language for APIs, focusing on delivering exactly the data requested and no more. Schema is essential to a GraphQL API, as it is your API’s single source of truth. A single endpoint can share the full capability in terms of data, allowing you to control the data you’ll receive from the server precisely. And when REST APIs could need loading from several endpoints, GraphQL handles this in a single request.&lt;/p&gt;

&lt;p&gt;However, as many developers are more familiar with REST APIs, GraphQL may require a longer learning curve.&lt;/p&gt;

&lt;p&gt;Learn more on &lt;a href="https://graphql.org"&gt;GraphQL&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  gRPC
&lt;/h2&gt;

&lt;p&gt;Created by Google, gRPC is an open source RPC framework, cross-platform with many languages, relying on HTTP 2.0 as its transport protocol. Protocol Buffers (also known as Protobuf) can be used for requests/messages. Protobuf could be seen as Google homemade JSON (but faster, smaller and natively generating language bindings).&lt;/p&gt;

&lt;p&gt;We won’t deep dive too much here, but gRPC has some significant advantages like its use of binary payloads (very light requests/code, better performances) or the use of HTTP 2.0 backstage.&lt;/p&gt;

&lt;p&gt;gRPC may be considered as a strongly enhanced version of RPC.&lt;/p&gt;

&lt;p&gt;Learn more on &lt;a href="https://grpc.io"&gt;gRPC&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  EDA
&lt;/h2&gt;

&lt;p&gt;Unlike REST (which relies on a request/response workflow), Event-Driven Architecture API (or asynchronous APIs) works with a subscribe/publish system. Asynchronous APIs are based on a message workflow, allowing asynchronous actions. Instead of reaching out to a server to get a response, an EDA API will subscribe and receive specific notifications about an event, when required. In some cases, it could be considered a great solution due to its excellent performance and reliability, like for a heavily requested server.&lt;/p&gt;

&lt;p&gt;Asynchronous APIs are very popular in microservices environments, helping them to synchronize data across different services.&lt;/p&gt;

&lt;p&gt;They have been growing in popularity over the years, receiving more and more support from the developer community. If asynchronous APIs can work with many protocols, a standard emerged to bind them all within the specification:&lt;/p&gt;

&lt;h3&gt;
  
  
  Specifications
&lt;/h3&gt;

&lt;p&gt;AsyncAPI is an open source standard describing an EDA API’s specifications, working with many possible protocols. Based on OpenAPI, AsyncAPI has optimized these parts for asynchronous needs: Designed from the idea of a messaging system where the messages are built with a header and a payload, helping to sort them into topics.&lt;/p&gt;

&lt;p&gt;AsyncAPI focuses on the application and the communication channels and &lt;a href="https://www.asyncapi.com/blog/asyncapi-cloud-events"&gt;works well with CloudEvents&lt;/a&gt;, another standard for asynchronous APIs that focuses more on the event itself and the message format.&lt;/p&gt;

&lt;p&gt;Learn more on &lt;a href="https://bump.sh/blog/what-is-asyncapi"&gt;AsyncAPI&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Most commonly used protocols
&lt;/h3&gt;

&lt;p&gt;We’re covering below a few protocols that are popularly used within an EDA API, but there are many more!&lt;/p&gt;

&lt;h4&gt;
  
  
  AMQP
&lt;/h4&gt;

&lt;p&gt;Initially created by JPMorgan Chase in 2003 to build an open communication standard, AMQP has been supported by some of the biggest: Microsoft, VMWare, Cisco Systems and several banks like Barclays.&lt;/p&gt;

&lt;p&gt;Among others, AMQP’s biggest advantages are its support of annotated data and its self-describing encoding system, which permits greater compatibility with clients.&lt;/p&gt;

&lt;p&gt;Learn more on &lt;a href="https://www.amqp.org"&gt;AMQP&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  MQTT
&lt;/h4&gt;

&lt;p&gt;MQTT is a bit older than AMQP (1999) and was initially created to watch over an oléoduc in the desert. As the satellite connection was expensive, the goal was to have a bandwidth-efficient, battery-power-efficient protocol.&lt;/p&gt;

&lt;p&gt;MQTT never stopped to evolve and is now one of the most popular protocols in the IoT field, thanks to its support of unreliable networks.&lt;/p&gt;

&lt;p&gt;Learn more on &lt;a href="https://mqtt.org"&gt;MQTT&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Kafka
&lt;/h4&gt;

&lt;p&gt;Kafka is often considered an alternative to “traditional” message brokers. Designed by LinkedIn, Kafka was meant to support the high volume of messages transiting through the platform. It quickly then switched to open-source in 2011, under the Apache Software Foundation.&lt;/p&gt;

&lt;p&gt;Uber uses Kafka to help match passengers and drivers. More than 300 microservices rely on Kafka now and the protocol is considered the backbone of their architecture.&lt;/p&gt;

&lt;p&gt;Learn more on &lt;a href="https://en.wikipedia.org/wiki/Apache_Kafka"&gt;Kafka&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  WebSockets
&lt;/h4&gt;

&lt;p&gt;WebSocket protocol has been here for a long time, standardized in 2011, and is supported natively by most browsers. Offering a very flexible implementation, you can easily find many resources online and a solid tooling experience.&lt;/p&gt;

&lt;p&gt;WebSockets APIs are stateful (meaning that the connection between client and server remains active until stopped by one of them) and full-duplex (can send/receive simultaneously).&lt;/p&gt;

&lt;p&gt;Widely spread in the EDA ecosystems, WebSockets are increasingly partnering with REST APIs to add an asynchronous layer to them.&lt;/p&gt;

&lt;p&gt;Learn more on &lt;a href="https://en.wikipedia.org/wiki/WebSocket"&gt;WebSockets&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This article was just a short tour of today’s API scene, as there’s much more to share on this growing, vivid topic. New concepts, ideas, projects, tools, standards, and optimizations are developed and shared weekly within the community. And even if we know that some content in this article will be obsolete in the upcoming months, we’ll try to keep it updated as much as possible.&lt;/p&gt;

&lt;p&gt;In the meantime, &lt;a href="https://bump.sh"&gt;we at Bump&lt;/a&gt; are trying to create great tools to help developers, API evangelists, communities and teams to get the best from their APIs. We have developed the first product that provides a unified experience around &lt;a href="https://bump.sh/openapi"&gt;OpenAPI&lt;/a&gt; and &lt;a href="https://bump.sh/asyncapi"&gt;AsyncAPI&lt;/a&gt;. Feel free to look at our solution, and please reach us if you have any feedback, comment or suggestion you would like to share. We’re always listening. :)&lt;/p&gt;

</description>
      <category>api</category>
      <category>openapi</category>
      <category>asyncapi</category>
    </item>
    <item>
      <title>What is AsyncAPI?</title>
      <dc:creator>Jay Cormier</dc:creator>
      <pubDate>Wed, 16 Feb 2022 17:11:47 +0000</pubDate>
      <link>https://dev.to/bump/what-is-asyncapi-44na</link>
      <guid>https://dev.to/bump/what-is-asyncapi-44na</guid>
      <description>&lt;p&gt;AsyncAPI is the most popular specification for describing asynchronous APIs and Event-Driven Architectures.&lt;br&gt;
Open-source and partially based on OpenAPI standards, AsyncAPI has been a solid and efficient answer to asynchronous communication needs, especially since its 2.0 version.&lt;/p&gt;
&lt;h2&gt;
  
  
  A brief look at APIs’ history
&lt;/h2&gt;

&lt;p&gt;Let’s start by explaining, very simply, APIs.&lt;/p&gt;

&lt;p&gt;A long time ago, communication between applications or services required you to deep dive into their code if you had access to it, which could take quite a while if they were many (or messy). APIs have been created to make this part of programming much easier: APIs tell you precisely what you can ask to an application and what to expect in return, without seeing what the application does underneath.&lt;/p&gt;

&lt;p&gt;At first, almost every API had its own way of working and communicating. And if documentation was missing or outdated, it would quickly become a mess. Different standards were built, but one of them ultimately rose to the top: OpenAPI.&lt;/p&gt;

&lt;p&gt;OpenAPI (previously called Swagger until version 3.0) has been the most popular choice for REST APIs, solving documentation problems and creating a good standard. Now part of the Linux Foundation, we covered OpenAPI recently in &lt;a href="https://bump.sh/blog/what-is-openapi" rel="noopener noreferrer"&gt;another blog post&lt;/a&gt;. We even have a fantastic example &lt;a href="https://developers.bump.sh" rel="noopener noreferrer"&gt;right here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  What about asynchronous APIs?
&lt;/h2&gt;

&lt;p&gt;Choosing between a synchronous or an ansynchronous API is basically an architectural decision. If classic synchronous APIs are helpful when you expect a response to any request you make, asynchronous APIs can be useful in other situations like telling application that some event occurred without expecting a callback or storing data on a device with connection issues.&lt;/p&gt;

&lt;p&gt;For example, we could think of a chef working in a restaurant. An asynchronous API (here, the waiter) would suit this perfectly as the kitchen just need to get the dishes and the table they belong to. You can even imagine richer messages, including food allergies or meat cooking requests. You do not expect a reply from the kitchen every time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstorage.googleapis.com%2Fbump-blog-resources%2Fwhat-is-asyncapi%2Fmuppets-muppet.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstorage.googleapis.com%2Fbump-blog-resources%2Fwhat-is-asyncapi%2Fmuppets-muppet.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here comes &lt;a href="https://www.asyncapi.com/" rel="noopener noreferrer"&gt;AsyncAPI&lt;/a&gt;: built with OpenAPI’s legacy in mind and sharing some concepts with, it uses some parts of its original structure and optimizes them for asynchronous needs.&lt;/p&gt;
&lt;h2&gt;
  
  
  Definitions
&lt;/h2&gt;
&lt;h3&gt;
  
  
  AsyncAPI specification
&lt;/h3&gt;

&lt;p&gt;Consider this as the guidelines to describe your asynchronous API to ensure that you follow the standards.&lt;/p&gt;
&lt;h3&gt;
  
  
  AsyncAPI definition
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;aka AsyncAPI file / document / description&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is the part you produce, explaining exactly how your API works, what it can or cannot do, what data it accepts and returns.&lt;/p&gt;
&lt;h3&gt;
  
  
  AsyncAPI documentation
&lt;/h3&gt;

&lt;p&gt;The human-readable documentation of your AsyncAPI definition. It can be automatically generated to save time.&lt;/p&gt;
&lt;h2&gt;
  
  
  What does it look like?
&lt;/h2&gt;

&lt;p&gt;AsyncAPI documents can be written in YAML and JSON. This example will use YAML, as it’s the most popular and readable format. Let’s have a quick look:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;asyncapi&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2.3.0&lt;/span&gt;
&lt;span class="na"&gt;info&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Hello world application&lt;/span&gt;
  &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;0.1.0'&lt;/span&gt;
&lt;span class="na"&gt;servers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;production&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;server.cogip.com&lt;/span&gt;
    &lt;span class="na"&gt;protocol&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;amqp&lt;/span&gt;
    &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Absolutely official COGIP server.&lt;/span&gt;
&lt;span class="na"&gt;channels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;hello&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;publish&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;bindings&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;amqp&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;contentEncoding&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gzip&lt;/span&gt;
            &lt;span class="na"&gt;bindingVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;0.2.0&lt;/span&gt;
        &lt;span class="na"&gt;payload&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
          &lt;span class="na"&gt;pattern&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;^hello&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;.+$'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  AsyncAPI document structure
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Right after the document type and its version comes the &lt;code&gt;info&lt;/code&gt; object, which contains at least the &lt;code&gt;title&lt;/code&gt; (the name of your API) and the &lt;code&gt;version&lt;/code&gt; (don’t forget to change it after every update).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;servers&lt;/code&gt; tells where and how to connect to your message broker or server. You need to specify a &lt;code&gt;protocol&lt;/code&gt;, like &lt;code&gt;amqp&lt;/code&gt;, &lt;code&gt;mqtt&lt;/code&gt; or &lt;code&gt;ws&lt;/code&gt; for instance, and a &lt;code&gt;url&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;With AsyncAPI, you use &lt;code&gt;channels&lt;/code&gt; (like the &lt;code&gt;paths&lt;/code&gt; in OpenAPI) to send your &lt;code&gt;message&lt;/code&gt; to the application. This section details how messages flow through.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;payload&lt;/code&gt; is the part where you explain how &lt;code&gt;message&lt;/code&gt; are made: types, format, pattern, etc...&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;bindings&lt;/code&gt; describe protocol-specific information. It can be defined specifically at the &lt;code&gt;message&lt;/code&gt; level or generally at the &lt;code&gt;servers&lt;/code&gt; level.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  AsyncAPI benefits
&lt;/h2&gt;

&lt;p&gt;If OpenAPI is HTTP and endpoints oriented, AsyncAPI allows many protocols, as we have seen before in the server section of the document, but also more API styles (request/response, publish/subscribe, etc...). AQMP, IBM, Kafka, MQ, MQTT, SNS, WebSockets, JMS for the most popular.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tooling
&lt;/h2&gt;

&lt;p&gt;AsyncAPI has gained more and more popularity since its version 2.0. Great tools are continuously developed by the AsyncAPI community, and here’s a short selection from our favorites:&lt;/p&gt;

&lt;h3&gt;
  
  
  Editors
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://studio.asyncapi.com/?url=https://raw.githubusercontent.com/asyncapi/asyncapi/v2.2.0/examples/simple.yml" rel="noopener noreferrer"&gt;AsyncAPI Studio&lt;/a&gt;: Still in beta, this tool was expected from the community. Great to start playing with the standard.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Validators
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/asyncapi/parser-js" rel="noopener noreferrer"&gt;AsyncAPI Parser&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stoplight.io/open-source/spectral/" rel="noopener noreferrer"&gt;Spectral&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Mocking &amp;amp; Testing
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://microcks.io/" rel="noopener noreferrer"&gt;Microrocks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://virtualan.io/" rel="noopener noreferrer"&gt;Virtualan&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Documentation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://bump.sh" rel="noopener noreferrer"&gt;Bump.sh&lt;/a&gt; 💙&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/asyncapi/generator" rel="noopener noreferrer"&gt;AsyncAPI Generator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AsyncAPI has a fantastic list of valuable tools that make the difference for most use cases, you may want to &lt;a href="https://www.asyncapi.com/docs/community/tooling" rel="noopener noreferrer"&gt;check it out&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  More resources
&lt;/h2&gt;

&lt;p&gt;We hope this short tour of AsyncAPI made you want to try it yourself. We strongly suggest giving it a try with the &lt;a href="https://studio.asyncapi.com/?url=https://raw.githubusercontent.com/asyncapi/asyncapi/v2.2.0/examples/simple.yml" rel="noopener noreferrer"&gt;AsyncAPI Studio&lt;/a&gt;, or even find some public examples like these ones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://api.slack.com/apis/connections/events-api" rel="noopener noreferrer"&gt;Slack API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/asyncapi/spec/blob/8ff3d0d30d23f152e520263ab7a8a4e305f52dc3/examples/gitter-streaming.yml" rel="noopener noreferrer"&gt;Gitter-streaming API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bump was one of the first SaaS products to believe in and support AsyncAPI since its 2.0 release. We have worked continuously for the past years, convinced that it will become the same strong standard to asynchronous APIs that OpenAPI is to the REST world today.&lt;br&gt;
We are proud to be one of AsyncAPI’s Bronze Sponsors and we hope you’ll enjoy coding with AsyncAPIs as much as we do.&lt;/p&gt;

&lt;p&gt;If you have any questions or comments, feel free to reach out. We’re just a mail away from you!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
