Skip to content

Commit b816307

Browse files
committed
Merge main branch
2 parents 72d15fd + 6aadff4 commit b816307

File tree

6 files changed

+250
-176
lines changed

6 files changed

+250
-176
lines changed

DEVELOPMENT.md

+21-21
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,51 @@
11
## Development Guidelines
22

3-
This document intends to establish guidelines which build a transparent, open mechanism for deciding how to evolve the OpenAPI Specification. The Open API Technical Contributor Board will initially follow these processes when merging changes from external contributors or from the TCB itself. This guideline document will be adjusted as it makes sense.
3+
This document intends to establish guidelines which build a transparent, open mechanism for deciding how to evolve the OpenAPI Specification. The Open API Technical Contributor Board will initially follow these processes when merging changes from external contributors or from the TCB itself. This guideline document will be adjusted as practicality dictates.
44

55
## OAI Specification Driving factors
66

7-
The OpenAPI Specification should be use-case driven. We can write support for hypothetical use cases as we see fit, but they should be backed by realistic scenarios
7+
The OpenAPI Specification should be use-case driven. We can specify support for hypothetical use cases as we see fit, but specifications should be backed by realistic scenarios.
88

99
## Specification Change Criteria
1010

11-
The specification _will change_ from the original 2.0 version. We should typically do so when any of the following criteria are met:
11+
The specification _will change_ from the original 2.0 version. We should typically make changes when any of the following criteria are met:
1212

13-
- Clarity. The current "way" something is done doesn't make sense, is complicated, or not clear
14-
- Consistency. A portion of the specification is not consistent with the rest, or the industry standard terminology
15-
- Necessary functionality. We are missing functionality because of a certain design of the specification
16-
- Forward-looking designs. As usage of APIs evolves to new protocols, formats, patterns, we should always be considering what the next important functionality should be
13+
- Clarity. The current "way" something is done doesn't make sense, is complicated, or not clear.
14+
- Consistency. A portion of the specification is not consistent with the rest, or with the industry standard terminology.
15+
- Necessary functionality. We are missing functionality because of a certain design of the specification.
16+
- Forward-looking designs. As usage of APIs evolves to new protocols, formats, and patterns, we should always consider what the next important functionality should be.
1717
- Impact. A change will provide impact on a large number of use cases. We should not be forced to accommodate every use case. We should strive to make the _common_ and _important_ use cases both well supported and common in the definition of the OAI Spec. We cannot be edge-case driven.
1818

1919

2020
## Tracking Process
2121

22-
- Use GitHub for all spec designs, use cases, etc.
22+
- Use GitHub for all spec designs, use cases, and so on.
2323
- As with 2.0, the **human readable** document is the source of truth. If using a JSON Schema again to document the spec, it is secondary to the human documentation. The documentation should live in a *.md file, in parallel to the 2.0 document (versions/3.0.md for example).
24-
- The `master` branch shall remain the current, released OpenAPI Specification (i.e. 2.0). We will work in an OpenAPI.next branch, which shall be described and linked to on the **default** README.md on master
25-
- Examples of how something is described _currently_ vs. the proposed solution should accompany any change proposal
26-
- New features should be done in feature branches which, upon approval, be merged into the OpenAPI.next branch.
27-
- Use labels for the workflow of specification changes. For example, this may be labeled as `proposed`, `needs migration review`, `needs tooling review`, `needs documentation`, `rejected`, `needs approval`. These labels must be assigned by project committers
28-
- An issue will be opened for each feature change. Embedded in the issue OR ideally linked in a file via pull-request (PR), a document should be supplied for use cases for the change
29-
- A PR will be used to describe the _proposed_ solution, and linked to the original issue
30-
- Not all committers will contribute to every single proposed change. There may be many open proposals at once, and multiple efforts may happen in parallel
24+
- The `master` branch shall remain the current, released OpenAPI Specification (i.e., 2.0). We will work in an OpenAPI.next branch, which shall be described and linked to on the **default** README.md on master.
25+
- Examples of how something is described _currently_ vs. the proposed solution should accompany any change proposal.
26+
- New features should be done in feature branches which, upon approval, are merged into the OpenAPI.next branch.
27+
- Use labels for the workflow of specification changes. Examples of labels are `proposed`, `needs migration review`, `needs tooling review`, `needs documentation`, `rejected`, and `needs approval`. These labels must be assigned by project committers.
28+
- An issue will be opened for each feature change. Embedded in the issue, or ideally linked in a file via pull-request (PR), a document about use cases should be supplied with the change.
29+
- A PR will be used to describe the _proposed_ solution, and linked to the original issue.
30+
- Not all committers will contribute to every single proposed change. There may be many open proposals at once, and multiple efforts may happen in parallel.
3131
- When the OpenApi.next spec is complete and approved for release, the branch will be merged to master.
3232

3333
## Approving Changes
3434

3535
For each change in the specification we should _always_ consider the following:
3636

