draig-car
Version:
Database REST API interactive generator CLI and REPL OpenAPI3 based JS generator with interactive ORM/ODM REPL
823 lines (822 loc) • 22.4 kB
YAML
openapi: 3.0.1
info:
description: >-
This is a sample server Petstore server. For this sample, you can use the
api key `special-key` to test the authorization filters.
license:
name: Apache-2.0
url: 'https://www.apache.org/licenses/LICENSE-2.0.html'
title: OpenAPI Petstore
version: 1.0.0
servers:
- url: 'http://localhost:3002'
tags:
- description: Everything about your Pets
name: pet
- description: Access to Petstore orders
name: store
- description: Operations about user
name: user
paths:
/pet:
post:
operationId: addPet
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Pet'
application/xml:
schema:
$ref: '#/components/schemas/Pet'
description: Pet object that needs to be added to the store
required: true
responses:
'405':
content: {}
description: Invalid input
security:
- petstore_auth:
- 'write:pets'
- 'read:pets'
summary: Add a new pet to the store
tags:
- pet
x-codegen-request-body-name: body
x-eov-operation-handler: controllers/PetController
put:
operationId: updatePet
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Pet'
application/xml:
schema:
$ref: '#/components/schemas/Pet'
description: Pet object that needs to be added to the store
required: true
responses:
'400':
content: {}
description: Invalid ID supplied
'404':
content: {}
description: Pet not found
'405':
content: {}
description: Validation exception
security:
- petstore_auth:
- 'write:pets'
- 'read:pets'
summary: Update an existing pet
tags:
- pet
x-codegen-request-body-name: body
x-eov-operation-handler: controllers/PetController
/pet/findByStatus:
get:
description: Multiple status values can be provided with comma separated strings
operationId: findPetsByStatus
parameters:
- description: Status values that need to be considered for filter
explode: false
in: query
name: status
required: true
schema:
items:
default: available
enum:
- available
- pending
- sold
type: string
type: array
style: form
responses:
'200':
content:
application/xml:
schema:
items:
$ref: '#/components/schemas/Pet'
type: array
application/json:
schema:
items:
$ref: '#/components/schemas/Pet'
type: array
description: successful operation
'400':
content: {}
description: Invalid status value
security:
- petstore_auth:
- 'read:pets'
summary: Finds Pets by status
tags:
- pet
x-eov-operation-handler: controllers/PetController
/pet/findByTags:
get:
deprecated: true
description: >-
Multiple tags can be provided with comma separated strings. Use tag1,
tag2, tag3 for testing.
operationId: findPetsByTags
parameters:
- description: Tags to filter by
explode: false
in: query
name: tags
required: true
schema:
items:
type: string
type: array
style: form
responses:
'200':
content:
application/xml:
schema:
items:
$ref: '#/components/schemas/Pet'
type: array
application/json:
schema:
items:
$ref: '#/components/schemas/Pet'
type: array
description: successful operation
'400':
content: {}
description: Invalid tag value
security:
- petstore_auth:
- 'write:pets'
- 'read:pets'
summary: Finds Pets by tags
tags:
- pet
x-eov-operation-handler: controllers/PetController
x-draig-query: 'Pet.query().withGraphJoined(''tags'').whereIn(''tags.name'', tags)'
'/pet/{petId}':
delete:
operationId: deletePet
parameters:
- in: header
name: api_key
schema:
type: string
- description: Pet id to delete
in: path
name: petId
required: true
schema:
format: int64
type: integer
responses:
'400':
content: {}
description: Invalid pet value
security:
- petstore_auth:
- 'write:pets'
- 'read:pets'
summary: Deletes a pet
tags:
- pet
x-eov-operation-handler: controllers/PetController
get:
description: Returns a single pet
operationId: getPetById
parameters:
- description: ID of pet to return
in: path
name: petId
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/xml:
schema:
$ref: '#/components/schemas/Pet'
application/json:
schema:
$ref: '#/components/schemas/Pet'
description: successful operation
'400':
content: {}
description: Invalid ID supplied
'404':
content: {}
description: Pet not found
security:
- api_key: []
summary: Find pet by ID
tags:
- pet
x-eov-operation-handler: controllers/PetController
post:
operationId: updatePetWithForm
parameters:
- description: ID of pet that needs to be updated
in: path
name: petId
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/x-www-form-urlencoded:
schema:
properties:
name:
description: Updated name of the pet
type: string
status:
description: Updated status of the pet
type: string
responses:
'405':
content: {}
description: Invalid input
security:
- petstore_auth:
- 'write:pets'
- 'read:pets'
summary: Updates a pet in the store with form data
tags:
- pet
x-eov-operation-handler: controllers/PetController
x-draig-put: true
'/pet/{petId}/uploadImage':
post:
operationId: uploadFile
parameters:
- description: ID of pet to update
in: path
name: petId
required: true
schema:
format: int64
type: integer
requestBody:
content:
multipart/form-data:
schema:
properties:
additionalMetadata:
description: Additional data to pass to server
type: string
file:
description: file to upload
format: binary
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponse'
description: successful operation
security:
- petstore_auth:
- 'write:pets'
- 'read:pets'
summary: uploads an image
tags:
- pet
x-eov-operation-handler: controllers/PetController
x-draig-di-service: upload.image
/store/inventory:
get:
description: Returns a map of status codes to quantities
operationId: getInventory
responses:
'200':
content:
application/json:
schema:
additionalProperties:
format: int32
type: integer
type: object
application/xml:
schema:
additionalProperties:
format: int32
type: integer
type: object
description: successful operation
security:
- api_key: []
summary: Returns pet inventories by status
tags:
- store
x-eov-operation-handler: controllers/StoreController
x-draig-query: |
Order.query().select('status').count().groupBy('status')
x-draig-transform: |
rows.reduce((i, e) => ({ ...i, [e.status]: Number(e.count) }), {})
/store/order:
post:
operationId: placeOrder
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
description: order placed for purchasing the pet
required: true
responses:
'200':
content:
application/xml:
schema:
$ref: '#/components/schemas/Order'
application/json:
schema:
$ref: '#/components/schemas/Order'
description: successful operation
'400':
content: {}
description: Invalid Order
summary: Place an order for a pet
tags:
- store
x-codegen-request-body-name: body
x-eov-operation-handler: controllers/StoreController
'/store/order/{orderId}':
delete:
description: >-
For valid response try integer IDs with value < 1000. Anything above
1000 or nonintegers will generate API errors
operationId: deleteOrder
parameters:
- description: ID of the order that needs to be deleted
in: path
name: orderId
required: true
schema:
type: string
responses:
'400':
content: {}
description: Invalid ID supplied
'404':
content: {}
description: Order not found
summary: Delete purchase order by ID
tags:
- store
x-eov-operation-handler: controllers/StoreController
x-draig-model: Order
get:
description: >-
For valid response try integer IDs with value <= 5 or > 10. Other values
will generated exceptions
operationId: getOrderById
parameters:
- description: ID of pet that needs to be fetched
in: path
name: orderId
required: true
schema:
format: int64
maximum: 5
minimum: 1
type: integer
responses:
'200':
content:
application/xml:
schema:
$ref: '#/components/schemas/Order'
application/json:
schema:
$ref: '#/components/schemas/Order'
description: successful operation
'400':
content: {}
description: Invalid ID supplied
'404':
content: {}
description: Order not found
summary: Find purchase order by ID
tags:
- store
x-eov-operation-handler: controllers/StoreController
/user:
post:
description: This can only be done by the logged in user.
operationId: createUser
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/User'
description: Created user object
required: true
responses:
default:
content: {}
description: successful operation
summary: Create user
tags:
- user
x-codegen-request-body-name: body
x-eov-operation-handler: controllers/UserController
/user/createWithArray:
post:
operationId: createUsersWithArrayInput
requestBody:
content:
application/json:
schema:
items:
$ref: '#/components/schemas/User'
type: array
description: List of user object
required: true
responses:
default:
content: {}
description: successful operation
summary: Creates list of users with given input array
tags:
- user
x-codegen-request-body-name: body
x-eov-operation-handler: controllers/UserController
/user/createWithList:
post:
operationId: createUsersWithListInput
requestBody:
content:
application/json:
schema:
items:
$ref: '#/components/schemas/User'
type: array
description: List of user object
required: true
responses:
default:
content: {}
description: successful operation
summary: Creates list of users with given input array
tags:
- user
x-codegen-request-body-name: body
x-eov-operation-handler: controllers/UserController
/user/login:
get:
operationId: loginUser
parameters:
- description: The user name for login
in: query
name: username
required: true
schema:
type: string
- description: The password for login in clear text
in: query
name: password
required: true
schema:
type: string
responses:
'200':
content:
application/xml:
schema:
type: string
application/json:
schema:
type: string
description: successful operation
headers:
X-Rate-Limit:
description: calls per hour allowed by the user
schema:
format: int32
type: integer
X-Expires-After:
description: date in UTC when toekn expires
schema:
format: date-time
type: string
'400':
content: {}
description: Invalid username/password supplied
summary: Logs user into the system
tags:
- user
x-eov-operation-handler: controllers/UserController
x-draig-model: User
/user/logout:
get:
operationId: logoutUser
responses:
default:
content: {}
description: successful operation
summary: Logs out current logged in user session
tags:
- user
x-eov-operation-handler: controllers/UserController
x-draig-di-service: logout
'/user/{username}':
delete:
description: This can only be done by the logged in user.
operationId: deleteUser
parameters:
- description: The name that needs to be deleted
in: path
name: username
required: true
schema:
type: string
responses:
'400':
content: {}
description: Invalid username supplied
'404':
content: {}
description: User not found
summary: Delete user
tags:
- user
x-eov-operation-handler: controllers/UserController
get:
operationId: getUserByName
parameters:
- description: The name that needs to be fetched. Use user1 for testing.
in: path
name: username
required: true
schema:
type: string
responses:
'200':
content:
application/xml:
schema:
$ref: '#/components/schemas/User'
application/json:
schema:
$ref: '#/components/schemas/User'
description: successful operation
'400':
content: {}
description: Invalid username supplied
'404':
content: {}
description: User not found
summary: Get user by user name
tags:
- user
x-eov-operation-handler: controllers/UserController
put:
description: This can only be done by the logged in user.
operationId: updateUser
parameters:
- description: username of the to be updated
in: path
name: username
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/User'
description: Updated user object
required: true
responses:
'400':
content: {}
description: Invalid user supplied
'404':
content: {}
description: User not found
summary: Updated user
tags:
- user
x-codegen-request-body-name: body
x-eov-operation-handler: controllers/UserController
components:
schemas:
Order:
x-draig-tableName: orders
description: An order for a pets from the pet store
example:
pet_id: 6
quantity: 1
id: 0
shipDate: 2000-01-23T04:56:07.000Z
complete: false
status: placed
properties:
id:
format: int64
type: integer
pet:
$ref: '#/components/schemas/Pet'
quantity:
format: int32
type: integer
shipDate:
format: date-time
type: string
status:
description: Order Status
enum:
- placed
- approved
- delivered
type: string
complete:
default: false
type: boolean
title: Pet Order
type: object
xml:
name: Order
Category:
x-draig-tableName: categories
description: A category for a pet
example:
name: name
id: 6
properties:
id:
format: int64
type: integer
name:
type: string
title: Pet category
type: object
xml:
name: Category
User:
x-draig-tableName: users
description: A User who is purchasing from the pet store
example:
firstName: firstName
lastName: lastName
password: password
userStatus: 6
phone: phone
id: 0
email: email
username: username
properties:
id:
format: int64
type: integer
username:
type: string
x-draig-sch-unique: true
firstName:
type: string
lastName:
type: string
email:
type: string
password:
type: string
phone:
type: string
userStatus:
description: User Status
format: int32
type: integer
title: a User
type: object
xml:
name: User
Tag:
x-draig-tableName: tags
description: A tag for a pet
example:
name: name
id: 1
properties:
id:
format: int64
type: integer
name:
type: string
title: Pet Tag
type: object
xml:
name: Tag
Pet:
x-draig-tableName: pets
description: A pet for sale in the pet store
example:
photoUrls:
- photoUrls
- photoUrls
name: doggie
id: 0
category:
name: name
id: 6
tags:
- name: name
id: 1
- name: name
id: 1
status: available
properties:
id:
format: int64
type: integer
category:
$ref: '#/components/schemas/Category'
name:
example: doggie
type: string
photoUrls:
items:
type: string
type: array
xml:
name: photoUrl
wrapped: true
tags:
items:
$ref: '#/components/schemas/Tag'
type: array
xml:
name: tag
wrapped: true
status:
description: pet status in the store
enum:
- available
- pending
- sold
type: string
required:
- name
- photoUrls
title: a Pet
type: object
xml:
name: Pet
ApiResponse:
description: Describes the result of uploading an image resource
example:
code: 0
type: type
message: message
properties:
code:
format: int32
type: integer
type:
type: string
message:
type: string
title: An uploaded response
type: object
securitySchemes:
petstore_auth:
type: oauth2
x-draig-auth-usermodel: User
flows:
authorizationCode:
#NodeJS Oauth server
#authorizationUrl: 'http://localhost:3000/oauth/authenticate'
#tokenUrl: 'http://localhost:3000/oauth/access_token'
#SpringBoot Oauth server: supports implicit flow
#authorizationUrl: 'http://localhost:8080/api/oauth/dialog'
#Own oauth server: supports only authorization code grant
authorizationUrl: '/oauth/authorize'
tokenUrl: '/oauth/token'
#TBD
#oauth2orize: supports authorization code grant adding cors module
#authorizationUrl: 'http://localhost:3000/dialog/authorize'
#tokenUrl: 'http://localhost:3000/oauth/token'
#Oauth-example: support authorization code grant
#authorizationUrl: 'http://localhost:3030/oauth'
#tokenUrl: 'http://localhost:3030/oauth/token'
scopes:
'write:pets': modify pets in your account
'read:pets': read your pets
api_key:
in: header
name: api_key
type: apiKey
x-draig-auth-handler: AuthHandler