{
   "swagger":"2.0",
   "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.",
      "version":"1.0.0",
      "title":"Swagger Petstore",
      "termsOfService":"http://swagger.io/terms/",
      "contact":{
         "email":"apiteam@swagger.io"
      },
      "license":{
         "name":"Apache 2.0",
         "url":"http://www.apache.org/licenses/LICENSE-2.0.html"
      }
   },
   "host":"localhost:3204",
   "basePath":"/",
   "tags":[
      {
         "name":"pet",
         "description":"Everything about your Pets",
         "externalDocs":{
            "description":"Find out more",
            "url":"http://swagger.io"
         }
      },
      {
         "name":"store",
         "description":"Access to Petstore orders"
      },
      {
         "name":"user",
         "description":"Operations about user",
         "externalDocs":{
            "description":"Find out more about our store",
            "url":"http://swagger.io"
         }
      }
   ],
   "schemes":[
      "http"
   ],
   "paths":{
      "/pet":{
         "post":{
            "tags":[
               "pet"
            ],
            "summary":"Add a new pet to the store",
            "description":"",
            "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":{
               "405":{
                  "description":"Invalid input"
               }
            },
            "security":[
               {
                  "petstore_auth":[
                     "write:pets",
                     "read:pets"
                  ]
               }
            ]
         },
         "put":{
            "tags":[
               "pet"
            ],
            "summary":"Update an existing pet",
            "description":"",
            "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":{
               "400":{
                  "description":"Invalid ID supplied"
               },
               "404":{
                  "description":"Pet not found"
               },
               "405":{
                  "description":"Validation exception"
               }
            },
            "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",
            "produces":[
               "application/xml",
               "application/json"
            ],
            "parameters":[
               {
                  "name":"status",
                  "in":"query",
                  "description":"Status values that need to be considered for filter",
                  "required":true,
                  "type":"array",
                  "items":{
                     "type":"string",
                     "enum":[
                        "available",
                        "pending",
                        "sold"
                     ],
                     "default":"available"
                  },
                  "collectionFormat":"multi"
               }
            ],
            "responses":{
               "200":{
                  "description":"successful operation",
                  "schema":{
                     "type":"array",
                     "items":{
                        "$ref":"#/definitions/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 separated strings. Use tag1, tag2, tag3 for testing.",
            "operationId":"findPetsByTags",
            "produces":[
               "application/xml",
               "application/json"
            ],
            "parameters":[
               {
                  "name":"tags",
                  "in":"query",
                  "description":"Tags to filter by",
                  "required":true,
                  "type":"array",
                  "items":{
                     "type":"string"
                  },
                  "collectionFormat":"multi"
               }
            ],
            "responses":{
               "200":{
                  "description":"successful operation",
                  "schema":{
                     "type":"array",
                     "items":{
                        "$ref":"#/definitions/Pet"
                     }
                  }
               },
               "400":{
                  "description":"Invalid tag value"
               }
            },
            "security":[
               {
                  "petstore_auth":[
                     "write:pets",
                     "read:pets"
                  ]
               }
            ],
            "deprecated":true
         }
      },
      "/pet/{petId}":{
         "get":{
            "tags":[
               "pet"
            ],
            "summary":"Find pet by ID",
            "description":"Returns a single pet",
            "operationId":"getPetById",
            "produces":[
               "application/xml",
               "application/json"
            ],
            "parameters":[
               {
                  "name":"petId",
                  "in":"path",
                  "description":"ID of pet to return",
                  "required":true,
                  "type":"integer",
                  "format":"int64"
               }
            ],
            "responses":{
               "200":{
                  "description":"successful operation",
                  "schema":{
                     "$ref":"#/definitions/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",
            "consumes":[
               "application/x-www-form-urlencoded"
            ],
            "produces":[
               "application/xml",
               "application/json"
            ],
            "parameters":[
               {
                  "name":"petId",
                  "in":"path",
                  "description":"ID of pet that needs to be updated",
                  "required":true,
                  "type":"integer",
                  "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":{
               "405":{
                  "description":"Invalid input"
               }
            },
            "security":[
               {
                  "petstore_auth":[
                     "write:pets",
                     "read:pets"
                  ]
               }
            ]
         },
         "delete":{
            "tags":[
               "pet"
            ],
            "summary":"Deletes a pet",
            "description":"",
            "operationId":"deletePet",
            "produces":[
               "application/xml",
               "application/json"
            ],
            "parameters":[
               {
                  "name":"api_key",
                  "in":"header",
                  "required":false,
                  "type":"string"
               },
               {
                  "name":"petId",
                  "in":"path",
                  "description":"Pet id to delete",
                  "required":true,
                  "type":"integer",
                  "format":"int64"
               }
            ],
            "responses":{
               "400":{
                  "description":"Invalid ID supplied"
               },
               "404":{
                  "description":"Pet not found"
               }
            },
            "security":[
               {
                  "petstore_auth":[
                     "write:pets",
                     "read:pets"
                  ]
               }
            ]
         }
      },
      "/pet/{petId}/uploadImage":{
         "post":{
            "tags":[
               "pet"
            ],
            "summary":"uploads an image",
            "description":"",
            "operationId":"uploadFile",
            "consumes":[
               "multipart/form-data"
            ],
            "produces":[
               "application/json"
            ],
            "parameters":[
               {
                  "name":"petId",
                  "in":"path",
                  "description":"ID of pet to update",
                  "required":true,
                  "type":"integer",
                  "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":{
               "200":{
                  "description":"successful operation",
                  "schema":{
                     "$ref":"#/definitions/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",
            "produces":[
               "application/json"
            ],
            "parameters":[

            ],
            "responses":{
               "200":{
                  "description":"successful operation",
                  "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",
            "produces":[
               "application/xml",
               "application/json"
            ],
            "parameters":[
               {
                  "in":"body",
                  "name":"body",
                  "description":"order placed for purchasing the pet",
                  "required":true,
                  "schema":{
                     "$ref":"#/definitions/Order"
                  }
               }
            ],
            "responses":{
               "200":{
                  "description":"successful operation",
                  "schema":{
                     "$ref":"#/definitions/Order"
                  }
               },
               "400":{
                  "description":"Invalid Order"
               }
            }
         }
      },
      "/store/order/{orderId}":{
         "get":{
            "tags":[
               "store"
            ],
            "summary":"Find purchase order by ID",
            "description":"For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions",
            "operationId":"getOrderById",
            "produces":[
               "application/xml",
               "application/json"
            ],
            "parameters":[
               {
                  "name":"orderId",
                  "in":"path",
                  "description":"ID of pet that needs to be fetched",
                  "required":true,
                  "type":"integer",
                  "maximum":10.0,
                  "minimum":1.0,
                  "format":"int64"
               }
            ],
            "responses":{
               "200":{
                  "description":"successful operation",
                  "schema":{
                     "$ref":"#/definitions/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 positive integer value. Negative or non-integer values will generate API errors",
            "operationId":"deleteOrder",
            "produces":[
               "application/xml",
               "application/json"
            ],
            "parameters":[
               {
                  "name":"orderId",
                  "in":"path",
                  "description":"ID of the order that needs to be deleted",
                  "required":true,
                  "type":"integer",
                  "minimum":1.0,
                  "format":"int64"
               }
            ],
            "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",
            "produces":[
               "application/xml",
               "application/json"
            ],
            "parameters":[
               {
                  "in":"body",
                  "name":"body",
                  "description":"Created user object",
                  "required":true,
                  "schema":{
                     "$ref":"#/definitions/User"
                  }
               }
            ],
            "responses":{
               "default":{
                  "description":"successful operation"
               }
            }
         }
      },
      "/user/createWithArray":{
         "post":{
            "tags":[
               "user"
            ],
            "summary":"Creates list of users with given input array",
            "description":"",
            "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":{
               "default":{
                  "description":"successful operation"
               }
            }
         }
      },
      "/user/createWithList":{
         "post":{
            "tags":[
               "user"
            ],
            "summary":"Creates list of users with given input array",
            "description":"",
            "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":{
               "default":{
                  "description":"successful operation"
               }
            }
         }
      },
      "/user/login":{
         "get":{
            "tags":[
               "user"
            ],
            "summary":"Logs user into the system",
            "description":"",
            "operationId":"loginUser",
            "produces":[
               "application/xml",
               "application/json"
            ],
            "parameters":[
               {
                  "name":"username",
                  "in":"query",
                  "description":"The user name for login",
                  "required":true,
                  "type":"string"
               },
               {
                  "name":"password",
                  "in":"query",
                  "description":"The password for login in clear text",
                  "required":true,
                  "type":"string"
               }
            ],
            "responses":{
               "200":{
                  "description":"successful operation",
                  "schema":{
                     "type":"string"
                  },
                  "headers":{
                     "X-Rate-Limit":{
                        "type":"integer",
                        "format":"int32",
                        "description":"calls per hour allowed by the user"
                     },
                     "X-Expires-After":{
                        "type":"string",
                        "format":"date-time",
                        "description":"date in UTC when token expires"
                     }
                  }
               },
               "400":{
                  "description":"Invalid username/password supplied"
               }
            }
         }
      },
      "/user/logout":{
         "get":{
            "tags":[
               "user"
            ],
            "summary":"Logs out current logged in user session",
            "description":"",
            "operationId":"logoutUser",
            "produces":[
               "application/xml",
               "application/json"
            ],
            "parameters":[

            ],
            "responses":{
               "default":{
                  "description":"successful operation"
               }
            }
         }
      },
      "/user/{username}":{
         "get":{
            "tags":[
               "user"
            ],
            "summary":"Get user by user name",
            "description":"",
            "operationId":"getUserByName",
            "produces":[
               "application/xml",
               "application/json"
            ],
            "parameters":[
               {
                  "name":"username",
                  "in":"path",
                  "description":"The name that needs to be fetched. Use user1 for testing. ",
                  "required":true,
                  "type":"string"
               }
            ],
            "responses":{
               "200":{
                  "description":"successful operation",
                  "schema":{
                     "$ref":"#/definitions/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",
            "produces":[
               "application/xml",
               "application/json"
            ],
            "parameters":[
               {
                  "name":"username",
                  "in":"path",
                  "description":"name that need to be updated",
                  "required":true,
                  "type":"string"
               },
               {
                  "in":"body",
                  "name":"body",
                  "description":"Updated user object",
                  "required":true,
                  "schema":{
                     "$ref":"#/definitions/User"
                  }
               }
            ],
            "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",
            "produces":[
               "application/xml",
               "application/json"
            ],
            "parameters":[
               {
                  "name":"username",
                  "in":"path",
                  "description":"The name that needs to be deleted",
                  "required":true,
                  "type":"string"
               }
            ],
            "responses":{
               "400":{
                  "description":"Invalid username supplied"
               },
               "404":{
                  "description":"User not found"
               }
            }
         }
      }
   },
   "securityDefinitions":{
      "petstore_auth":{
         "type":"oauth2",
         "authorizationUrl":"http://petstore.swagger.io/oauth/dialog",
         "flow":"implicit",
         "scopes":{
            "write:pets":"modify pets in your account",
            "read:pets":"read your pets"
         }
      },
      "api_key":{
         "type":"apiKey",
         "name":"api_key",
         "in":"header"
      }
   },
   "definitions":{
      "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
            }
         },
         "xml":{
            "name":"Order"
         }
      },
      "Category":{
         "type":"object",
         "properties":{
            "id":{
               "type":"integer",
               "format":"int64"
            },
            "name":{
               "type":"string"
            }
         },
         "xml":{
            "name":"Category"
         }
      },
      "User":{
         "type":"object",
         "properties":{
            "id":{
               "type":"integer",
               "format":"int64"
            },
            "username":{
               "type":"string"
            },
            "firstName":{
               "type":"string"
            },
            "lastName":{
               "type":"string"
            },
            "email":{
               "type":"string"
            },
            "password":{
               "type":"string"
            },
            "phone":{
               "type":"string"
            },
            "userStatus":{
               "type":"integer",
               "format":"int32",
               "description":"User Status"
            }
         },
         "xml":{
            "name":"User"
         }
      },
      "Tag":{
         "type":"object",
         "properties":{
            "id":{
               "type":"integer",
               "format":"int64"
            },
            "name":{
               "type":"string"
            }
         },
         "xml":{
            "name":"Tag"
         }
      },
      "Pet":{
         "type":"object",
         "required":[
            "name",
            "photoUrls"
         ],
         "properties":{
            "id":{
               "type":"integer",
               "format":"int64"
            },
            "category":{
               "$ref":"#/definitions/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":"#/definitions/Tag"
               }
            },
            "status":{
               "type":"string",
               "description":"pet status in the store",
               "enum":[
                  "available",
                  "pending",
                  "sold"
               ]
            }
         },
         "xml":{
            "name":"Pet"
         }
      },
      "ApiResponse":{
         "type":"object",
         "properties":{
            "code":{
               "type":"integer",
               "format":"int32"
            },
            "type":{
               "type":"string"
            },
            "message":{
               "type":"string"
            }
         }
      }
   },
   "externalDocs":{
      "description":"Find out more about Swagger",
      "url":"http://swagger.io"
   }
}