forked from loafle/openapi-generator-original
added yml2swagger
This commit is contained in:
parent
773fb89acb
commit
569f77b512
56
bin/yml2swagger.js
Normal file
56
bin/yml2swagger.js
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
fs = require('fs')
|
||||||
|
yaml = require('js-yaml')
|
||||||
|
|
||||||
|
var args = process.argv.splice(2);
|
||||||
|
|
||||||
|
if(args.length == 0) {
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
var arg0 = args[0];
|
||||||
|
var outputdir = ".";
|
||||||
|
|
||||||
|
if(args.length > 1) {
|
||||||
|
outputdir = args[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
var file = fs.lstatSync(arg0);
|
||||||
|
|
||||||
|
if(file.isFile()) {
|
||||||
|
convert(arg0, outputdir);
|
||||||
|
}
|
||||||
|
else if (file.isDirectory()) {
|
||||||
|
var files = fs.readdirSync(arg0);
|
||||||
|
files.map(function(item) {
|
||||||
|
var filename = arg0 + "/" + item;
|
||||||
|
var file = fs.lstatSync(filename);
|
||||||
|
if(file.isFile()) {
|
||||||
|
convert(filename, outputdir);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function convert(filename, outputdir) {
|
||||||
|
console.log("converting " + filename);
|
||||||
|
fs.readFile(filename, "utf8", function (err, data) {
|
||||||
|
if(err) {
|
||||||
|
console.log(err);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
try {
|
||||||
|
var js = yaml.load(data);
|
||||||
|
var prettyJs = JSON.stringify(js, undefined, 2);
|
||||||
|
var outputFilename = outputdir + "/" + filename.split("/").pop() + ".json";
|
||||||
|
console.log("writing to " + outputFilename);
|
||||||
|
fs.writeFile(outputFilename, prettyJs, function(err) {
|
||||||
|
if(err) {
|
||||||
|
console.log(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
console.log(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
16
package.json
Normal file
16
package.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"name": "swagger-yaml",
|
||||||
|
"version": "2.0.1",
|
||||||
|
"description": "Converts yaml to swagger json",
|
||||||
|
"author": {
|
||||||
|
"name": "Tony Tam",
|
||||||
|
"email": "fehguy@gmail.com",
|
||||||
|
"url": "http://developer.wordnik.com"
|
||||||
|
},
|
||||||
|
"license": "Apache",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
|
"dependencies": {
|
||||||
|
"json2yaml": "~1.0",
|
||||||
|
"js-yaml": "~3.0"
|
||||||
|
}
|
||||||
|
}
|
37
samples/yaml/api-docs.yml
Normal file
37
samples/yaml/api-docs.yml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
apiVersion: 1.0.0
|
||||||
|
swaggerVersion: "1.2"
|
||||||
|
apis:
|
||||||
|
- path: /pet
|
||||||
|
description: Operations about pets
|
||||||
|
- path: /store
|
||||||
|
description: Operations about store
|
||||||
|
- path: /user
|
||||||
|
description: Operations about user
|
||||||
|
authorizations:
|
||||||
|
oauth2:
|
||||||
|
type: oauth2
|
||||||
|
scopes:
|
||||||
|
- PUBLIC
|
||||||
|
grantTypes:
|
||||||
|
implicit:
|
||||||
|
loginEndpoint:
|
||||||
|
url: "http://localhost:8002/oauth/dialog"
|
||||||
|
tokenName: access_code
|
||||||
|
authorization_code:
|
||||||
|
tokenRequestEndpoint:
|
||||||
|
url: "http://localhost:8002/oauth/requestToken"
|
||||||
|
clientIdName: client_id
|
||||||
|
clientSecretName: client_secret
|
||||||
|
tokenEndpoint:
|
||||||
|
url: "http://localhost:8002/oauth/token"
|
||||||
|
tokenName: access_code
|
||||||
|
apiKey:
|
||||||
|
type: apiKey
|
||||||
|
passAs: header
|
||||||
|
info:
|
||||||
|
title: Swagger Sample App
|
||||||
|
description: "This is a sample server Petstore server. You can find out more about Swagger \n at <a href=\"http://swagger.wordnik.com\">http://swagger.wordnik.com</a> or on irc.freenode.net, #swagger."
|
||||||
|
termsOfServiceUrl: "http://helloreverb.com/terms/"
|
||||||
|
contact: "apiteam@wordnik.com"
|
||||||
|
license: Apache 2.0
|
||||||
|
licenseUrl: "http://www.apache.org/licenses/LICENSE-2.0.html"
|
181
samples/yaml/pet.yml
Normal file
181
samples/yaml/pet.yml
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
apiVersion: 1.0.0
|
||||||
|
swaggerVersion: "1.2"
|
||||||
|
basePath: "http://localhost:8002/api"
|
||||||
|
resourcePath: /pet
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
- application/xml
|
||||||
|
- text/plain
|
||||||
|
- text/html
|
||||||
|
apis:
|
||||||
|
- path: "/pet/{petId}"
|
||||||
|
operations:
|
||||||
|
- method: GET
|
||||||
|
summary: Find pet by ID
|
||||||
|
notes: Returns a pet based on ID
|
||||||
|
type: Pet
|
||||||
|
nickname: getPetById
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
- application/xml
|
||||||
|
authorizations:
|
||||||
|
- oauth2
|
||||||
|
parameters:
|
||||||
|
- name: petId
|
||||||
|
description: ID of pet that needs to be fetched
|
||||||
|
required: true
|
||||||
|
allowMultiple: false
|
||||||
|
type: string
|
||||||
|
paramType: path
|
||||||
|
responseMessages:
|
||||||
|
- code: 400
|
||||||
|
message: Invalid ID supplied
|
||||||
|
- code: 404
|
||||||
|
message: Pet not found
|
||||||
|
- method: DELETE
|
||||||
|
summary: Deletes a pet
|
||||||
|
notes: ""
|
||||||
|
type: void
|
||||||
|
nickname: deletePet
|
||||||
|
parameters:
|
||||||
|
- name: petId
|
||||||
|
description: Pet id to delete
|
||||||
|
required: true
|
||||||
|
allowMultiple: false
|
||||||
|
type: string
|
||||||
|
paramType: path
|
||||||
|
responseMessages:
|
||||||
|
- code: 400
|
||||||
|
message: Invalid pet value
|
||||||
|
- path: /pet
|
||||||
|
operations:
|
||||||
|
- method: POST
|
||||||
|
summary: Add a new pet to the store
|
||||||
|
notes: ""
|
||||||
|
type: void
|
||||||
|
nickname: addPet
|
||||||
|
parameters:
|
||||||
|
- name: body
|
||||||
|
description: Pet object that needs to be added to the store
|
||||||
|
required: true
|
||||||
|
allowMultiple: false
|
||||||
|
type: Pet
|
||||||
|
paramType: body
|
||||||
|
responseMessages:
|
||||||
|
- code: 405
|
||||||
|
message: Invalid input
|
||||||
|
- method: PUT
|
||||||
|
summary: Update an existing pet
|
||||||
|
notes: ""
|
||||||
|
type: void
|
||||||
|
nickname: updatePet
|
||||||
|
parameters:
|
||||||
|
- name: body
|
||||||
|
description: Pet object that needs to be updated in the store
|
||||||
|
required: true
|
||||||
|
allowMultiple: false
|
||||||
|
type: Pet
|
||||||
|
paramType: body
|
||||||
|
responseMessages:
|
||||||
|
- code: 400
|
||||||
|
message: Invalid ID supplied
|
||||||
|
- code: 404
|
||||||
|
message: Pet not found
|
||||||
|
- code: 405
|
||||||
|
message: Validation exception
|
||||||
|
- path: /pet/findByStatus
|
||||||
|
operations:
|
||||||
|
- method: GET
|
||||||
|
summary: Finds Pets by status
|
||||||
|
notes: Multiple status values can be provided with comma seperated strings
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: Pet
|
||||||
|
nickname: findPetsByStatus
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
- application/xml
|
||||||
|
parameters:
|
||||||
|
- name: status
|
||||||
|
description: Status values that need to be considered for filter
|
||||||
|
defaultValue: available
|
||||||
|
required: true
|
||||||
|
allowMultiple: true
|
||||||
|
type: string
|
||||||
|
paramType: query
|
||||||
|
enum:
|
||||||
|
- available
|
||||||
|
- pending
|
||||||
|
- sold
|
||||||
|
responseMessages:
|
||||||
|
- code: 400
|
||||||
|
message: Invalid status value
|
||||||
|
- path: /pet/findByTags
|
||||||
|
operations:
|
||||||
|
- method: GET
|
||||||
|
summary: Finds Pets by tags
|
||||||
|
notes: "Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing."
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: Pet
|
||||||
|
nickname: findPetsByTags
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
- application/xml
|
||||||
|
parameters:
|
||||||
|
- name: tags
|
||||||
|
description: Tags to filter by
|
||||||
|
required: true
|
||||||
|
allowMultiple: true
|
||||||
|
type: string
|
||||||
|
paramType: query
|
||||||
|
responseMessages:
|
||||||
|
- code: 400
|
||||||
|
message: Invalid tag value
|
||||||
|
deprecated: "true"
|
||||||
|
models:
|
||||||
|
Tag:
|
||||||
|
id: Tag
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
Pet:
|
||||||
|
id: Pet
|
||||||
|
description: "A pet is a person's best friend"
|
||||||
|
required:
|
||||||
|
- id
|
||||||
|
- name
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
tags:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: Tag
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
description: pet status in the store
|
||||||
|
enum:
|
||||||
|
- available
|
||||||
|
- pending
|
||||||
|
- sold
|
||||||
|
category:
|
||||||
|
$ref: Category
|
||||||
|
photoUrls:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
Category:
|
||||||
|
id: Category
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
87
samples/yaml/store.yml
Normal file
87
samples/yaml/store.yml
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
apiVersion: 1.0.0
|
||||||
|
swaggerVersion: "1.2"
|
||||||
|
basePath: "http://localhost:8002/api"
|
||||||
|
resourcePath: /store
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
- application/xml
|
||||||
|
apis:
|
||||||
|
- path: "/store/order/{orderId}"
|
||||||
|
operations:
|
||||||
|
- method: GET
|
||||||
|
summary: Find purchase order by ID
|
||||||
|
notes: For valid response try integer IDs with value <= 5. Anything above 5 or nonintegers will generate API errors
|
||||||
|
type: Order
|
||||||
|
nickname: getOrderById
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
- application/xml
|
||||||
|
parameters:
|
||||||
|
- name: orderId
|
||||||
|
description: ID of pet that needs to be fetched
|
||||||
|
required: true
|
||||||
|
allowMultiple: false
|
||||||
|
type: string
|
||||||
|
paramType: path
|
||||||
|
responseMessages:
|
||||||
|
- code: 400
|
||||||
|
message: Invalid ID supplied
|
||||||
|
- code: 404
|
||||||
|
message: Order not found
|
||||||
|
- method: DELETE
|
||||||
|
summary: Delete purchase order by ID
|
||||||
|
notes: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
|
||||||
|
type: void
|
||||||
|
nickname: deleteOrder
|
||||||
|
parameters:
|
||||||
|
- name: orderId
|
||||||
|
description: ID of the order that needs to be deleted
|
||||||
|
required: true
|
||||||
|
allowMultiple: false
|
||||||
|
type: string
|
||||||
|
paramType: path
|
||||||
|
responseMessages:
|
||||||
|
- code: 400
|
||||||
|
message: Invalid ID supplied
|
||||||
|
- code: 404
|
||||||
|
message: Order not found
|
||||||
|
- path: /store/order
|
||||||
|
operations:
|
||||||
|
- method: POST
|
||||||
|
summary: Place an order for a pet
|
||||||
|
notes: ""
|
||||||
|
type: void
|
||||||
|
nickname: placeOrder
|
||||||
|
parameters:
|
||||||
|
- name: body
|
||||||
|
description: order placed for purchasing the pet
|
||||||
|
required: true
|
||||||
|
allowMultiple: false
|
||||||
|
type: Order
|
||||||
|
paramType: body
|
||||||
|
responseMessages:
|
||||||
|
- code: 400
|
||||||
|
message: Invalid order
|
||||||
|
models:
|
||||||
|
Order:
|
||||||
|
id: Order
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
description: Order Status
|
||||||
|
enum:
|
||||||
|
- placed
|
||||||
|
- approved
|
||||||
|
- delivered
|
||||||
|
petId:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
quantity:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
shipDate:
|
||||||
|
type: string
|
||||||
|
format: date-time
|
178
samples/yaml/user.yml
Normal file
178
samples/yaml/user.yml
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
apiVersion: 1.0.0
|
||||||
|
swaggerVersion: "1.2"
|
||||||
|
basePath: "http://localhost:8002/api"
|
||||||
|
resourcePath: /user
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
- application/xml
|
||||||
|
apis:
|
||||||
|
- path: /user
|
||||||
|
operations:
|
||||||
|
- method: POST
|
||||||
|
summary: Create user
|
||||||
|
notes: This can only be done by the logged in user.
|
||||||
|
type: void
|
||||||
|
nickname: createUser
|
||||||
|
parameters:
|
||||||
|
- name: body
|
||||||
|
description: Created user object
|
||||||
|
required: true
|
||||||
|
allowMultiple: false
|
||||||
|
type: User
|
||||||
|
paramType: body
|
||||||
|
- path: /user/createWithArray
|
||||||
|
operations:
|
||||||
|
- method: POST
|
||||||
|
summary: Creates list of users with given input array
|
||||||
|
notes: ""
|
||||||
|
type: void
|
||||||
|
nickname: createUsersWithArrayInput
|
||||||
|
parameters:
|
||||||
|
- name: body
|
||||||
|
description: List of user object
|
||||||
|
required: true
|
||||||
|
allowMultiple: false
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: User
|
||||||
|
paramType: body
|
||||||
|
- path: /user/createWithList
|
||||||
|
operations:
|
||||||
|
- method: POST
|
||||||
|
summary: Creates list of users with given list input
|
||||||
|
notes: ""
|
||||||
|
type: void
|
||||||
|
nickname: createUsersWithListInput
|
||||||
|
parameters:
|
||||||
|
- name: body
|
||||||
|
description: List of user object
|
||||||
|
required: true
|
||||||
|
allowMultiple: false
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: User
|
||||||
|
paramType: body
|
||||||
|
- path: "/user/{username}"
|
||||||
|
operations:
|
||||||
|
- method: PUT
|
||||||
|
summary: Updated user
|
||||||
|
notes: This can only be done by the logged in user.
|
||||||
|
type: void
|
||||||
|
nickname: updateUser
|
||||||
|
parameters:
|
||||||
|
- name: username
|
||||||
|
description: name that need to be deleted
|
||||||
|
required: true
|
||||||
|
allowMultiple: false
|
||||||
|
type: string
|
||||||
|
paramType: path
|
||||||
|
- name: body
|
||||||
|
description: Updated user object
|
||||||
|
required: true
|
||||||
|
allowMultiple: false
|
||||||
|
type: User
|
||||||
|
paramType: body
|
||||||
|
responseMessages:
|
||||||
|
- code: 400
|
||||||
|
message: Invalid username supplied
|
||||||
|
- code: 404
|
||||||
|
message: User not found
|
||||||
|
- method: DELETE
|
||||||
|
summary: Delete user
|
||||||
|
notes: This can only be done by the logged in user.
|
||||||
|
type: void
|
||||||
|
nickname: deleteUser
|
||||||
|
parameters:
|
||||||
|
- name: username
|
||||||
|
description: The name that needs to be deleted
|
||||||
|
required: true
|
||||||
|
allowMultiple: false
|
||||||
|
type: string
|
||||||
|
paramType: path
|
||||||
|
responseMessages:
|
||||||
|
- code: 400
|
||||||
|
message: Invalid username supplied
|
||||||
|
- code: 404
|
||||||
|
message: User not found
|
||||||
|
- method: GET
|
||||||
|
summary: Get user by user name
|
||||||
|
notes: ""
|
||||||
|
type: User
|
||||||
|
nickname: getUserByName
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
- application/xml
|
||||||
|
parameters:
|
||||||
|
- name: username
|
||||||
|
description: The name that needs to be fetched. Use user1 for testing.
|
||||||
|
required: true
|
||||||
|
allowMultiple: false
|
||||||
|
type: string
|
||||||
|
paramType: path
|
||||||
|
responseMessages:
|
||||||
|
- code: 400
|
||||||
|
message: Invalid username supplied
|
||||||
|
- code: 404
|
||||||
|
message: User not found
|
||||||
|
- path: /user/login
|
||||||
|
operations:
|
||||||
|
- method: GET
|
||||||
|
summary: Logs user into the system
|
||||||
|
notes: ""
|
||||||
|
type: string
|
||||||
|
nickname: loginUser
|
||||||
|
produces:
|
||||||
|
- text/plain
|
||||||
|
parameters:
|
||||||
|
- name: username
|
||||||
|
description: The user name for login
|
||||||
|
required: true
|
||||||
|
allowMultiple: false
|
||||||
|
type: string
|
||||||
|
paramType: query
|
||||||
|
- name: password
|
||||||
|
description: The password for login in clear text
|
||||||
|
required: true
|
||||||
|
allowMultiple: false
|
||||||
|
type: string
|
||||||
|
paramType: query
|
||||||
|
responseMessages:
|
||||||
|
- code: 400
|
||||||
|
message: Invalid username and password combination
|
||||||
|
- path: /user/logout
|
||||||
|
operations:
|
||||||
|
- method: GET
|
||||||
|
summary: Logs out current logged in user session
|
||||||
|
notes: ""
|
||||||
|
type: void
|
||||||
|
nickname: logoutUser
|
||||||
|
produces:
|
||||||
|
- text/plain
|
||||||
|
parameters: []
|
||||||
|
models:
|
||||||
|
User:
|
||||||
|
id: User
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
username:
|
||||||
|
type: string
|
||||||
|
password:
|
||||||
|
type: string
|
||||||
|
email:
|
||||||
|
type: string
|
||||||
|
firstName:
|
||||||
|
type: string
|
||||||
|
lastName:
|
||||||
|
type: string
|
||||||
|
phone:
|
||||||
|
type: string
|
||||||
|
userStatus:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
description: User Status
|
||||||
|
enum:
|
||||||
|
- 1-registered
|
||||||
|
- 2-active
|
||||||
|
- 3-closed
|
Loading…
x
Reference in New Issue
Block a user