Skip to content

Commit

Permalink
Add Openapi 3.1.0 support
Browse files Browse the repository at this point in the history
  • Loading branch information
Damien Guérin committed Sep 6, 2022
1 parent 28b0f5a commit b0a3aa6
Show file tree
Hide file tree
Showing 8 changed files with 5,760 additions and 4,646 deletions.
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,14 @@ From `openapi-dev-tool` command-line interface, you can:

![presentation](doc-assets/pres.gif)

## Standard support

OpenAPI Dev Tool supports this following standards version:

- [Swagger 2.0](https://swagger.io/specification/v2/)
- [Openapi 3.0.x](https://swagger.io/specification/)
- [Openapi 3.1.0](https://spec.openapis.org/oas/v3.1.0)

## Installation

1. Install `Node.JS` (https://nodejs.org/)
Expand Down
20 changes: 20 additions & 0 deletions examples/config.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,26 @@
{
"specs": [
{
"file": "./examples/specs/petstore/openapi3.1.0/specs.yaml",
"enabled": true,
"vFolders": [
"test"
],
"context": {
"public": false,
"version": "1.0.0"
}
},{
"file": "./examples/specs/petstore/swagger2/specs.yaml",
"enabled": true,
"vFolders": [
"test"
],
"context": {
"public": false,
"version": "1.0.0"
}
},{
"file": "./examples/specs/petstore/petstore-one-file/petstore-one-file.yaml",
"enabled": true,
"vFolders": [
Expand Down
40 changes: 40 additions & 0 deletions examples/specs/petstore/openapi3.1.0/specs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
openapi: '3.1.0'
info:
version: <%= version %>
title: petstore Openapi 3.1.0

description: |
To manage the following resource:
- Pet
x-logo:
url: 'data:image/png;base64, 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'
webhooks:
# Each webhook needs a name
newPet:
# This is a Path Item Object, the only difference is that the request is initiated by the API provider
post:
requestBody:
description: Information about a new pet in the system
content:
application/json:
schema:
$ref: '#/components/schemas/Pet'
responses:
'200':
description: Return a 200 status to indicate that the data was received successfully

components:
schemas:
Pet:
required:
- id
- name
properties:
id:
type: integer
format: int64
name:
type: string
tag:
type: string
142 changes: 142 additions & 0 deletions examples/specs/petstore/swagger2/specs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
swagger: "2.0"
info:
version: 1.0.0
title: petstore Swagger 2
description: A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification
termsOfService: http://swagger.io/terms/
contact:
name: Swagger API Team
email: [email protected]
url: http://swagger.io
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
host: petstore.swagger.io
basePath: /api
schemes:
- http
consumes:
- application/json
produces:
- application/json
paths:
/pets:
get:
description: |
Returns all pets from the system that the user has access to
operationId: findPets
parameters:
- name: tags
in: query
description: tags to filter by
required: false
type: array
collectionFormat: csv
items:
type: string
- name: limit
in: query
description: maximum number of results to return
required: false
type: integer
format: int32
responses:
"200":
description: pet response
schema:
type: array
items:
$ref: '#/definitions/Pet'
default:
description: unexpected error
schema:
$ref: '#/definitions/Error'
post:
description: Creates a new pet in the store. Duplicates are allowed
operationId: addPet
parameters:
- name: pet
in: body
description: Pet to add to the store
required: true
schema:
$ref: '#/definitions/NewPet'
responses:
"200":
description: pet response
schema:
$ref: '#/definitions/Pet'
default:
description: unexpected error
schema:
$ref: '#/definitions/Error'
/pets/{id}:
get:
description: Returns a user based on a single ID, if the user does not have access to the pet
operationId: find pet by id
parameters:
- name: id
in: path
description: ID of pet to fetch
required: true
type: integer
format: int64
responses:
"200":
description: pet response
schema:
$ref: '#/definitions/Pet'
default:
description: unexpected error
schema:
$ref: '#/definitions/Error'
delete:
description: deletes a single pet based on the ID supplied
operationId: deletePet
parameters:
- name: id
in: path
description: ID of pet to delete
required: true
type: integer
format: int64
responses:
"204":
description: pet deleted
default:
description: unexpected error
schema:
$ref: '#/definitions/Error'
definitions:
Pet:
allOf:
- $ref: '#/definitions/NewPet'
- required:
- id
type: "object"
properties:
id:
type: integer
format: int64

NewPet:
type: "object"
required:
- name
properties:
name:
type: string
tag:
type: string

Error:
type: "object"
required:
- code
- message
properties:
code:
type: integer
format: int32
message:
type: string
Loading

0 comments on commit b0a3aa6

Please sign in to comment.