7
7
8
8
PYDANTIC_V2 = PYDANTIC_VERSION .startswith ("2." )
9
9
10
+ """
11
+ The code defines Pydantic models for the various OpenAPI objects like OpenAPI, PathItem, Operation, Parameter etc.
12
+ These models can be used to parse OpenAPI JSON/YAML files into Python objects, or generate OpenAPI from Python data.
13
+ """
10
14
15
+
16
+ # https://swagger.io/specification/#contact-object
11
17
class Contact (BaseModel ):
12
18
name : Optional [str ] = None
13
19
url : Optional [AnyUrl ] = None
@@ -21,6 +27,7 @@ class Config:
21
27
extra = "allow"
22
28
23
29
30
+ # https://swagger.io/specification/#license-object
24
31
class License (BaseModel ):
25
32
name : str
26
33
identifier : Optional [str ] = None
@@ -35,6 +42,7 @@ class Config:
35
42
extra = "allow"
36
43
37
44
45
+ # https://swagger.io/specification/#info-object
38
46
class Info (BaseModel ):
39
47
title : str
40
48
summary : Optional [str ] = None
@@ -53,6 +61,7 @@ class Config:
53
61
extra = "allow"
54
62
55
63
64
+ # https://swagger.io/specification/#server-variable-object
56
65
class ServerVariable (BaseModel ):
57
66
enum : Annotated [Optional [List [str ]], Field (min_length = 1 )] = None
58
67
default : str
@@ -67,6 +76,7 @@ class Config:
67
76
extra = "allow"
68
77
69
78
79
+ # https://swagger.io/specification/#server-object
70
80
class Server (BaseModel ):
71
81
url : Union [AnyUrl , str ]
72
82
description : Optional [str ] = None
@@ -81,15 +91,18 @@ class Config:
81
91
extra = "allow"
82
92
83
93
94
+ # https://swagger.io/specification/#reference-object
84
95
class Reference (BaseModel ):
85
96
ref : str = Field (alias = "$ref" )
86
97
87
98
99
+ # https://swagger.io/specification/#discriminator-object
88
100
class Discriminator (BaseModel ):
89
101
propertyName : str
90
102
mapping : Optional [Dict [str , str ]] = None
91
103
92
104
105
+ # https://swagger.io/specification/#xml-object
93
106
class XML (BaseModel ):
94
107
name : Optional [str ] = None
95
108
namespace : Optional [str ] = None
@@ -106,6 +119,7 @@ class Config:
106
119
extra = "allow"
107
120
108
121
122
+ # https://swagger.io/specification/#external-documentation-object
109
123
class ExternalDocumentation (BaseModel ):
110
124
description : Optional [str ] = None
111
125
url : AnyUrl
@@ -119,6 +133,7 @@ class Config:
119
133
extra = "allow"
120
134
121
135
136
+ # https://swagger.io/specification/#schema-object
122
137
class Schema (BaseModel ):
123
138
# Ref: JSON Schema 2020-12: https://json-schema.org/draft/2020-12/json-schema-core.html#name-the-json-schema-core-vocabu
124
139
# Core Vocabulary
@@ -212,6 +227,7 @@ class Config:
212
227
SchemaOrBool = Union [Schema , bool ]
213
228
214
229
230
+ # https://swagger.io/specification/#example-object
215
231
class Example (BaseModel ):
216
232
summary : Optional [str ] = None
217
233
description : Optional [str ] = None
@@ -234,6 +250,7 @@ class ParameterInType(Enum):
234
250
cookie = "cookie"
235
251
236
252
253
+ # https://swagger.io/specification/#encoding-object
237
254
class Encoding (BaseModel ):
238
255
contentType : Optional [str ] = None
239
256
headers : Optional [Dict [str , Union ["Header" , Reference ]]] = None
@@ -250,6 +267,7 @@ class Config:
250
267
extra = "allow"
251
268
252
269
270
+ # https://swagger.io/specification/#media-type-object
253
271
class MediaType (BaseModel ):
254
272
schema_ : Optional [Union [Schema , Reference ]] = Field (default = None , alias = "schema" )
255
273
example : Optional [Any ] = None
@@ -265,6 +283,7 @@ class Config:
265
283
extra = "allow"
266
284
267
285
286
+ # https://swagger.io/specification/#parameter-object
268
287
class ParameterBase (BaseModel ):
269
288
description : Optional [str ] = None
270
289
required : Optional [bool ] = None
@@ -297,6 +316,7 @@ class Header(ParameterBase):
297
316
pass
298
317
299
318
319
+ # https://swagger.io/specification/#request-body-object
300
320
class RequestBody (BaseModel ):
301
321
description : Optional [str ] = None
302
322
content : Dict [str , MediaType ]
@@ -311,6 +331,7 @@ class Config:
311
331
extra = "allow"
312
332
313
333
334
+ # https://swagger.io/specification/#link-object
314
335
class Link (BaseModel ):
315
336
operationRef : Optional [str ] = None
316
337
operationId : Optional [str ] = None
@@ -328,6 +349,7 @@ class Config:
328
349
extra = "allow"
329
350
330
351
352
+ # https://swagger.io/specification/#response-object
331
353
class Response (BaseModel ):
332
354
description : str
333
355
headers : Optional [Dict [str , Union [Header , Reference ]]] = None
@@ -343,6 +365,7 @@ class Config:
343
365
extra = "allow"
344
366
345
367
368
+ # https://swagger.io/specification/#operation-object
346
369
class Operation (BaseModel ):
347
370
tags : Optional [List [str ]] = None
348
371
summary : Optional [str ] = None
@@ -367,6 +390,7 @@ class Config:
367
390
extra = "allow"
368
391
369
392
393
+ # https://swagger.io/specification/#path-item-object
370
394
class PathItem (BaseModel ):
371
395
ref : Optional [str ] = Field (default = None , alias = "$ref" )
372
396
summary : Optional [str ] = None
@@ -391,6 +415,7 @@ class Config:
391
415
extra = "allow"
392
416
393
417
418
+ # https://swagger.io/specification/#security-scheme-object
394
419
class SecuritySchemeType (Enum ):
395
420
apiKey = "apiKey"
396
421
http = "http"
@@ -494,6 +519,7 @@ class OpenIdConnect(SecurityBase):
494
519
SecurityScheme = Union [APIKey , HTTPBase , OAuth2 , OpenIdConnect , HTTPBearer ]
495
520
496
521
522
+ # https://swagger.io/specification/#components-object
497
523
class Components (BaseModel ):
498
524
schemas : Optional [Dict [str , Union [Schema , Reference ]]] = None
499
525
responses : Optional [Dict [str , Union [Response , Reference ]]] = None
@@ -516,6 +542,7 @@ class Config:
516
542
extra = "allow"
517
543
518
544
545
+ # https://swagger.io/specification/#tag-object
519
546
class Tag (BaseModel ):
520
547
name : str
521
548
description : Optional [str ] = None
@@ -530,6 +557,7 @@ class Config:
530
557
extra = "allow"
531
558
532
559
560
+ # https://swagger.io/specification/#openapi-object
533
561
class OpenAPI (BaseModel ):
534
562
openapi : str
535
563
info : Info
0 commit comments