4
4
from pydantic import AnyUrl , BaseModel , Field
5
5
6
6
from aws_lambda_powertools .event_handler .openapi .compat import model_rebuild
7
+ from aws_lambda_powertools .event_handler .openapi .constants import (
8
+ MODEL_CONFIG_ALLOW ,
9
+ MODEL_CONFIG_IGNORE ,
10
+ )
7
11
from aws_lambda_powertools .shared .types import Annotated , Literal
8
12
9
13
"""
@@ -18,7 +22,7 @@ class Contact(BaseModel):
18
22
url : Optional [AnyUrl ] = None
19
23
email : Optional [str ] = None
20
24
21
- model_config = { "extra" : "allow" }
25
+ model_config = MODEL_CONFIG_ALLOW
22
26
23
27
24
28
# https://swagger.io/specification/#license-object
@@ -27,7 +31,7 @@ class License(BaseModel):
27
31
identifier : Optional [str ] = None
28
32
url : Optional [AnyUrl ] = None
29
33
30
- model_config = { "extra" : "allow" }
34
+ model_config = MODEL_CONFIG_ALLOW
31
35
32
36
33
37
# https://swagger.io/specification/#info-object
@@ -40,7 +44,7 @@ class Info(BaseModel):
40
44
version : str
41
45
summary : Optional [str ] = None
42
46
43
- model_config = { "extra" : "ignore" }
47
+ model_config = MODEL_CONFIG_IGNORE
44
48
45
49
46
50
# https://swagger.io/specification/#server-variable-object
@@ -49,7 +53,7 @@ class ServerVariable(BaseModel):
49
53
default : str
50
54
description : Optional [str ] = None
51
55
52
- model_config = { "extra" : "allow" }
56
+ model_config = MODEL_CONFIG_ALLOW
53
57
54
58
55
59
# https://swagger.io/specification/#server-object
@@ -58,7 +62,7 @@ class Server(BaseModel):
58
62
description : Optional [str ] = None
59
63
variables : Optional [Dict [str , ServerVariable ]] = None
60
64
61
- model_config = { "extra" : "allow" }
65
+ model_config = MODEL_CONFIG_ALLOW
62
66
63
67
64
68
# https://swagger.io/specification/#reference-object
@@ -80,15 +84,15 @@ class XML(BaseModel):
80
84
attribute : Optional [bool ] = None
81
85
wrapped : Optional [bool ] = None
82
86
83
- model_config = { "extra" : "allow" }
87
+ model_config = MODEL_CONFIG_ALLOW
84
88
85
89
86
90
# https://swagger.io/specification/#external-documentation-object
87
91
class ExternalDocumentation (BaseModel ):
88
92
description : Optional [str ] = None
89
93
url : AnyUrl
90
94
91
- model_config = { "extra" : "allow" }
95
+ model_config = MODEL_CONFIG_ALLOW
92
96
93
97
94
98
# https://swagger.io/specification/#schema-object
@@ -171,7 +175,7 @@ class Schema(BaseModel):
171
175
xml : Optional [XML ] = None
172
176
externalDocs : Optional [ExternalDocumentation ] = None
173
177
174
- model_config = { "extra" : "allow" }
178
+ model_config = MODEL_CONFIG_ALLOW
175
179
176
180
177
181
# Ref: https://json-schema.org/draft/2020-12/json-schema-core.html#name-json-schema-documents
@@ -186,7 +190,7 @@ class Example(BaseModel):
186
190
value : Optional [Any ] = None
187
191
externalValue : Optional [AnyUrl ] = None
188
192
189
- model_config = { "extra" : "allow" }
193
+ model_config = MODEL_CONFIG_ALLOW
190
194
191
195
192
196
class ParameterInType (Enum ):
@@ -204,7 +208,7 @@ class Encoding(BaseModel):
204
208
explode : Optional [bool ] = None
205
209
allowReserved : Optional [bool ] = None
206
210
207
- model_config = { "extra" : "allow" }
211
+ model_config = MODEL_CONFIG_ALLOW
208
212
209
213
210
214
# https://swagger.io/specification/#media-type-object
@@ -213,7 +217,7 @@ class MediaType(BaseModel):
213
217
examples : Optional [Dict [str , Union [Example , Reference ]]] = None
214
218
encoding : Optional [Dict [str , Encoding ]] = None
215
219
216
- model_config = { "extra" : "allow" }
220
+ model_config = MODEL_CONFIG_ALLOW
217
221
218
222
219
223
# https://swagger.io/specification/#parameter-object
@@ -230,7 +234,7 @@ class ParameterBase(BaseModel):
230
234
# Serialization rules for more complex scenarios
231
235
content : Optional [Dict [str , MediaType ]] = None
232
236
233
- model_config = { "extra" : "allow" }
237
+ model_config = MODEL_CONFIG_ALLOW
234
238
235
239
236
240
class Parameter (ParameterBase ):
@@ -248,7 +252,7 @@ class RequestBody(BaseModel):
248
252
content : Dict [str , MediaType ]
249
253
required : Optional [bool ] = None
250
254
251
- model_config = { "extra" : "allow" }
255
+ model_config = MODEL_CONFIG_ALLOW
252
256
253
257
254
258
# https://swagger.io/specification/#link-object
@@ -260,7 +264,7 @@ class Link(BaseModel):
260
264
description : Optional [str ] = None
261
265
server : Optional [Server ] = None
262
266
263
- model_config = { "extra" : "allow" }
267
+ model_config = MODEL_CONFIG_ALLOW
264
268
265
269
266
270
# https://swagger.io/specification/#response-object
@@ -270,7 +274,7 @@ class Response(BaseModel):
270
274
content : Optional [Dict [str , MediaType ]] = None
271
275
links : Optional [Dict [str , Union [Link , Reference ]]] = None
272
276
273
- model_config = { "extra" : "allow" }
277
+ model_config = MODEL_CONFIG_ALLOW
274
278
275
279
276
280
# https://swagger.io/specification/#tag-object
@@ -279,7 +283,7 @@ class Tag(BaseModel):
279
283
description : Optional [str ] = None
280
284
externalDocs : Optional [ExternalDocumentation ] = None
281
285
282
- model_config = { "extra" : "allow" }
286
+ model_config = MODEL_CONFIG_ALLOW
283
287
284
288
285
289
# https://swagger.io/specification/#operation-object
@@ -298,7 +302,7 @@ class Operation(BaseModel):
298
302
security : Optional [List [Dict [str , List [str ]]]] = None
299
303
servers : Optional [List [Server ]] = None
300
304
301
- model_config = { "extra" : "allow" }
305
+ model_config = MODEL_CONFIG_ALLOW
302
306
303
307
304
308
# https://swagger.io/specification/#path-item-object
@@ -317,7 +321,7 @@ class PathItem(BaseModel):
317
321
servers : Optional [List [Server ]] = None
318
322
parameters : Optional [List [Union [Parameter , Reference ]]] = None
319
323
320
- model_config = { "extra" : "allow" }
324
+ model_config = MODEL_CONFIG_ALLOW
321
325
322
326
323
327
# https://swagger.io/specification/#security-scheme-object
@@ -361,7 +365,7 @@ class OAuthFlow(BaseModel):
361
365
refreshUrl : Optional [str ] = None
362
366
scopes : Dict [str , str ] = {}
363
367
364
- model_config = { "extra" : "allow" }
368
+ model_config = MODEL_CONFIG_ALLOW
365
369
366
370
367
371
class OAuthFlowImplicit (OAuthFlow ):
@@ -387,7 +391,7 @@ class OAuthFlows(BaseModel):
387
391
clientCredentials : Optional [OAuthFlowClientCredentials ] = None
388
392
authorizationCode : Optional [OAuthFlowAuthorizationCode ] = None
389
393
390
- model_config = { "extra" : "allow" }
394
+ model_config = MODEL_CONFIG_ALLOW
391
395
392
396
393
397
class OAuth2 (SecurityBase ):
@@ -420,7 +424,7 @@ class Components(BaseModel):
420
424
callbacks : Optional [Dict [str , Union [Dict [str , PathItem ], Reference , Any ]]] = None
421
425
pathItems : Optional [Dict [str , Union [PathItem , Reference ]]] = None
422
426
423
- model_config = { "extra" : "allow" }
427
+ model_config = MODEL_CONFIG_ALLOW
424
428
425
429
426
430
# https://swagger.io/specification/#openapi-object
@@ -437,7 +441,7 @@ class OpenAPI(BaseModel):
437
441
tags : Optional [List [Tag ]] = None
438
442
externalDocs : Optional [ExternalDocumentation ] = None
439
443
440
- model_config = { "extra" : "allow" }
444
+ model_config = MODEL_CONFIG_ALLOW
441
445
442
446
443
447
model_rebuild (Schema )
0 commit comments