Skip to content

Instantly share code, notes, and snippets.

@AMcManigal
Created April 30, 2018 22:11
Show Gist options
  • Save AMcManigal/b9932f18bd98ba6e2316a1b566321b62 to your computer and use it in GitHub Desktop.
Save AMcManigal/b9932f18bd98ba6e2316a1b566321b62 to your computer and use it in GitHub Desktop.
Example OAS 3.0
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:
'200':
description: Pet Created Response
content:
application/json:
schema:
$ref: "#/components/schemas/PetData"
'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"
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"
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
healthSigns:
type: array
items:
anyOf:
- $ref: '#/components/schemas/FreshBreath'
- $ref: '#/components/schemas/ShinyCoat'
- $ref: '#/components/schemas/EyesBright'
animalType:
oneOf:
- $ref: '#/components/schemas/MammalDetails'
- $ref: '#/components/schemas/AvianDetails'
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"
TagList:
type: array
items:
$ref: "#/components/schemas/Tag"
MammalDetails:
type: object
properties:
breed:
type: string
AvianDetails:
type: object
properties:
species:
type: string
FreshBreath:
type: object
properties:
freshBreath:
type: boolean
ShinyCoat:
type: object
properties:
shinyCoat:
type: boolean
EyesBright:
type: object
properties:
eyesBright:
type: boolean
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
responses:
ErrorResponse:
description: unexpected error
content:
application/json:
schema:
$ref: "#/components/schemas/ExtendedError"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment