{
    "openapi": "3.0.0",
    "info": {
        "title": "Swagger Petstore",
        "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification",
        "termsOfService": "http://swagger.io/terms/",
        "contact": {
            "name": "Swagger API Team",
            "url": "http://swagger.io",
            "email": "apiteam@swagger.io"
        },
        "license": {
            "name": "MIT",
            "url": "http://github.com/gruntjs/grunt/blob/master/LICENSE-MIT"
        },
        "version": "1.0.0"
    },
    "servers": [
        {
            "url": "petstore.swagger.io",
            "description": "API server"
        }
    ],
    "paths": {
        "/pets": {
            "get": {
                "description": "Returns all pets from the system that the user has access to",
                "externalDocs": {
                    "description": "find more info here",
                    "url": "https://swagger.io/about"
                },
                "operationId": "findPets",
                "parameters": [
                    {
                        "name": "tags",
                        "in": "query",
                        "description": "tags to filter by",
                        "required": false,
                        "style": "form",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "maximum number of results to return",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "format": "int32"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "pet response",
                        "content": {
                            "application/xml": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Pet"
                                    }
                                }
                            },
                            "text/xml": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Pet"
                                    }
                                }
                            },
                            "text/html": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Pet"
                                    }
                                }
                            },
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Pet"
                                    }
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "unexpected error",
                        "content": {
                            "application/xml": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorModel"
                                }
                            },
                            "text/xml": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorModel"
                                }
                            },
                            "text/html": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorModel"
                                }
                            },
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorModel"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "description": "Creates a new pet in the store.  Duplicates are allowed",
                "operationId": "addPet",
                "requestBody": {
                    "description": "Pet to add to the store",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/NewPet"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "pet response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Pet"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "unexpected error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorModel"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/pets/{id}": {
            "get": {
                "description": "Returns a user based on a single ID, if the user does not have access to the pet",
                "operationId": "findPetById",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of pet to fetch",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "format": "int64"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "pet response",
                        "content": {
                            "application/xml": {
                                "schema": {
                                    "$ref": "#/components/schemas/Pet"
                                }
                            },
                            "text/html": {
                                "schema": {
                                    "$ref": "#/components/schemas/Pet"
                                }
                            },
                            "text/xml": {
                                "schema": {
                                    "$ref": "#/components/schemas/Pet"
                                }
                            },
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Pet"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "unexpected error",
                        "content": {
                            "application/xml": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorModel"
                                }
                            },
                            "text/xml": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorModel"
                                }
                            },
                            "text/html": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorModel"
                                }
                            },
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorModel"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "description": "deletes a single pet based on the ID supplied",
                "operationId": "deletePet",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of pet to delete",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "format": "int64"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "pet deleted"
                    },
                    "default": {
                        "description": "unexpected error"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "ErrorModel": {
                "required": [
                    "code",
                    "message"
                ],
                "properties": {
                    "code": {
                        "type": "integer",
                        "format": "int32"
                    },
                    "message": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "NewPet": {
                "required": [
                    "name"
                ],
                "properties": {
                    "name": {
                        "type": "string"
                    },
                    "tag": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "Pet": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/NewPet"
                    },
                    {
                        "required": [
                            "id"
                        ],
                        "properties": {
                            "id": {
                                "type": "integer",
                                "format": "int64"
                            }
                        },
                        "type": "object"
                    }
                ]
            }
        }
    },
    "externalDocs": {
        "description": "find more info here",
        "url": "https://swagger.io/about"
    }
}