The Arazzo Specification is a new addition to the OpenAPI Specification that allows you to define sequences of operations for your API.
An Arazzo description is a separate document that references your OpenAPI document and describes how to combine operations from your OpenAPI document into step-by-step sequences.
Arazzo descriptions are useful for:
Defining complex sequences of operations that involve multiple API calls.
Documenting the expected behavior of your API in a more structured way than a narrative description.
Generating code to execute the sequences of operations.
Generating tests to verify that the sequences of operations behave as expected.
Generating documentation that explains how to use the sequences of operations.
Arazzo Description Structure
An Arazzo description is a JSON or YAML document that follows the structure defined by the Arazzo Specification.
Arazzo version
Field Name
Type
Required
arazzo
string
✅
The version of the Arazzo Specification that the document uses. The value must be a supported version number.
An array of source description objects defining the OpenAPI or other documents containing the operations referenced by the workflows. The array must contain at least one source.
An array of source description objects defining the OpenAPI or other documents containing the operations referenced by the workflows. The array must contain at least one source.
Any number of extension fields can be added to the Arazzo description that can be used by tooling and vendors. When provided at this level, the extensions generally apply to the entire document.
Field Name
Type
Required
Description
✅
The version of the Arazzo Specification that the document uses. The value must be a supported version number.
An array of source description objects defining the OpenAPI or other documents containing the operations referenced by the workflows. The array must contain at least one source.
Any number of extension fields can be added to the Arazzo description that can be used by tooling and vendors. When provided at this level, the extensions generally apply to the entire document.
Arazzo Specification Versions
The arazzo field contains the version number of the Arazzo Specification that the document conforms to. Tooling should use this value to interpret the document correctly.
The current version of the Arazzo Specification is 1.0.0-prerelease, but keep in mind that the specification is still under development.
Info Object
Provides metadata about the Arazzo description.
Field Name
Type
Required
✅
Description
A human-readable title for the set of workflows.
Type
Required
Description
A short summary of the Arazzo description.
Type
Required
Description
A longer description of the Arazzo description. CommonMark syntax may be used for rich text representation.
Type
Required
✅
Description
A version string indicating the version of the Arazzo document.
Any number of extension fields can be added that can be used by tooling and vendors.
Below is an example of an info object in an Arazzo document:
Source Description Object
A source description points to an OpenAPI document containing the operations referenced by the workflows in this document. It may also reference other Arazzo documents.
Field Name
Type
Required
✅
Description
A name for the source document, used to reference it from other parts of the Arazzo description. The name must be unique within the
array and may only contain alphanumeric characters, underscores, and dashes.
Type
Required
✅
Description
The URL of the source document. This identifier must conform to RFC 3986 section 4.1 for absolute URLs or section 4.2 for relative URIs.
Type
Required
Description
The type of the source document. Supported values are
, indicating an OpenAPI document, or
indicating another Arazzo description. Additional values may be supported in future versions of the specification.
Any number of extension fields can be added to the source description object that can be used by tooling and vendors.
Below is an example of two source description objects in an Arazzo description document:
Workflow Object
A workflow object defines a sequence of operations.
Field Name
Type
Required
✅
Description
A unique identifier for the workflow. This is used to reference the workflow from other parts of the Arazzo description. May contain only alphanumeric characters, underscores, and dashes.
Type
Required
Description
A short summary of what the workflow does.
Type
Required
Description
A longer description of the workflow. CommonMark syntax may be used for rich text representation.
An array of success action objects and reusable objects specifying actions to take for each step of this workflow that completes successfully. Individual steps may override the workflow object's success actions. Reusable objects must reference success actions defined in the components/successActions of this Arazzo document.
An array of failure action objects and reusable objects specifying actions to take for each step of this workflow that fails. Individual steps may override the workflow object's failure actions. Reusable objects must reference success actions defined in the components/failureActions of this Arazzo document.
A map of output values produced by the workflow. The keys are the names of the outputs, and the values are runtime expressions that extract the output values from the results of the workflow steps.
An array of parameters applicable to all steps in this workflow. Individual steps may override the workflow object's parameters. A reusable object must reference an object in this document's components/parameters of this Arazzo document.
Any number of extension fields can be added to the workflow object that can be used by tooling and vendors.
Field Name
Type
Required
Description
✅
A unique identifier for the workflow. This is used to reference the workflow from other parts of the Arazzo description. May contain only alphanumeric characters, underscores, and dashes.
A short summary of what the workflow does.
A longer description of the workflow. CommonMark syntax may be used for rich text representation.
An array of success action objects and reusable objects specifying actions to take for each step of this workflow that completes successfully. Individual steps may override the workflow object's success actions. Reusable objects must reference success actions defined in the components/successActions of this Arazzo document.
An array of failure action objects and reusable objects specifying actions to take for each step of this workflow that fails. Individual steps may override the workflow object's failure actions. Reusable objects must reference success actions defined in the components/failureActions of this Arazzo document.
A map of output values produced by the workflow. The keys are the names of the outputs, and the values are runtime expressions that extract the output values from the results of the workflow steps.
An array of parameters applicable to all steps in this workflow. Individual steps may override the workflow object's parameters. A reusable object must reference an object in this document's components/parameters of this Arazzo document.
Any number of extension fields can be added to the workflow object that can be used by tooling and vendors.
Below is an example of a workflow object:
Step Object
A step object defines a single operation to perform as part of a workflow.
Field Name
Type
Required
✅
Description
A unique identifier for the step within the workflow. Used to reference the step's outputs from other parts of the workflow. May contain only alphanumeric characters, underscores, and dashes.
Type
Required
Description
A description of what the step does. CommonMark syntax may be used for rich text representation.
Type
Required
Description
The
of the operation to execute for this step. Must match an
in one of the
. This field is mutually exclusive with
and
.
Type
Required
Description
A JSON Pointer to the operation to execute for this step, relative to one of the
. This field is mutually exclusive with
and
.
Type
Required
Description
The ID of a workflow in this document to execute as a sub-workflow. This field is mutually exclusive with
An array of criteria for determining if the step succeeded. All criteria must be met for the step to be considered successful. Individual criteria are defined using criterion objects.
An array of actions to take if the step succeeds. Overrides any success actions defined at the workflow level. Individual actions are defined using success action objects.
An array of actions to take if the step fails. Overrides any failure actions defined at the workflow level. Individual actions are defined using failure action objects.
A map of output values produced by the step. The keys are the names of the outputs, and the values are runtime expressions that extract the output values from the result of the operation.
Any number of extension fields can be added to the step object that can be used by tooling and vendors.
Field Name
Type
Required
Description
✅
A unique identifier for the step within the workflow. Used to reference the step's outputs from other parts of the workflow. May contain only alphanumeric characters, underscores, and dashes.
A description of what the step does. CommonMark syntax may be used for rich text representation.
The
of the operation to execute for this step. Must match an
in one of the
. This field is mutually exclusive with
and
.
A JSON Pointer to the operation to execute for this step, relative to one of the
. This field is mutually exclusive with
and
.
The ID of a workflow in this document to execute as a sub-workflow. This field is mutually exclusive with
An array of criteria for determining if the step succeeded. All criteria must be met for the step to be considered successful. Individual criteria are defined using criterion objects.
An array of actions to take if the step succeeds. Overrides any success actions defined at the workflow level. Individual actions are defined using success action objects.
An array of actions to take if the step fails. Overrides any failure actions defined at the workflow level. Individual actions are defined using failure action objects.
A map of output values produced by the step. The keys are the names of the outputs, and the values are runtime expressions that extract the output values from the result of the operation.
Any number of extension fields can be added to the step object that can be used by tooling and vendors.
Below is an example of step objects in an Arazzo description document:
Parameter Object
A parameter object defines a single parameter to pass to an operation in a workflow step.
Field Name
Type
Required
✅
Description
The name of the parameter.
Type
Required
✅
Description
The location of the parameter. Possible values are
,
,
,
. Required for parameters passed to an operation. Must be omitted for parameters passed to a workflow, where the parameter is always passed in the workflow's
Any number of extension fields can be added to the parameter object that can be used by tooling and vendors.
Field Name
Type
Required
Description
✅
The name of the parameter.
✅
The location of the parameter. Possible values are
,
,
,
. Required for parameters passed to an operation. Must be omitted for parameters passed to a workflow, where the parameter is always passed in the workflow's
An array of criteria that determine whether the action should be executed. All criteria must be met for the action to execute. If not provided, the action will always execute.
An array of criteria that determine whether the action should be executed. All criteria must be met for the action to execute. If not provided, the action will always execute.
Any number of extension fields can be added to the components object that can be used by tooling and vendors.
The keys in the components object may only contain alphanumeric characters, underscores, and dashes.
Arazzo Components Object Example
The components defined in an Arazzo description are scoped to that document. Components defined in one Arazzo description cannot be referenced from another Arazzo description.
Reusable Object
A reusable object allows you to reference objects like success actions and failure actions defined in the components object from locations within steps or workflows.
Any number of extension fields can be added to the payload replacement object that can be used by tooling and vendors.
Payload Replacement Object Examples
Runtime Expression Value
Literal Value
Runtime Expressions
Runtime expressions allow you to reference values that will be available when a workflow is executed, such as values from the HTTP request or response, the event that triggered the workflow, or outputs from previous workflow steps.
The syntax for runtime expressions is {expression}, where expression is one of the following:
Expression
Description
The full URL of the request
Description
The HTTP method of the request
Description
The HTTP status code of the response
Description
The value of the specified request header
Description
The value of the specified query parameter from the request URL
Description
The value of the specified path parameter from the request URL
Description
The entire request body
Description
The value of the specified JSON pointer path from the request body
Description
The value of the specified response header
Description
The entire response body
Description
The value of the specified JSON pointer path from the response body
Description
The value of the specified workflow input
Description
The value of the specified workflow output
Description
The value of the specified output from the step with ID
Description
The value of the specified input from the workflow with ID
Description
The value of the specified output from the workflow with ID
Expression
Description
The full URL of the request
The HTTP method of the request
The HTTP status code of the response
The value of the specified request header
The value of the specified query parameter from the request URL
The value of the specified path parameter from the request URL
The entire request body
The value of the specified JSON pointer path from the request body
The value of the specified response header
The entire response body
The value of the specified JSON pointer path from the response body
The value of the specified workflow input
The value of the specified workflow output
The value of the specified output from the step with ID
The value of the specified input from the workflow with ID
The value of the specified output from the workflow with ID
Runtime Expression Examples
Expression
Example Value
Example Value
Example Value
Example Value
Example Value
Expression
Example Value
Arazzo Specification Extensions
The Arazzo Specification allows custom properties to be added at certain points using specification extensions.
Extension properties are always prefixed by "x-" and can have any valid JSON value.
For example:
The extensions defined by the Arazzo Specification are:
The specification extension key formats ^x-oai- and ^x-oas- are reserved for extensions defined by the OpenAPI Initiative .
Extension properties can be used to add additional features, metadata, or configuration options to the Arazzo description that are not directly supported by the current version of the specification. However, additional tooling may be required to process custom extensions.