Add OpenAPI 2.0 compatibility mode

This commit is contained in:
Roman Hotsiy 2017-11-14 23:40:38 +02:00
parent 71395868ef
commit 8e6b9e8380
No known key found for this signature in database
GPG Key ID: 5CB7B3ACABA57CB0
9 changed files with 1549 additions and 560 deletions

948
demo/openapi.yaml Normal file
View File

@ -0,0 +1,948 @@
openapi: 3.0.0
servers:
- url: //petstore.swagger.io/v2
description: Default server
- url: //petstore.swagger.io/sandbox
description: Sandbox server
info:
description: >
This is a sample server Petstore server.
You can find out more about Swagger at
[http://swagger.io](http://swagger.io) or on [irc.freenode.net,
#swagger](http://swagger.io/irc/).
For this sample, you can use the api key `special-key` to test the
authorization filters.
# Introduction
This API is documented in **OpenAPI format** and is based on
[Petstore sample](http://petstore.swagger.io/) provided by
[swagger.io](http://swagger.io) team.
It was **extended** to illustrate features of
[generator-openapi-repo](https://github.com/Rebilly/generator-openapi-repo)
tool and [ReDoc](https://github.com/Rebilly/ReDoc) documentation. In
addition to standard
OpenAPI syntax we use a few [vendor
extensions](https://github.com/Rebilly/ReDoc/blob/master/docs/redoc-vendor-extensions.md).
# OpenAPI Specification
This API is documented in **OpenAPI format** and is based on
[Petstore sample](http://petstore.swagger.io/) provided by
[swagger.io](http://swagger.io) team.
It was **extended** to illustrate features of
[generator-openapi-repo](https://github.com/Rebilly/generator-openapi-repo)
tool and [ReDoc](https://github.com/Rebilly/ReDoc) documentation. In
addition to standard
OpenAPI syntax we use a few [vendor
extensions](https://github.com/Rebilly/ReDoc/blob/master/docs/redoc-vendor-extensions.md).
# Cross-Origin Resource Sharing
This API features Cross-Origin Resource Sharing (CORS) implemented in
compliance with [W3C spec](https://www.w3.org/TR/cors/).
And that allows cross-domain communication from the browser.
All responses have a wildcard same-origin which makes them completely public
and accessible to everyone, including any code on any site.
# Authentication
Petstore offers two forms of authentication:
- API Key
- OAuth2
OAuth2 - an open protocol to allow secure authorization in a simple
and standard method from web, mobile and desktop applications.
<!-- ReDoc-Inject: <security-definitions> -->
version: 1.0.0
title: Swagger Petstore
termsOfService: 'http://swagger.io/terms/'
contact:
name: API Support
email: apiteam@swagger.io
url: https://github.com/Rebilly/ReDoc
x-logo:
url: 'https://rebilly.github.io/ReDoc/petstore-logo.png'
license:
name: Apache 2.0
url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
externalDocs:
description: Find out how to create Github repo for your OpenAPI spec.
url: 'https://github.com/Rebilly/generator-openapi-repo'
tags:
- name: pet
description: Everything about your Pets
- name: store
description: Access to Petstore orders
- name: user
description: Operations about user
x-tagGroups:
- name: General
tags:
- pet
- store
- name: User Management
tags:
- user
paths:
/pet:
parameters:
- name: pathParam
in: cookie
description: Some cookie
required: true
schema:
type: integer
format: int64
post:
tags:
- pet
summary: Add a new pet to the store
description: Add new pet to the store inventory.
operationId: addPet
responses:
'405':
description: Invalid input
security:
- petstore_auth:
- 'write:pets'
- 'read:pets'
x-code-samples:
- lang: 'C#'
source: |
PetStore.v1.Pet pet = new PetStore.v1.Pet();
pet.setApiKey("your api key");
pet.petType = PetStore.v1.Pet.TYPE_DOG;
pet.name = "Rex";
// set other fields
PetStoreResponse response = pet.create();
if (response.statusCode == HttpStatusCode.Created)
{
// Successfully created
}
else
{
// Something wrong -- check response for errors
Console.WriteLine(response.getRawResponse());
}
- lang: PHP
source: |
$form = new \PetStore\Entities\Pet();
$form->setPetType("Dog");
$form->setName("Rex");
// set other fields
try {
$pet = $client->pets()->create($form);
} catch (UnprocessableEntityException $e) {
var_dump($e->getErrors());
}
requestBody:
$ref: '#/components/requestBodies/Pet'
put:
tags:
- pet
summary: Update an existing pet
description: ''
operationId: updatePet
responses:
'400':
description: Invalid ID supplied
'404':
description: Pet not found
'405':
description: Validation exception
security:
- petstore_auth:
- 'write:pets'
- 'read:pets'
x-code-samples:
- lang: PHP
source: |
$form = new \PetStore\Entities\Pet();
$form->setPetId(1);
$form->setPetType("Dog");
$form->setName("Rex");
// set other fields
try {
$pet = $client->pets()->update($form);
} catch (UnprocessableEntityException $e) {
var_dump($e->getErrors());
}
requestBody:
$ref: '#/components/requestBodies/Pet'
'/pet/{petId}':
get:
tags:
- pet
summary: Find pet by ID
description: Returns a single pet
operationId: getPetById
parameters:
- name: petId
in: path
description: ID of pet to return
required: true
deprecated: true
schema:
type: integer
format: int64
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Pet'
application/xml:
schema:
$ref: '#/components/schemas/Pet'
'400':
description: Invalid ID supplied
'404':
description: Pet not found
security:
- api_key: []
post:
tags:
- pet
summary: Updates a pet in the store with form data
description: ''
operationId: updatePetWithForm
parameters:
- name: petId
in: path
description: ID of pet that needs to be updated
required: true
schema:
type: integer
format: int64
responses:
'405':
description: Invalid input
security:
- petstore_auth:
- 'write:pets'
- 'read:pets'
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
name:
description: Updated name of the pet
type: string
status:
description: Updated status of the pet
type: string
delete:
tags:
- pet
summary: Deletes a pet
description: ''
operationId: deletePet
parameters:
- name: api_key
in: header
required: false
schema:
type: string
example: "Bearer <TOKEN>"
- name: petId
in: path
description: Pet id to delete
required: true
schema:
type: integer
format: int64
responses:
'400':
description: Invalid pet value
security:
- petstore_auth:
- 'write:pets'
- 'read:pets'
'/pet/{petId}/uploadImage':
post:
tags:
- pet
summary: uploads an image
description: ''
operationId: uploadFile
parameters:
- name: petId
in: path
description: ID of pet to update
required: true
schema:
type: integer
format: int64
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponse'
security:
- petstore_auth:
- 'write:pets'
- 'read:pets'
requestBody:
content:
application/octet-stream:
schema:
type: string
format: binary
/pet/findByStatus:
get:
tags:
- pet
summary: Finds Pets by status
description: Multiple status values can be provided with comma seperated strings
operationId: findPetsByStatus
parameters:
- name: status
in: query
description: Status values that need to be considered for filter
required: true
style: form
schema:
type: array
items:
type: string
enum:
- available
- pending
- sold
default: available
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Pet'
application/xml:
schema:
type: array
items:
$ref: '#/components/schemas/Pet'
'400':
description: Invalid status value
security:
- petstore_auth:
- 'write:pets'
- 'read:pets'
/pet/findByTags:
get:
tags:
- pet
summary: Finds Pets by tags
description: >-
Muliple tags can be provided with comma seperated strings. Use tag1,
tag2, tag3 for testing.
operationId: findPetsByTags
deprecated: true
parameters:
- name: tags
in: query
description: Tags to filter by
required: true
style: form
schema:
type: array
items:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Pet'
application/xml:
schema:
type: array
items:
$ref: '#/components/schemas/Pet'
'400':
description: Invalid tag value
security:
- petstore_auth:
- 'write:pets'
- 'read:pets'
/store/inventory:
get:
tags:
- store
summary: Returns pet inventories by status
description: Returns a map of status codes to quantities
operationId: getInventory
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: object
additionalProperties:
type: integer
format: int32
security:
- api_key: []
/store/order:
post:
tags:
- store
summary: Place an order for a pet
description: ''
operationId: placeOrder
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
application/xml:
schema:
$ref: '#/components/schemas/Order'
'400':
description: Invalid Order
content:
application/json:
example:
status: 400
message: "Invalid Order"
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
description: order placed for purchasing the pet
required: true
'/store/order/{orderId}':
get:
tags:
- store
summary: Find purchase order by ID
description: >-
For valid response try integer IDs with value <= 5 or > 10. Other values
will generated exceptions
operationId: getOrderById
parameters:
- name: orderId
in: path
description: ID of pet that needs to be fetched
required: true
schema:
type: integer
format: int64
minimum: 1
maximum: 5
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
application/xml:
schema:
$ref: '#/components/schemas/Order'
'400':
description: Invalid ID supplied
'404':
description: Order not found
delete:
tags:
- store
summary: Delete purchase order by ID
description: >-
For valid response try integer IDs with value < 1000. Anything above
1000 or nonintegers will generate API errors
operationId: deleteOrder
parameters:
- name: orderId
in: path
description: ID of the order that needs to be deleted
required: true
schema:
type: string
minimum: 1
responses:
'400':
description: Invalid ID supplied
'404':
description: Order not found
/user:
post:
tags:
- user
summary: Create user
description: This can only be done by the logged in user.
operationId: createUser
responses:
default:
description: successful operation
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/User'
description: Created user object
required: true
'/user/{username}':
get:
tags:
- user
summary: Get user by user name
description: ''
operationId: getUserByName
parameters:
- name: username
in: path
description: 'The name that needs to be fetched. Use user1 for testing. '
required: true
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/User'
application/xml:
schema:
$ref: '#/components/schemas/User'
'400':
description: Invalid username supplied
'404':
description: User not found
put:
tags:
- user
summary: Updated user
description: This can only be done by the logged in user.
operationId: updateUser
parameters:
- name: username
in: path
description: name that need to be deleted
required: true
schema:
type: string
responses:
'400':
description: Invalid user supplied
'404':
description: User not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/User'
description: Updated user object
required: true
delete:
tags:
- user
summary: Delete user
description: This can only be done by the logged in user.
operationId: deleteUser
parameters:
- name: username
in: path
description: The name that needs to be deleted
required: true
schema:
type: string
responses:
'400':
description: Invalid username supplied
'404':
description: User not found
/user/createWithArray:
post:
tags:
- user
summary: Creates list of users with given input array
description: ''
operationId: createUsersWithArrayInput
responses:
default:
description: successful operation
requestBody:
$ref: '#/components/requestBodies/UserArray'
/user/createWithList:
post:
tags:
- user
summary: Creates list of users with given input array
description: ''
operationId: createUsersWithListInput
responses:
default:
description: successful operation
requestBody:
$ref: '#/components/requestBodies/UserArray'
/user/login:
get:
tags:
- user
summary: Logs user into the system
description: ''
operationId: loginUser
parameters:
- name: username
in: query
description: The user name for login
required: true
schema:
type: string
- name: password
in: query
description: The password for login in clear text
required: true
schema:
type: string
responses:
'200':
description: successful operation
headers:
X-Rate-Limit:
description: calls per hour allowed by the user
schema:
type: integer
format: int32
X-Expires-After:
description: date in UTC when toekn expires
schema:
type: string
format: date-time
content:
application/json:
schema:
type: string
examples:
response:
value: OK
application/xml:
schema:
type: string
examples:
response:
value: <Message> OK </Message>
text/plain:
examples:
response:
value: OK
'400':
description: Invalid username/password supplied
/user/logout:
get:
tags:
- user
summary: Logs out current logged in user session
description: ''
operationId: logoutUser
responses:
default:
description: successful operation
components:
schemas:
ApiResponse:
type: object
properties:
code:
type: integer
format: int32
type:
type: string
message:
type: string
Cat:
description: A representation of a cat
allOf:
- $ref: '#/components/schemas/Pet'
- type: object
properties:
huntingSkill:
type: string
description: The measured skill for hunting
default: lazy
enum:
- clueless
- lazy
- adventurous
- aggressive
required:
- huntingSkill
Category:
type: object
properties:
id:
description: Category ID
allOf:
- $ref: '#/components/schemas/Id'
name:
description: Category name
type: string
minLength: 1
sub:
description: Test Sub Category
type: object
properties:
prop1:
type: string
description: Dumb Property
xml:
name: Category
Dog:
description: A representation of a dog
allOf:
- $ref: '#/components/schemas/Pet'
- type: object
properties:
packSize:
type: integer
format: int32
description: The size of the pack the dog is from
default: 1
minimum: 1
required:
- packSize
HoneyBee:
description: A representation of a honey bee
allOf:
- $ref: '#/components/schemas/Pet'
- type: object
properties:
honeyPerDay:
type: number
description: Average amount of honey produced per day in ounces
example: 3.14
required:
- honeyPerDay
Id:
type: integer
format: int64
Order:
type: object
properties:
id:
description: Order ID
allOf:
- $ref: '#/components/schemas/Id'
petId:
description: Pet ID
allOf:
- $ref: '#/components/schemas/Id'
quantity:
type: integer
format: int32
minimum: 1
default: 1
shipDate:
description: Estimated ship date
type: string
format: date-time
status:
type: string
description: Order Status
enum:
- placed
- approved
- delivered
complete:
description: Indicates whenever order was completed or not
type: boolean
default: false
xml:
name: Order
Pet:
type: object
required:
- name
- photoUrls
discriminator:
propertyName: petType
mapping:
cat: '#/components/schemas/Cat'
dog: '#/components/schemas/Dog'
bee: '#/components/schemas/HoneyBee'
properties:
id:
description: Pet ID
allOf:
- $ref: '#/components/schemas/Id'
category:
description: Categories this pet belongs to
allOf:
- $ref: '#/components/schemas/Category'
name:
description: The name given to a pet
type: string
example: Guru
photoUrls:
description: The list of URL to a cute photos featuring pet
type: array
xml:
name: photoUrl
wrapped: true
items:
type: string
format: url
friend:
allOf:
- $ref: '#/components/schemas/Pet'
tags:
description: Tags attached to the pet
type: array
xml:
name: tag
wrapped: true
items:
$ref: '#/components/schemas/Tag'
status:
type: string
description: Pet status in the store
enum:
- available
- pending
- sold
petType:
description: Type of a pet
type: string
xml:
name: Pet
Tag:
type: object
properties:
id:
description: Tag ID
allOf:
- $ref: '#/components/schemas/Id'
name:
description: Tag name
type: string
minLength: 1
xml:
name: Tag
User:
type: object
properties:
id:
$ref: '#/components/schemas/Id'
pet:
oneOf:
- $ref: '#/components/schemas/Pet'
- $ref: '#/components/schemas/Tag'
username:
description: User supplied username
type: string
minLength: 4
example: John78
firstName:
description: User first name
type: string
minLength: 1
example: John
lastName:
description: User last name
type: string
minLength: 1
example: Smith
email:
description: User email address
type: string
format: email
example: john.smith@example.com
password:
type: string
description: >-
User password, MUST contain a mix of upper and lower case letters,
as well as digits
format: password
minLength: 8
pattern: '(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])'
example: drowssaP123
phone:
description: User phone number in international format
type: string
pattern: '^\+(?:[0-9]-?){6,14}[0-9]$'
example: +1-202-555-0192
nullable: true
userStatus:
description: User status
type: integer
format: int32
xml:
name: User
requestBodies:
Pet:
content:
application/json:
schema:
allOf:
- description: My Pet
title: Pettie
- $ref: '#/components/schemas/Pet'
application/xml:
schema:
type: 'object'
properties:
name:
type: string
description: hooray
description: Pet object that needs to be added to the store
required: true
UserArray:
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
description: List of user object
required: true
securitySchemes:
petstore_auth:
description: |
Get access to data while protecting your account credentials.
OAuth2 is also a safer and more secure way to give you access.
type: oauth2
flows:
implicit:
authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog'
scopes:
'write:pets': modify pets in your account
'read:pets': read your pets
api_key:
description: >
For this sample, you can use the api key `special-key` to test the
authorization filters.
type: apiKey
name: api_key
in: header

View File

@ -1,79 +1,43 @@
openapi: 3.0.0 swagger: '2.0'
servers: schemes:
- url: //petstore.swagger.io/v2 - http
description: Default server - https
- url: //petstore.swagger.io/sandbox host: petstore.swagger.io
description: Sandbox server basePath: /v2
info: info:
description: > description: |
This is a sample server Petstore server. This is a sample server Petstore server.
You can find out more about Swagger at You can find out more about Swagger at
[http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/).
[http://swagger.io](http://swagger.io) or on [irc.freenode.net, For this sample, you can use the api key `special-key` to test the authorization filters.
#swagger](http://swagger.io/irc/).
For this sample, you can use the api key `special-key` to test the
authorization filters.
# Introduction # Introduction
This API is documented in **OpenAPI format** and is based on This API is documented in **OpenAPI format** and is based on
[Petstore sample](http://petstore.swagger.io/) provided by [swagger.io](http://swagger.io) team.
[Petstore sample](http://petstore.swagger.io/) provided by It was **extended** to illustrate features of [generator-openapi-repo](https://github.com/Rebilly/generator-openapi-repo)
[swagger.io](http://swagger.io) team. tool and [ReDoc](https://github.com/Rebilly/ReDoc) documentation. In addition to standard
OpenAPI syntax we use a few [vendor extensions](https://github.com/Rebilly/ReDoc/blob/master/docs/redoc-vendor-extensions.md).
It was **extended** to illustrate features of
[generator-openapi-repo](https://github.com/Rebilly/generator-openapi-repo)
tool and [ReDoc](https://github.com/Rebilly/ReDoc) documentation. In
addition to standard
OpenAPI syntax we use a few [vendor
extensions](https://github.com/Rebilly/ReDoc/blob/master/docs/redoc-vendor-extensions.md).
# OpenAPI Specification # OpenAPI Specification
This API is documented in **OpenAPI format** and is based on This API is documented in **OpenAPI format** and is based on
[Petstore sample](http://petstore.swagger.io/) provided by [swagger.io](http://swagger.io) team.
[Petstore sample](http://petstore.swagger.io/) provided by It was **extended** to illustrate features of [generator-openapi-repo](https://github.com/Rebilly/generator-openapi-repo)
[swagger.io](http://swagger.io) team. tool and [ReDoc](https://github.com/Rebilly/ReDoc) documentation. In addition to standard
OpenAPI syntax we use a few [vendor extensions](https://github.com/Rebilly/ReDoc/blob/master/docs/redoc-vendor-extensions.md).
It was **extended** to illustrate features of
[generator-openapi-repo](https://github.com/Rebilly/generator-openapi-repo)
tool and [ReDoc](https://github.com/Rebilly/ReDoc) documentation. In
addition to standard
OpenAPI syntax we use a few [vendor
extensions](https://github.com/Rebilly/ReDoc/blob/master/docs/redoc-vendor-extensions.md).
# Cross-Origin Resource Sharing # Cross-Origin Resource Sharing
This API features Cross-Origin Resource Sharing (CORS) implemented in compliance with [W3C spec](https://www.w3.org/TR/cors/).
This API features Cross-Origin Resource Sharing (CORS) implemented in
compliance with [W3C spec](https://www.w3.org/TR/cors/).
And that allows cross-domain communication from the browser. And that allows cross-domain communication from the browser.
All responses have a wildcard same-origin which makes them completely public and accessible to everyone, including any code on any site.
All responses have a wildcard same-origin which makes them completely public
and accessible to everyone, including any code on any site.
# Authentication # Authentication
Petstore offers two forms of authentication: Petstore offers two forms of authentication:
- API Key - API Key
- OAuth2 - OAuth2
OAuth2 - an open protocol to allow secure authorization in a simple OAuth2 - an open protocol to allow secure authorization in a simple
and standard method from web, mobile and desktop applications. and standard method from web, mobile and desktop applications.
<!-- ReDoc-Inject: <security-definitions> --> <!-- ReDoc-Inject: <security-definitions> -->
version: 1.0.0 version: 1.0.0
title: Swagger Petstore title: Swagger Petstore
termsOfService: 'http://swagger.io/terms/' termsOfService: 'http://swagger.io/terms/'
contact: contact:
name: API Support
email: apiteam@swagger.io email: apiteam@swagger.io
url: https://github.com/Rebilly/ReDoc url: https://github.com/Rebilly/ReDoc
x-logo: x-logo:
@ -99,22 +63,49 @@ x-tagGroups:
- name: User Management - name: User Management
tags: tags:
- user - user
securityDefinitions:
petstore_auth:
description: |
Get access to data while protecting your account credentials.
OAuth2 is also a safer and more secure way to give you access.
type: oauth2
authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog'
flow: implicit
scopes:
'write:pets': modify pets in your account
'read:pets': read your pets
api_key:
description: |
For this sample, you can use the api key `special-key` to test the authorization filters.
type: apiKey
name: api_key
in: header
x-servers:
- url: //petstore.swagger.io/v2
description: Default server
- url: //petstore.swagger.io/sandbox
description: Sandbox server
paths: paths:
/pet: /pet:
parameters:
- name: pathParam
in: cookie
description: Some cookie
required: true
schema:
type: integer
format: int64
post: post:
tags: tags:
- pet - pet
summary: Add a new pet to the store summary: Add a new pet to the store
description: Add new pet to the store inventory. description: Add new pet to the store inventory.
operationId: addPet operationId: addPet
consumes:
- application/json
- application/xml
produces:
- application/xml
- application/json
parameters:
- in: body
name: body
description: Pet object that needs to be added to the store
required: true
schema:
$ref: '#/definitions/Pet'
responses: responses:
'405': '405':
description: Invalid input description: Invalid input
@ -141,24 +132,26 @@ paths:
Console.WriteLine(response.getRawResponse()); Console.WriteLine(response.getRawResponse());
} }
- lang: PHP - lang: PHP
source: | source: "$form = new \\PetStore\\Entities\\Pet();\n$form->setPetType(\"Dog\");\n$form->setName(\"Rex\");\n// set other fields\ntry {\n $pet = $client->pets()->create($form);\n} catch (UnprocessableEntityException $e) {\n var_dump($e->getErrors());\n}\n"
$form = new \PetStore\Entities\Pet();
$form->setPetType("Dog");
$form->setName("Rex");
// set other fields
try {
$pet = $client->pets()->create($form);
} catch (UnprocessableEntityException $e) {
var_dump($e->getErrors());
}
requestBody:
$ref: '#/components/requestBodies/Pet'
put: put:
tags: tags:
- pet - pet
summary: Update an existing pet summary: Update an existing pet
description: '' description: ''
operationId: updatePet operationId: updatePet
consumes:
- application/json
- application/xml
produces:
- application/xml
- application/json
parameters:
- in: body
name: body
description: Pet object that needs to be added to the store
required: true
schema:
$ref: '#/definitions/Pet'
responses: responses:
'400': '400':
description: Invalid ID supplied description: Invalid ID supplied
@ -172,19 +165,7 @@ paths:
- 'read:pets' - 'read:pets'
x-code-samples: x-code-samples:
- lang: PHP - lang: PHP
source: | source: "$form = new \\PetStore\\Entities\\Pet();\n$form->setPetId(1);\n$form->setPetType(\"Dog\");\n$form->setName(\"Rex\");\n// set other fields\ntry {\n $pet = $client->pets()->update($form);\n} catch (UnprocessableEntityException $e) {\n var_dump($e->getErrors());\n}\n"
$form = new \PetStore\Entities\Pet();
$form->setPetId(1);
$form->setPetType("Dog");
$form->setName("Rex");
// set other fields
try {
$pet = $client->pets()->update($form);
} catch (UnprocessableEntityException $e) {
var_dump($e->getErrors());
}
requestBody:
$ref: '#/components/requestBodies/Pet'
'/pet/{petId}': '/pet/{petId}':
get: get:
tags: tags:
@ -192,25 +173,21 @@ paths:
summary: Find pet by ID summary: Find pet by ID
description: Returns a single pet description: Returns a single pet
operationId: getPetById operationId: getPetById
produces:
- application/xml
- application/json
parameters: parameters:
- name: petId - name: petId
in: path in: path
description: ID of pet to return description: ID of pet to return
required: true required: true
deprecated: true
schema:
type: integer type: integer
format: int64 format: int64
responses: responses:
'200': '200':
description: successful operation description: successful operation
content:
application/json:
schema: schema:
$ref: '#/components/schemas/Pet' $ref: '#/definitions/Pet'
application/xml:
schema:
$ref: '#/components/schemas/Pet'
'400': '400':
description: Invalid ID supplied description: Invalid ID supplied
'404': '404':
@ -223,14 +200,28 @@ paths:
summary: Updates a pet in the store with form data summary: Updates a pet in the store with form data
description: '' description: ''
operationId: updatePetWithForm operationId: updatePetWithForm
consumes:
- application/x-www-form-urlencoded
produces:
- application/xml
- application/json
parameters: parameters:
- name: petId - name: petId
in: path in: path
description: ID of pet that needs to be updated description: ID of pet that needs to be updated
required: true required: true
schema:
type: integer type: integer
format: int64 format: int64
- name: name
in: formData
description: Updated name of the pet
required: false
type: string
- name: status
in: formData
description: Updated status of the pet
required: false
type: string
responses: responses:
'405': '405':
description: Invalid input description: Invalid input
@ -238,36 +229,25 @@ paths:
- petstore_auth: - petstore_auth:
- 'write:pets' - 'write:pets'
- 'read:pets' - 'read:pets'
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
name:
description: Updated name of the pet
type: string
status:
description: Updated status of the pet
type: string
delete: delete:
tags: tags:
- pet - pet
summary: Deletes a pet summary: Deletes a pet
description: '' description: ''
operationId: deletePet operationId: deletePet
produces:
- application/xml
- application/json
parameters: parameters:
- name: api_key - name: api_key
in: header in: header
required: false required: false
schema:
type: string type: string
example: "Bearer <TOKEN>" x-example: Bearer <TOKEN>
- name: petId - name: petId
in: path in: path
description: Pet id to delete description: Pet id to delete
required: true required: true
schema:
type: integer type: integer
format: int64 format: int64
responses: responses:
@ -284,31 +264,36 @@ paths:
summary: uploads an image summary: uploads an image
description: '' description: ''
operationId: uploadFile operationId: uploadFile
consumes:
- multipart/form-data
produces:
- application/json
parameters: parameters:
- name: petId - name: petId
in: path in: path
description: ID of pet to update description: ID of pet to update
required: true required: true
schema:
type: integer type: integer
format: int64 format: int64
- name: additionalMetadata
in: formData
description: Additional data to pass to server
required: false
type: string
- name: file
in: formData
description: file to upload
required: false
type: file
responses: responses:
'200': '200':
description: successful operation description: successful operation
content:
application/json:
schema: schema:
$ref: '#/components/schemas/ApiResponse' $ref: '#/definitions/ApiResponse'
security: security:
- petstore_auth: - petstore_auth:
- 'write:pets' - 'write:pets'
- 'read:pets' - 'read:pets'
requestBody:
content:
application/octet-stream:
schema:
type: string
format: binary
/pet/findByStatus: /pet/findByStatus:
get: get:
tags: tags:
@ -316,13 +301,14 @@ paths:
summary: Finds Pets by status summary: Finds Pets by status
description: Multiple status values can be provided with comma seperated strings description: Multiple status values can be provided with comma seperated strings
operationId: findPetsByStatus operationId: findPetsByStatus
produces:
- application/xml
- application/json
parameters: parameters:
- name: status - name: status
in: query in: query
description: Status values that need to be considered for filter description: Status values that need to be considered for filter
required: true required: true
style: form
schema:
type: array type: array
items: items:
type: string type: string
@ -331,20 +317,14 @@ paths:
- pending - pending
- sold - sold
default: available default: available
collectionFormat: csv
responses: responses:
'200': '200':
description: successful operation description: successful operation
content:
application/json:
schema: schema:
type: array type: array
items: items:
$ref: '#/components/schemas/Pet' $ref: '#/definitions/Pet'
application/xml:
schema:
type: array
items:
$ref: '#/components/schemas/Pet'
'400': '400':
description: Invalid status value description: Invalid status value
security: security:
@ -356,35 +336,28 @@ paths:
tags: tags:
- pet - pet
summary: Finds Pets by tags summary: Finds Pets by tags
description: >- description: 'Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing.'
Muliple tags can be provided with comma seperated strings. Use tag1,
tag2, tag3 for testing.
operationId: findPetsByTags operationId: findPetsByTags
deprecated: true deprecated: true
produces:
- application/xml
- application/json
parameters: parameters:
- name: tags - name: tags
in: query in: query
description: Tags to filter by description: Tags to filter by
required: true required: true
style: form
schema:
type: array type: array
items: items:
type: string type: string
collectionFormat: csv
responses: responses:
'200': '200':
description: successful operation description: successful operation
content:
application/json:
schema: schema:
type: array type: array
items: items:
$ref: '#/components/schemas/Pet' $ref: '#/definitions/Pet'
application/xml:
schema:
type: array
items:
$ref: '#/components/schemas/Pet'
'400': '400':
description: Invalid tag value description: Invalid tag value
security: security:
@ -398,11 +371,12 @@ paths:
summary: Returns pet inventories by status summary: Returns pet inventories by status
description: Returns a map of status codes to quantities description: Returns a map of status codes to quantities
operationId: getInventory operationId: getInventory
produces:
- application/json
parameters: []
responses: responses:
'200': '200':
description: successful operation description: successful operation
content:
application/json:
schema: schema:
type: object type: object
additionalProperties: additionalProperties:
@ -417,59 +391,47 @@ paths:
summary: Place an order for a pet summary: Place an order for a pet
description: '' description: ''
operationId: placeOrder operationId: placeOrder
produces:
- application/xml
- application/json
parameters:
- in: body
name: body
description: order placed for purchasing the pet
required: true
schema:
$ref: '#/definitions/Order'
responses: responses:
'200': '200':
description: successful operation description: successful operation
content:
application/json:
schema: schema:
$ref: '#/components/schemas/Order' $ref: '#/definitions/Order'
application/xml:
schema:
$ref: '#/components/schemas/Order'
'400': '400':
description: Invalid Order description: Invalid Order
content:
application/json:
example:
status: 400
message: "Invalid Order"
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
description: order placed for purchasing the pet
required: true
'/store/order/{orderId}': '/store/order/{orderId}':
get: get:
tags: tags:
- store - store
summary: Find purchase order by ID summary: Find purchase order by ID
description: >- description: 'For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions'
For valid response try integer IDs with value <= 5 or > 10. Other values
will generated exceptions
operationId: getOrderById operationId: getOrderById
produces:
- application/xml
- application/json
parameters: parameters:
- name: orderId - name: orderId
in: path in: path
description: ID of pet that needs to be fetched description: ID of pet that needs to be fetched
required: true required: true
schema:
type: integer type: integer
format: int64
minimum: 1
maximum: 5 maximum: 5
minimum: 1
format: int64
responses: responses:
'200': '200':
description: successful operation description: successful operation
content:
application/json:
schema: schema:
$ref: '#/components/schemas/Order' $ref: '#/definitions/Order'
application/xml:
schema:
$ref: '#/components/schemas/Order'
'400': '400':
description: Invalid ID supplied description: Invalid ID supplied
'404': '404':
@ -478,16 +440,16 @@ paths:
tags: tags:
- store - store
summary: Delete purchase order by ID summary: Delete purchase order by ID
description: >- description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
For valid response try integer IDs with value < 1000. Anything above
1000 or nonintegers will generate API errors
operationId: deleteOrder operationId: deleteOrder
produces:
- application/xml
- application/json
parameters: parameters:
- name: orderId - name: orderId
in: path in: path
description: ID of the order that needs to be deleted description: ID of the order that needs to be deleted
required: true required: true
schema:
type: string type: string
minimum: 1 minimum: 1
responses: responses:
@ -502,16 +464,19 @@ paths:
summary: Create user summary: Create user
description: This can only be done by the logged in user. description: This can only be done by the logged in user.
operationId: createUser operationId: createUser
produces:
- application/xml
- application/json
parameters:
- in: body
name: body
description: Created user object
required: true
schema:
$ref: '#/definitions/User'
responses: responses:
default: default:
description: successful operation description: successful operation
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/User'
description: Created user object
required: true
'/user/{username}': '/user/{username}':
get: get:
tags: tags:
@ -519,23 +484,20 @@ paths:
summary: Get user by user name summary: Get user by user name
description: '' description: ''
operationId: getUserByName operationId: getUserByName
produces:
- application/xml
- application/json
parameters: parameters:
- name: username - name: username
in: path in: path
description: 'The name that needs to be fetched. Use user1 for testing. ' description: 'The name that needs to be fetched. Use user1 for testing. '
required: true required: true
schema:
type: string type: string
responses: responses:
'200': '200':
description: successful operation description: successful operation
content:
application/json:
schema: schema:
$ref: '#/components/schemas/User' $ref: '#/definitions/User'
application/xml:
schema:
$ref: '#/components/schemas/User'
'400': '400':
description: Invalid username supplied description: Invalid username supplied
'404': '404':
@ -546,37 +508,40 @@ paths:
summary: Updated user summary: Updated user
description: This can only be done by the logged in user. description: This can only be done by the logged in user.
operationId: updateUser operationId: updateUser
produces:
- application/xml
- application/json
parameters: parameters:
- name: username - name: username
in: path in: path
description: name that need to be deleted description: name that need to be deleted
required: true required: true
schema:
type: string type: string
- in: body
name: body
description: Updated user object
required: true
schema:
$ref: '#/definitions/User'
responses: responses:
'400': '400':
description: Invalid user supplied description: Invalid user supplied
'404': '404':
description: User not found description: User not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/User'
description: Updated user object
required: true
delete: delete:
tags: tags:
- user - user
summary: Delete user summary: Delete user
description: This can only be done by the logged in user. description: This can only be done by the logged in user.
operationId: deleteUser operationId: deleteUser
produces:
- application/xml
- application/json
parameters: parameters:
- name: username - name: username
in: path in: path
description: The name that needs to be deleted description: The name that needs to be deleted
required: true required: true
schema:
type: string type: string
responses: responses:
'400': '400':
@ -590,11 +555,21 @@ paths:
summary: Creates list of users with given input array summary: Creates list of users with given input array
description: '' description: ''
operationId: createUsersWithArrayInput operationId: createUsersWithArrayInput
produces:
- application/xml
- application/json
parameters:
- in: body
name: body
description: List of user object
required: true
schema:
type: array
items:
$ref: '#/definitions/User'
responses: responses:
default: default:
description: successful operation description: successful operation
requestBody:
$ref: '#/components/requestBodies/UserArray'
/user/createWithList: /user/createWithList:
post: post:
tags: tags:
@ -602,11 +577,21 @@ paths:
summary: Creates list of users with given input array summary: Creates list of users with given input array
description: '' description: ''
operationId: createUsersWithListInput operationId: createUsersWithListInput
produces:
- application/xml
- application/json
parameters:
- in: body
name: body
description: List of user object
required: true
schema:
type: array
items:
$ref: '#/definitions/User'
responses: responses:
default: default:
description: successful operation description: successful operation
requestBody:
$ref: '#/components/requestBodies/UserArray'
/user/login: /user/login:
get: get:
tags: tags:
@ -614,50 +599,38 @@ paths:
summary: Logs user into the system summary: Logs user into the system
description: '' description: ''
operationId: loginUser operationId: loginUser
produces:
- application/xml
- application/json
parameters: parameters:
- name: username - name: username
in: query in: query
description: The user name for login description: The user name for login
required: true required: true
schema:
type: string type: string
- name: password - name: password
in: query in: query
description: The password for login in clear text description: The password for login in clear text
required: true required: true
schema:
type: string type: string
responses: responses:
'200': '200':
description: successful operation description: successful operation
schema:
type: string
examples:
application/json: OK
application/xml: <message> OK </message>
text/plain: OK
headers: headers:
X-Rate-Limit: X-Rate-Limit:
description: calls per hour allowed by the user
schema:
type: integer type: integer
format: int32 format: int32
description: calls per hour allowed by the user
X-Expires-After: X-Expires-After:
description: date in UTC when toekn expires
schema:
type: string type: string
format: date-time format: date-time
content: description: date in UTC when toekn expires
application/json:
schema:
type: string
examples:
response:
value: OK
application/xml:
schema:
type: string
examples:
response:
value: <Message> OK </Message>
text/plain:
examples:
response:
value: OK
'400': '400':
description: Invalid username/password supplied description: Invalid username/password supplied
/user/logout: /user/logout:
@ -667,11 +640,14 @@ paths:
summary: Logs out current logged in user session summary: Logs out current logged in user session
description: '' description: ''
operationId: logoutUser operationId: logoutUser
produces:
- application/xml
- application/json
parameters: []
responses: responses:
default: default:
description: successful operation description: successful operation
components: definitions:
schemas:
ApiResponse: ApiResponse:
type: object type: object
properties: properties:
@ -685,7 +661,7 @@ components:
Cat: Cat:
description: A representation of a cat description: A representation of a cat
allOf: allOf:
- $ref: '#/components/schemas/Pet' - $ref: '#/definitions/Pet'
- type: object - type: object
properties: properties:
huntingSkill: huntingSkill:
@ -705,7 +681,7 @@ components:
id: id:
description: Category ID description: Category ID
allOf: allOf:
- $ref: '#/components/schemas/Id' - $ref: '#/definitions/Id'
name: name:
description: Category name description: Category name
type: string type: string
@ -722,7 +698,7 @@ components:
Dog: Dog:
description: A representation of a dog description: A representation of a dog
allOf: allOf:
- $ref: '#/components/schemas/Pet' - $ref: '#/definitions/Pet'
- type: object - type: object
properties: properties:
packSize: packSize:
@ -736,7 +712,7 @@ components:
HoneyBee: HoneyBee:
description: A representation of a honey bee description: A representation of a honey bee
allOf: allOf:
- $ref: '#/components/schemas/Pet' - $ref: '#/definitions/Pet'
- type: object - type: object
properties: properties:
honeyPerDay: honeyPerDay:
@ -754,11 +730,11 @@ components:
id: id:
description: Order ID description: Order ID
allOf: allOf:
- $ref: '#/components/schemas/Id' - $ref: '#/definitions/Id'
petId: petId:
description: Pet ID description: Pet ID
allOf: allOf:
- $ref: '#/components/schemas/Id' - $ref: '#/definitions/Id'
quantity: quantity:
type: integer type: integer
format: int32 format: int32
@ -786,21 +762,16 @@ components:
required: required:
- name - name
- photoUrls - photoUrls
discriminator: discriminator: petType
propertyName: petType
mapping:
cat: '#/components/schemas/Cat'
dog: '#/components/schemas/Dog'
bee: '#/components/schemas/HoneyBee'
properties: properties:
id: id:
description: Pet ID description: Pet ID
allOf: allOf:
- $ref: '#/components/schemas/Id' - $ref: '#/definitions/Id'
category: category:
description: Categories this pet belongs to description: Categories this pet belongs to
allOf: allOf:
- $ref: '#/components/schemas/Category' - $ref: '#/definitions/Category'
name: name:
description: The name given to a pet description: The name given to a pet
type: string type: string
@ -814,9 +785,6 @@ components:
items: items:
type: string type: string
format: url format: url
friend:
allOf:
- $ref: '#/components/schemas/Pet'
tags: tags:
description: Tags attached to the pet description: Tags attached to the pet
type: array type: array
@ -824,7 +792,7 @@ components:
name: tag name: tag
wrapped: true wrapped: true
items: items:
$ref: '#/components/schemas/Tag' $ref: '#/definitions/Tag'
status: status:
type: string type: string
description: Pet status in the store description: Pet status in the store
@ -843,7 +811,7 @@ components:
id: id:
description: Tag ID description: Tag ID
allOf: allOf:
- $ref: '#/components/schemas/Id' - $ref: '#/definitions/Id'
name: name:
description: Tag name description: Tag name
type: string type: string
@ -854,11 +822,8 @@ components:
type: object type: object
properties: properties:
id: id:
$ref: '#/components/schemas/Id' description: User ID
pet: $ref: '#/definitions/Id'
oneOf:
- $ref: '#/components/schemas/Pet'
- $ref: '#/components/schemas/Tag'
username: username:
description: User supplied username description: User supplied username
type: string type: string
@ -881,9 +846,7 @@ components:
example: john.smith@example.com example: john.smith@example.com
password: password:
type: string type: string
description: >- description: 'User password, MUST contain a mix of upper and lower case letters, as well as digits'
User password, MUST contain a mix of upper and lower case letters,
as well as digits
format: password format: password
minLength: 8 minLength: 8
pattern: '(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])' pattern: '(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])'
@ -891,58 +854,12 @@ components:
phone: phone:
description: User phone number in international format description: User phone number in international format
type: string type: string
pattern: '^\+(?:[0-9]-?){6,14}[0-9]$' pattern: "^\\+(?:[0-9]-?){6,14}[0-9]$"
example: +1-202-555-0192 example: +1-202-555-0192
nullable: true x-nullable: true
userStatus: userStatus:
description: User status description: User status
type: integer type: integer
format: int32 format: int32
xml: xml:
name: User name: User
requestBodies:
Pet:
content:
application/json:
schema:
allOf:
- description: My Pet
title: Pettie
- $ref: '#/components/schemas/Pet'
application/xml:
schema:
type: 'object'
properties:
name:
type: string
description: hooray
description: Pet object that needs to be added to the store
required: true
UserArray:
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
description: List of user object
required: true
securitySchemes:
petstore_auth:
description: |
Get access to data while protecting your account credentials.
OAuth2 is also a safer and more secure way to give you access.
type: oauth2
flows:
implicit:
authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog'
scopes:
'write:pets': modify pets in your account
'read:pets': read your pets
api_key:
description: >
For this sample, you can use the api key `special-key` to test the
authorization filters.
type: apiKey
name: api_key
in: header

View File

@ -80,7 +80,8 @@
"react-tabs": "^2.0.0", "react-tabs": "^2.0.0",
"remarkable": "^1.7.1", "remarkable": "^1.7.1",
"slugify": "^1.2.1", "slugify": "^1.2.1",
"styled-components": "^2.2.1" "styled-components": "^2.2.1",
"swagger2openapi": "^2.11.0"
}, },
"jest": { "jest": {
"mapCoverage": true, "mapCoverage": true,

View File

@ -18,8 +18,9 @@ const renderRoot = (Component: typeof Redoc, props: { store: AppStore }) =>
); );
const big = window.location.search.indexOf('big') > -1; const big = window.location.search.indexOf('big') > -1;
const swagger = window.location.search.indexOf('swagger') > -1; //compatibility mode ?
const specUrl = big ? 'big-swagger.json' : 'swagger.yaml'; const specUrl = swagger ? 'swagger.yaml' : big ? 'big-openapi.json' : 'swagger.yaml';
let store; let store;

31
src/utils/convertSpec.ts Normal file
View File

@ -0,0 +1,31 @@
import { convertObj } from 'swagger2openapi';
const swagger2OpenAPICommon = require('swagger2openapi/common');
import { OpenAPISpec } from '../types';
// temporarily monkey-patch sha256 from swagger2openapi package with simpler hash function
// to not include 300KB crypto module polyfill into bundle
// TODO: remove when https://github.com/Mermade/swagger2openapi/pull/37 is merged
swagger2OpenAPICommon.sha256 = function(s) {
let hash = 0;
let chr;
if (s.length === 0) return hash;
for (let i = 0; i < s.length; i++) {
chr = s.charCodeAt(i);
hash = (hash << 5) - hash + chr;
hash |= 0; // Convert to 32bit integer
}
return hash;
};
export function convertSwagger2OpenAPI(spec: any): Promise<OpenAPISpec> {
return new Promise<OpenAPISpec>((resolve, reject) =>
convertObj(spec, {}, (err, res) => {
// TODO: log any warnings
if (err) {
return reject(err);
}
resolve(res && (res.openapi as any));
}),
);
}

View File

@ -1,10 +1,17 @@
import { OpenAPISpec } from '../types';
import * as JsonSchemaRefParser from 'json-schema-ref-parser'; import * as JsonSchemaRefParser from 'json-schema-ref-parser';
import { convertSwagger2OpenAPI } from './convertSpec';
import { OpenAPISpec } from '../types';
export async function loadSpec(specUrlOrObject: object | string): Promise<OpenAPISpec> { export async function loadSpec(specUrlOrObject: object | string): Promise<OpenAPISpec> {
const _parser = new JsonSchemaRefParser(); const _parser = new JsonSchemaRefParser();
return await _parser.bundle(specUrlOrObject, { const spec = await _parser.bundle(specUrlOrObject, {
resolve: { http: { withCredentials: false } }, resolve: { http: { withCredentials: false } },
} as object); } as object);
if (spec.swagger !== undefined) {
return convertSwagger2OpenAPI(spec);
} else {
return spec;
}
} }

View File

@ -40,8 +40,14 @@ module.exports = env => {
}, },
}, },
node: {
fs: 'empty',
crypto: 'empty',
},
externals: { externals: {
esprima: 'esprima', esprima: 'esprima',
'node-fetch': 'fetch',
}, },
module: { module: {
@ -49,6 +55,18 @@ module.exports = env => {
{ {
test: /\.tsx?$/, test: /\.tsx?$/,
loaders: ['react-hot-loader/webpack', 'awesome-typescript-loader'], loaders: ['react-hot-loader/webpack', 'awesome-typescript-loader'],
exclude: ['node_modules'],
},
{
test: /node_modules\/(swagger2openapi|reftools)\/.*\.js$/,
use: {
loader: 'awesome-typescript-loader',
options: {
transpileOnly: true,
allowJs: true,
instance: 'ts2js-transpiler-only',
},
},
}, },
{ {
test: /\.css$/, test: /\.css$/,

View File

@ -186,7 +186,7 @@ ajv@^4.9.1:
co "^4.6.0" co "^4.6.0"
json-stable-stringify "^1.0.1" json-stable-stringify "^1.0.1"
ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5: ajv@^5.0.0, ajv@^5.0.1, ajv@^5.1.0, ajv@^5.1.5:
version "5.3.0" version "5.3.0"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda"
dependencies: dependencies:
@ -2051,6 +2051,10 @@ es6-map@^0.1.3:
es6-symbol "~3.1.1" es6-symbol "~3.1.1"
event-emitter "~0.3.5" event-emitter "~0.3.5"
es6-promise@^3.2.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613"
es6-promise@^4.0.3, es6-promise@^4.1.1: es6-promise@^4.0.3, es6-promise@^4.1.1:
version "4.1.1" version "4.1.1"
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a"
@ -3794,7 +3798,7 @@ js-tokens@^3.0.0, js-tokens@^3.0.2:
version "3.0.2" version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.1: js-yaml@^3.4.3, js-yaml@^3.6.1, js-yaml@^3.7.0, js-yaml@^3.9.1:
version "3.10.0" version "3.10.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
dependencies: dependencies:
@ -4406,7 +4410,7 @@ no-case@^2.2.0:
dependencies: dependencies:
lower-case "^1.1.1" lower-case "^1.1.1"
node-fetch@^1.0.1: node-fetch@^1.0.1, node-fetch@^1.6.3:
version "1.7.3" version "1.7.3"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
dependencies: dependencies:
@ -4474,6 +4478,12 @@ node-pre-gyp@^0.6.36:
tar "^2.2.1" tar "^2.2.1"
tar-pack "^3.4.0" tar-pack "^3.4.0"
node-readfiles@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/node-readfiles/-/node-readfiles-0.2.0.tgz#dbbd4af12134e2e635c245ef93ffcf6f60673a5d"
dependencies:
es6-promise "^3.2.1"
nomnom@~1.6.2: nomnom@~1.6.2:
version "1.6.2" version "1.6.2"
resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.6.2.tgz#84a66a260174408fc5b77a18f888eccc44fb6971" resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.6.2.tgz#84a66a260174408fc5b77a18f888eccc44fb6971"
@ -5966,6 +5976,10 @@ reduce-function-call@^1.0.1, reduce-function-call@^1.0.2:
dependencies: dependencies:
balanced-match "^0.4.2" balanced-match "^0.4.2"
reftools@0.0.18:
version "0.0.18"
resolved "https://registry.yarnpkg.com/reftools/-/reftools-0.0.18.tgz#2d6f6e05c5a020e516ffbc1243f6f97768305752"
regenerate@^1.2.1: regenerate@^1.2.1:
version "1.3.3" version "1.3.3"
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f"
@ -6389,6 +6403,44 @@ shellwords@^0.1.0:
version "0.1.1" version "0.1.1"
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
should-equal@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-2.0.0.tgz#6072cf83047360867e68e98b09d71143d04ee0c3"
dependencies:
should-type "^1.4.0"
should-format@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1"
dependencies:
should-type "^1.3.0"
should-type-adaptors "^1.0.1"
should-type-adaptors@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/should-type-adaptors/-/should-type-adaptors-1.0.1.tgz#efe5553cdf68cff66e5c5f51b712dc351c77beaa"
dependencies:
should-type "^1.3.0"
should-util "^1.0.0"
should-type@^1.3.0, should-type@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3"
should-util@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.0.tgz#c98cda374aa6b190df8ba87c9889c2b4db620063"
should@^13.0.1:
version "13.1.3"
resolved "https://registry.yarnpkg.com/should/-/should-13.1.3.tgz#a089bdf7979392a8272a712c8b63acbaafb7948f"
dependencies:
should-equal "^2.0.0"
should-format "^3.0.3"
should-type "^1.4.0"
should-type-adaptors "^1.0.1"
should-util "^1.0.0"
signal-exit@^3.0.0, signal-exit@^3.0.2: signal-exit@^3.0.0, signal-exit@^3.0.2:
version "3.0.2" version "3.0.2"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
@ -6822,6 +6874,20 @@ svgo@^0.7.0:
sax "~1.2.1" sax "~1.2.1"
whet.extend "~0.9.9" whet.extend "~0.9.9"
swagger2openapi@^2.11.0:
version "2.11.0"
resolved "https://registry.yarnpkg.com/swagger2openapi/-/swagger2openapi-2.11.0.tgz#97057df333ef14d172186fd082e8f27485a75bab"
dependencies:
ajv "^5.0.1"
call-me-maybe "^1.0.1"
co "^4.6.0"
js-yaml "^3.6.1"
node-fetch "^1.6.3"
node-readfiles "^0.2.0"
reftools "0.0.18"
should "^13.0.1"
yargs "^9.0.1"
symbol-tree@^3.2.1: symbol-tree@^3.2.1:
version "3.2.2" version "3.2.2"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
@ -7610,7 +7676,7 @@ yargs@^8.0.2:
y18n "^3.2.1" y18n "^3.2.1"
yargs-parser "^7.0.0" yargs-parser "^7.0.0"
yargs@^9.0.0: yargs@^9.0.0, yargs@^9.0.1:
version "9.0.1" version "9.0.1"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c"
dependencies: dependencies: