What is the Arazzo Specification?
UX Design
5
min read
June 17, 2024
The short version
The Arazzo Specification is an add-on to the OpenAPI Specification. The Open API Specification deals with description of rest endpoints, whereas the Arazzo Specification deals with describing a sequence of calls to these endpoints to reach certain outcomes. For example:
While an OpenAPI Spec can describe rest API endpoints like LoginUser and GetUserProfileData, an Arazzo Spec can describe a sequence of steps to be able to get an authentication token from the LoginUser endpoint and send it in the header of a request to the GetUserProfileData endpoint to get User Profile Data. equest to the GetUserProfileData endpoint to get User Profile Data.
—————————————————————
Introduction
The OpenAPI Initiative website calls Arazzo the first “additional” specification from OpenAPI. It is only the second specification released by them after the original and popular OpenAPI Specification.
What is an Arazzo Specification?
We already know that an OpenAPI Specification is used to describe HTTP endpoints in a human as well as machine readable standardized format. Building on top of this foundation, an Arazzo Specification can describe Workflows i.e. a sequence of calls to these endpoints to reach one or many desired outcome.
What is the purpose of Arazzo?
With the introduction of OpenAPI Specifications, it has been possible to describe HTTP endpoints in great detail. We can describe the expected parameters, examples, expected outputs, rest operation, response codes and much more for an endpoint. While this standardization has been extremely useful when looking at endpoints individually, it has not been possible to describe how these endpoints work in tandem with one another. This is where the Arazzo framework comes in.
Now, developers and technical writers will be able to describe human & machine readable endpoint “workflows” in a standardized format.
Example of an Arazzo workflow
Let’s say there is a service that can tell you the current temperature in any city around the world. In order to use this service, a user first has to retrieve an authorization token by logging in.
An Arazzo specification can illustrate the above requirement in a structured workflow. Below is a stripped down illustrative version of the Arazzo Specification “Steps” for a workflow where a user intends to fetch the current temperature in Mumbai. Descriptive comments have been added to the YAML to make it easy to understand.
img
Here is a diagram to visually explain the workflow:
(Interestingly, the above diagram could have been auto-generated by a tool that can parse an Arazzo Spec)
Why is something like the Arazzo Specification needed?
Before Arazzo there was no standardized method of describing API call sequences to reach a particular set of outcomes. If you maintain API services, till now the only way to describe how to use these services in tandem has been to manually write examples in end user documentation. Additionally, any changes to endpoints within your services makes it necessary to go and edit these documents manually.
With the advent of the Arazzo Specification the following will become possible,
Interactive user interfaces that document these workflows
Automated documentation generation
Tools that give developers the ability to describe workflows within code
Automated test generation for workflows
Client Code generation for workflows
AI Agents/LLMS deterministically using APIs without prior training on the API
For more information, check out the detailed Arazzo Specification here