-
Notifications
You must be signed in to change notification settings - Fork 0
/
openapi.yaml
155 lines (149 loc) · 5.11 KB
/
openapi.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
openapi: '3.0.0'
info:
title: oneOf property vs voor elke type een property vs één property voor alle types
version: 1.0.0
paths:
/tenaamstellingenOneOf:
get:
description: |
oneOf om aan te geven dat persoon kan zijn:
- een KadasterNatuurlijkPersoon,
- een KadasterNietNatuurlijkPersoon of
- een IngeschrevenPersoon
Voordelen:
- expressief. Uit de definitie kan worden opgemaakt dat één persoon ten name kan worden gesteld
Nadelen:
- extra schema object (AbstractPersoon) nodig als base type voor de oneOf schema objecten
- gegenereerde code is niet correct als de base type (AbstractPersoon) niet als eerste $ref in de oneOf wordt toegevoegd
responses:
'200':
description: zoek actie geslaagd
content:
application/hal+json:
schema:
$ref: '#/components/schemas/TenaamstellingOneOf'
/tenaamstellingenElkeOneOfEenEigenProperty:
get:
description: |
een property voor elke persoon type en voor elke persoon type een schema object
Voordelen:
- geen extra schema object nodig als base type voor de persoon types
- code generatie werkt
Nadelen:
- documentatie is nodig om aan te geven dat slechts één van de persoon type properties een waarde kan hebben
responses:
'200':
description: zoek actie geslaagd
content:
application/hal+json:
schema:
$ref: '#/components/schemas/TenaamstellingElkeOneOfEenEigenProperty'
/tenaamstellingen:
get:
description: |
één schema object voor de persoon types en een persoon enum type
Voordelen:
- uit de definitie kan worden opgemaakt dat één persoon ten name kan worden gesteld
- code generatie werkt
Nadelen:
- een enum type nodig om aan te geven welke persoon types ten name kan worden gesteld
- als de persoon Resources niet allemaal een identificatie property hebben, dan is waarschijnlijk documentatie nodig om aan te geven welke waarde (bsn, rsin, etc) in de identificatie wordt ingevuld
responses:
'200':
description: zoek actie geslaagd
content:
application/hal+json:
schema:
$ref: '#/components/schemas/Tenaamstelling'
components:
schemas:
TenaamstellingOneOf:
type: object
properties:
persoon:
oneOf:
- $ref: '#/components/schemas/AbstractPersoon'
- $ref: '#/components/schemas/KadasterNatuurlijkPersoonOneOfVersie'
- $ref: '#/components/schemas/KadasterNietNatuurlijkPersoonOneOfVersie'
- $ref: '#/components/schemas/IngeschrevenNatuurlijkPersoonOneOfVersie'
TenaamstellingElkeOneOfEenEigenProperty:
type: object
properties:
kadasterNatuurlijkPersoon:
$ref: '#/components/schemas/KadasterNatuurlijkPersoon'
kadasterNietNatuurlijkPersoon:
$ref: '#/components/schemas/KadasterNietNatuurlijkPersoon'
ingeschrevenNatuurlijkPersoon:
$ref: '#/components/schemas/IngeschrevenNatuurlijkPersoon'
Tenaamstelling:
type: object
properties:
persoon:
$ref: '#/components/schemas/Persoon'
AbstractPersoon:
type: object
discriminator:
propertyName: persoonType
KadasterNatuurlijkPersoonOneOfVersie:
allOf:
- $ref: '#/components/schemas/AbstractPersoon'
- type: object
properties:
identificatie:
type: string
naam:
type: string
KadasterNietNatuurlijkPersoonOneOfVersie:
allOf:
- $ref: '#/components/schemas/AbstractPersoon'
- type: object
properties:
identificatie:
type: string
naam:
type: string
IngeschrevenNatuurlijkPersoonOneOfVersie:
allOf:
- $ref: '#/components/schemas/AbstractPersoon'
- type: object
properties:
burgerservicenummer:
type: string
geslachtsnaam:
type: string
KadasterNatuurlijkPersoon:
type: object
properties:
identificatie:
type: string
naam:
type: string
KadasterNietNatuurlijkPersoon:
type: object
properties:
identificatie:
type: string
naam:
type: string
IngeschrevenNatuurlijkPersoon:
type: object
properties:
burgerservicenummer:
type: string
geslachtsnaam:
type: string
Persoon:
type: object
properties:
identificatie:
type: string
naam:
type: string
type:
$ref: '#/components/schemas/PersoonType_enum'
PersoonType_enum:
type: string
enum:
- KadasterNatuurlijkPersoon
- KadasterNietNatuurlijkPersoon
- IngeschrevenNatuurlijkPersoon