Skip to content

Commit 8236ce3

Browse files
committed
Initial version MergeDiscriminatorEnum
1 parent e5437e0 commit 8236ce3

1 file changed

Lines changed: 104 additions & 0 deletions

File tree

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
openapi: 3.0.3
2+
info:
3+
title: Example
4+
version: 1.0.0
5+
6+
paths:
7+
/party/full/{partyId}:
8+
parameters:
9+
- $ref: '#/components/parameters/partyId'
10+
get:
11+
summary: Get party by ID
12+
operationId: getPartyById
13+
responses:
14+
'200':
15+
description: Full party retrieved
16+
content:
17+
application/json:
18+
schema:
19+
$ref: '#/components/schemas/FullParty'
20+
put:
21+
summary: Store party by ID
22+
operationId: storePartyById
23+
requestBody:
24+
required: true
25+
content:
26+
application/json:
27+
schema:
28+
$ref: '#/components/schemas/FullParty'
29+
responses:
30+
'200':
31+
description: Full party updated
32+
'201':
33+
description: Full party created
34+
35+
components:
36+
parameters:
37+
partyId:
38+
name: partyId
39+
in: path
40+
required: true
41+
schema:
42+
type: string
43+
44+
schemas:
45+
FullParty:
46+
type: object
47+
properties:
48+
partyId:
49+
type: string
50+
partyContacts:
51+
type: array
52+
items:
53+
$ref: '#/components/schemas/Contact'
54+
55+
Contact:
56+
oneOf:
57+
- $ref: '#/components/schemas/Email'
58+
- $ref: '#/components/schemas/Phone'
59+
- $ref: '#/components/schemas/PostalAddress'
60+
discriminator:
61+
propertyName: contactTypeDiscriminator
62+
mapping:
63+
Email: '#/components/schemas/Email'
64+
Phone: '#/components/schemas/Phone'
65+
PostalAddress: '#/components/schemas/PostalAddress'
66+
67+
Email:
68+
type: object
69+
required:
70+
- contactTypeDiscriminator
71+
- emailAddress
72+
properties:
73+
contactTypeDiscriminator:
74+
type: string
75+
enum:
76+
- Email
77+
emailAddress:
78+
type: string
79+
80+
Phone:
81+
type: object
82+
required:
83+
- contactTypeDiscriminator
84+
- phoneNumber
85+
properties:
86+
contactTypeDiscriminator:
87+
type: string
88+
enum:
89+
- Phone
90+
phoneNumber:
91+
type: string
92+
93+
PostalAddress:
94+
type: object
95+
required:
96+
- contactTypeDiscriminator
97+
- street
98+
properties:
99+
contactTypeDiscriminator:
100+
type: string
101+
enum:
102+
- PostalAddress
103+
street:
104+
type: string

0 commit comments

Comments
 (0)