mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-10-13 16:03:43 +00:00
285 lines
6.7 KiB
YAML
285 lines
6.7 KiB
YAML
openapi: 3.0.1
|
|
info:
|
|
description: |
|
|
This tests for a oneOf interface representation
|
|
title: ByRefOrValue
|
|
version: 0.0.1
|
|
servers:
|
|
- url: http://localhost:8080
|
|
tags:
|
|
- name: Foo
|
|
- name: Bar
|
|
paths:
|
|
/foo:
|
|
get:
|
|
operationId: getAllFoos
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json;charset=utf-8:
|
|
schema:
|
|
items:
|
|
$ref: "#/components/schemas/FooRefOrValue"
|
|
type: array
|
|
description: Success
|
|
summary: GET all Foos
|
|
tags:
|
|
- Foo
|
|
x-accepts:
|
|
- application/json;charset=utf-8
|
|
post:
|
|
operationId: createFoo
|
|
requestBody:
|
|
$ref: "#/components/requestBodies/Foo"
|
|
responses:
|
|
"201":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/FooRefOrValue"
|
|
description: Error
|
|
summary: Create a Foo
|
|
tags:
|
|
- Foo
|
|
x-content-type: application/json;charset=utf-8
|
|
x-accepts:
|
|
- application/json
|
|
/bar:
|
|
post:
|
|
operationId: createBar
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Bar_Create"
|
|
required: true
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Bar"
|
|
description: Bar created
|
|
summary: Create a Bar
|
|
tags:
|
|
- Bar
|
|
x-content-type: application/json
|
|
x-accepts:
|
|
- application/json
|
|
components:
|
|
requestBodies:
|
|
Foo:
|
|
content:
|
|
application/json;charset=utf-8:
|
|
schema:
|
|
$ref: "#/components/schemas/Foo"
|
|
description: The Foo to be created
|
|
responses:
|
|
"204":
|
|
content: {}
|
|
description: Deleted
|
|
"201Foo":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/FooRefOrValue"
|
|
description: Error
|
|
"200FooArray":
|
|
content:
|
|
application/json;charset=utf-8:
|
|
schema:
|
|
items:
|
|
$ref: "#/components/schemas/FooRefOrValue"
|
|
type: array
|
|
description: Success
|
|
schemas:
|
|
Addressable:
|
|
description: Base schema for addressable entities
|
|
properties:
|
|
href:
|
|
description: Hyperlink reference
|
|
type: string
|
|
id:
|
|
description: unique identifier
|
|
type: string
|
|
type: object
|
|
Extensible:
|
|
properties:
|
|
'@schemaLocation':
|
|
description: A URI to a JSON-Schema file that defines additional attributes
|
|
and relationships
|
|
type: string
|
|
'@baseType':
|
|
description: "When sub-classing, this defines the super-class"
|
|
type: string
|
|
'@type':
|
|
description: "When sub-classing, this defines the sub-class Extensible name"
|
|
type: string
|
|
required:
|
|
- '@type'
|
|
type: object
|
|
Entity:
|
|
allOf:
|
|
- $ref: "#/components/schemas/Addressable"
|
|
- $ref: "#/components/schemas/Extensible"
|
|
discriminator:
|
|
propertyName: '@type'
|
|
type: object
|
|
EntityRef:
|
|
allOf:
|
|
- $ref: "#/components/schemas/Addressable"
|
|
- $ref: "#/components/schemas/Extensible"
|
|
description: Entity reference schema to be use for all entityRef class.
|
|
discriminator:
|
|
propertyName: '@type'
|
|
properties:
|
|
name:
|
|
description: Name of the related entity.
|
|
type: string
|
|
'@referredType':
|
|
description: The actual type of the target instance when needed for disambiguation.
|
|
type: string
|
|
type: object
|
|
FooRefOrValue:
|
|
discriminator:
|
|
propertyName: '@type'
|
|
oneOf:
|
|
- $ref: "#/components/schemas/Foo"
|
|
- $ref: "#/components/schemas/FooRef"
|
|
type: object
|
|
x-one-of-name: FooRefOrValue
|
|
Foo:
|
|
allOf:
|
|
- $ref: "#/components/schemas/Entity"
|
|
example:
|
|
fooPropA: fooPropA
|
|
fooPropB: fooPropB
|
|
properties:
|
|
fooPropA:
|
|
type: string
|
|
fooPropB:
|
|
type: string
|
|
type: object
|
|
FooRef:
|
|
allOf:
|
|
- $ref: "#/components/schemas/EntityRef"
|
|
properties:
|
|
foorefPropA:
|
|
type: string
|
|
type: object
|
|
BarRef:
|
|
allOf:
|
|
- $ref: "#/components/schemas/EntityRef"
|
|
type: object
|
|
Bar_Create:
|
|
allOf:
|
|
- $ref: "#/components/schemas/Entity"
|
|
properties:
|
|
barPropA:
|
|
type: string
|
|
fooPropB:
|
|
type: string
|
|
foo:
|
|
$ref: "#/components/schemas/FooRefOrValue"
|
|
type: object
|
|
Bar:
|
|
allOf:
|
|
- $ref: "#/components/schemas/Entity"
|
|
example:
|
|
foo:
|
|
fooPropA: fooPropA
|
|
fooPropB: fooPropB
|
|
id: id
|
|
fooPropB: fooPropB
|
|
barPropA: barPropA
|
|
properties:
|
|
id:
|
|
type: string
|
|
barPropA:
|
|
type: string
|
|
fooPropB:
|
|
type: string
|
|
foo:
|
|
$ref: "#/components/schemas/FooRefOrValue"
|
|
required:
|
|
- id
|
|
type: object
|
|
BarRefOrValue:
|
|
oneOf:
|
|
- $ref: "#/components/schemas/Bar"
|
|
- $ref: "#/components/schemas/BarRef"
|
|
type: object
|
|
x-one-of-name: BarRefOrValue
|
|
Pizza:
|
|
allOf:
|
|
- $ref: "#/components/schemas/Entity"
|
|
properties:
|
|
pizzaSize:
|
|
type: number
|
|
type: object
|
|
Pasta:
|
|
allOf:
|
|
- $ref: "#/components/schemas/Entity"
|
|
properties:
|
|
vendor:
|
|
type: string
|
|
type: object
|
|
PizzaSpeziale:
|
|
allOf:
|
|
- $ref: "#/components/schemas/Pizza"
|
|
properties:
|
|
toppings:
|
|
type: string
|
|
type: object
|
|
FruitType:
|
|
enum:
|
|
- APPLE
|
|
- BANANA
|
|
type: string
|
|
Fruit:
|
|
discriminator:
|
|
mapping:
|
|
APPLE: "#/components/schemas/Apple"
|
|
BANANA: "#/components/schemas/Banana"
|
|
propertyName: fruitType
|
|
oneOf:
|
|
- $ref: "#/components/schemas/Apple"
|
|
- $ref: "#/components/schemas/Banana"
|
|
properties:
|
|
fruitType:
|
|
$ref: "#/components/schemas/FruitType"
|
|
required:
|
|
- fruitType
|
|
type: object
|
|
x-one-of-name: Fruit
|
|
Apple:
|
|
properties:
|
|
seeds:
|
|
type: integer
|
|
required:
|
|
- seeds
|
|
type: object
|
|
Banana:
|
|
properties:
|
|
length:
|
|
type: integer
|
|
required:
|
|
- length
|
|
type: object
|
|
Animal:
|
|
oneOf:
|
|
- $ref: "#/components/schemas/Dog"
|
|
- $ref: "#/components/schemas/Cat"
|
|
x-one-of-name: Animal
|
|
Cat:
|
|
properties:
|
|
declawed:
|
|
type: boolean
|
|
type: object
|
|
Dog:
|
|
properties:
|
|
bark:
|
|
type: boolean
|
|
type: object
|
|
|