Skip to content

Commit ff18b2b

Browse files
Merge pull request #355 from OAI/dev
Merge Dev to v1.0-dev
2 parents a9cab9c + 91e6d8c commit ff18b2b

30 files changed

+5097
-2595
lines changed

.github/workflows/respec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ jobs:
6363
delete-branch: true
6464
path: deploy
6565
labels: Housekeeping
66-
reviewers: darrelmiller,webron,earth2marsh,webron,lornajane,mikekistler,miqui,handrews,karenetheridge,ralfhandl
66+
reviewers: darrelmiller,webron,earth2marsh,lornajane,mikekistler,miqui,handrews,karenetheridge,ralfhandl
6767
title: Arazzo - Update ReSpec-rendered specification versions
6868
commit-message: Update ReSpec-rendered specification versions
6969
signoff: true

.github/workflows/schema-publish.yaml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: schema-publish
22

3-
# author: @ralfhandl
3+
# author: @ralfhandl, @frankkilcommins
44

55
#
66
# This workflow copies the x.y schemas to the gh-pages branch
@@ -10,7 +10,11 @@ name: schema-publish
1010
on:
1111
push:
1212
branches:
13-
- main
13+
- 'v[0-9].[0-9]-dev'
14+
paths:
15+
- 'src/schemas/validation/*.yaml'
16+
- 'scripts/schema-publish.sh'
17+
- '.github/workflows/schema-publish.yaml'
1418
workflow_dispatch: {}
1519

1620
jobs:
@@ -33,7 +37,7 @@ jobs:
3337

3438
- uses: actions/setup-node@v4 # setup Node.js
3539
with:
36-
node-version: 20.x
40+
node-version: 22.x
3741

3842
- name: Install dependencies
3943
run: npm ci
@@ -57,10 +61,10 @@ jobs:
5761
delete-branch: true
5862
path: deploy
5963
labels: Housekeeping,Schema
60-
reviewers: darrelmiller,webron,earth2marsh,lornajane,mikekistler,miqui,handrews,ralfhandl
64+
reviewers: darrelmiller,webron,earth2marsh,lornajane,mikekistler,miqui,ralfhandl,handrews,karenetheridge
6165
title: Arazzo - Publish Schema Iterations
6266
commit-message: New Arazzo schema iterations
6367
signoff: true
6468
body: |
6569
This pull request is automatically triggered by GitHub action `schema-publish` in the OAI/Arazzo-Specification repo.
66-
The `schemas/**/*.yaml` files have changed and JSON files are automatically generated.
70+
The `src/schemas/validation/*.yaml` files have changed and JSON files are automatically generated.

.github/workflows/schema-tests.yaml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ jobs:
2929
node-version: '20.x'
3030

3131
- name: Install dependencies from main
32-
run: |
33-
# git checkout remotes/origin/main -- package.json package-lock.json #TODO: uncomment with subsequent PR
34-
npm ci
32+
run: npm ci
33+
3534
- name: Run tests
36-
run: npm test
35+
run: npm run test

.github/workflows/validate-markdown.yaml

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ name: validate-markdown
44
# Issue: https://github.com/OAI/OpenAPI-Specification/issues/2130
55

66
#
7-
# This workflow validates files in the versions directory matching 1.*.md
7+
# This workflow validates markdown files in the project root.
8+
# It also validates the work-in-progress specification file src/arazzo.md with slightly different rules.
89
#
910

1011
# run this on push to any branch and creation of pull-requests
@@ -16,9 +17,16 @@ jobs:
1617
runs-on: ubuntu-latest
1718

1819
steps:
19-
- uses: actions/checkout@v2 # checkout repo content
20-
- uses: actions/setup-node@v1 # setup Node.js
20+
- uses: actions/checkout@v4 # checkout repo content
2121
with:
22-
node-version: '18.x'
23-
- name: Validate markdown
24-
run: npx mdv versions/1.*.md
22+
fetch-depth: 0
23+
24+
- uses: actions/setup-node@v4 # setup Node.js
25+
with:
26+
node-version: '20.x'
27+
28+
- name: Lint work-in-progress spec
29+
run: npx --yes markdownlint-cli2 --config spec.markdownlint.yaml src/arazzo.md
30+
31+
- name: Lint other files
32+
run: npx --yes markdownlint-cli2 *.md

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ target
77
atlassian-ide-plugin.xml
88
node_modules/
99
deploy/
10+
deploy-preview/
1011
history
1112
Gemfile.lock
1213
coverage/

