fastapi 0.128.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fastapi/__init__.py +25 -0
- fastapi/__main__.py +3 -0
- fastapi/_compat/__init__.py +41 -0
- fastapi/_compat/shared.py +206 -0
- fastapi/_compat/v2.py +568 -0
- fastapi/applications.py +4669 -0
- fastapi/background.py +60 -0
- fastapi/cli.py +13 -0
- fastapi/concurrency.py +41 -0
- fastapi/datastructures.py +183 -0
- fastapi/dependencies/__init__.py +0 -0
- fastapi/dependencies/models.py +193 -0
- fastapi/dependencies/utils.py +1021 -0
- fastapi/encoders.py +346 -0
- fastapi/exception_handlers.py +34 -0
- fastapi/exceptions.py +246 -0
- fastapi/logger.py +3 -0
- fastapi/middleware/__init__.py +1 -0
- fastapi/middleware/asyncexitstack.py +18 -0
- fastapi/middleware/cors.py +1 -0
- fastapi/middleware/gzip.py +1 -0
- fastapi/middleware/httpsredirect.py +3 -0
- fastapi/middleware/trustedhost.py +3 -0
- fastapi/middleware/wsgi.py +1 -0
- fastapi/openapi/__init__.py +0 -0
- fastapi/openapi/constants.py +3 -0
- fastapi/openapi/docs.py +344 -0
- fastapi/openapi/models.py +438 -0
- fastapi/openapi/utils.py +567 -0
- fastapi/param_functions.py +2369 -0
- fastapi/params.py +755 -0
- fastapi/py.typed +0 -0
- fastapi/requests.py +2 -0
- fastapi/responses.py +48 -0
- fastapi/routing.py +4508 -0
- fastapi/security/__init__.py +15 -0
- fastapi/security/api_key.py +318 -0
- fastapi/security/base.py +6 -0
- fastapi/security/http.py +423 -0
- fastapi/security/oauth2.py +663 -0
- fastapi/security/open_id_connect_url.py +94 -0
- fastapi/security/utils.py +10 -0
- fastapi/staticfiles.py +1 -0
- fastapi/templating.py +1 -0
- fastapi/testclient.py +1 -0
- fastapi/types.py +11 -0
- fastapi/utils.py +164 -0
- fastapi/websockets.py +3 -0
- fastapi-0.128.0.dist-info/METADATA +645 -0
- fastapi-0.128.0.dist-info/RECORD +53 -0
- fastapi-0.128.0.dist-info/WHEEL +4 -0
- fastapi-0.128.0.dist-info/entry_points.txt +5 -0
- fastapi-0.128.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
from collections.abc import Iterable, Mapping
|
|
2
|
+
from enum import Enum
|
|
3
|
+
from typing import Annotated, Any, Callable, Optional, Union
|
|
4
|
+
|
|
5
|
+
from fastapi._compat import with_info_plain_validator_function
|
|
6
|
+
from fastapi.logger import logger
|
|
7
|
+
from pydantic import (
|
|
8
|
+
AnyUrl,
|
|
9
|
+
BaseModel,
|
|
10
|
+
Field,
|
|
11
|
+
GetJsonSchemaHandler,
|
|
12
|
+
)
|
|
13
|
+
from typing_extensions import Literal, TypedDict
|
|
14
|
+
from typing_extensions import deprecated as typing_deprecated
|
|
15
|
+
|
|
16
|
+
try:
|
|
17
|
+
import email_validator
|
|
18
|
+
|
|
19
|
+
assert email_validator # make autoflake ignore the unused import
|
|
20
|
+
from pydantic import EmailStr
|
|
21
|
+
except ImportError: # pragma: no cover
|
|
22
|
+
|
|
23
|
+
class EmailStr(str): # type: ignore
|
|
24
|
+
@classmethod
|
|
25
|
+
def __get_validators__(cls) -> Iterable[Callable[..., Any]]:
|
|
26
|
+
yield cls.validate
|
|
27
|
+
|
|
28
|
+
@classmethod
|
|
29
|
+
def validate(cls, v: Any) -> str:
|
|
30
|
+
logger.warning(
|
|
31
|
+
"email-validator not installed, email fields will be treated as str.\n"
|
|
32
|
+
"To install, run: pip install email-validator"
|
|
33
|
+
)
|
|
34
|
+
return str(v)
|
|
35
|
+
|
|
36
|
+
@classmethod
|
|
37
|
+
def _validate(cls, __input_value: Any, _: Any) -> str:
|
|
38
|
+
logger.warning(
|
|
39
|
+
"email-validator not installed, email fields will be treated as str.\n"
|
|
40
|
+
"To install, run: pip install email-validator"
|
|
41
|
+
)
|
|
42
|
+
return str(__input_value)
|
|
43
|
+
|
|
44
|
+
@classmethod
|
|
45
|
+
def __get_pydantic_json_schema__(
|
|
46
|
+
cls, core_schema: Mapping[str, Any], handler: GetJsonSchemaHandler
|
|
47
|
+
) -> dict[str, Any]:
|
|
48
|
+
return {"type": "string", "format": "email"}
|
|
49
|
+
|
|
50
|
+
@classmethod
|
|
51
|
+
def __get_pydantic_core_schema__(
|
|
52
|
+
cls, source: type[Any], handler: Callable[[Any], Mapping[str, Any]]
|
|
53
|
+
) -> Mapping[str, Any]:
|
|
54
|
+
return with_info_plain_validator_function(cls._validate)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class BaseModelWithConfig(BaseModel):
|
|
58
|
+
model_config = {"extra": "allow"}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class Contact(BaseModelWithConfig):
|
|
62
|
+
name: Optional[str] = None
|
|
63
|
+
url: Optional[AnyUrl] = None
|
|
64
|
+
email: Optional[EmailStr] = None
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class License(BaseModelWithConfig):
|
|
68
|
+
name: str
|
|
69
|
+
identifier: Optional[str] = None
|
|
70
|
+
url: Optional[AnyUrl] = None
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class Info(BaseModelWithConfig):
|
|
74
|
+
title: str
|
|
75
|
+
summary: Optional[str] = None
|
|
76
|
+
description: Optional[str] = None
|
|
77
|
+
termsOfService: Optional[str] = None
|
|
78
|
+
contact: Optional[Contact] = None
|
|
79
|
+
license: Optional[License] = None
|
|
80
|
+
version: str
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class ServerVariable(BaseModelWithConfig):
|
|
84
|
+
enum: Annotated[Optional[list[str]], Field(min_length=1)] = None
|
|
85
|
+
default: str
|
|
86
|
+
description: Optional[str] = None
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
class Server(BaseModelWithConfig):
|
|
90
|
+
url: Union[AnyUrl, str]
|
|
91
|
+
description: Optional[str] = None
|
|
92
|
+
variables: Optional[dict[str, ServerVariable]] = None
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
class Reference(BaseModel):
|
|
96
|
+
ref: str = Field(alias="$ref")
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class Discriminator(BaseModel):
|
|
100
|
+
propertyName: str
|
|
101
|
+
mapping: Optional[dict[str, str]] = None
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
class XML(BaseModelWithConfig):
|
|
105
|
+
name: Optional[str] = None
|
|
106
|
+
namespace: Optional[str] = None
|
|
107
|
+
prefix: Optional[str] = None
|
|
108
|
+
attribute: Optional[bool] = None
|
|
109
|
+
wrapped: Optional[bool] = None
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
class ExternalDocumentation(BaseModelWithConfig):
|
|
113
|
+
description: Optional[str] = None
|
|
114
|
+
url: AnyUrl
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
# Ref JSON Schema 2020-12: https://json-schema.org/draft/2020-12/json-schema-validation#name-type
|
|
118
|
+
SchemaType = Literal[
|
|
119
|
+
"array", "boolean", "integer", "null", "number", "object", "string"
|
|
120
|
+
]
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
class Schema(BaseModelWithConfig):
|
|
124
|
+
# Ref: JSON Schema 2020-12: https://json-schema.org/draft/2020-12/json-schema-core.html#name-the-json-schema-core-vocabu
|
|
125
|
+
# Core Vocabulary
|
|
126
|
+
schema_: Optional[str] = Field(default=None, alias="$schema")
|
|
127
|
+
vocabulary: Optional[str] = Field(default=None, alias="$vocabulary")
|
|
128
|
+
id: Optional[str] = Field(default=None, alias="$id")
|
|
129
|
+
anchor: Optional[str] = Field(default=None, alias="$anchor")
|
|
130
|
+
dynamicAnchor: Optional[str] = Field(default=None, alias="$dynamicAnchor")
|
|
131
|
+
ref: Optional[str] = Field(default=None, alias="$ref")
|
|
132
|
+
dynamicRef: Optional[str] = Field(default=None, alias="$dynamicRef")
|
|
133
|
+
defs: Optional[dict[str, "SchemaOrBool"]] = Field(default=None, alias="$defs")
|
|
134
|
+
comment: Optional[str] = Field(default=None, alias="$comment")
|
|
135
|
+
# Ref: JSON Schema 2020-12: https://json-schema.org/draft/2020-12/json-schema-core.html#name-a-vocabulary-for-applying-s
|
|
136
|
+
# A Vocabulary for Applying Subschemas
|
|
137
|
+
allOf: Optional[list["SchemaOrBool"]] = None
|
|
138
|
+
anyOf: Optional[list["SchemaOrBool"]] = None
|
|
139
|
+
oneOf: Optional[list["SchemaOrBool"]] = None
|
|
140
|
+
not_: Optional["SchemaOrBool"] = Field(default=None, alias="not")
|
|
141
|
+
if_: Optional["SchemaOrBool"] = Field(default=None, alias="if")
|
|
142
|
+
then: Optional["SchemaOrBool"] = None
|
|
143
|
+
else_: Optional["SchemaOrBool"] = Field(default=None, alias="else")
|
|
144
|
+
dependentSchemas: Optional[dict[str, "SchemaOrBool"]] = None
|
|
145
|
+
prefixItems: Optional[list["SchemaOrBool"]] = None
|
|
146
|
+
# TODO: uncomment and remove below when deprecating Pydantic v1
|
|
147
|
+
# It generates a list of schemas for tuples, before prefixItems was available
|
|
148
|
+
# items: Optional["SchemaOrBool"] = None
|
|
149
|
+
items: Optional[Union["SchemaOrBool", list["SchemaOrBool"]]] = None
|
|
150
|
+
contains: Optional["SchemaOrBool"] = None
|
|
151
|
+
properties: Optional[dict[str, "SchemaOrBool"]] = None
|
|
152
|
+
patternProperties: Optional[dict[str, "SchemaOrBool"]] = None
|
|
153
|
+
additionalProperties: Optional["SchemaOrBool"] = None
|
|
154
|
+
propertyNames: Optional["SchemaOrBool"] = None
|
|
155
|
+
unevaluatedItems: Optional["SchemaOrBool"] = None
|
|
156
|
+
unevaluatedProperties: Optional["SchemaOrBool"] = None
|
|
157
|
+
# Ref: JSON Schema Validation 2020-12: https://json-schema.org/draft/2020-12/json-schema-validation.html#name-a-vocabulary-for-structural
|
|
158
|
+
# A Vocabulary for Structural Validation
|
|
159
|
+
type: Optional[Union[SchemaType, list[SchemaType]]] = None
|
|
160
|
+
enum: Optional[list[Any]] = None
|
|
161
|
+
const: Optional[Any] = None
|
|
162
|
+
multipleOf: Optional[float] = Field(default=None, gt=0)
|
|
163
|
+
maximum: Optional[float] = None
|
|
164
|
+
exclusiveMaximum: Optional[float] = None
|
|
165
|
+
minimum: Optional[float] = None
|
|
166
|
+
exclusiveMinimum: Optional[float] = None
|
|
167
|
+
maxLength: Optional[int] = Field(default=None, ge=0)
|
|
168
|
+
minLength: Optional[int] = Field(default=None, ge=0)
|
|
169
|
+
pattern: Optional[str] = None
|
|
170
|
+
maxItems: Optional[int] = Field(default=None, ge=0)
|
|
171
|
+
minItems: Optional[int] = Field(default=None, ge=0)
|
|
172
|
+
uniqueItems: Optional[bool] = None
|
|
173
|
+
maxContains: Optional[int] = Field(default=None, ge=0)
|
|
174
|
+
minContains: Optional[int] = Field(default=None, ge=0)
|
|
175
|
+
maxProperties: Optional[int] = Field(default=None, ge=0)
|
|
176
|
+
minProperties: Optional[int] = Field(default=None, ge=0)
|
|
177
|
+
required: Optional[list[str]] = None
|
|
178
|
+
dependentRequired: Optional[dict[str, set[str]]] = None
|
|
179
|
+
# Ref: JSON Schema Validation 2020-12: https://json-schema.org/draft/2020-12/json-schema-validation.html#name-vocabularies-for-semantic-c
|
|
180
|
+
# Vocabularies for Semantic Content With "format"
|
|
181
|
+
format: Optional[str] = None
|
|
182
|
+
# Ref: JSON Schema Validation 2020-12: https://json-schema.org/draft/2020-12/json-schema-validation.html#name-a-vocabulary-for-the-conten
|
|
183
|
+
# A Vocabulary for the Contents of String-Encoded Data
|
|
184
|
+
contentEncoding: Optional[str] = None
|
|
185
|
+
contentMediaType: Optional[str] = None
|
|
186
|
+
contentSchema: Optional["SchemaOrBool"] = None
|
|
187
|
+
# Ref: JSON Schema Validation 2020-12: https://json-schema.org/draft/2020-12/json-schema-validation.html#name-a-vocabulary-for-basic-meta
|
|
188
|
+
# A Vocabulary for Basic Meta-Data Annotations
|
|
189
|
+
title: Optional[str] = None
|
|
190
|
+
description: Optional[str] = None
|
|
191
|
+
default: Optional[Any] = None
|
|
192
|
+
deprecated: Optional[bool] = None
|
|
193
|
+
readOnly: Optional[bool] = None
|
|
194
|
+
writeOnly: Optional[bool] = None
|
|
195
|
+
examples: Optional[list[Any]] = None
|
|
196
|
+
# Ref: OpenAPI 3.1.0: https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object
|
|
197
|
+
# Schema Object
|
|
198
|
+
discriminator: Optional[Discriminator] = None
|
|
199
|
+
xml: Optional[XML] = None
|
|
200
|
+
externalDocs: Optional[ExternalDocumentation] = None
|
|
201
|
+
example: Annotated[
|
|
202
|
+
Optional[Any],
|
|
203
|
+
typing_deprecated(
|
|
204
|
+
"Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
|
|
205
|
+
"although still supported. Use examples instead."
|
|
206
|
+
),
|
|
207
|
+
] = None
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
# Ref: https://json-schema.org/draft/2020-12/json-schema-core.html#name-json-schema-documents
|
|
211
|
+
# A JSON Schema MUST be an object or a boolean.
|
|
212
|
+
SchemaOrBool = Union[Schema, bool]
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
class Example(TypedDict, total=False):
|
|
216
|
+
summary: Optional[str]
|
|
217
|
+
description: Optional[str]
|
|
218
|
+
value: Optional[Any]
|
|
219
|
+
externalValue: Optional[AnyUrl]
|
|
220
|
+
|
|
221
|
+
__pydantic_config__ = {"extra": "allow"} # type: ignore[misc]
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
class ParameterInType(Enum):
|
|
225
|
+
query = "query"
|
|
226
|
+
header = "header"
|
|
227
|
+
path = "path"
|
|
228
|
+
cookie = "cookie"
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
class Encoding(BaseModelWithConfig):
|
|
232
|
+
contentType: Optional[str] = None
|
|
233
|
+
headers: Optional[dict[str, Union["Header", Reference]]] = None
|
|
234
|
+
style: Optional[str] = None
|
|
235
|
+
explode: Optional[bool] = None
|
|
236
|
+
allowReserved: Optional[bool] = None
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
class MediaType(BaseModelWithConfig):
|
|
240
|
+
schema_: Optional[Union[Schema, Reference]] = Field(default=None, alias="schema")
|
|
241
|
+
example: Optional[Any] = None
|
|
242
|
+
examples: Optional[dict[str, Union[Example, Reference]]] = None
|
|
243
|
+
encoding: Optional[dict[str, Encoding]] = None
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
class ParameterBase(BaseModelWithConfig):
|
|
247
|
+
description: Optional[str] = None
|
|
248
|
+
required: Optional[bool] = None
|
|
249
|
+
deprecated: Optional[bool] = None
|
|
250
|
+
# Serialization rules for simple scenarios
|
|
251
|
+
style: Optional[str] = None
|
|
252
|
+
explode: Optional[bool] = None
|
|
253
|
+
allowReserved: Optional[bool] = None
|
|
254
|
+
schema_: Optional[Union[Schema, Reference]] = Field(default=None, alias="schema")
|
|
255
|
+
example: Optional[Any] = None
|
|
256
|
+
examples: Optional[dict[str, Union[Example, Reference]]] = None
|
|
257
|
+
# Serialization rules for more complex scenarios
|
|
258
|
+
content: Optional[dict[str, MediaType]] = None
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
class Parameter(ParameterBase):
|
|
262
|
+
name: str
|
|
263
|
+
in_: ParameterInType = Field(alias="in")
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
class Header(ParameterBase):
|
|
267
|
+
pass
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
class RequestBody(BaseModelWithConfig):
|
|
271
|
+
description: Optional[str] = None
|
|
272
|
+
content: dict[str, MediaType]
|
|
273
|
+
required: Optional[bool] = None
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
class Link(BaseModelWithConfig):
|
|
277
|
+
operationRef: Optional[str] = None
|
|
278
|
+
operationId: Optional[str] = None
|
|
279
|
+
parameters: Optional[dict[str, Union[Any, str]]] = None
|
|
280
|
+
requestBody: Optional[Union[Any, str]] = None
|
|
281
|
+
description: Optional[str] = None
|
|
282
|
+
server: Optional[Server] = None
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
class Response(BaseModelWithConfig):
|
|
286
|
+
description: str
|
|
287
|
+
headers: Optional[dict[str, Union[Header, Reference]]] = None
|
|
288
|
+
content: Optional[dict[str, MediaType]] = None
|
|
289
|
+
links: Optional[dict[str, Union[Link, Reference]]] = None
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
class Operation(BaseModelWithConfig):
|
|
293
|
+
tags: Optional[list[str]] = None
|
|
294
|
+
summary: Optional[str] = None
|
|
295
|
+
description: Optional[str] = None
|
|
296
|
+
externalDocs: Optional[ExternalDocumentation] = None
|
|
297
|
+
operationId: Optional[str] = None
|
|
298
|
+
parameters: Optional[list[Union[Parameter, Reference]]] = None
|
|
299
|
+
requestBody: Optional[Union[RequestBody, Reference]] = None
|
|
300
|
+
# Using Any for Specification Extensions
|
|
301
|
+
responses: Optional[dict[str, Union[Response, Any]]] = None
|
|
302
|
+
callbacks: Optional[dict[str, Union[dict[str, "PathItem"], Reference]]] = None
|
|
303
|
+
deprecated: Optional[bool] = None
|
|
304
|
+
security: Optional[list[dict[str, list[str]]]] = None
|
|
305
|
+
servers: Optional[list[Server]] = None
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
class PathItem(BaseModelWithConfig):
|
|
309
|
+
ref: Optional[str] = Field(default=None, alias="$ref")
|
|
310
|
+
summary: Optional[str] = None
|
|
311
|
+
description: Optional[str] = None
|
|
312
|
+
get: Optional[Operation] = None
|
|
313
|
+
put: Optional[Operation] = None
|
|
314
|
+
post: Optional[Operation] = None
|
|
315
|
+
delete: Optional[Operation] = None
|
|
316
|
+
options: Optional[Operation] = None
|
|
317
|
+
head: Optional[Operation] = None
|
|
318
|
+
patch: Optional[Operation] = None
|
|
319
|
+
trace: Optional[Operation] = None
|
|
320
|
+
servers: Optional[list[Server]] = None
|
|
321
|
+
parameters: Optional[list[Union[Parameter, Reference]]] = None
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
class SecuritySchemeType(Enum):
|
|
325
|
+
apiKey = "apiKey"
|
|
326
|
+
http = "http"
|
|
327
|
+
oauth2 = "oauth2"
|
|
328
|
+
openIdConnect = "openIdConnect"
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
class SecurityBase(BaseModelWithConfig):
|
|
332
|
+
type_: SecuritySchemeType = Field(alias="type")
|
|
333
|
+
description: Optional[str] = None
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
class APIKeyIn(Enum):
|
|
337
|
+
query = "query"
|
|
338
|
+
header = "header"
|
|
339
|
+
cookie = "cookie"
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
class APIKey(SecurityBase):
|
|
343
|
+
type_: SecuritySchemeType = Field(default=SecuritySchemeType.apiKey, alias="type")
|
|
344
|
+
in_: APIKeyIn = Field(alias="in")
|
|
345
|
+
name: str
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
class HTTPBase(SecurityBase):
|
|
349
|
+
type_: SecuritySchemeType = Field(default=SecuritySchemeType.http, alias="type")
|
|
350
|
+
scheme: str
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
class HTTPBearer(HTTPBase):
|
|
354
|
+
scheme: Literal["bearer"] = "bearer"
|
|
355
|
+
bearerFormat: Optional[str] = None
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
class OAuthFlow(BaseModelWithConfig):
|
|
359
|
+
refreshUrl: Optional[str] = None
|
|
360
|
+
scopes: dict[str, str] = {}
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
class OAuthFlowImplicit(OAuthFlow):
|
|
364
|
+
authorizationUrl: str
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
class OAuthFlowPassword(OAuthFlow):
|
|
368
|
+
tokenUrl: str
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
class OAuthFlowClientCredentials(OAuthFlow):
|
|
372
|
+
tokenUrl: str
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
class OAuthFlowAuthorizationCode(OAuthFlow):
|
|
376
|
+
authorizationUrl: str
|
|
377
|
+
tokenUrl: str
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
class OAuthFlows(BaseModelWithConfig):
|
|
381
|
+
implicit: Optional[OAuthFlowImplicit] = None
|
|
382
|
+
password: Optional[OAuthFlowPassword] = None
|
|
383
|
+
clientCredentials: Optional[OAuthFlowClientCredentials] = None
|
|
384
|
+
authorizationCode: Optional[OAuthFlowAuthorizationCode] = None
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
class OAuth2(SecurityBase):
|
|
388
|
+
type_: SecuritySchemeType = Field(default=SecuritySchemeType.oauth2, alias="type")
|
|
389
|
+
flows: OAuthFlows
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
class OpenIdConnect(SecurityBase):
|
|
393
|
+
type_: SecuritySchemeType = Field(
|
|
394
|
+
default=SecuritySchemeType.openIdConnect, alias="type"
|
|
395
|
+
)
|
|
396
|
+
openIdConnectUrl: str
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
SecurityScheme = Union[APIKey, HTTPBase, OAuth2, OpenIdConnect, HTTPBearer]
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
class Components(BaseModelWithConfig):
|
|
403
|
+
schemas: Optional[dict[str, Union[Schema, Reference]]] = None
|
|
404
|
+
responses: Optional[dict[str, Union[Response, Reference]]] = None
|
|
405
|
+
parameters: Optional[dict[str, Union[Parameter, Reference]]] = None
|
|
406
|
+
examples: Optional[dict[str, Union[Example, Reference]]] = None
|
|
407
|
+
requestBodies: Optional[dict[str, Union[RequestBody, Reference]]] = None
|
|
408
|
+
headers: Optional[dict[str, Union[Header, Reference]]] = None
|
|
409
|
+
securitySchemes: Optional[dict[str, Union[SecurityScheme, Reference]]] = None
|
|
410
|
+
links: Optional[dict[str, Union[Link, Reference]]] = None
|
|
411
|
+
# Using Any for Specification Extensions
|
|
412
|
+
callbacks: Optional[dict[str, Union[dict[str, PathItem], Reference, Any]]] = None
|
|
413
|
+
pathItems: Optional[dict[str, Union[PathItem, Reference]]] = None
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
class Tag(BaseModelWithConfig):
|
|
417
|
+
name: str
|
|
418
|
+
description: Optional[str] = None
|
|
419
|
+
externalDocs: Optional[ExternalDocumentation] = None
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
class OpenAPI(BaseModelWithConfig):
|
|
423
|
+
openapi: str
|
|
424
|
+
info: Info
|
|
425
|
+
jsonSchemaDialect: Optional[str] = None
|
|
426
|
+
servers: Optional[list[Server]] = None
|
|
427
|
+
# Using Any for Specification Extensions
|
|
428
|
+
paths: Optional[dict[str, Union[PathItem, Any]]] = None
|
|
429
|
+
webhooks: Optional[dict[str, Union[PathItem, Reference]]] = None
|
|
430
|
+
components: Optional[Components] = None
|
|
431
|
+
security: Optional[list[dict[str, list[str]]]] = None
|
|
432
|
+
tags: Optional[list[Tag]] = None
|
|
433
|
+
externalDocs: Optional[ExternalDocumentation] = None
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
Schema.model_rebuild()
|
|
437
|
+
Operation.model_rebuild()
|
|
438
|
+
Encoding.model_rebuild()
|