Skip to content

Arazzo Specification#431

Open
philsturgeon wants to merge 14 commits intobump-sh:mainfrom
philsturgeon:guide/arazzo
Open

Arazzo Specification#431
philsturgeon wants to merge 14 commits intobump-sh:mainfrom
philsturgeon:guide/arazzo

Conversation

@philsturgeon
Copy link
Contributor

@philsturgeon philsturgeon commented Jan 26, 2026

The Arazzo Specification Guide is taking form.

Introduction

  • What is it?
  • History
  • Benefits

Understanding Structure

  • Basic Structure
  • Defining Sources
  • Success and failure
  • Components and references
  • Steps, inputs, outputs
  • Workflows

Working with Arazzo

  • Workflow Documentation
  • API Testing with Arazzo
  • Runtime Expressions

@netlify
Copy link

netlify bot commented Jan 26, 2026

Deploy Preview for bump-content-hub failed. Why did it fail? →

Name Link
🔨 Latest commit 271861e
🔍 Latest deploy log https://app.netlify.com/projects/bump-content-hub/deploys/697fafca140112000880b9a8

Copy link
Contributor

@grossyoan grossyoan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi there!

Some small typos/additions on the first pages ready to review. It's a great piece of work 🙏

@philsturgeon philsturgeon changed the title [WIP] Arazzo Specification Arazzo Specification Feb 1, 2026
…zzo.md

Co-authored-by: Yoan Gross <32864409+grossyoan@users.noreply.github.com>
@philsturgeon philsturgeon marked this pull request as ready for review February 1, 2026 19:55
Copy link
Contributor

@grossyoan grossyoan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks a lot for the hard work, Phil 🙏

- TOC
{:toc}

Source descriptions are how Arazzo gets a leg up pn understanding the APIs being worked with. To avoid repeating all the HTTP-level bits like endpoints, status codes, schema, etc. Arazzo just defines source description, then references operations by their `operationId`. Mostly these will be OpenAPI descriptions, but other Arazzo documents can also be used to reference workflows defined elsewhere, and soon AsyncAPI documents will be supported too.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Source descriptions are how Arazzo gets a leg up pn understanding the APIs being worked with. To avoid repeating all the HTTP-level bits like endpoints, status codes, schema, etc. Arazzo just defines source description, then references operations by their `operationId`. Mostly these will be OpenAPI descriptions, but other Arazzo documents can also be used to reference workflows defined elsewhere, and soon AsyncAPI documents will be supported too.
Source descriptions are how Arazzo gets a leg up on understanding the APIs being worked with. To avoid repeating all the HTTP-level bits like endpoints, status codes, schema, etc. Arazzo just defines source description, then references operations by their `operationId`. Mostly these will be OpenAPI descriptions, but other Arazzo documents can also be used to reference workflows defined elsewhere, and soon AsyncAPI documents will be supported too.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the introduction might be a bit heavy to read. Could it be simplified a bit? The infos are here (source descriptions avoid duplication, and reference OpenAPI & Arazzo documents), but the sentence flow could probably be a bit smoother.

- TOC
{:toc}

Think of workflows as recipes for API operations. Just like a recipe breaks down cooking into steps (chop onions, sauté garlic, add tomatoes), an Arazzo workflow breaks down complex API tasks into manageable steps. If you've used GitHub Actions or Jenkins pipelines, the concept will feel familiar, but Arazzo is purpose-built for API orchestration rather than CI/CD.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It made me hungry! 🌮


### Complex Input Types

Inputs can be as simple or complex as you need. Nested objects, arrays, enums,JSON Schema has a keyword for pretty much everything.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Inputs can be as simple or complex as you need. Nested objects, arrays, enums,JSON Schema has a keyword for pretty much everything.
Inputs can be as simple or complex as you need. Nested objects, arrays, enums, JSON Schema has a keyword for pretty much everything.


## Workflow Outputs

Workflows should return useful data. What good is running a booking workflow if you can't get the booking ID back? Outputs define what data the workflow makes available to whatever called it.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could maybe be a bit more specific here? Instead of "whatever called it" (meaning humans or agents I'm guessing), saying "data the workflow makes available upon completion"?


### Required Fields

**stepId**
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we do **stepId** - The unique name for this step within the workflow. instead, like you did in workflow items?

So we don't have these weird margins.

# ... notify about validation issues
```

## Example: Multi-Passenger Validation
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Example: Multi-Passenger Validation
### Multi-Passenger Validation

```


### Validate Business Rules, Not Just HTTP
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm guessing it's made to be under a "Best practices" section?

## Component Types

Arazzo supports several component types, each designed to reduce repetition and make workflows easier to maintain.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might want to add an "Inputs" title here with a few sentences to have it in the table of contents on the right.


A parameter is considered unique by the combination of its `name` and `in` fields, so give it a sensible name and don't have two parameters with the same name in the same location.

```yaml
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might want to display in: header, in:query, in:path, and in:cookie in the code sample.


## Null Safety

Check for null values in conditions:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should it be under "Operators in Conditions"?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments