88from dataclasses import dataclass
99from openapidocs .common import OpenAPIRoot
1010from typing import Any , List , Optional , Dict , Type , Union
11+ from .common import OpenAPIElement
1112
1213
1314def get_ref (ref_type : Union [str , Type ]) -> str :
@@ -90,26 +91,26 @@ class OAuthFlowType(Enum):
9091
9192
9293@dataclass
93- class Contact :
94+ class Contact ( OpenAPIElement ) :
9495 name : Optional [str ] = None
9596 url : Optional [str ] = None
9697 email : Optional [str ] = None
9798
9899
99100@dataclass
100- class ExternalDocs :
101+ class ExternalDocs ( OpenAPIElement ) :
101102 url : str
102103 description : Optional [str ] = None
103104
104105
105106@dataclass
106- class License :
107+ class License ( OpenAPIElement ) :
107108 name : str
108109 url : Optional [str ] = None
109110
110111
111112@dataclass
112- class Info :
113+ class Info ( OpenAPIElement ) :
113114 title : str
114115 version : str
115116 description : Optional [str ] = None
@@ -119,7 +120,7 @@ class Info:
119120
120121
121122@dataclass
122- class XML :
123+ class XML ( OpenAPIElement ) :
123124 name : Optional [str ] = None
124125 namespace : Optional [str ] = None
125126 prefix : Optional [str ] = None
@@ -128,13 +129,13 @@ class XML:
128129
129130
130131@dataclass
131- class Discriminator :
132+ class Discriminator ( OpenAPIElement ) :
132133 property_name : str
133134 mapping : Optional [Dict [str , str ]] = None
134135
135136
136137@dataclass
137- class Schema :
138+ class Schema ( OpenAPIElement ) :
138139 type : Union [None , str , ValueType ] = None
139140 format : Union [None , str , ValueFormat ] = None
140141 required : Optional [List [str ]] = None
@@ -162,7 +163,7 @@ class Schema:
162163
163164
164165@dataclass
165- class Header :
166+ class Header ( OpenAPIElement ) :
166167 type : HeaderType
167168 description : Optional [str ] = None
168169 format : Optional [str ] = None
@@ -184,23 +185,23 @@ class Header:
184185
185186
186187@dataclass
187- class Example :
188+ class Example ( OpenAPIElement ) :
188189 summary : Optional [str ] = None
189190 description : Optional [str ] = None
190191 value : Any = None
191192 external_value : Optional [str ] = None
192193
193194
194195@dataclass
195- class Reference :
196+ class Reference ( OpenAPIElement ) :
196197 ref : str
197198
198199 def to_obj (self ) -> Dict [str , str ]:
199200 return {"$ref" : self .ref }
200201
201202
202203@dataclass
203- class Encoding :
204+ class Encoding ( OpenAPIElement ) :
204205 content_type : Optional [str ] = None
205206 headers : Optional [Dict [str , Union [Header , Reference ]]] = None
206207 style : Optional [str ] = None
@@ -209,15 +210,15 @@ class Encoding:
209210
210211
211212@dataclass
212- class Response :
213+ class Response ( OpenAPIElement ) :
213214 description : str
214215 headers : Optional [Dict [str , Union [Header , Reference ]]] = None
215216 schema : Optional [Schema ] = None
216217 examples : Optional [Dict [str , Any ]] = None
217218
218219
219220@dataclass
220- class Items :
221+ class Items ( OpenAPIElement ) :
221222 type : ValueItemType
222223 format : Optional [ValueFormat ] = None
223224 items : Optional ["Items" ] = None
@@ -238,7 +239,7 @@ class Items:
238239
239240
240241@dataclass
241- class Parameter :
242+ class Parameter ( OpenAPIElement ) :
242243 name : str
243244 in_ : ParameterLocation
244245 type : Optional [ValueType ] = None
@@ -267,7 +268,7 @@ class Parameter:
267268
268269
269270@dataclass
270- class SecurityRequirement :
271+ class SecurityRequirement ( OpenAPIElement ) :
271272 name : str
272273 value : List [str ]
273274
@@ -276,7 +277,7 @@ def to_obj(self):
276277
277278
278279@dataclass
279- class Operation :
280+ class Operation ( OpenAPIElement ) :
280281 responses : Dict [str , Response ]
281282 tags : Optional [List [str ]] = None
282283 operation_id : Optional [str ] = None
@@ -292,7 +293,7 @@ class Operation:
292293
293294
294295@dataclass
295- class PathItem :
296+ class PathItem ( OpenAPIElement ) :
296297 ref : Optional [str ] = None
297298 get : Optional [Operation ] = None
298299 put : Optional [Operation ] = None
@@ -304,7 +305,7 @@ class PathItem:
304305 parameters : Optional [List [Union [Parameter , Reference ]]] = None
305306
306307
307- class SecurityScheme (ABC ):
308+ class SecurityScheme (OpenAPIElement , ABC ):
308309 """Abstract security scheme"""
309310
310311
@@ -333,7 +334,7 @@ class OAuth2Security(SecurityScheme):
333334
334335
335336@dataclass
336- class Tag :
337+ class Tag ( OpenAPIElement ) :
337338 name : str
338339 description : Optional [str ] = None
339340 external_docs : Optional [ExternalDocs ] = None
0 commit comments