swagger: '2.0' info: description: 'A system to keep track of inventory and requested items, can be used for donations' version: 0.1.0 title: Donations termsOfService: http://swagger.io/terms/ contact: email: hello@johanbove.info license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html host: itemstore.swagger.io basePath: /v1 tags: - name: item description: Everything about Items - name: store description: Access to orders - name: user description: Operations about user schemes: - https - http paths: /item/{itemId}/uploadImage: post: tags: - item summary: uploads an image description: '' operationId: uploadFile consumes: - multipart/form-data produces: - application/json parameters: - name: itemId in: path description: ID of item 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: - itemstore_auth: - write:items - read:items /item/findByStatus: get: tags: - item summary: Finds Items by status description: Multiple status values can be provided with comma separated strings operationId: findItemsByStatus produces: - application/json - application/xml 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/Item' '400': description: Invalid status value security: - itemstore_auth: - write:items - read:items /item/findByTags: get: tags: - item summary: Finds Items by tags description: Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. operationId: findItemsByTags produces: - application/json - application/xml 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/Item' '400': description: Invalid tag value security: - itemstore_auth: - write:items - read:items /item: post: tags: - item summary: Add a new item to the store description: '' operationId: addItem consumes: - application/json - application/xml parameters: - in: body name: body description: Item object that needs to be added to the store required: true schema: $ref: '#/definitions/Item' responses: '405': description: Invalid input security: - itemstore_auth: - write:items - read:items put: tags: - item summary: Update an existing item description: '' operationId: updateItem consumes: - application/json - application/xml produces: - application/json - application/xml parameters: - in: body name: body description: Item object that needs to be added to the store required: true schema: $ref: '#/definitions/Item' responses: '400': description: Invalid ID supplied '404': description: Item not found '405': description: Validation exception security: - itemstore_auth: - write:items - read:items /item/{itemId}: get: tags: - item summary: Find item by ID description: Returns a single item operationId: getItemById produces: - application/json - application/xml parameters: - name: itemId in: path description: ID of item to return required: true type: integer format: int64 responses: '200': description: successful operation schema: $ref: '#/definitions/Item' '400': description: Invalid ID supplied '404': description: Item not found security: - api_key: [] post: tags: - item summary: Updates an item in the store with form data description: '' operationId: updateItemWithForm consumes: - application/x-www-form-urlencoded produces: - application/json - application/xml parameters: - name: itemId in: path description: ID of item that needs to be updated required: true type: integer format: int64 - name: name in: formData description: Updated name of the item required: false type: string - name: status in: formData description: Updated status of the item required: false type: string responses: '405': description: Invalid input security: - itemstore_auth: - write:items - read:items delete: tags: - item summary: Deletes an item description: '' operationId: deleteItem produces: - application/json - application/xml parameters: - name: api_key in: header required: false type: string - name: itemId in: path description: Item id to delete required: true type: integer format: int64 responses: '400': description: Invalid ID supplied '404': description: Item not found security: - itemstore_auth: - write:items - read:items /store/order: post: tags: - store summary: Place an order for a pet description: '' operationId: placeOrder consumes: - application/json produces: - application/json - application/xml 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/json - application/xml parameters: - name: orderId in: path description: ID of pet that needs to be fetched required: true type: integer maximum: 10 minimum: 1 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/json - application/xml parameters: - name: orderId in: path description: ID of the order that needs to be deleted required: true type: integer minimum: 1 format: int64 responses: '400': description: Invalid ID supplied '404': description: Order not found /store/inventory: get: tags: - store summary: Returns item 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: [] /user/createWithArray: post: tags: - user summary: Creates list of users with given input array description: '' operationId: createUsersWithArrayInput consumes: - application/json produces: - application/json - application/xml 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 consumes: - application/json produces: - application/json - application/xml 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/{username}: get: tags: - user summary: Get user by user name description: '' operationId: getUserByName produces: - application/json - application/xml 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 consumes: - application/json produces: - application/json - application/xml 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/json - application/xml 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 /user/login: get: tags: - user summary: Logs user into the system description: '' operationId: loginUser produces: - application/json - application/xml 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 headers: X-Expires-After: type: string format: date-time description: date in UTC when token expires X-Rate-Limit: type: integer format: int32 description: calls per hour allowed by the user schema: type: string '400': description: Invalid username/password supplied /user/logout: get: tags: - user summary: Logs out current logged in user session description: '' operationId: logoutUser produces: - application/json - application/xml parameters: [] responses: default: description: successful operation /user: post: tags: - user summary: Create user description: This can only be done by the logged in user. operationId: createUser consumes: - application/json produces: - application/json - application/xml parameters: - in: body name: body description: Created user object required: true schema: $ref: '#/definitions/User' responses: default: description: successful operation securityDefinitions: api_key: type: apiKey name: api_key in: header itemstore_auth: type: oauth2 authorizationUrl: https://itemstore.swagger.io/oauth/authorize flow: implicit scopes: read:items: read your items write:items: modify items in your account definitions: ApiResponse: type: object properties: code: type: integer format: int32 type: type: string message: type: string Category: type: object properties: id: type: integer format: int64 name: type: string xml: name: Category Item: type: object required: - name properties: id: type: integer format: int64 category: $ref: '#/definitions/Category' name: type: string example: Toilette Paper tags: type: array xml: wrapped: true items: xml: name: tag $ref: '#/definitions/Tag' status: type: string description: item status in the store enum: - available - pending - gone requests: type: integer description: How many units are requested of this item? xml: name: Item Tag: type: object properties: id: type: integer format: int64 name: type: string xml: name: Tag Order: type: object properties: id: type: integer format: int64 itemId: type: integer format: int64 quantity: type: integer format: int32 requestDate: type: string format: date-time shipDate: type: string format: date-time status: type: string description: Order Status enum: - placed - approved - delivered complete: type: boolean xml: name: Order 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 externalDocs: description: Find out more about Swagger url: http://swagger.io