UNPKG

openapi-snippet

Version:

Generates code snippets from Open API (previously Swagger) documents.

1,063 lines (1,062 loc) 30.9 kB
{ "swagger": "2.0", "schemes": ["http", "https"], "host": "petstore.swagger.io", "basePath": "/v2", "info": { "description": "This is a sample server Petstore server.\nYou can find out more about Swagger at\n[http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/).\nFor this sample, you can use the api key `special-key` to test the authorization filters.\n# Introduction\nThis API is documented in **OpenAPI format** and is based on\n[Petstore sample](http://petstore.swagger.io/) provided by [swagger.io](http://swagger.io) team.\nIt was **extended** to illustrate features of [generator-openapi-repo](https://github.com/Rebilly/generator-openapi-repo)\ntool and [ReDoc](https://github.com/Rebilly/ReDoc) documentation. In addition to standard\nOpenAPI syntax we use a few [vendor extensions](https://github.com/Rebilly/ReDoc/blob/master/docs/redoc-vendor-extensions.md).\n# OpenAPI Specification\nThis API is documented in **OpenAPI format** and is based on\n[Petstore sample](http://petstore.swagger.io/) provided by [swagger.io](http://swagger.io) team.\nIt was **extended** to illustrate features of [generator-openapi-repo](https://github.com/Rebilly/generator-openapi-repo)\ntool and [ReDoc](https://github.com/Rebilly/ReDoc) documentation. In addition to standard\nOpenAPI syntax we use a few [vendor extensions](https://github.com/Rebilly/ReDoc/blob/master/docs/redoc-vendor-extensions.md).\n# Cross-Origin Resource Sharing\nThis API features Cross-Origin Resource Sharing (CORS) implemented in compliance with [W3C spec](https://www.w3.org/TR/cors/).\nAnd that allows cross-domain communication from the browser.\nAll responses have a wildcard same-origin which makes them completely public and accessible to everyone, including any code on any site.\n# Authentication\nPetstore offers two forms of authentication:\n - API Key\n - OAuth2\n\nOAuth2 - an open protocol to allow secure authorization in a simple\nand standard method from web, mobile and desktop applications.\n<!-- ReDoc-Inject: <security-definitions> -->\n", "version": "1.0.0", "title": "Swagger Petstore", "termsOfService": "http://swagger.io/terms/", "contact": { "email": "apiteam@swagger.io", "url": "https://github.com/Rebilly/ReDoc" }, "x-logo": { "url": "https://rebilly.github.io/ReDoc/petstore-logo.png" }, "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" } }, "externalDocs": { "description": "Find out how to create Github repo for your OpenAPI spec.", "url": "https://github.com/Rebilly/generator-openapi-repo" }, "tags": [ { "name": "pet", "description": "Everything about your Pets" }, { "name": "store", "description": "Access to Petstore orders" }, { "name": "user", "description": "Operations about user" } ], "x-tagGroups": [ { "name": "General", "tags": ["pet", "store"] }, { "name": "User Management", "tags": ["user"] } ], "securityDefinitions": { "petstore_auth": { "description": "Get access to data while protecting your account credentials.\nOAuth2 is also a safer and more secure way to give you access.\n", "type": "oauth2", "authorizationUrl": "http://petstore.swagger.io/api/oauth/dialog", "flow": "implicit", "scopes": { "write:pets": "modify pets in your account", "read:pets": "read your pets" } }, "api_key": { "description": "For this sample, you can use the api key `special-key` to test the authorization filters.\n", "type": "apiKey", "name": "api_key", "in": "header" } }, "x-servers": [ { "url": "//petstore.swagger.io/v2", "description": "Default server" }, { "url": "//petstore.swagger.io/sandbox", "description": "Sandbox server" } ], "paths": { "/pet": { "post": { "tags": ["pet"], "summary": "Add a new pet to the store", "description": "Add new pet to the store inventory.", "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"] } ], "x-code-samples": [ { "lang": "C#", "source": "PetStore.v1.Pet pet = new PetStore.v1.Pet();\npet.setApiKey(\"your api key\");\npet.petType = PetStore.v1.Pet.TYPE_DOG;\npet.name = \"Rex\";\n// set other fields\nPetStoreResponse response = pet.create();\nif (response.statusCode == HttpStatusCode.Created)\n{\n // Successfully created\n}\nelse\n{\n // Something wrong -- check response for errors\n Console.WriteLine(response.getRawResponse());\n}\n" }, { "lang": "PHP", "source": "$form = new \\PetStore\\Entities\\Pet();\n$form->setPetType(\"Dog\");\n$form->setName(\"Rex\");\n// set other fields\ntry {\n $pet = $client->pets()->create($form);\n} catch (UnprocessableEntityException $e) {\n var_dump($e->getErrors());\n}\n" } ] }, "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"] } ], "x-code-samples": [ { "lang": "PHP", "source": "$form = new \\PetStore\\Entities\\Pet();\n$form->setPetId(1);\n$form->setPetType(\"Dog\");\n$form->setName(\"Rex\");\n// set other fields\ntry {\n $pet = $client->pets()->update($form);\n} catch (UnprocessableEntityException $e) {\n var_dump($e->getErrors());\n}\n" } ] } }, "/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", "x-example": "Bearer <TOKEN>" }, { "name": "petId", "in": "path", "description": "Pet id to delete", "required": true, "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", "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"] } ] } }, "/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": "csv" } ], "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": "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", "operationId": "findPetsByTags", "deprecated": true, "produces": ["application/xml", "application/json"], "parameters": [ { "name": "tags", "in": "query", "description": "Tags to filter by", "required": true, "type": "array", "items": { "type": "string" }, "collectionFormat": "csv" } ], "responses": { "200": { "description": "successful operation", "schema": { "type": "array", "items": { "$ref": "#/definitions/Pet" } } }, "400": { "description": "Invalid tag value" } }, "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 <= 5 or > 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": 5, "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 value < 1000. Anything above 1000 or nonintegers 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": "string", "minimum": 1 } ], "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/{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 deleted", "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" } } } }, "/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" }, "examples": { "application/json": "OK", "application/xml": "<message> OK </message>", "text/plain": "OK" }, "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 toekn 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" } } } } }, "definitions": { "ApiResponse": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32" }, "type": { "type": "string" }, "message": { "type": "string" } } }, "Cat": { "description": "A representation of a cat", "allOf": [ { "$ref": "#/definitions/Pet" }, { "type": "object", "properties": { "huntingSkill": { "type": "string", "description": "The measured skill for hunting", "default": "lazy", "enum": ["clueless", "lazy", "adventurous", "aggressive"] } }, "required": ["huntingSkill"] } ] }, "Category": { "type": "object", "properties": { "id": { "description": "Category ID", "allOf": [ { "$ref": "#/definitions/Id" } ] }, "name": { "description": "Category name", "type": "string", "minLength": 1 }, "sub": { "description": "Test Sub Category", "type": "object", "properties": { "prop1": { "type": "string", "description": "Dumb Property" } } } }, "xml": { "name": "Category" } }, "Dog": { "description": "A representation of a dog", "allOf": [ { "$ref": "#/definitions/Pet" }, { "type": "object", "properties": { "packSize": { "type": "integer", "format": "int32", "description": "The size of the pack the dog is from", "default": 1, "minimum": 1 } }, "required": ["packSize"] } ] }, "HoneyBee": { "description": "A representation of a honey bee", "allOf": [ { "$ref": "#/definitions/Pet" }, { "type": "object", "properties": { "honeyPerDay": { "type": "number", "description": "Average amount of honey produced per day in ounces", "example": 3.14 } }, "required": ["honeyPerDay"] } ] }, "Id": { "type": "integer", "format": "int64" }, "Order": { "type": "object", "properties": { "id": { "description": "Order ID", "allOf": [ { "$ref": "#/definitions/Id" } ] }, "petId": { "description": "Pet ID", "allOf": [ { "$ref": "#/definitions/Id" } ] }, "quantity": { "type": "integer", "format": "int32", "minimum": 1, "default": 1 }, "shipDate": { "description": "Estimated ship date", "type": "string", "format": "date-time" }, "status": { "type": "string", "description": "Order Status", "enum": ["placed", "approved", "delivered"] }, "complete": { "description": "Indicates whenever order was completed or not", "type": "boolean", "default": false } }, "xml": { "name": "Order" } }, "Pet": { "type": "object", "required": ["name", "photoUrls"], "discriminator": "petType", "properties": { "id": { "description": "Pet ID", "allOf": [ { "$ref": "#/definitions/Id" } ] }, "category": { "description": "Categories this pet belongs to", "allOf": [ { "$ref": "#/definitions/Category" } ] }, "name": { "description": "The name given to a pet", "type": "string", "example": "Guru" }, "photoUrls": { "description": "The list of URL to a cute photos featuring pet", "type": "array", "xml": { "name": "photoUrl", "wrapped": true }, "items": { "type": "string", "format": "url" } }, "tags": { "description": "Tags attached to the pet", "type": "array", "xml": { "name": "tag", "wrapped": true }, "items": { "$ref": "#/definitions/Tag" } }, "status": { "type": "string", "description": "Pet status in the store", "enum": ["available", "pending", "sold"] }, "petType": { "description": "Type of a pet", "type": "string" } }, "xml": { "name": "Pet" } }, "Tag": { "type": "object", "properties": { "id": { "description": "Tag ID", "allOf": [ { "$ref": "#/definitions/Id" } ] }, "name": { "description": "Tag name", "type": "string", "minLength": 1 } }, "xml": { "name": "Tag" } }, "User": { "type": "object", "properties": { "id": { "description": "User ID", "$ref": "#/definitions/Id" }, "username": { "description": "User supplied username", "type": "string", "minLength": 4, "example": "John78" }, "firstName": { "description": "User first name", "type": "string", "minLength": 1, "example": "John" }, "lastName": { "description": "User last name", "type": "string", "minLength": 1, "example": "Smith" }, "email": { "description": "User email address", "type": "string", "format": "email", "example": "john.smith@example.com" }, "password": { "type": "string", "description": "User password, MUST contain a mix of upper and lower case letters, as well as digits", "format": "password", "minLength": 8, "pattern": "(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])", "example": "drowssaP123" }, "phone": { "description": "User phone number in international format", "type": "string", "pattern": "^\\+(?:[0-9]-?){6,14}[0-9]$", "example": "+1-202-555-0192", "x-nullable": true }, "userStatus": { "description": "User status", "type": "integer", "format": "int32" } }, "xml": { "name": "User" } } } }