openapi: "3.0.0" info: version: 1.0.0 title: Swagger Petstore license: name: MIT servers: - url: http://petstore.swagger.io/{version} variables: version: enum: - v1 - v2 default: v1 paths: /pets: get: summary: List all pets operationId: listPets tags: - pets parameters: - name: page in: query schema: type: integer format: int32 default: 1 - name: limit in: query description: How many items to return at one time (max 100) required: true schema: type: integer format: int32 nullable: true - name: search in: query description: Search query schema: type: string default: "" allowEmptyValue: true - name: ids in: query description: Filter pets with Ids schema: type: array items: type: integer format: int32 - name: tags in: query description: Filter pets with tags schema: type: array items: $ref: "#/components/schemas/Tag" explode: false responses: '200': description: An paged array of pets headers: x-next: description: A link to the next page of responses schema: type: string content: application/json: schema: $ref: "#/components/schemas/PetsData" post: summary: Create a pet operationId: createPets tags: - pets requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PetCreate' responses: '201': description: Null response default: $ref: "#/components/responses/ErrorResponse" /pets/{petId}: get: summary: Info for a specific pet operationId: showPetById tags: - pets parameters: - name: petId in: path required: true description: The id of the pet to retrieve schema: type: integer format: int64 responses: '200': description: Expected response to a valid request content: application/json: schema: $ref: "#/components/schemas/PetData" default: $ref: "#/components/responses/ErrorResponse" /tags: get: summary: List all tags operationId: listTags tags: - tags responses: '200': description: Expected response to a valid request content: application/json: schema: $ref: "#/components/schemas/TagList" default: $ref: "#/components/responses/ErrorResponse" post: summary: Create new tag operationId: createTag tags: - tags requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TagCreate' responses: '200': description: Null response default: $ref: "#/components/responses/ErrorResponse" components: schemas: Address: type: object x-model: Address required: - city properties: street: type: string city: type: string Tag: type: string enum: - cats - dogs - birds Position: type: integer enum: - 1 - 2 - 3 Pet: type: object x-model: Pet allOf: - $ref: "#/components/schemas/PetCreate" required: - id properties: id: type: integer format: int64 PetCreate: x-model: PetCreate allOf: - $ref: "#/components/schemas/PetCreatePartOne" - $ref: "#/components/schemas/PetCreatePartTwo" oneOf: - $ref: "#/components/schemas/Cat" - $ref: "#/components/schemas/Bird" PetCreatePartOne: type: object x-model: PetCreatePartOne required: - name properties: name: type: string tag: $ref: "#/components/schemas/Tag" address: $ref: "#/components/schemas/Address" PetCreatePartTwo: type: object x-model: PetCreatePartTwo properties: position: $ref: "#/components/schemas/Position" healthy: type: boolean Bird: type: object x-model: Bird required: - wings properties: wings: $ref: "#/components/schemas/Wings" Wings: type: object x-model: Wings required: - healthy properties: healthy: type: boolean Cat: type: object x-model: Cat required: - ears properties: ears: $ref: "#/components/schemas/Ears" Ears: type: object x-model: Ears required: - healthy properties: healthy: type: boolean Pets: type: array items: $ref: "#/components/schemas/Pet" PetsData: type: object required: - data properties: data: $ref: "#/components/schemas/Pets" PetData: type: object required: - data properties: data: $ref: "#/components/schemas/Pet" TagCreate: type: object required: - name properties: name: type: string format: custom TagList: type: array items: $ref: "#/components/schemas/Tag" Error: type: object required: - code - message properties: code: type: integer format: int32 message: type: string ExtendedError: allOf: - $ref: "#/components/schemas/Error" - type: object required: - rootCause properties: rootCause: type: string additionalProperties: type: string responses: ErrorResponse: description: unexpected error content: application/json: schema: $ref: "#/components/schemas/ExtendedError"