feat: OpenAPI 3.1 support (#8367)

- New top-level field - `webhooks`. This allows describing out-of-band webhooks that are available as part of the API.

- New top-level field - `jsonSchemaDialect`. This allows defining of a default `$schema` value for Schema Objects

- The Info Object has a new `summary` field.

- The License Object now has a new `identifier` field for SPDX licenses. This `identifier` field is mutually exclusive with the `url` field. Either can be used in OpenAPI 3.1 definitions.

- Components Object now has a new entry `pathItems`, to allow for reusable Path Item Objects to be defined within a valid OpenAPI document.

- `License` and `Contact` components are now exported and available via `getComponent`

- New version predicates and selectors for `isOpenAPI30` and `isOpenAPI31`. This avoids needing to change the usage of `isOAS3` selector.

- New OAS3 components: `Webhooks`

- New OAS3 wrapped components: `Info`, `License`
This commit is contained in:
Tim Lai
2023-02-03 14:06:56 -08:00
committed by GitHub
parent f3c6a2552d
commit 4557b2497b
30 changed files with 1564 additions and 164 deletions

View File

@@ -0,0 +1,6 @@
swagger: 2.0.0
info:
title: OpenAPI 2.0 Info Object
version: 1.0.0
summary: This 3.1.x field should not render in OpenAPI2.x.x
description: This is a sample server for a pet store.

View File

@@ -0,0 +1,6 @@
openapi: 3.1.0
info:
title: OpenAPI 3.0 Info Object
version: 1.0.0
summary: This 3.1.x field should not render in OpenAPI3.0.x
description: This is a sample server for a pet store.

View File

@@ -0,0 +1,7 @@
openapi: 3.1.0
info:
title: OpenAPI 3.1 Info Object
version: 1.0.0
summary: a new 3.1.x specific field for summary
description: This is a sample server for a pet store.

View File

@@ -0,0 +1,8 @@
swagger: 2.0.0
info:
title: OpenAPI 2.0 License with only url present
version: 1.0.0
description: This is a sample server for a pet store.
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html

View File

@@ -0,0 +1,8 @@
openapi: 3.0.0
info:
title: OpenAPI 3.0 License with only url present
version: 1.0.0
description: This is a sample server for a pet store.
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html

View File

@@ -0,0 +1,9 @@
openapi: 3.1.0
info:
title: OpenAPI 3.1 License with only identifier present
version: 1.0.0
description: This is a sample server for a pet store.
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
identifier: Apache-2.0 # mutually exclusive of url; separately, for json_schema, consider const, prefix, array items can be of a different type (current assumption is all array items are the same)

View File

@@ -0,0 +1,9 @@
openapi: 3.1.0
info:
title: OpenAPI 3.1 License with only identifier present
version: 1.0.0
description: This is a sample server for a pet store.
license:
name: Apache 2.0
# url: https://www.apache.org/licenses/LICENSE-2.0.html
identifier: Apache-2.0 # mutually exclusive of url; separately, for json_schema, consider const, prefix, array items can be of a different type (current assumption is all array items are the same)

View File

@@ -0,0 +1,9 @@
openapi: 3.1.0
info:
title: OpenAPI 3.1 License with only url present
version: 1.0.0
description: This is a sample server for a pet store.
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
# identifier: Apache-2.0 # mutually exclusive of url; separately, for json_schema, consider const, prefix, array items can be of a different type (current assumption is all array items are the same)

View File

@@ -0,0 +1,24 @@
openapi: 3.0.0
info:
title: Webhooks does not exist in OpenAPI 3.0 and should not render
version: 1.0.0
summary: a new 3.1.x specific field for summary
description: This is a sample server for a pet store.
termsOfService: https://example.com/terms/
webhooks:
newPet:
post:
summary: summary for newPet--post
requestBody:
description: Information about a new pet in the system
content:
application/json:
schema:
$ref: "#/components/schemas/foo"
responses:
"200":
description: Return a 200 status to indicate that the data was received successfully
components:
schemas:
foo:
type: string

View File

@@ -0,0 +1,50 @@
openapi: 3.1.0
info:
title: OpenAPI 3.1 Webhooks
version: 1.0.0
summary: a new 3.1.x specific field for summary
description: This is a sample server for a pet store.
termsOfService: https://example.com/terms/
license:
name: Apache 2.0
identifier: Apache-2.0
webhooks:
newPet:
post:
summary: summary for newPet--post
requestBody:
description: Information about a new pet in the system
content:
application/json:
schema:
$ref: "#/components/schemas/foo"
responses:
"200":
description: Return a 200 status to indicate that the data was received successfully
put:
summary: summary for newPet--put
requestBody:
description: Information about a new pet in the system
content:
application/json:
schema:
$ref: "#/components/schemas/foo"
responses:
"200":
description: Return a 200 status to indicate that the data was received successfully
oldPet:
post:
summary: summary for oldPet--post
requestBody:
description: Information about a new pet in the system
content:
application/json:
schema:
$ref: "#/components/schemas/foo"
responses:
"200":
description: Return a 200 status to indicate that the data was received successfully
components:
schemas:
foo:
type: string