.markdownlint.yaml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# First heading is a top-level heading
2+
MD002: true
3+
4+
# Heading style (ATX is leading # symbols)
5+
MD003:
6+
style: atx
7+
8+
# Unordered list symbol can be anything
9+
MD004: false
10+
11+
# Unordered list indentation size
12+
MD007:
13+
indent: 2
14+
15+
# Allow additional blank lines
16+
MD012: false
17+
18+
# Maximum line length
19+
MD013:
20+
line_length: 800
21+
tables: false
22+
23+
# Headings need blank lines before and after
24+
MD022: true
25+
26+
# Duplicate headings are allowed
27+
MD024: false
28+
29+
# Surround lists with blank lines
30+
MD032: true
31+
32+
# Allow inline HTML
33+
MD033: false

CONTRIBUTING.md

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
# Contribute to the Arazzo Specification
2+
3+
We welcome contributions and discussion.
4+
Bug reports and feature requests are welcome, please add an issue explaining your use case.
5+
Pull requests are also welcome, but it is recommended to create an issue first, to allow discussion.
6+
7+
Questions and comments are also welcome - use the GitHub Discussions feature.
8+
You will also find notes from past meetings in the Discussion tab.
9+
10+
## Key information
11+
12+
This project is covered by our [Code of Conduct](https://github.com/OAI/OpenAPI-Specification?tab=coc-ov-file#readme).
13+
All participants are expected to read and follow this code.
14+
15+
No changes, however trivial, are ever made to the contents of published specifications (the files in the `versions/` folder).
16+
Exceptions may be made when links to external documents have been changed by a 3rd party, in order to keep our documents accurate.
17+
18+
Published versions of the specification are in the `versions/` folder.
19+
The under-development versions of the specification are in the file `src/arazzo.md` on the appropriately-versioned branch.
20+
For example, work on the next release for 1.1 is on `v1.1-dev` in the file `src/arazzo.md`.
21+
22+
The [spec site](https://spec.openapis.org) is the source of truth for the Arazzo specification as it contains all the citations and author credits.
23+
24+
The OpenAPI project (which Arazzo sits under) is almost entirely staffed by volunteers.
25+
Please be patient with the people in this project, who all have other jobs and are active here because we believe this project has a positive impact in the world.
26+
27+
### Active branches
28+
29+
The current active specification releases are:
30+
31+
| Version | Branch | Notes |
32+
| ------- | ------ | ----- |
33+
| 1.0.2 | `v1.0-dev` | active patch release line |
34+
| 1.1.0 | `v1.1-dev` | minor release in development |
35+
36+
## Pull Requests
37+
38+
Pull requests are always welcome but please read the section below on [branching strategy](#branching-strategy) before you start.
39+
40+
Pull requests MUST come from a fork; create a fresh branch on your fork based on the target branch for your change.
41+
42+
### Branching Strategy
43+
44+
Overview of branches:
45+
46+
- `main` holds the published versions of the specification, utility scripts and supporting documentation.
47+
- `dev` is for development infrastructure and other changes that apply to multiple versions of development.
48+
- Branches named `vX.Y-dev` are the active development branches for future releases.
49+
- Branches name `vX.Y.Z-rel` are release branches (including when Z == 0). They exist primarily for `git mv`-ing `src/oas.md` to the appropriate `versions/X.Y.Z.md` location before merging back to `main`, and can also be used for any emergency post-release fixes that come up, such as when a 3rd party changes URLs in a way that breaks published links.
50+
51+
> All changes should be applied to the _earliest_ branch where the changes are relevant in the first instance.
52+
53+
## Release Process and Scope
54+
55+
### Minor Releases
56+
57+
Our roadmap for Arazzo releases is community-driven, meaning the specification is open for proposed additions by anyone.
58+
59+
Changes in minor releases (such as 1.1) meet the following criteria:
60+
61+
- Are **backwards-compatible** and be reasonably easy to implement in tooling that already supports the previous minor version.
62+
For example, new optional fields can be added.
63+
- Drive quality-of-life improvements to support how Arazzo is used by practitioners, so that Arazzo evolves to continue to meet user needs.
64+
For example, adding fields to support changes in other standards, or adopting common `x-*` extension fields into the specification.
65+
- Make the specification document clearer or easier to understand.
66+
67+
A minor release is due when there are some meaningful features (including one or a small number of headline features).
68+
69+
### Patch Releases
70+
71+
Patch releases reflect a constant quest for improving the active minor versions of Arazzo.
72+
Since we do not edit specification documents after publication, even the smallest change has to be in a new release.
73+
74+
Changes in patch releases meet the following criteria:
75+
76+
- Editorial changes such as spelling or formatting fixes, including link updates.
77+
- Clarifications or additions that do not change the meaning of the specification.
78+
79+
Patch releases are created as often as there are changes to the specification worth releasing.
80+
81+
## Get in touch
82+
83+
To get in touch with other people on the project, ask questions, or anything else:
84+
85+
- Find us [on the OpenAPI Slack](https://communityinviter.com/apps/open-api/openapi) and join the `#arazzo` channel.
86+
- Start a [GitHub Discussion](https://github.com/OAI/Arazzo-Specification/discussions/).
87+
- Join one of our weekly meetings by checking the [issues list for an upcoming meetings](https://github.com/OAI/Arazzo-Specification/issues?q=is%3Aissue%20state%3Aopen%20label%3AHouse-keeping).
88+
89+
## Appendix
90+
91+
### Build the HTML version to publish
92+
93+
We use ReSpec to render the markdown specification as HTML for publishing and easier reading.
94+
These instructions explain how you can build the HTML locally.
95+
96+
You will need NodeJS 18 or later.
97+
98+
Install dependencies:
99+
100+
```sh
101+
npm install
102+
```
103+
104+
Produce stand-alone HTML files in the local `deploy/arazzo` folder:
105+
106+
```sh
107+
npm run build
108+
```
109+
110+
Note that Linux users may need to add `--no-sandbox` to run `npx respec` as found in the `scripts/md2html/build.sh` file.

MAINTAINERS.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
# Arazzo Specification Maintainers
2+
13
## Active
4+
25
* Frank Kilcommins [@frankkilcommins](https://github.com/frankkilcommins)
36
* Nick Denny [@ndenny](https://github.com/ndenny)
4-
* Kevin Duffey [@kevinduffey](https://github.com/kevinduffey)
7+
* Kevin Duffey [@kevinduffey](https://github.com/kevinduffey)

README.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
# The Arazzo Specification
2+
23
![alt Arazzo logo](./images/Arazzo-logo.png)
34

45
The Arazzo Specification is a community-driven open specification within the [OpenAPI Initiative](https://www.openapis.org/), a Linux Foundation Collaborative Project.
56

6-
The Arazzo Specification defines a standard, programming language-agnostic mechanism to express sequences of calls and articulate the dependencies between them to achieve a particular outcome, or set of outcomes, when dealing with API descriptions (such as OpenAPI descriptions).
7+
The Arazzo Specification defines a standard, programming language-agnostic mechanism to express sequences of calls and articulate the dependencies between them to achieve a particular outcome, or set of outcomes, when dealing with API descriptions (such as OpenAPI descriptions).
78

89
The Arazzo Specification can articulate these workflows in a deterministic human-readable and machine-readable manner, thus improving provider and consumer experiences when working with APIs. Similar to what OpenAPI has done for describing HTTP interfaces, the Arazzo Specification enables the ability to articulate the functional use cases offered by an API (or group of APIs) thus removing the guesswork for both human and machine consumers.
910

1011
Use cases for machine-readable API workflow definition documents include, but are not limited to:
12+
1113
- interactive _living_ workflow documentation
1214
- automated documentation generation (e.g. Developer Portal documentation)
1315
- code and SDK generation driven by functional use cases
@@ -19,9 +21,9 @@ The Arazzo Specification does not mandate a specific development process such as
1921

2022
This GitHub project is the starting point for Arazzo. Here you will find the information you need about the Arazzo Specification, simple examples of what it looks like, and some general information regarding the project.
2123

22-
## Current Version - 1.0.0
24+
## Current Version - 1.0.1
2325

24-
The current version of the Arazzo Specification is [Arazzo Specification 1.0.0](./versions/1.0.0.md).
26+
The latest version of the Arazzo Specification can be viewed at [Arazzo Specification - latest](https://spec.openapis.org/arazzo/latest.html).
2527

2628
![alt The Arazzo Specification Structure](./images/Arazzo-Specification-Structure.png)
2729

@@ -40,8 +42,7 @@ The OpenAPI Initiative encourages participation from individuals and companies a
4042
- [Bi-weekly Call](https://github.com/OAI/Arazzo-Specification/discussions/5) - Wednesdays at 09:00 AM PDT
4143
- [Discussions](https://github.com/OAI/Arazzo-Specification/discussions) - Use the GitHub discussions to ask questions, provide opinions and engage with the group
4244
- [Issues](https://github.com/OAI/Arazzo-Specification/issues) - Feel free to submit a Github issue with any question or comment about the working group
43-
- Slack - if you have access to the OpenAPI slack workspace, then join the `sig-workflows` channel. If you do not have access, you're welcome to join by clicking [here](https://communityinviter.com/apps/open-api/openapi)
44-
45+
- Slack - if you have access to the OpenAPI slack workspace, then join the `arazzo` channel. If you do not have access, [you're welcome to join](https://communityinviter.com/apps/open-api/openapi)
4546

4647
## Licensing
4748

SPECIAL_INTEREST_GROUP.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,18 @@ For more information, see [OAI Special Interest Groups](https://github.com/OAI/O
1010

1111
## Workflows Special Interest Group - Charter / Motivation
1212

13-
Being able to express specific sequences of calls and articulate the dependencies between them to achieve a particular goal is desirable in the context of an API specification.
13+
Being able to express specific sequences of calls and articulate the dependencies between them to achieve a particular goal is desirable in the context of an API specification.
1414

15-
Our aim is to propose an enhancement to the current OpenAPI, or accompanying specification (or means), that can define sequences of calls and their dependencies to be expressed in the context of delivering a particular outcome or set of outcomes.
15+
Our aim is to propose an enhancement to the current OpenAPI, or accompanying specification (or means), that can define sequences of calls and their dependencies to be expressed in the context of delivering a particular outcome or set of outcomes.
1616

17-
The creation of the SIG-Workflows group is inspired by the need to store sequences of calls in the context of specific tests, and in order to communicate the particulars of a complex set of security related calls such as when using OAuth2 and the Financial-grade API security profile of OpenID Connect.
17+
The creation of the SIG-Workflows group is inspired by the need to store sequences of calls in the context of specific tests, and in order to communicate the particulars of a complex set of security related calls such as when using OAuth2 and the Financial-grade API security profile of OpenID Connect.
1818

1919
However, such a definition will be useful for understanding how to implement any dependent sequence of functional calls for any user of an API such as authorization calls, redirects and web hooks in order to achieve a certain technical or functional outcome.
2020

2121
Optimally, it should be possible to articulate these workflows in a human and machine readable manner, thus improving the capability of API specifications to tell the story of the API in a manner that can improve the consuming developer experience and understanding of an API specified using OpenAPI (or other supported specifications).
2222

23-
**Key focus areas**
23+
### Key focus areas
24+
2425
- **Context** - How to define quickly and easily what goal and key functions of an API are, and how to represent that in a specification
2526
- **Workflows** - Handling key and complex sequences which may involve the reuse of endpoints for multiple uses, like token calls in a FAPI compliant sequence, in both a human and machine readable way, supporting both understanding and automation
2627
- **Tooling** - How to best integrate to tools and provide machine readable context for those tools so that the spec can integrate with the tools used by developers

0 commit comments

Comments
 (0)