3737
- Migration. Is this a construct that has a path from the existing 2.0 specification? If so, how complicated is it to migrate to the proposed change?
38-
- Tooling. Strive to support code generation, software interfaces, spec generation techniques. Some features may be impossible to support in different frameworks/languages. These should be documented and considered if the change should be approved.
39-
- Visualization. Can the specification change be graphically visualized somehow in a UI or other?
38+
- Tooling. Strive to support code generation, software interfaces, and spec generation techniques. Some features may be impossible to support in different frameworks/languages. These should be documented and considered during the change approval process.
39+
- Visualization. Can the specification change be graphically visualized somehow in a UI or other interface?
4040

41-
Spec changes should be approved by a majority of the committers. This can be done by commenting on the issue itself ("Approved by @fehguy" for example). Once voting criteria is met, any committer can merge the PR. (**TODO: we will want to formalize what voting criteria actually is).
41+
Spec changes should be approved by a majority of the committers. Approval can be given by commenting on the issue itself, for example, "Approved by @fehguy". After voting criteria is met, any committer can merge the PR. (**TODO**: we will want to formalize what voting criteria actually is).
4242

4343
No change should be approved until there is documentation for it, supplied in an accompanying PR.
4444

4545
## Transparency
4646

47-
We should always be as transparent as possible. Sometimes there will be discussions that use customer names, sensitive use cases, etc. These must be anonymized, discussed in a private repository, or offline
47+
We should always be as transparent as possible. Sometimes there will be discussions that use customer names, sensitive use cases, and so on. These must be anonymized, discussed in a private repository, or conducted offline.
4848

49-
- Asynchronous discussions should live in the GitHub issues for this project
50-
- Realtime discussions should be in a public chat such as IRC or Slack
49+
- Asynchronous discussions should live in the GitHub issues for this project.
50+
- Realtime discussions should be in a public chat such as IRC or Slack.
5151

IMPLEMENTATIONS.md

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
### Implementations
22

3-
Below is a list of known tooling implementing the 3.0.0 specification. Because
4-
the 3.0.0 specification has not yet been released, please consult the details of
5-
any projects listed below for notes about stability and roadmap. The process
3+
Below is a list of known tooling that implements the 3.0.0 specification. Because
4+
the 3.0.0 specification has not yet been released, refer to the details of projects listed below for any notes about stability and roadmap. The process
65
to create the best possible 3.0.0 specification includes feedback from end-users
7-
and tooling creators alike, and it is strongly encouraged that draft tooling be
6+
and tooling creators. We strongly encourage draft tooling be
87
made available for early users of the OAS.
98

109
These tools are not necessarily endorsed by the OAI.
@@ -25,7 +24,7 @@ These tools are not necessarily endorsed by the OAI.
2524

