Package overview¶
drf_spectacular.utils¶
-
class
drf_spectacular.utils.
OpenApiExample
(name: str, value: Optional[Any] = None, external_value: str = '', summary: str = '', description: str = '', request_only: bool = False, response_only: bool = False, media_type: str = 'application/json', status_codes: Optional[List[str]] = None)¶ Bases:
drf_spectacular.utils.OpenApiSchemaBase
- https://swagger.io/specification/
- Specification
- Schema
ExampleObject
-
class
drf_spectacular.utils.
OpenApiParameter
(name, type=<class 'str'>, location='query', required=False, description='', enum=None, deprecated=False, style=None, explode=None, examples: Optional[List[drf_spectacular.utils.OpenApiExample]] = None, exclude=False)¶ Bases:
drf_spectacular.utils.OpenApiSchemaBase
-
COOKIE
= 'cookie'¶
-
HEADER
= 'header'¶
-
PATH
= 'path'¶
-
QUERY
= 'query'¶
-
-
class
drf_spectacular.utils.
OpenApiSchemaBase
¶ Bases:
object
-
class
drf_spectacular.utils.
PolymorphicProxySerializer
(component_name: str, serializers: Union[List[Union[rest_framework.serializers.Serializer, Type[rest_framework.serializers.Serializer]]], Dict[str, Union[rest_framework.serializers.Serializer, Type[rest_framework.serializers.Serializer]]]], resource_type_field_name: str)¶ Bases:
object
This class is to be used with
@extend_schema
to signal a request/response might be polymorphic (accepts/returns data possibly from different serializers). Usage usually looks like this:@extend_schema( request=PolymorphicProxySerializer( component_name='MetaPerson', serializers=[ LegalPersonSerializer, NaturalPersonSerializer, ], resource_type_field_name='person_type', ) ) def create(self, request, *args, **kwargs): return Response(...)
Beware that this is not a real serializer and therefore is not derived from serializers.Serializer. It cannot be used in views as serializer_class or as field in a actual serializer. You likely want to handle this in the view method.
Also make sure that each sub-serializer has a field named after the value of
resource_type_field_name
(discriminator field). Generated clients will likely depend on the existence of this field.For that reason, it is strongly recommended to pass the
Serializers
as list, and by that let drf-spectacular retrieve the field and handle the mapping automatically. In special circumstances, the field may not available when drf-spectacular processes the serializer. In those cases you can explicitly state the mapping with{'legal': LegalPersonSerializer, ...}
, but it is then your responsibility to have a valid mapping.
-
drf_spectacular.utils.
extend_schema
(operation_id=None, parameters=None, request=<class 'rest_framework.fields.empty'>, responses=<class 'rest_framework.fields.empty'>, auth=None, description=None, summary=None, deprecated=None, tags=None, exclude=False, operation=None, methods=None, versions=None, examples: Optional[List[drf_spectacular.utils.OpenApiExample]] = None)¶ decorator mainly for the “view” method kind. partially or completely overrides what would be generated by drf-spectacular.
- Parameters
operation_id – replaces the auto-generated operation_id. make sure there are no naming collisions.
parameters – list of additional or replacement parameters added to the auto-discovered fields.
responses –
replaces the discovered Serializer. Takes a variety of inputs that can be used individually or combined
Serializer
classSerializer
instance (e.g.Serializer(many=True)
for listings)dict
with status codes as keys and Serializers as values.dict
with tuple (status_code, media_type) as keys and Serializers as values.PolymorphicProxySerializer
for signaling that the operation may yield data from different serializers depending on the circumstances.
request – replaces the discovered
Serializer
.auth –
description – replaces discovered doc strings
summary – an optional short summary of the description
deprecated – mark operation as deprecated
tags – override default list of tags
exclude – set True to exclude operation from schema
operation – manually override what auto-discovery would generate. you must provide a OpenAPI3-compliant dictionary that gets directly translated to YAML.
methods – scope extend_schema to specific methods. matches all by default.
versions – scope extend_schema to specific API version. matches all by default.
examples – attach request/response examples to the operation
- Returns
-
drf_spectacular.utils.
extend_schema_field
(field, component_name=None)¶ Decorator for the “field” kind. Can be used with
SerializerMethodField
(annotate the actual method) or with customserializers.Field
implementations.If your custom serializer field base class is already the desired type, decoration is not necessary. To override the discovered base class type, you can decorate your custom field class.
Always takes precedence over other mechanisms (e.g. type hints, auto-discovery).
- Parameters
field – accepts a
Serializer
,OpenApiTypes
or rawdict
component_name – signals that the field should be broken out as separate component
-
drf_spectacular.utils.
extend_schema_serializer
(many=None, exclude_fields=None, examples: Optional[List[drf_spectacular.utils.OpenApiExample]] = None)¶ Decorator for the “serializer” kind. Intended for overriding default serializer behaviour that cannot be influenced through .extend_schema.
- Parameters
many – override how serializer is initialized. Mainly used to coerce the list view detection heuristic to acknowledge a non-list serializer.
exclude_fields – fields to ignore while processing the serializer. only affects the schema. fields will still be exposed through the API.
examples – define example data to serializer.
-
drf_spectacular.utils.
extend_schema_view
(**kwargs)¶ Convenience decorator for the “view” kind. Intended for annotating derived view methods that are are not directly present in the view (usually methods like
list
orretrieve
). Spares you from overriding methods likelist
, only to perform a super call in the body so that you have have something to attach@extend_schema
to.- Parameters
kwargs – method names as argument names and
extend_schema()
calls as values
-
drf_spectacular.utils.
inline_serializer
(name: str, fields: Dict[str, object], **kwargs) → Union[rest_framework.serializers.Serializer, Type[rest_framework.serializers.Serializer]]¶ A helper function to create an inline serializer. Primary use is with @extend_schema, where one needs an implicit one-off serializer that is not reflected in an actual class.
- Parameters
name – name of the
fields – dict with field names as keys and serializer fields as values
kwargs – optional kwargs for serializer initialization
drf_spectacular.types¶
-
class
drf_spectacular.types.
OpenApiTypes
(value)¶ Basic types known to the OpenApi specification or at least common format extension of it.
Use BYTE for base64 encoded data wrapped in a string
Use BINARY for raw binary data
Use OBJECT for arbitrary free-form object (usually a dict)
-
BINARY
= 7¶
-
BOOL
= 4¶
-
BYTE
= 6¶
-
DATE
= 19¶
-
DATETIME
= 18¶
-
DECIMAL
= 17¶
-
DOUBLE
= 3¶
-
EMAIL
= 21¶
-
FLOAT
= 2¶
-
HOSTNAME
= 16¶
-
INT
= 9¶
-
INT32
= 10¶
-
INT64
= 11¶
-
IP4
= 14¶
-
IP6
= 15¶
-
NONE
= 23¶
-
NUMBER
= 1¶
-
OBJECT
= 22¶
-
PASSWORD
= 8¶
-
STR
= 5¶
-
TIME
= 20¶
-
URI
= 13¶
-
UUID
= 12¶
drf_spectacular.views¶
drf_spectacular.extensions¶
-
class
drf_spectacular.extensions.
OpenApiAuthenticationExtension
(target)¶ Bases:
drf_spectacular.plumbing.OpenApiGeneratorExtension
[OpenApiAuthenticationExtension
]-
abstract
get_security_definition
(auto_schema)¶
-
get_security_requirement
(auto_schema)¶
-
name
: str¶
-
abstract
-
class
drf_spectacular.extensions.
OpenApiFilterExtension
(target)¶ Bases:
drf_spectacular.plumbing.OpenApiGeneratorExtension
[OpenApiFilterExtension
]-
abstract
get_schema_operation_parameters
(auto_schema, *args, **kwargs)¶
-
abstract
-
class
drf_spectacular.extensions.
OpenApiSerializerExtension
(target)¶ Bases:
drf_spectacular.plumbing.OpenApiGeneratorExtension
[OpenApiSerializerExtension
]-
get_name
() → Optional[str]¶ return str for overriding default name extraction
-
map_serializer
(auto_schema, direction)¶ override for customized serializer mapping
-
-
class
drf_spectacular.extensions.
OpenApiSerializerFieldExtension
(target)¶ Bases:
drf_spectacular.plumbing.OpenApiGeneratorExtension
[OpenApiSerializerFieldExtension
]-
abstract
map_serializer_field
(auto_schema, direction)¶
-
abstract
-
class
drf_spectacular.extensions.
OpenApiViewExtension
(target)¶ Bases:
drf_spectacular.plumbing.OpenApiGeneratorExtension
[OpenApiViewExtension
]-
abstract
view_replacement
()¶
-
abstract
drf_spectacular.hooks¶
-
drf_spectacular.hooks.
postprocess_schema_enums
(result, generator, **kwargs)¶ simple replacement of Enum/Choices that globally share the same name and have the same choices. Aids client generation to not generate a separate enum for every occurrence. only takes effect when replacement is guaranteed to be correct.
-
drf_spectacular.hooks.
preprocess_exclude_path_format
(endpoints, **kwargs)¶ preprocessing hook that filters out {format} suffixed paths, in case format_suffix_patterns is used and {format} path params are unwanted.