1483 lines
35 KiB
YAML

openapi: 3.0.0
info:
title: OpenAPI Petstore
description: 'This spec is mainly for testing Petstore server and contains fake
endpoints, models. Please do not use this for any other purpose. Special characters:
" \'
license:
name: Apache-2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
version: 1.0.0
externalDocs:
description: Find out more about Swagger
url: http://swagger.io
servers:
- url: http://petstore.swagger.io:80/v2
tags:
- name: pet
description: Everything about your Pets
- name: store
description: Access to Petstore orders
- name: user
description: Operations about user
paths:
/pet:
put:
tags:
- pet
summary: Update an existing pet
operationId: updatePet
requestBody:
$ref: '#/components/requestBodies/Pet'
responses:
400:
description: Invalid ID supplied
404:
description: Pet not found
405:
description: Validation exception
security:
- petstore_auth:
- write:pets
- read:pets
post:
tags:
- pet
summary: Add a new pet to the store
operationId: addPet
requestBody:
$ref: '#/components/requestBodies/Pet'
responses:
405:
description: Invalid input
security:
- petstore_auth:
- write:pets
- read:pets
/pet/findByStatus:
get:
tags:
- pet
summary: Finds Pets by status
description: Multiple status values can be provided with comma separated strings
operationId: findPetsByStatus
parameters:
- name: status
in: query
description: Status values that need to be considered for filter
required: true
style: form
explode: false
schema:
type: array
items:
type: string
enum:
- available
- pending
- sold
default: available
responses:
200:
description: successful operation
content:
application/xml:
schema:
type: array
items:
$ref: '#/components/schemas/Pet'
application/json:
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: Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
operationId: findPetsByTags
parameters:
- name: tags
in: query
description: Tags to filter by
required: true
style: form
explode: false
schema:
type: array
items:
type: string
responses:
200:
description: successful operation
content:
application/xml:
schema:
type: array
items:
$ref: '#/components/schemas/Pet'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Pet'
400:
description: Invalid tag value
deprecated: true
security:
- petstore_auth:
- write:pets
- read:pets
/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
style: simple
explode: false
schema:
type: integer
format: int64
responses:
200:
description: successful operation
content:
application/xml:
schema:
$ref: '#/components/schemas/Pet'
application/json:
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
operationId: updatePetWithForm
parameters:
- name: petId
in: path
description: ID of pet that needs to be updated
required: true
style: simple
explode: false
schema:
type: integer
format: int64
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/body'
responses:
405:
description: Invalid input
security:
- petstore_auth:
- write:pets
- read:pets
delete:
tags:
- pet
summary: Deletes a pet
operationId: deletePet
parameters:
- name: api_key
in: header
required: false
style: simple
explode: false
schema:
type: string
- name: petId
in: path
description: Pet id to delete
required: true
style: simple
explode: false
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
operationId: uploadFile
parameters:
- name: petId
in: path
description: ID of pet to update
required: true
style: simple
explode: false
schema:
type: integer
format: int64
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/body_1'
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponse'
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
operationId: placeOrder
requestBody:
description: order placed for purchasing the pet
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
required: true
responses:
200:
description: successful operation
content:
application/xml:
schema:
$ref: '#/components/schemas/Order'
application/json:
schema:
$ref: '#/components/schemas/Order'
400:
description: Invalid Order
/store/order/{order_id}:
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: order_id
in: path
description: ID of pet that needs to be fetched
required: true
style: simple
explode: false
schema:
maximum: 5
minimum: 1
type: integer
format: int64
responses:
200:
description: successful operation
content:
application/xml:
schema:
$ref: '#/components/schemas/Order'
application/json:
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: order_id
in: path
description: ID of the order that needs to be deleted
required: true
style: simple
explode: false
schema:
type: string
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
requestBody:
description: Created user object
content:
application/json:
schema:
$ref: '#/components/schemas/User'
required: true
responses:
default:
description: successful operation
/user/createWithArray:
post:
tags:
- user
summary: Creates list of users with given input array
operationId: createUsersWithArrayInput
requestBody:
$ref: '#/components/requestBodies/UserArray'
responses:
default:
description: successful operation
/user/createWithList:
post:
tags:
- user
summary: Creates list of users with given input array
operationId: createUsersWithListInput
requestBody:
$ref: '#/components/requestBodies/UserArray'
responses:
default:
description: successful operation
/user/login:
get:
tags:
- user
summary: Logs user into the system
operationId: loginUser
parameters:
- name: username
in: query
description: The user name for login
required: true
style: form
explode: true
schema:
type: string
- name: password
in: query
description: The password for login in clear text
required: true
style: form
explode: true
schema:
type: string
responses:
200:
description: successful operation
headers:
X-Rate-Limit:
description: calls per hour allowed by the user
style: simple
explode: false
schema:
type: integer
format: int32
X-Expires-After:
description: date in UTC when toekn expires
style: simple
explode: false
schema:
type: string
format: date-time
content:
application/xml:
schema:
type: string
application/json:
schema:
type: string
400:
description: Invalid username/password supplied
/user/logout:
get:
tags:
- user
summary: Logs out current logged in user session
operationId: logoutUser
responses:
default:
description: successful operation
/user/{username}:
get:
tags:
- user
summary: Get user by user name
operationId: getUserByName
parameters:
- name: username
in: path
description: The name that needs to be fetched. Use user1 for testing.
required: true
style: simple
explode: false
schema:
type: string
responses:
200:
description: successful operation
content:
application/xml:
schema:
$ref: '#/components/schemas/User'
application/json:
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
style: simple
explode: false
schema:
type: string
requestBody:
description: Updated user object
content:
application/json:
schema:
$ref: '#/components/schemas/User'
required: true
responses:
400:
description: Invalid user supplied
404:
description: User not found
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
style: simple
explode: false
schema:
type: string
responses:
400:
description: Invalid username supplied
404:
description: User not found
/fake_classname_test:
patch:
tags:
- fake_classname_tags 123#$%^
summary: To test class name in snake case
description: To test class name in snake case
operationId: testClassname
requestBody:
$ref: '#/components/requestBodies/Client'
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Client'
security:
- api_key_query: []
/fake:
get:
tags:
- fake
summary: To test enum parameters
description: To test enum parameters
operationId: testEnumParameters
parameters:
- name: enum_header_string_array
in: header
description: Header parameter enum test (string array)
required: false
style: simple
explode: true
schema:
type: array
items:
type: string
enum:
- '>'
- $
default: $
- name: enum_header_string
in: header
description: Header parameter enum test (string)
required: false
style: simple
explode: false
schema:
type: string
enum:
- _abc
- -efg
- (xyz)
default: -efg
- name: enum_query_string_array
in: query
description: Query parameter enum test (string array)
required: false
style: form
explode: true
schema:
type: array
items:
type: string
enum:
- '>'
- $
default: $
- name: enum_query_string
in: query
description: Query parameter enum test (string)
required: false
style: form
explode: true
schema:
type: string
enum:
- _abc
- -efg
- (xyz)
default: -efg
- name: enum_query_integer
in: query
description: Query parameter enum test (double)
required: false
style: form
explode: true
schema:
type: integer
format: int32
enum:
- 1
- -2
- name: enum_query_double
in: query
description: Query parameter enum test (double)
required: false
style: form
explode: true
schema:
type: number
format: double
enum:
- 1.1
- -1.2
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/body_2'
responses:
400:
description: Invalid request
404:
description: Not found
post:
tags:
- fake
summary: |
Fake endpoint for testing various parameters
假端點
偽のエンドポイント
가짜 엔드 포인트
description: |
Fake endpoint for testing various parameters
假端點
偽のエンドポイント
가짜 엔드 포인트
operationId: testEndpointParameters
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/body_3'
responses:
400:
description: Invalid username supplied
404:
description: User not found
security:
- http_basic_test: []
patch:
tags:
- fake
summary: To test "client" model
description: To test "client" model
operationId: testClientModel
requestBody:
$ref: '#/components/requestBodies/Client'
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Client'
/fake/outer/number:
post:
tags:
- fake
description: Test serialization of outer number types
operationId: fakeOuterNumberSerialize
requestBody:
description: Input number as post body
content:
application/json:
schema:
$ref: '#/components/schemas/OuterNumber'
responses:
200:
description: Output number
content:
'*/*':
schema:
$ref: '#/components/schemas/OuterNumber'
/fake/outer/string:
post:
tags:
- fake
description: Test serialization of outer string types
operationId: fakeOuterStringSerialize
requestBody:
description: Input string as post body
content:
application/json:
schema:
$ref: '#/components/schemas/OuterString'
responses:
200:
description: Output string
content:
'*/*':
schema:
$ref: '#/components/schemas/OuterString'
/fake/outer/boolean:
post:
tags:
- fake
description: Test serialization of outer boolean types
operationId: fakeOuterBooleanSerialize
requestBody:
description: Input boolean as post body
content:
application/json:
schema:
$ref: '#/components/schemas/OuterBoolean'
responses:
200:
description: Output boolean
content:
'*/*':
schema:
$ref: '#/components/schemas/OuterBoolean'
/fake/outer/composite:
post:
tags:
- fake
description: Test serialization of object with outer number type
operationId: fakeOuterCompositeSerialize
requestBody:
description: Input composite as post body
content:
application/json:
schema:
$ref: '#/components/schemas/OuterComposite'
responses:
200:
description: Output composite
content:
'*/*':
schema:
$ref: '#/components/schemas/OuterComposite'
/fake/jsonFormData:
get:
tags:
- fake
summary: test json serialization of form data
operationId: testJsonFormData
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/body_4'
responses:
200:
description: successful operation
/fake/inline-additionalProperties:
post:
tags:
- fake
summary: test inline additionalProperties
operationId: testInlineAdditionalProperties
requestBody:
description: request body
content:
application/json:
schema:
type: object
additionalProperties:
type: string
required: true
responses:
200:
description: successful operation
/another-fake/dummy:
patch:
tags:
- $another-fake?
summary: To test special tags
description: To test special tags
operationId: test_special_tags
requestBody:
$ref: '#/components/requestBodies/Client'
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Client'
components:
schemas:
Order:
type: object
properties:
id:
type: integer
format: int64
petId:
type: integer
format: int64
quantity:
type: integer
format: int32
shipDate:
type: string
format: date-time
status:
type: string
description: Order Status
enum:
- placed
- approved
- delivered
complete:
type: boolean
default: false
example:
petId: 6
quantity: 1
id: 0
shipDate: 2000-01-23T04:56:07.000+00:00
complete: false
status: placed
xml:
name: Order
Category:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
example:
name: name
id: 6
xml:
name: Category
User:
type: object
properties:
id:
type: integer
format: int64
x-is-unique: true
username:
type: string
firstName:
type: string
lastName:
type: string
email:
type: string
password:
type: string
phone:
type: string
userStatus:
type: integer
description: User Status
format: int32
example:
firstName: firstName
lastName: lastName
password: password
userStatus: 6
phone: phone
id: 0
email: email
username: username
xml:
name: User
Tag:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
example:
name: name
id: 1
xml:
name: Tag
Pet:
required:
- name
- photoUrls
type: object
properties:
id:
type: integer
format: int64
x-is-unique: true
category:
$ref: '#/components/schemas/Category'
name:
type: string
example: doggie
photoUrls:
type: array
xml:
name: photoUrl
wrapped: true
items:
type: string
tags:
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
example:
photoUrls:
- photoUrls
- photoUrls
name: doggie
id: 0
category:
name: name
id: 6
tags:
- name: name
id: 1
- name: name
id: 1
status: available
xml:
name: Pet
ApiResponse:
type: object
properties:
code:
type: integer
format: int32
type:
type: string
message:
type: string
example:
code: 0
type: type
message: message
Return:
properties:
return:
type: integer
format: int32
description: Model for testing reserved words
xml:
name: Return
Name:
required:
- name
properties:
name:
type: integer
format: int32
snake_case:
type: integer
format: int32
readOnly: true
property:
type: string
123Number:
type: integer
format: int32
readOnly: true
description: Model for testing model name same as property name
xml:
name: Name
200_response:
properties:
name:
type: integer
format: int32
class:
type: string
description: Model for testing model name starting with number
xml:
name: Name
ClassModel:
properties:
_class:
type: string
description: Model for testing model with "_class" property
Dog:
allOf:
- $ref: '#/components/schemas/Animal'
- type: object
properties:
breed:
type: string
Cat:
allOf:
- $ref: '#/components/schemas/Animal'
- type: object
properties:
declawed:
type: boolean
Animal:
required:
- className
type: object
properties:
className:
type: string
color:
type: string
default: red
discriminator:
propertyName: className
AnimalFarm:
type: array
items:
$ref: '#/components/schemas/Animal'
format_test:
required:
- byte
- date
- number
- password
type: object
properties:
integer:
maximum: 100
minimum: 10
type: integer
format: int32
int32:
maximum: 200
minimum: 20
type: integer
format: int32
int64:
type: integer
format: int64
number:
maximum: 543.2
minimum: 32.1
type: number
float:
maximum: 987.6
minimum: 54.3
type: number
format: float
double:
maximum: 123.4
minimum: 67.8
type: number
format: double
string:
type: string
byte:
type: string
format: byte
binary:
type: string
format: binary
date:
type: string
format: date
dateTime:
type: string
format: date-time
uuid:
type: string
format: uuid
password:
maxLength: 64
minLength: 10
type: string
format: password
EnumClass:
type: string
enum:
- _abc
- -efg
- (xyz)
default: -efg
Enum_Test:
required:
- enum_string_required
type: object
properties:
enum_string:
type: string
enum:
- UPPER
- lower
- ""
enum_string_required:
type: string
enum:
- UPPER
- lower
- ""
enum_integer:
type: integer
format: int32
enum:
- 1
- -1
enum_number:
type: number
format: double
enum:
- 1.1
- -1.2
outerEnum:
$ref: '#/components/schemas/OuterEnum'
AdditionalPropertiesClass:
type: object
properties:
map_property:
type: object
additionalProperties:
type: string
map_of_map_property:
type: object
additionalProperties:
type: object
additionalProperties:
type: string
MixedPropertiesAndAdditionalPropertiesClass:
type: object
properties:
uuid:
type: string
format: uuid
dateTime:
type: string
format: date-time
map:
type: object
additionalProperties:
$ref: '#/components/schemas/Animal'
List:
type: object
properties:
123-list:
type: string
Client:
type: object
properties:
client:
type: string
example:
client: client
ReadOnlyFirst:
type: object
properties:
bar:
type: string
readOnly: true
baz:
type: string
hasOnlyReadOnly:
type: object
properties:
bar:
type: string
readOnly: true
foo:
type: string
readOnly: true
Capitalization:
type: object
properties:
smallCamel:
type: string
CapitalCamel:
type: string
small_Snake:
type: string
Capital_Snake:
type: string
SCA_ETH_Flow_Points:
type: string
ATT_NAME:
type: string
description: |
Name of the pet
MapTest:
type: object
properties:
map_map_of_string:
type: object
additionalProperties:
type: object
additionalProperties:
type: string
map_of_enum_string:
type: object
additionalProperties:
type: string
enum:
- UPPER
- lower
ArrayTest:
type: object
properties:
array_of_string:
type: array
items:
type: string
array_array_of_integer:
type: array
items:
type: array
items:
type: integer
format: int64
array_array_of_model:
type: array
items:
type: array
items:
$ref: '#/components/schemas/ReadOnlyFirst'
NumberOnly:
type: object
properties:
JustNumber:
type: number
ArrayOfNumberOnly:
type: object
properties:
ArrayNumber:
type: array
items:
type: number
ArrayOfArrayOfNumberOnly:
type: object
properties:
ArrayArrayNumber:
type: array
items:
type: array
items:
type: number
EnumArrays:
type: object
properties:
just_symbol:
type: string
enum:
- '>='
- $
array_enum:
type: array
items:
type: string
enum:
- fish
- crab
OuterEnum:
type: string
enum:
- placed
- approved
- delivered
OuterComposite:
type: object
properties:
my_number:
$ref: '#/components/schemas/OuterNumber'
my_string:
$ref: '#/components/schemas/OuterString'
my_boolean:
$ref: '#/components/schemas/OuterBoolean'
example: {}
OuterNumber:
type: number
OuterString:
type: string
OuterBoolean:
type: boolean
_special_model.name_:
properties:
$special[property.name]:
type: integer
format: int64
xml:
name: $special[model.name]
body:
type: object
properties:
name:
type: string
description: Updated name of the pet
status:
type: string
description: Updated status of the pet
body_1:
type: object
properties:
additionalMetadata:
type: string
description: Additional data to pass to server
file:
type: string
description: file to upload
format: binary
body_2:
type: object
properties:
enum_form_string_array:
type: array
description: Form parameter enum test (string array)
items:
type: string
enum:
- '>'
- $
default: $
enum_form_string:
type: string
description: Form parameter enum test (string)
enum:
- _abc
- -efg
- (xyz)
default: -efg
body_3:
required:
- byte
- double
- number
- pattern_without_delimiter
type: object
properties:
integer:
maximum: 100
minimum: 10
type: integer
description: None
format: int32
int32:
maximum: 200
minimum: 20
type: integer
description: None
format: int32
int64:
type: integer
description: None
format: int64
number:
maximum: 543.2
minimum: 32.1
type: number
description: None
float:
maximum: 987.6
type: number
description: None
format: float
double:
maximum: 123.4
minimum: 67.8
type: number
description: None
format: double
string:
type: string
description: None
pattern_without_delimiter:
type: string
description: None
byte:
type: string
description: None
format: byte
binary:
type: string
description: None
format: binary
date:
type: string
description: None
format: date
dateTime:
type: string
description: None
format: date-time
password:
maxLength: 64
minLength: 10
type: string
description: None
format: password
callback:
type: string
description: None
body_4:
required:
- param
- param2
type: object
properties:
param:
type: string
description: field1
param2:
type: string
description: field2
requestBodies:
UserArray:
description: List of user object
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
required: true
Client:
description: client model
content:
application/json:
schema:
$ref: '#/components/schemas/Client'
required: true
Pet:
description: Pet object that needs to be added to the store
content:
application/json:
schema:
$ref: '#/components/schemas/Pet'
application/xml:
schema:
$ref: '#/components/schemas/Pet'
required: true
securitySchemes:
petstore_auth:
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:
type: apiKey
name: api_key
in: header
api_key_query:
type: apiKey
name: api_key_query
in: query
http_basic_test:
type: http
scheme: basic