2625
| Title | Project Link | Language |Description |
2726
|----------------|--------------|----------|---------------------|
28-
| openapi-viewer | [GitHub/koumoul/openapi-viewer](https://github.com/koumoul-dev/openapi-viewer) | Vue.js | Browse and test a REST API described with the OpenAPI 3.0 Specification |
27+
| openapi-viewer | [GitHub/koumoul/openapi-viewer](https://github.com/koumoul-dev/openapi-viewer) | Vue.js | Browse and test a REST API described with the OpenAPI 3.0 Specification. |
2928

3029

3130
#### Server Implementations
@@ -35,5 +34,5 @@ These tools are not necessarily endorsed by the OAI.
3534

3635
| Title | Project Link | Language |Description |
3736
|----------------|--------------|----------|---------------------|
38-
| baucis-openapi3 | [Github/metadevpro/baucis-openapi3](https://github.com/metadevpro/baucis-openapi3) | Node.js | [Baucis.js](https://github.com/wprl/baucis) plugin for generating OpenAPI 3.0 compliant API contracts |
39-
| Google Gnostic | [GitHub/googleapis/gnostic](https://github.com/googleapis/gnostic) | Go | Compile OpenAPI descriptions into equivalent Protocol Buffer representations |
37+
| baucis-openapi3 | [Github/metadevpro/baucis-openapi3](https://github.com/metadevpro/baucis-openapi3) | Node.js | [Baucis.js](https://github.com/wprl/baucis) plugin for generating OpenAPI 3.0 compliant API contracts. |
38+
| Google Gnostic | [GitHub/googleapis/gnostic](https://github.com/googleapis/gnostic) | Go | Compile OpenAPI descriptions into equivalent Protocol Buffer representations. |

README.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,22 @@
66

77
This is the working branch for the next version of the OpenAPI Specification. You can read more about the Open API Initiative (OAI) at [https://openapis.org](https://openapis.org).
88

9-
The current, released version of the OpenAPI Specification is 2.0, through donation of the Swagger Specification to the OAI by SmartBear Software. If you are interested in the release specification, please see the [master branch](https://github.com/OAI/OpenAPI-Specification/blob/master/README.md) of this project.
9+
The current, released version of the OpenAPI Specification is 2.0, through donation of the Swagger Specification to the OAI by SmartBear Software. If you are interested in the release specification, see the [master branch](https://github.com/OAI/OpenAPI-Specification/blob/master/README.md) of this project.
1010

11-
Development of the next version of the OpenAPI Specification is being guided by the [OAI Technical Contributors Board](https://github.com/OAI/OpenAPI-Specification/blob/OpenAPI.next/CONTRIBUTORS.md). This group of committers will be bring their API expertise, incorporating feedback from the community, and expanding the group of committers as appropriate. All development activity on the future specification will be performed as features and merged into this branch. Upon release of the OpenAPI Specification, this branch will be merged to master.
11+
Development of the next version of the OpenAPI Specification is guided by the [OAI Technical Contributors Board](https://github.com/OAI/OpenAPI-Specification/blob/OpenAPI.next/CONTRIBUTORS.md). This group of committers bring their API expertise, incorporate feedback from the community, and expand the group of committers as appropriate. All development activity on the future specification will be performed as features and merged into this branch. Upon release of the OpenAPI Specification, this branch will be merged to master.
1212

13-
You can see the current process for development inside the OpenAPI Specification [here](https://github.com/OAI/OpenAPI-Specification/blob/OpenAPI.next/DEVELOPMENT.md).
13+
The current process for development of the OpenAPI Specification is described in [Development Guidelines](https://github.com/OAI/OpenAPI-Specification/blob/OpenAPI.next/DEVELOPMENT.md).
1414

1515
## Participation
1616

17-
The OpenAPI Specification is a community driven, open project hosted by the Linux Foundation. The OAI encourages participation from individuals and companies alike. If you wish to participate in the evolution of the OpenAPI Specification, please consider the following:
17+
The OpenAPI Specification is a community driven, open project hosted by the Linux Foundation. The OAI encourages participation from individuals and companies alike. If you want to participate in the evolution of the OpenAPI Specification, consider taking the following actions:
1818

1919
* Review the [current specification](https://github.com/OAI/OpenAPI-Specification/blob/OpenAPI.next/versions/3.0.md). The human-readable markdown file _is the source of truth_ for the specification.
20-
* Review the [development](https://github.com/OAI/OpenAPI-Specification/blob/OpenAPI.next/DEVELOPMENT.md) process so it's clear how the spec is evolving.
20+
* Review the [development](https://github.com/OAI/OpenAPI-Specification/blob/OpenAPI.next/DEVELOPMENT.md) process so you understand how the spec is evolving.
2121
* Check the [issues](https://github.com/OAI/OpenAPI-Specification/issues) and [pull requests](https://github.com/OAI/OpenAPI-Specification/pulls) to see if someone has already documented your idea or feedback on the specification. You can follow an existing conversation by adding a comment to the existing issue or PR.
22-
* Create an issue to describe a new concern along with, if possible, a proposed solution.
22+
* Create an issue to describe a new concern. If possible, propose a solution.
2323

24-
Be aware that not all feedback can be accommodated and there may be solid arguments to/from a change being appropriate for the specification.
24+
Not all feedback can be accommodated and there may be solid arguments for or against a change being appropriate for the specification.
2525

2626
## License
2727

examples/v3.0/callback-example.yaml

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
paths:
2+
/streams:
3+
post:
4+
description: subscribes a client to receive out-of-band data
5+
parameters:
6+
- name: callbackUrl
7+
in: query
8+
required: true
9+
description: |
10+
the location where data will be sent. Must be network accessible
11+
by the source server
12+
schema:
13+
type: string
14+
format: uri
15+
example: https://tonys-server.com
16+
responses:
17+
'201':
18+
description: subscription successfully created
19+
content:
20+
application/json:
21+
schema:
22+
description: subscription information
23+
required:
24+
- subscriptionId
25+
properties:
26+
subscriptionId:
27+
description: this unique identifier allows management of the subscription
28+
type: string
29+
example: 2531329f-fb09-4ef7-887e-84e648214436
30+
callbacks:
31+
# the name `onData` is a convenience locator
32+
onData:
33+
# when data is sent, it will be sent to the `callbackUrl` provided
34+
# when making the subscription PLUS the suffix `/data`
35+
$request.query.callbackUrl/data:
36+
post:
37+
requestBody:
38+
description: subscription payload
39+
content:
40+
application/json:
41+
schema:
42+
properties:
43+
timestamp:
44+
type: string
45+
format: date-time
46+
userData:
47+
$ref: '#/components/schemas/UserLogData'
48+
responses:
49+
'202':
50+
description: |
51+
Your server implementation should return this HTTP status code
52+
if the data was received successfully
53+
'204':
54+
description: |
55+
Your server should return this HTTP status code if no longer interested
56+
in further updates

examples/v3.0/uber.yaml

+1-2
Original file line numberDiff line numberDiff line change
@@ -289,8 +289,7 @@ components:
289289
Error:
290290
properties:
291291
code:
292-
type: integer
293-
format: int32
292+
type: string
294293
message:
295294
type: string
296295
fields:

0 commit comments

Comments
 (0)