Skip to content

Commit ffb6d27

Browse files
authored
Merge branch 'master' into patch-1
2 parents 4a0b38c + 01d6733 commit ffb6d27

20 files changed

+3424
-4
lines changed

IMPLEMENTATIONS.md

+16-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ These tools are not endorsed by the OAI.
1010
|----------------|--------------|----------|---------------------|
1111
| swagger-parser | [github/swagger-api](https://github.com/swagger-api/swagger-parser) | Java | Swagger 1.0, 1.1, 1.2, 2.0 to OpenAPI Specification converter |
1212
| swagger-models | [github/swagger-api](https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-models) | Java | OpenAPI 3.0 Java Pojos |
13+
| springdoc-openapi | [github/springdoc/springdoc-openapi](https://github.com/springdoc/springdoc-openapi) | Java | Library that produces OpenAPI 3.x specification documentation for spring-boot applications. |
1314
| KaiZen OpenAPI Parser | [github/RepreZen/KaiZen-OpenAPI-Parser](https://github.com/RepreZen/KaiZen-OpenAPI-Parser) | Java | High-performance Parser, Validator, and Java Object Model for OpenAPI 3.x |
1415
| openapi3-ts | [github/metadevpro/openapi3-ts](https://github.com/metadevpro/openapi3-ts) | TypeScript | TS Model & utils for OpenAPI 3.0.x contracts |
1516
| swagger2openapi | [github/mermade/swagger2openapi](https://github.com/mermade/swagger2openapi) | Node.js | An OpenAPI / Swagger 2.0 to OpenAPI 3.0.x converter and validator |
@@ -22,18 +23,22 @@ These tools are not endorsed by the OAI.
2223
| openapi | [github/wzshiming/openapi](https://github.com/wzshiming/openapi) | Go | OpenAPI 3 Specification for golang |
2324
| kin-openapi | [github/getkin/kin-openapi](https://github.com/getkin/kin-openapi) | Go | OpenAPI 3.x implementation for Go (parsing, converting, validation) |
2425
| Spectral | [github/stoplightio/spectral](https://github.com/stoplightio/spectral) | TypeScript, JavaScript | A flexible JSON object linter with out of the box support for OpenAPI Specification 2 and 3 |
25-
26+
| openapi-validator | [gitlab/mmal/openapi-validator](https://gitlab.com/mmalawski/openapi-validator) | PHP | Validates response against OpenAPI schema |
27+
| OpenAPI-Delphi | [github/paolo-rossi/OpenAPI-Delphi](https://github.com/paolo-rossi/OpenAPI-Delphi) | Delphi | Delphi implementation of a generator, parser and validator for the OpenAPI 3 Specification |
28+
| spring-openapi | [github/jrcodeza/spring-openapi](https://github.com/jrcodeza/spring-openapi) | Java | OpenAPI v3 generator for Java Spring. Includes also client generation. Supports inheritance with discriminators and Jackson annotations and custom interceptors. |
2629

2730
#### Editors
2831

2932
| Title | Project Link | Language |Description |
3033
|----------------|--------------|----------|---------------------|
34+
| Visual Studio Code extension | [VS Code marketplace / OpenAPI (Swagger) editor](https://marketplace.visualstudio.com/items?itemName=42Crunch.vscode-openapi) | TypeScript | Extends VS Code to provide OpenAPI 2.0 and 3.0 navigation, code snippets, new API creation |
3135
| Apicurio Studio | [github/Apicurio/apicurio-studio](https://github.com/Apicurio/apicurio-studio) | Java/TypeScript | Web-Based **visual designer** for OpenAPI 2.0 and 3.0.0. |
3236
| KaiZen OpenAPI Editor | [github/RepreZen/KaiZen-OpenAPI-Editor](https://github.com/RepreZen/KaiZen-OpenAPI-Editor) | Java | Eclipse Editor for OpenAPI 2.0 and 3.0 |
3337
| RepreZen API Studio | [RepreZen.com/OpenAPI](https://www.reprezen.com/OpenAPI) | Java | Commercial desktop IDE for API design, documentation & development |
3438
| OpenAPI-gui | [github/Mermade/openapi-gui](https://github.com/Mermade/openapi-gui) | Node.js | GUI / visual editor for creating and editing OpenAPI definitions |
3539
| SwaggerHub | [swaggerhub.com](https://swaggerhub.com) | | API Design and Documentation Platform, Built For Teams
3640
| swagger-editor | [github/swagger-api](https://github.com/swagger-api/swagger-editor) | JavaScript | Web-Based editor for creating, editing, validating and testing OpenAPI\Swagger definitions |
41+
| Remain OpenAPI Studio | Direct download: https://remainsoftware.com/extranet/download-type/openapi-studio-download <br> Or via Eclipse MarketPlace https://marketplace.eclipse.org/content/openapi-studio-rich-oas3-editor | Java | A user-friendly, visually rich studio supporting all features defined by the OpenAPI 3. Easy but powerful UI-based components creation, API testing, import, export, code generation and much more. |
3742

3843
#### User Interfaces
3944

@@ -45,6 +50,7 @@ These tools are not endorsed by the OAI.
4550
| WebSphere Liberty | [Download jar](https://developer.ibm.com/wasdev/downloads/) | JavaScript | Includes a native OpenAPI v3 UI which allows for customization of its banners and URL |
4651
| Widdershins | [github/Mermade/widdershins](https://github.com/Mermade/widdershins) | Node.js | Generate Slate/Shins markdown from OpenAPI 3.0.x |
4752
| angular-swagger-ui | [github/angular-swagger-ui](https://github.com/Orange-OpenSource/angular-swagger-ui) | AngularJS | An angularJS implementation of Swagger UI |
53+
| Redoc | [github/Redocly/redoc](https://github.com/Redocly/redoc) | JavaScript | A React-based renderer with deep support for OAS v2 and v3 and zero dev-dependency|
4854

4955
#### Mock Servers
5056
| Title | Project Link | Language | Description |
@@ -62,6 +68,14 @@ These tools are not endorsed by the OAI.
6268
| PHP-CRUD-API | [github/mevdschee/php-crud-api](https://github.com/mevdschee/php-crud-api) | PHP | Automatic CRUD API with OpenAPI 3 docs
6369
| FastAPI | [github/tiangolo/fastapi](https://github.com/tiangolo/fastapi) | Python | OpenAPI 3 based, high performance, Python 3.6+ API framework with automatic data validation, serialization and great editor support.
6470
| Fastify OpenAPI v3 | [gitlab.com/m03geek/fastify-oas](https://gitlab.com/m03geek/fastify-oas) | Node.JS | Fastify OpenAPI v3+ plugin. Generates OpenAPI specification from fastify schemas and routes. Also serves swagger ui and spec in json/yaml formats.
71+
| openapi-backend | [github/anttiviljami/openapi-backend](https://github.com/anttiviljami/openapi-backend) | Node.js, TypeScript | Build, Validate, Route, and Mock in the backend using OpenAPI v3 spec in your favourite framework
72+
73+
#### Client Implementations
74+
75+
| Title | Project Link | Language | Description |
76+
|----------------|--------------|----------|-------------|
77+
| Scorpio | [github/notEthan/scorpio](https://github.com/notEthan/Scorpio) | Ruby | OpenAPI 2 and 3 implementation offering a HTTP client library |
78+
| openapi-client-axios | [github/anttiviljami/openapi-client-axios](https://github.com/anttiviljami/openapi-client-axios) | JavaScript, TypeScript | JavaScript client library for consuming OpenAPI-enabled APIs with axios. Types included.
6579

6680
#### Code Generators
6781

@@ -76,3 +90,4 @@ These tools are not endorsed by the OAI.
7690
| WebSphere Liberty | [Download jar](https://developer.ibm.com/wasdev/downloads/) | Java EE | Generates OpenAPI v3 documentation from Java EE applications |
7791
| swagger-node-codegen | [github/fmvilas/swagger-node-codegen](https://github.com/fmvilas/swagger-node-codegen) | Node.js | Generates a Node.js/express server, but also has a template engine for creating any templates needed. |
7892
.NET-C#-Annotations | [github/Microsoft/OpenAPI-NET-CSharpAnnotations](https://github.com/Microsoft/OpenAPI.NET.CSharpAnnotations) | dotnet | Convert your native C# comments/annotation XML from your API code into a OpenAPI document object. |
93+
| Object Oriented OpenAPI Specification | [github/goldspecdigital/oooas](https://github.com/goldspecdigital/oooas) | PHP | Generates OpenAPI documents using PHP. |

TOB.md

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Technical Oversight Board ("TOB")
2+
3+
## Description:
4+
> The TOB is responsible for managing conflicts, violations of procedures or guidelines or other issues that cannot be resolved in the TSC for the OAS. For further details please consult the OpenAPI Project Charter.
5+
6+
## TSC Elected - terms through May 2021
7+
Isabelle Mauny @isamauny
8+
9+
Uri Sarid @usarid
10+
11+
Marsh Gardiner @earth2marsh
12+
13+
Ron Ratovsky @webron
14+
15+
## BGB Elected - terms through May 2020
16+
17+
Darrel Miller @darrelmiller
18+
19+
Jerome Louvel @jlouvel
20+
21+
Jeremy Whitlock @whitlockjc

examples/v2.0/yaml/petstore-expanded.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,14 @@ definitions:
113113
- $ref: '#/definitions/NewPet'
114114
- required:
115115
- id
116+
type: "object"
116117
properties:
117118
id:
118119
type: integer
119120
format: int64
120121

121122
NewPet:
123+
type: "object"
122124
required:
123125
- name
124126
properties:
@@ -128,6 +130,7 @@ definitions:
128130
type: string
129131

130132
Error:
133+
type: "object"
131134
required:
132135
- code
133136
- message

examples/v2.0/yaml/petstore.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ paths:
7474
$ref: '#/definitions/Error'
7575
definitions:
7676
Pet:
77+
type: "object"
7778
required:
7879
- id
7980
- name
@@ -90,6 +91,7 @@ definitions:
9091
items:
9192
$ref: '#/definitions/Pet'
9293
Error:
94+
type: "object"
9395
required:
9496
- code
9597
- message

examples/v3.0/callback-example.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ paths:
4343
content:
4444
application/json:
4545
schema:
46+
type: object
4647
properties:
4748
timestamp:
4849
type: string

examples/v3.0/petstore-expanded.yaml

+5-2
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ paths:
5555
schema:
5656
$ref: '#/components/schemas/Error'
5757
post:
58-
description: Creates a new pet in the store. Duplicates are allowed
58+
description: Creates a new pet in the store. Duplicates are allowed
5959
operationId: addPet
6060
requestBody:
6161
description: Pet to add to the store
@@ -127,14 +127,16 @@ components:
127127
Pet:
128128
allOf:
129129
- $ref: '#/components/schemas/NewPet'
130-
- required:
130+
- type: object
131+
required:
131132
- id
132133
properties:
133134
id:
134135
type: integer
135136
format: int64
136137

137138
NewPet:
139+
type: object
138140
required:
139141
- name
140142
properties:
@@ -144,6 +146,7 @@ components:
144146
type: string
145147

146148
Error:
149+
type: object
147150
required:
148151
- code
149152
- message

examples/v3.0/petstore.yaml

+3-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ paths:
7272
content:
7373
application/json:
7474
schema:
75-
$ref: "#/components/schemas/Pets"
75+
$ref: "#/components/schemas/Pet"
7676
default:
7777
description: unexpected error
7878
content:
@@ -82,6 +82,7 @@ paths:
8282
components:
8383
schemas:
8484
Pet:
85+
type: object
8586
required:
8687
- id
8788
- name
@@ -98,6 +99,7 @@ components:
9899
items:
99100
$ref: "#/components/schemas/Pet"
100101
Error:
102+
type: object
101103
required:
102104
- code
103105
- message
+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Feature name
2+
3+
4+
## Metadata
5+
6+
|Tag |Value |
7+
|---- | ---------------- |
8+
|Proposal |[NNNN](https://github.com/OAI/OpenAPI-Specification/tree/master/proposals/{directory_or_file_name})|
9+
|Authors|[Author 1](https://github.com/{author1}), [Author 2](https://github.com/{author2})|
10+
|Review Manager |TBD |
11+
|Status |Proposal, Draft, Promoted, or Abandoned|
12+
|Implementations |[Click Here](https://github.com/OAI/OpenAPI-Specification/tree/master/proposals/{NNNN}/implementations.md)|
13+
|Issues |[{issueid}](https://github.com/OAI/OpenAPI-Specification/issues/{Issueid})|
14+
|Previous Revisions |[{revid}](https://github.com/OAI/OpenAPI-Specification/pull/{revid}) |
15+
16+
## Change Log
17+
18+
|Date |Responsible Party |Description |
19+
|---- | ---------------- | ---------- |
20+
21+
## Introduction
22+
23+
A short description of what the feature is. Try to keep it to a single-paragraph "elevator pitch" so the reader understands what problem this proposal is addressing.
24+
25+
## Motivation
26+
27+
Describe the problems that this proposal seeks to address. If the problem is that some common pattern is currently hard to express, show how one can currently get a similar effect and describe its drawbacks. If it's completely new functionality that cannot be emulated, motivate why this new functionality would help OpenAPI developers create better code.
28+
29+
## Proposed solution
30+
31+
Describe your solution to the problem. Provide examples and describe how they work. Show how your solution is better than current workarounds: is it cleaner, safer, or more efficient?
32+
33+
## Detailed design
34+
35+
Describe the design of the solution in detail. This should include an exact description of the changes to the contents of the OpenAPI specification. That description should include a extract of each section of the OpenAPI specification which is impacted by the proposal with all proposed modifications applied. These extracts may be provided through additional files which are identified and described in this section.
36+
37+
## Backwards compatibility
38+
39+
Proposals should be structure so that they can be handled by existing OAS compliant software. Any potential issues should be identified and discussed.
40+
41+
## Alternatives considered
42+
43+
Describe alternative approaches to addressing the same problem, and why you chose this approach instead.
44+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# Alternative Schema
2+
3+
## Metadata
4+
5+
|Tag |Value |
6+
|---- | ---------------- |
7+
|Proposal |[Alternative Schema](https://github.com/OAI/OpenAPI-Specification/tree/master/proposals/Alternative%20Schema)|
8+
|Authors|[Chuck Heazel](https://github.com/{cmheazel})|
9+
|Review Manager |TBD |
10+
|Status |**Draft** |
11+
|Implementations |[Click Here](https://github.com/OAI/OpenAPI-Specification/tree/master/proposals/Alternative%20Schema/implementations.md)
12+
|Issues |[1532](https://github.com/OAI/OpenAPI-Specification/issues/1532)|
13+
|Previous Revisions |[March 15](https://github.com/OAI/OpenAPI-Specification/pull/1868#issue-261689900) |
14+
15+
.Change Log
16+
17+
|Date |Responsible Party |Description |
18+
|---- | ---------------- | ---------- |
19+
|3/15/19 |C. Heazel|Initial Markup Draft |
20+
|4/17/19 |C. Heazel|Re-structured based on Apple Swift|
21+
22+
## Introduction
23+
24+
This a proposal to add a new field called ``alternativeSchema`` to the OAS.
25+
26+
## Motivation
27+
28+
OpenAPI allows APIs to describe the syntax of their request and response messaged using a JSON Schema-like syntax. However, not all messages will be in JSON. The ability to refer to one or more external schema will allow an API to describe the syntax of a message regardless of the format used.
29+
30+
For example: Some XML payloads are defined by an XML schema (the syntax) and a suite of Schematron rules (valid values). JSON Schema cannot effectively represent their content. By providing access to the appropriate appropriate XML Schema and Schematron files, the payload can be validated the way it was intended to be.
31+
32+
## Proposed solution
33+
34+
This proposal makes the following changes to the OAS 3.0 specification:
35+
36+
1. Extend the Schema Object by the addition of the x-oas-draft-alternativeSchema field.
37+
1. Addition of the Alternative Schema Object.
38+
1. Addition of Alternative Schema examples.
39+
1. Addition of a preliminary discussion of the Alternative Schema registry.
40+
41+
## Detailed design
42+
43+
### Extend the Schema Object
44+
45+
The OpenAPI Schema Object is extended by the addition of the x-oas-draft-alternativeSchema field. The proposed changes to the OpenAPI specification are provided in [schema_object.md](https://github.com/OAI/OpenAPI-Specification/tree/master/proposals/Alternative%20Schema/schema_object.md)
46+
47+
### Add the Alternative Schema Object
48+
49+
The new object, the Alternative Schema Object is added to the OpenAPI specification. The proposed changes to the OpenAPI specification are provided in [alternative_schema_object.md](https://github.com/OAI/OpenAPI-Specification/tree/master/proposals/Alternative%20Schema/alternative_schema_object.md)
50+
51+
### Provide Alternative Schema Examples
52+
Examples of the use of the Alternative Schema capability is added to the OpenAPI specification. The proposed changes to the OpenAPI specification are provided in [alternative_schema_examples.md](https://github.com/OAI/OpenAPI-Specification/tree/master/proposals/Alternative%20Schema/alternative_schema_examples.md)
53+
54+
### Alternative Schema Registry
55+
56+
Values used to populate the Alternative Schema Object are required to come from the Alternative Schema Registry. The preliminary Alternative Schema Registry is located at <https://spec.openapis.org/registries/alternative-schema>.
57+
58+
*** Note this is a placeholder registry. Don't take the values seriously. ***
59+
60+
Inital contents of the registry will include:
61+
62+
|Name |Link |Description |
63+
|--- | --- | --- |
64+
|jsonSchema |TBD |JSON Schema | |xsdSchema |TBD |XML Schema |
65+
66+
## Backwards compatibility
67+
68+
This proposal makes use of the extensibility features of OpenAPI. All changes sould appear as extensions and handled accordingly.
69+
70+
## Alternatives considered
71+
72+
Embedding non-JSON content in the OAS document would have imposed an unacceptable burden on tooling. Therefore, an extenal link was prefered. Considerable discussion was held over exactly how the links should be represented in the Schema Object. The selected option should support the greatest number of possible combinations of external schema that can be expressed with the OpenAPI schema language.
73+

0 commit comments

Comments
 (0)