@readme/oas-examples
Version:
A collection of example OpenAPI 3.x and Swagger 2.0 documents.
871 lines (870 loc) • 27 kB
JSON
{
"openapi": "3.0.3",
"info": {
"title": "Polymorphism support",
"description": "https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md#schema-object",
"version": "1.0.0"
},
"servers": [
{
"url": "https://httpbin.org"
}
],
"paths": {
"/pets": {
"patch": {
"summary": "oneOf request with a nested allOf",
"requestBody": {
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/Cat"
},
{
"$ref": "#/components/schemas/Dog"
}
],
"discriminator": {
"propertyName": "pet_type"
}
}
}
}
},
"responses": {
"200": {
"description": "Updated"
}
}
}
},
"/anything/all-of-object": {
"post": {
"summary": "allOf with listed objects",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"allOf": [
{
"title": "First type of object",
"type": "object",
"properties": {
"a": {
"type": "string"
},
"b": {
"type": "string"
}
}
},
{
"title": "Second type of object",
"type": "object",
"properties": {
"c": {
"type": "string"
},
"d": {
"type": "string"
}
}
}
]
}
}
}
},
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/anything/any-of-object": {
"post": {
"summary": "anyOf object",
"requestBody": {
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"title": "First type of object",
"type": "object",
"properties": {
"a": {
"type": "string"
},
"b": {
"type": "string"
}
}
},
{
"title": "Second type of object",
"type": "object",
"properties": {
"c": {
"type": "string"
},
"d": {
"type": "string"
}
}
}
]
}
}
}
},
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/anything/any-of-primitive": {
"post": {
"summary": "anyOf primitive",
"requestBody": {
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"title": "First type of primitive",
"type": "string"
},
{
"title": "Second type of primitive",
"type": "integer"
}
]
}
}
}
},
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/any-of-with-type": {
"post": {
"summary": "anyOf With Type",
"description": "AnyOf's with a top level type parameter should not render that type outside of their options",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"event": {
"type": "string",
"anyOf": [
{
"title": "First type of primitive",
"type": "string"
},
{
"title": "Second type of primitive",
"type": "string"
}
]
}
}
}
}
}
},
"responses": {
"204": { "description": "Provides no response body" }
}
}
},
"/anything/one-of-object": {
"post": {
"summary": "oneOf object",
"requestBody": {
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"title": "First type of object",
"type": "object",
"properties": {
"a": {
"type": "string"
},
"b": {
"type": "string"
}
}
},
{
"title": "Second type of object",
"type": "object",
"properties": {
"c": {
"type": "string"
},
"d": {
"type": "string"
}
}
}
]
}
}
}
},
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/anything/one-of-primitive": {
"post": {
"summary": "oneOf primitive",
"requestBody": {
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"title": "First type of primitive",
"type": "string"
},
{
"title": "Second type of primitive",
"type": "integer"
}
]
}
}
}
},
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/anything/one-of-object-ref": {
"post": {
"summary": "oneOf object with $ref pointers",
"requestBody": {
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/object1"
},
{
"$ref": "#/components/schemas/object2"
}
]
}
}
}
},
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/one-of-complex": {
"post": {
"summary": "oneOf object with a complex schema",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"oneOf": [
{
"title": "Andalucia",
"type": "object",
"properties": {
"listing_id": {
"type": "integer"
},
"regulatory_body": {
"type": "string"
},
"registration": {
"type": "object",
"properties": {
"permit_number": {
"type": "string"
},
"registration_ownership": {
"type": "string",
"enum": ["OWNER", "PROPERTY_MANAGER"]
},
"email": {
"type": "string"
},
"full_name": {
"type": "string"
},
"identification_number": {
"type": "string"
}
},
"required": [
"permit_number",
"registration_ownership",
"email",
"full_name",
"identification_number"
]
},
"exemption": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"enum": ["LISTING_TYPE_NOT_INCLUDED", "LISTING_NOT_TOURIST_ACCOMMODATION"]
},
"registration_ownership": {
"type": "string",
"enum": ["OWNER", "PROPERTY_MANAGER"]
},
"email": {
"type": "string"
},
"full_name": {
"type": "string"
},
"identification_number": {
"type": "string"
}
},
"required": ["reason", "registration_ownership", "email", "full_name", "identification_number"]
}
},
"required": ["listing_id", "regulatory_body"]
},
{
"title": "Baltimore",
"type": "object",
"properties": {
"listing_id": {
"type": "integer"
},
"regulatory_body": {
"type": "string"
},
"registration": {
"type": "object",
"properties": {
"permit_number": {
"type": "string"
},
"expiration_date": {
"type": "string"
},
"full_name": {
"type": "string"
},
"email": {
"type": "string"
},
"listing_address": {
"type": "string"
},
"attestation_existing_registration": {
"type": "boolean"
}
},
"required": [
"permit_number",
"expiration_date",
"full_name",
"email",
"listing_address",
"attestation_existing_registration"
]
},
"exemption": {
"type": "object",
"properties": {
"exemption_reason": {
"type": "string",
"enum": ["hotel_motel"]
},
"full_name": {
"type": "string"
},
"email": {
"type": "string"
},
"attestation_exemption_claim": {
"type": "boolean"
}
},
"required": ["exemption_reason", "full_name", "email", "attestation_exemption_claim"]
}
},
"required": ["listing_id", "regulatory_body"]
},
{
"title": "Boston",
"type": "object",
"properties": {
"listing_id": {
"type": "integer"
},
"regulatory_body": {
"type": "string"
},
"registration": {
"type": "object",
"properties": {
"permit_number": {
"type": "string"
},
"email": {
"type": "string"
},
"full_name": {
"type": "string"
},
"listing_address": {
"type": "string"
},
"attestation": {
"type": "boolean"
}
},
"required": ["permit_number", "email", "full_name", "listing_address", "attestation"]
},
"exemption": {
"type": "object",
"properties": {
"exemption_reason": {
"type": "string",
"enum": ["hotel_motel", "bed_breakfast_lodging", "institutional_business", "hospitals"]
},
"listing_address": {
"type": "string"
},
"attestation": {
"type": "boolean"
}
},
"required": ["exemption_reason", "listing_address", "attestation"]
}
},
"required": ["listing_id", "regulatory_body"]
},
{
"title": "Catalonia",
"type": "object",
"properties": {
"listing_id": {
"type": "integer"
},
"regulatory_body": {
"type": "string"
},
"registration": {
"type": "object",
"properties": {
"permit_number": {
"type": "string"
},
"registration_ownership": {
"type": "string"
},
"email": {
"type": "string"
},
"full_name": {
"type": "string"
},
"identification_number": {
"type": "string"
}
},
"required": [
"permit_number",
"registration_ownership",
"email",
"full_name",
"identification_number"
]
},
"exemption": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"enum": ["listing_not_full_building", "listing_is_shared_room", "other_exemption_reason"]
},
"registration_ownership": {
"type": "string",
"enum": ["OWNER", "PROPERTY_MANAGER"]
},
"email": {
"type": "string"
},
"full_name": {
"type": "string"
},
"identification_number": {
"type": "string"
}
},
"required": ["reason", "registration_ownership", "email", "full_name", "identification_number"]
}
},
"required": ["listing_id", "regulatory_body"]
},
{
"title": "Chicago",
"type": "object",
"properties": {
"listing_id": {
"type": "integer"
},
"regulatory_body": {
"type": "string"
},
"registration": {
"type": "object",
"properties": {
"permit_number": {
"type": "string"
}
},
"required": ["permit_number"]
}
},
"required": ["listing_id", "regulatory_body", "registration"]
},
{
"title": "Cuba",
"type": "object",
"properties": {
"listing_id": {
"type": "integer"
},
"regulatory_body": {
"type": "string"
},
"affiliation": {
"type": "object",
"properties": {
"attestation_entrepreneur": {
"type": "boolean"
},
"listing_address": {
"type": "string"
}
},
"required": ["attestation_entrepreneur", "listing_address"]
}
},
"required": ["listing_id", "regulatory_body", "affiliation"]
},
{
"title": "Denmark",
"type": "object",
"properties": {
"listing_id": {
"type": "integer"
},
"regulatory_body": {
"type": "string"
},
"categorization": {
"type": "object",
"properties": {
"listing_type": {
"type": "string",
"enum": [
"primary_residence",
"houseboat",
"tent",
"tree_house",
"hotel_or_hostel",
"serviced_apartment",
"trailer",
"mobile_home",
"summer_house"
]
},
"data_reporting_status": {
"type": "string",
"enum": ["private_activity", "business_activity"]
},
"data_reporting_bbr": {
"type": "string"
},
"attestation": {
"type": "boolean"
},
"attestation_conditional": {
"type": "boolean"
}
},
"required": ["listing_type"]
}
},
"required": ["listing_id", "regulatory_body", "categorization"]
}
]
}
}
}
},
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/anything/nested-one-of-object-ref": {
"post": {
"summary": "nested oneOf object with $ref pointers",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"config": {
"oneOf": [
{
"$ref": "#/components/schemas/object1"
},
{
"$ref": "#/components/schemas/object2"
}
]
}
},
"additionalProperties": false
}
}
}
},
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/anything/nested-one-of-ref": {
"post": {
"requestBody": {
"$ref": "#/components/requestBodies/nested-one-of-ref"
},
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/anything/nested-one-of-object-with-nested-one-of": {
"post": {
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"config": {
"oneOf": [
{
"$ref": "#/components/schemas/object1"
},
{
"$ref": "#/components/schemas/object2"
},
{
"oneOf": [
{
"$ref": "#/components/schemas/Cat"
},
{
"$ref": "#/components/schemas/Dog"
}
],
"discriminator": {
"propertyName": "pet_type"
}
}
]
}
},
"additionalProperties": false
}
}
}
},
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/one-of-with-type": {
"post": {
"summary": "One Of With Type",
"description": "OneOf's with a top level type parameter should not render that type outside of their options",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"event": {
"type": "string",
"oneOf": [{ "description": "oneof one" }, { "description": "oneof two" }]
}
}
}
}
}
},
"responses": {
"204": { "description": "Provides no response body" }
}
}
}
},
"components": {
"requestBodies": {
"nested-one-of-ref": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"config": {
"oneOf": [
{
"$ref": "#/components/schemas/string1"
},
{
"$ref": "#/components/schemas/string2"
}
]
}
},
"additionalProperties": false
}
}
}
}
},
"schemas": {
"Pet": {
"type": "object",
"required": ["pet_type"],
"properties": {
"pet_type": {
"type": "string"
}
},
"discriminator": {
"propertyName": "pet_type"
}
},
"Dog": {
"title": "Woof",
"allOf": [
{
"$ref": "#/components/schemas/Pet"
},
{
"type": "object",
"properties": {
"bark": {
"type": "boolean"
},
"breed": {
"type": "string",
"enum": ["Dingo", "Husky", "Retriever", "Shepherd"]
}
}
}
]
},
"Cat": {
"title": "Meow",
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Pet"
},
{
"type": "object",
"properties": {
"hunts": {
"type": "boolean"
},
"age": {
"type": "integer"
}
}
}
]
},
"object1": {
"title": "First type of object",
"type": "object",
"properties": {
"a": {
"type": "string"
},
"b": {
"type": "string"
}
}
},
"object2": {
"title": "Second type of object",
"type": "object",
"properties": {
"c": {
"type": "string"
},
"d": {
"type": "string"
}
}
},
"string1": {
"type": "string"
},
"string2": {
"type": "string"
}
}
}
}