Why API Flow Diagrams are Needed
Tags: api, softwaredevelopment, systemdesign, beginners
Published: 2024-06-06 09:39:16

As modern software applications and platforms embrace the shift to cloud-based operations, API-based interactions have become very common. Microservice architectures often use internal APIs for communication between microservices, and many software products provide external APIs to users. As these applications evolve, existing API behaviors constantly change, and new APIs are introduced. 

In addition, individual API behaviors also become complicated as applications seek to expose larger functionalities through APIs. Over time, it becomes increasingly challenging to keep track of all the application APIs along with their expected behavior under different scenarios. API flow diagrams address this challenge by visually representing the interactions among the different internal components of the system affected by a given API. They help with clearly defining and communicating the expected behavior of an API in various levels of detail.


##Why API flow diagrams are needed

API flow diagrams are a visual representation of the expected behavior of the API in different scenarios. This behavior is shown through the interactions among different internal components of the system that the API uses over the course of its execution.

API flow diagrams seek to address various challenges that API development teams face over the lifecycle of an API. When utilized properly, they ease communication and collaboration and help ensure consistent API behavior over time.

As an example, consider an API server for a bank. The development team is in the process of designing an API to create customer bank accounts. Customers would interact with this API via a web or mobile application, and over the course of the API's execution, it would need to call a number of services. 

It would first need to check if a user already exists in the system and has the privileges to create an account. It could then make a number of checks about the user, such as whether the user already had the same kind of account, had the required credit score to open it, had any known criminal cases pending, etc. Each of these validations would require checks in different parts of the banking system and would result in internal API calls to different services.

The API would also be expected to behave differently based on the results of these subsequent API calls. Thus, the API’s expected behavior encompasses a large set of possible behaviors based on different external factors. 

It is important to define this expectation clearly and communicate it to all stakeholders involved in creating and maintaining the API. If the development team is unable to visualize the entire behavior of the API, it is highly probable that changes to intermediate systems would be incompatible with the overall API behavior and cause it to change or break.

##Use cases for API flow diagrams

Effective API flow diagrams document the complex behavior of an API in a concise and readable way. The internal components of the applications involved in the API’s execution are abstracted as actors in the system or as labeled symbols so that the reader can focus on the overall flow of the API.

API flow diagrams provide benefits within a given team because new members can study them during onboarding, which helps new developers more quickly gain an understanding of the overall system and how their individual changes and contributions to the codebase could affect other components and teams.

Across teams, API flow diagrams enable easier collaboration and communication. It is much simpler for a software architect to explain to a development team how the subsystem they are building is expected to behave when the developers involved have an API flow diagram to study.

These diagrams also serve as documentation, providing a precise description of the API’s behavior against which its implementation can be tested to ensure correctness. They remain a source of truth for the future, ensuring that code or configuration changes do not introduce problematic changes or cause unexpected behavior. If they do, well-crafted diagrams aid in identifying and fixing these issues earlier and more quickly. 

In our bank example, it would be much simpler to identify which APIs need to be tested when the credit score system is changed if the right API flow diagrams are in place. Any disagreements between teams about the API’s expected behavior can be resolved by referring to the diagram.

##Types of API flow diagrams

A variety of different types of diagrams have evolved over time to show API behavior. In this article, we will focus on two diagram types that can be used to represent three distinct aspects of an API as it interacts with a system: system diagrams and sequence diagrams.

###System diagram

A system diagram provides a high-level overview of a system. All the components that make up internal subsystems are shown using a single architectural block in the diagram, allowing developers to focus on the high-level flow of communication between components.
Using a high-level representation like this can help document an API’s general structure without getting too deep into the details of each component’s internal behavior. System diagrams can be used to get an initial, introductory understanding of how the API is expected to behave and which components of the system will be involved in various transactions. 

This can help you identify which developers or teams will be needed to build features and get a sense of the internal interfaces required.

![Example system diagram for a “create account” API](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j1bz4ae6l92zoz0u7h8j.png)

###Sequence diagram

Sequence diagrams represent the different components of the system or API as the origins of vertical “lanes” in a timeline. The API execution begins at the start of this timeline, and the flow of requests and data over its lifetime is indicated by horizontal arrows across the lanes. This allows you to focus only on the components of the system that are involved in the API’s execution, potentially at a more granular level than is achievable using a system diagram.

![Example sequence diagram for a “create account” API](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5whr1dohykxiceoryezq.png)

##Conclusion

API flow diagrams play an important role in effectively designing, building, and maintaining complex software systems and APIs. 

When used correctly, they aid developer understanding, ease collaboration between teams, simplify onboarding, and serve as documentation.

As applications continue to grow in complexity, rather than treating these diagrams as secondary documentation artifacts, keeping them as integral parts of the development workflow will become increasingly critical.
With the right discipline around creation and maintenance, API flow diagrams can evolve from being supplementary materials to becoming indispensable tools that are tightly integrated into modern application development.

##What’s next
This is just a brief overview and it doesn't include many important aspects of API flow diagrams such as:

- Example of a network/environment diagram
- Best practices to avoid rendering these diagrams ineffective or even counterproductive
- AI and the future of API flow diagrams

If you are interested in a deep dive in the above concepts, visit the original [Multiplayer guide - API Flow Diagram: Best Practices & Examples](https://www.multiplayer.app/distributed-systems-architecture/api-flow-diagram/).