- Fix lazy_reverse bug in views (#1339)
- Extend query params explosion of non-DRF serializer #1315
- consider pk_field on PrimaryKeyRelatedField when set #1335
- fix unused OAuth2 scopes override #1319
- bugfix @extend_schema_field raw schema already in OAS3.1
- some minors (resolves #1147)
- fix OAS3.1 validator omission #1302
- guard against broken __dir__ impl #1296
- Add Django 5.1 as classifier [jelmert]
- No extra items in the oneOf list [Vladimir]
- parametrize component registry identity #1288
- make operation_id action position configurable #1264
- Fix for incorrect
issubclass()
check. [Mike Moore] - Correct the documentation of how to import extension snippets [Alan Crosswell]
- Update OpenAPI docs links [Nils Van Zuijlen]
- mitigate false positive in Django Debug Toolbar #1159
- Additional testcase [Marti Raudsepp]
- Fix ChoiceField schema type with empty
choices=[]
[Marti Raudsepp] - handle examples with nested properties pagination [François Rejeté]
- add choice field display method handling #1228
- Add support for stateless user authentication in SimpleJWT (#1221) [Willem Meints]
- fix: set pydantic json mode to serialization [Eric Butler]
- fix: extend_schema_field with dict param and oas 3.1 [Eric Butler]
Breaking changes / important additions:
- Y-stream release due to the amount of small but important changes.
- Pydantic users might see a slightly different schema due to the change in serialization method.
- fix non-translated enum override hash #1198
- higher order hints for @extend_schema_field (case 2) #1174 #1212
- Add support for TypeAliasType (#1214) [igorgaming]
- DRF 3.15 counteract new assertion for tests
- Add a specific Action Wrapper for OAuth Authorization requests #1190 [Bram Esposito]
- Update SWAGGER_UI_DIST settings.rst [Alfie Day]
- fix custom http_method_names for actions #1184
- Add support for direct usage of higher order hints #1174
- Document
extend_schema_view
support for@action
(#1178) [johnthagen] - remove official 3.6 support due to upstream breakage.
- Add auth extension for django-rest-knox [Callum Gare]
- fix yaml encoder for OrderedDict objects #1158
- fix linter warning #1158
- Update link to redoc settings [Andrey Otto]
- Add tags support to OpenApiWebhook [Federico Bond]
- set Cross-Origin-Opener-Policy on Swagger-UI view [ftsell]
Breaking changes / important additions:
- Some bugfixes and some functionality gaps closed.
- differentiate test cases for 3.1 null cases #1139
- add enum suffix setting [Jonny Beaumont]
- Fix handling of metadata when using OAS 3.1 [Viicos]
- Provide all fixed field names for the components object [Sergei Maertens]
- coerse Decimal to float format explicitly #1134
- bugfix test #1133
- add OAS 3.1 null translation case #1133
- Add OpenAPI 3.1 webhook support [Federico Bond]
- add OAS 3.1 null case
Breaking changes / important additions:
- Fixed some OAS 3.1 corner cases and added support for
Webhooks
(3.1) in addition to existingCallbacks
- improve mypy typing #600
- add django 5 to test suite and adapt to changes #1126
- Use correctly allowed http methods for schema generation [Jekel]
- OAS 3.1
- Fix Enum collision with same choices & varying labels #790 #1104
- Undo adding middleware [Jelmer Draaijer]
- Set JWTTokenUserAuthentication to None when missing [Jelmer Draaijer]
- Add setuptools required for packaging [Jelmer Draaijer]
- Add allauth.account.middleware.AccountMiddleware to middleware [Jelmer Draaijer]
- Add Python 3.12 to test matrix and add classifiers [Jelmer Draaijer]
- Add official support for pydantic decoration.
- bugfix ignored OpenApiRequest case #1106
- JSONField may also be a non-object/primitive #1095
- add test for empty whitelist (no auth) #1094
- Avoid ChoiceField duplicate enum values for allow_null, allow_blank (#1085) [Marti Raudsepp]
- add test for django-filter and ListAPIView #1086
- Fix the blueprint for pydantic version 2 [Carmen Alvarez]
Breaking changes / important additions:
- Biggest release in quite some time that contains a bunch of long running PR that finally found their way into master.
- We now officially support OpenAPI 3.1 and Pydantic 2
- Quite a few bug fixes (thanks to all contributors) and improved typing
- update FAQ entry on extension loading
- Fix (#1079) crash when generating schema for field with UUID choices. [Pedro Borges]
- chore: fix typos [Heinz-Alexander Fuetterer]
- Use schema_url in SpectacularElementsView (#1067) [q0w]
- add helper to disable viewset list detection #1064
- pin django-allauth test dep due to breaking change with dj-rest-auth
- fix example building for pagination with basic list #1055
- Fix discarded falsy examples values #1049
Breaking changes / important additions:
- Added helper function
forced_singular_serializer
to disable a list detection on a endpoint, that has been quite difficult to properly undo previously. This closes the functional gap for@extend_schema_serializer(many=False)
in single-use (non-envelope) situations. - Several small bugfixes
- fix django-polymorphic empty serializer case #1029 #542
- Add a blueprint for pydantic 2 [Carmen Alvarez]
- bugfix exclude behavior on subclassing #1025
- relax django-filter subclassing restriction #1022
- factor out serializer name estimation for easier modification #976
- Fixing Pydantic Extension (#1021) [sydney-runkle]
- add Authorization header for oauth2 Bearer token [Danial]
- allow already supported lazy string in types #982
Breaking changes / important additions:
- some minor bugfixes as well as improvements to
django-filter
anddjango-polymorphic
. - it is now significantly easier to adapt serializer naming via
AutoSchema
subclassing.
- allow implicit list expansion of PolymorphicProxySerializer #995
- selectively distinguish real serializers from mocked ones #1006
- fix functionality gap for decoration of django-filter fields #1007
- add pydantic blueprint
- robustify subclass check in extensions #1006
- Prevent exception for non-serializer classes targeted by SerializerExtensions #1006
- add middleware support for djangorestframework_camel_case
- close functionality gap in drf dataclasses naming #1004
- fix: Camelize query parameters [v.kovalchuk]
- docs(examples): Fix wrong bool value in example [schew2381]
- bugfix test #991
- bugfix duplicate enum list for django-filter #991
- dj-rest-auth test changes 3.x -> 4.x
- Add blocks to redoc template #978
Breaking changes / important additions:
- no major changes but a multiude of small improvements.
- we are now a lot more tolerant when it comes to writing extensions for non-standard classes (e.g. Pydantic).
- there should be no unexpected schema changes except for when
djangorestframework_camel_case
's Middleware is used.
- fix jwt cookie name settings not being recognised (#972) [Nix Siow]
- Add OpenApiRequest for encoding options #714 #965
Breaking changes / important additions:
- small bugfix release that also contains the new
OpenApiRequest
feature
- reorder typed polymorphic fields #958
- Fix test warnings [Dmitry Gribanov]
- Fix PolymorphicSerializer type field handling #885 #958
- Add PresentablePrimarKeyRelatedField schema for drf-exrta-fields blueprint [Đào Minh Hạt]
- bugfix KeyError for disabled ENUM_GENERATE_CHOICE_DESCRIPTION #952
Breaking changes / important additions:
- small bugfix release that addresses a issue when turning off choice description generation
- improve/bugfix
PolymorphicSerializer
type field handling
- honor djangorestframework_camel_case settings "ignore_keys" and "ignore_fields" #945
- If available, use docstrings from properties for field descriptions (#954)
- Don't let validators override values already set in the schema (#911) [StopMotionCuber]
- add test and another case to #901
- add enum key/value list to description string #337 #403 #105 #563
- Add option to provide a callable for PolymorphicProxySerializer.serializers [Glenn Matthews]
- consolidate sort fix for enum sorting
- add testcase to #950. ensure raw schema dict remains unmodified
- Don't edit the original django-filters schema. [Will Giddens]
- Fix typos and grammar errors in FAQ doc page. [Foad Lind]
- fix OpenApiResponse nested example defaults #875
- mitigate
runtests.py
fail when GDAL library is not installed #945 #821 #775 #777 - bugfix SlugRelatedField with a model property target #943
- suppress erroneous warning for optional extensions #940
- fix whitelist mechanics (enables deny all) #923
- mitigate many=True with default array value #936
- fix dj-rest-auth>=3.0.0 breaking changes #937
- Update plumbing.py
- add swagger UI template blocks for customization [Jan Lis]
- Add support for drf ReturnList and ReturnDict hint [zengqiu]
- add example/test for DynamicFieldsModelSerializer #375 #912
- adapt test schema for dj-rest-auth 2.2.6
- clarify docs for postproc hook mechanics #908
- Add test for custom serializer field pagination #904
- fix: let use a default value for foreignkey model field [Frederic de Zorzi]
Breaking changes / important additions:
- A lot of bug fixes and a few feature additions.
- We now render a descriptive
Enum
key/value list into the description by default. Opt-out with new settingENUM_GENERATE_CHOICE_DESCRIPTION
. - Beware that we now extract more docstrings. Check your schema diff on update whether you are now leaking unintended information.
- The
whitelist
mechanics changed slightly on what is considered default behavior. - Fix a breaking change in
dj-rest-auth>=3.0.0
- It should not be possible to run the tests without installing system libraries like GDAL for the contrib tests
- Fix warning source line performance regression #889 #897
- improve warning for transient @api_view objects #889
- adapt package arg due to setuptools deprecation #786
- utilize queryset for SlugRelatedField #897
Breaking changes / important additions:
- Bugfix release that addresses a performance regression in
SpectacularApiView
and an oversight in the now stricter handling ofSlugRelatedField
- Fix missing description for ManyRelatedField and tested for SlugField (#895) [StopMotionCuber]
- Simplify hashable_values #833
- Add custom settings to CLI (view parity) #892
- fix function misnomer #891
- improve trace messages / warnings & add color #866
- Treat SlugRelatedField analog to PrimaryKeyRelatedField #854
- Include filename in call to _get_sidecar_url [Justin Spencer]
- add django-parler blueprint #887
- add a view to handle SwaggerUI oauth callbacks (#882) [Finn-Thorben Sell]
- improve documentation
- Introduce setting DEFAULT_QUERY_MANAGER to allow other managers for querset retrieval
- fix flake8 6.0.0 breaking change
- fix example list detection (symmetry with schema) #872
- Use direct view methods for getting serializer instances [Numerlor]
- name overrides for rest_framework_dataclasses #839
- decouple TypedDict class from Py version #861 #654
- bugfix djangorestframework_camel_case #861
- bugfix djangorestframework_camel_case nested object handling #861
- Utils: Replace
List[]
withSequence[]
, because of Mypy note 'List is invariant. Consider using Sequence instead.' [Hans Aarne Liblik] - Fixed minor typos [Conrad]
- Removing blank and null keys when generating the overridden choices hash to match the hash generation logic in the enum post processor hook [Trent Holliday]
- fix test fixture overlap #826
- specify min patch release for DRF (fixes #812)
- Preserve context in
get_list_serializer
. [Brady Dean] - Allow field extensions to return None from map_serializer_field [Andrew Backer]
Breaking changes / important additions:
- Officially set the lower bound for DRF version to
3.10.3
- Refactored the CLI warning system for better code navigation / orientation, GUI support and color!
- Some minor mechanics changes, several overall improvements, feature additions, and a few bugfixes.
Breaking changes / important additions:
- Hotfix release to mitigate optional GDAL import errors for django-filter.
- bugfix GeometryFilter for GIS and django-filter #814
- NullBooleanField comment and add 3.14.0 to test suite #818
- fix: #816 NullBooleanField does not exist in DRF >= 3.14.0 [Laurent Tramoy]
- fix GIS source lookup with hops #813
- Add blueprint for Stoplight Elements docs UI [Alex Burgel]
- fix OpenApiParameter enum and pattern for many=True #808
Breaking changes / important additions:
- Hotfix release to mitigate removal of
NullBooleanField
in DRF 3.14.0 - Small fixes to OpenApiParameter and
django-filter
- fix yaml serialization error on Django SafeString #802
- mitigate DRF bug in ObtainAuthToken < 3.12.0 #796
- add FAQ entry for django-csp errors #173 #797
- bugfix TokenMatchesOASRequirements #469 and JWTCookieAuthentication #626
- add custom redoc settings option
- fix error with PrimaryKeyRelatedField on non-ModelSerializer #353
- provide context to serializer for @extend_schema use-cases #699
- add example value hint to doc #788
- fix packages= so top_level.txt is correct [anthony sottile]
- Adding documentation for the OpenApiParameter 'many' argument [Paul Wayper]
- Extend OpenApiSerializerExtension interface. #392 #705
- Include context with request when instantiating serializers [Mike Hansen]
Breaking changes / important additions:
- Some minor gaps closed in the extension interface and serializer context initialization. It is a y-stream release, because there remains a small chance of change for users that sport non-standard customizations.
- improve CAMELIZE_NAMES doc #774
- move import into build_geo_schema function [bidaya0]
Breaking changes / important additions:
- Hotfix release to mitigate unwanted import of optional GIS features that depend on GDAL. GDAL is not a new requirement.
- fix infinite recursion when accessing missing attributes in generator stats [Oleg Hoefling]
- fix list pagination when examples are provided [topher235]
- accept integer status codes in OpenApiExample [Nicholas Guriev]
- Missing ":" in example documentation [Josué Millán Zamora]
- Flip direction for callbacks serializers [Justas]
- grammar fix [Kojo Idrissa]
- fix sidecar for alternate staticfile storages #718
- add support for
rest_framework_gis
- add mechanism to handle custom ListSerializers with extensions
- Update based on review [johnthagen]
- Hyphenate in-memory [johnthagen]
- Add FAQ entry for how to serve in-memory generated files [johnthagen]
- add pattern to OpenApiParameter #738
- Add test that extend_schema_field on django-filter is not modified [Take Weiland]
- Do not forcefully overwrite enum setting on custom django-filter schema [Take Weiland]
- django-filter: Enable type extraction fallback for MultipleChoiceFilter as well [Take Weiland]
- Add examples camelization note to settings.py [Zac Miller]
- fix codecov badge url issue on github #713
Breaking changes / important additions:
- A whole bunch of smaller bug fixes.
- OpenAPI Callbacks should now be production ready
- Introduction of
rest_framework_gis
support. This might impact APIs that are using GIS so this is a y-stream release.
- Update customization.rst [Lane Zhang]
- Remove invalid example in drf-yasg migration documentation. [Nick Pope]
- Avoid using default role in documentation. [Nick Pope]
- Small documentation fixes. [Nick Pope]
- improve parameter many handling and warnings #703
- bugfix unconsidered warnings/errors for return code #706 #702
- Include a list of applications urls as a parameter for SERVE_URLCONF #709 [anoirak]
- bugfix/improve analyze_named_regex_pattern(path) #697 [Jon Iturmendi]
- django-filter: added type extraction fallback for ChoiceFields #690
- fix test, more precise naming, also wrap validation #693
- bugfix PolymorphicProxySerializer many handling and add manual mode #692
- Use Django management CommandError to eliminate the traceback on error [Brandon W Maister]
- add
swagger_fake_view
FAQ entry #321 - Fix #688 - avoid a TypeError when ChoiceFilter choices are a callable [Glenn Matthews]
- map explicit float hints/decoration to double #687 #674
Breaking changes / important additions:
- Small release consisting of minor bug fixes, improved
PolymorphicProxySerializer
, cleaned up documentation, and some improvements to django-filter
- Added
detype_patterns()
with@cache
. [Nick Pope] - add "externalDocs" to operation via extend_schema #681
- warn on invalid components names #685
- wrap examples in list/pagination when serializer is many=True #641 #640 #595
- python's and django's float is really "double precision" #674
- Support negative numbers in pattern regex for coerced decimal fields [Mike Hansen]
- add OpenAPI callback operations #665
- Keep the urlpatterns in the apiview and pass it to the generator [Jorge Cardona]
- django-filter: raise priority of explicitly given filter method type hints #660
- also allow @extend_schema_field on django-filter filter method #660
- accommodate pyright limitations #657
- fix doc extraction for built-in types #654
- use get_doc for description [Josh Ferge]
- add more information to resolved TypedDicts [Josh Ferge]
- fix url escaping bug introduced in #556 (#650)
- pass through version from UI to schema endpoint #650
- factor out schema_url generation #650
- relax AcceptHeaderVersioning constraint for modification #650
- Enable the use of lists in extend_schema_view() [François Travais]
Breaking changes / important additions:
- This is a y-stream release with a lot of bugfixes, some new features and potentially small schema changes (if affected features are used).
- Examples are now wrapped in pagination/lists when endpoint/serializer is
many=True
- django-filter had some internal restructuring and thus overrides are now always honored.
- added callback functionality (EXPERIMENTAL and subject to change due to pending issue)
- Many thanks to all the contributors!
- Add support for djangorestframework-dataclasses [Oxan van Leeuwen]
- add version to schema for AcceptHeaderVersioning #637
- FAQ for @api_view #635
- add extensions for dj_rest_auth's JWTCookieAuthentication #626
Breaking changes / important additions:
- Some minor bugfixes and feature additions. Schemas using AcceptHeaderVersioning contain a small change.
- add root level extension setting #619
- ease schema browser handling with "Content-Disposition" #607
- custom settings per SpectacularAPIView instance #365
- Support new X | Y union syntax in Python 3.10 (PEP 604) [Marti Raudsepp]
- upstream release updates, compat test fix for jwt, consistency fix
- add blueprint for django-auth-adfs [1110sillabo]
- use is_list_serializer instead of isinstance() [Roman Sichnyi]
- Fix schema generation for RecursiveField(many=True) [Roman Sichnyi]
- enable clearing auth methods with empty list #99
- Fix typos in the code example [Marcin Kurczewski]
Breaking changes / important additions:
- Some minor bugfixes and small feature additions. No large schema changes are expected
- add renderer & parser whitelist setting #598
- catch attr exception for invalid SerializerMethodField #592
- add regression test for catch-all status codes #573
- bugfix OpenApiResponse without description argument #591
- introduce direction literal / import consolidation #582
- mitigate CORS issues for external requests in Swagger UI #588
- Swagger UI authorized schema retrieval #342 #458
- remove cyclic import warning as fixes haves mitigated the issue. #581
- bugfix: anchor parameter patterns with ^$
- bugfix isolation of derivatives for @extend_schema_serializer/@extend_schema_field #585
- add support for djangorestframework-recursive #586
- Add blueprint for drf-extra-fields Base64FileField [johnthagen]
- Add note about extensions registering themselves [johnthagen]
- Document alternative to drf-yasg swagger_schema_field [johnthagen]
- allow to bypass list detection for filter discovery #407
- add blueprint (closes #448), fix test misnomer
- non-blank string enforcement for parameters #282
- add setting ENFORCE_NON_BLANK_FIELDS to enable blank checks #186
Breaking changes / important additions:
- Fixed two more decorator isolation issues.
- Added Swagger UI plugin to handle reloading the schema on authentication changes (
'SERVE_PUBLIC': False
). - Added
minLength
where a blank value is not allowed. Apart the dedicated setting, it is implicitly enabled byCOMPONENT_SPLIT_REQUEST
. - Several other small fixes and additional settings for corner cases. This is mainly a y-steam release due to the potential impact
on the Swagger UI and
minLength
changes.
- add setting for manual path prefix: SCHEMA_PATH_PREFIX_INSERT #567
- improve type hint for @extend_schema_field #569
- bugfix COMPONENT_SPLIT_REQUEST for empty req/resp serializers #572
- Make it cleared that ENUM_NAME_OVERRIDES is a key within SPECTACULAR_SETTINGS [johnthagen]
- Improve formatting in customization docs [johnthagen]
- bugfix @extend_schema_view on @api_view #554
- bugfix isolation for @extend_schema/@extend_schema_view reorg #554
- Fix inheritance bugs with @extend_schema_view(). [Nick Pope]
- Allow methods in @extend_schema to be case insensitive. [Nick Pope]
- Added a documentation blueprint for RapiDoc. [Nick Pope]
- Tidy templates for documentation views. [Nick Pope]
- Use latest version for CDN packages. [Nick Pope]
Breaking changes / important additions:
- Mainly a bugfix release that solves several longstanding issues with
@extend_schema_view
/@extend_schema
annotation isolation. There should be no more side effects from arbitrarily mixing and matching the decorators. - Improved handling of completely empty serializers with COMPONENT_SPLIT_REQUEST.
- move swagger CDN to jsdelivr (unpkg has been flaky)
- bugfix wrong DIST setting in Redoc #546
- Allow paginated_name customization [Georgy Komarov]
Breaking changes / important additions:
- Hotfix release due to regression in the Redoc template
- Add support for specification extensions. [Nick Pope]
- add example injection for (discovered) parameters #414
- Fix crash with read-only polymorphic sub-serializer. [Nick Pope]
- Add arbitrarily deep ListSerializer nesting #539
- tighten serializer assumptions #539
- fix whitespace stripping on methods
- Rename
AutoSchema._map_field_validators()
→.insert_field_validators()
. [Nick Pope] - Rename
AutoSchema._map_min_max()
→.insert_min_max()
. [Nick Pope] - Fix detection of int64 from min/max values. [Nick Pope]
- Fix zero handling in _map_min_max(). [Nick Pope]
- Add support for introspection of nested validators. [Nick Pope]
- Fix invalid schemas caused by validator introspection. [Nick Pope]
- Overhaul validator logic. [Nick Pope]
- support multiple headers in OpenApiAuthenticationExtension #537
- docs: Missing end quote for INSTALLED_APPS [Prayash Mohapatra]
- update doc #530
- introducing the spectacular sidecar
- fallback improvements to typing system with typing_extensions
Breaking changes / important additions:
- Added vendor specification extensions
- Completely overhauled validator logic and bugfixes
- Offline UI assets with optional drf-spectacular-sidecar package
- several internal logic improvements and stricter assumptions
- fix/cleanup suffixed path variable coercion #516
- remove superseded Request mock from oauth_toolkit
- be gracious on Enums that are not recognized by DRF #500
- remove non-required empty descriptions
- added test case for lookup_field #524
- Fix grammatical typo [johnthagen]
- remove mapping for re.Pattern (no 3.6 and mypy issues) #526
- Add missing types defined in specification. [Nick Pope]
- Add type mappings for IP4, IP6, TIME & DURATION. [Nick Pope]
- add support for custom converters and converter override #502
- cache static loading function calls
- prevent settings loading in types, lazy load in plumbing instead
- lazy settings loading in drainage
- Improve guide for migration from drf-yasg. [Nick Pope]
- handle default value for SerializerMethodField #422
- consolidate bearer scheme generation & bugfix #515
- prevent uncaught exception on modified django-filter #519
- add decoupled model docstrings #522
- Fix warnings raised during testing. [Nick Pope]
- add name override to @extend_schema_serializer #517
- Fix deprecation warning about default_app_config from Django 3.2+ [Janne Rönkkö]
- Remove obsolete value from IMPORT_STRINGS. [Nick Pope]
- Add extension for TokenVerifySerializer. [Nick Pope]
- Use SESSION_COOKIE_NAME in SessionScheme. [Nick Pope]
- add regex path parameter extraction for explicit cases #510
- honor lookup_url_kwarg name customization #509
- add contrib compat tests for drf-nested-routers
- improve path coersion model resolution
- add test_fields API response test #501
- Handle 'lookup_field' containing relationships for path parameters [Luke Plant]
- add BinaryField case to tests #506
- fix: BinaryField's schema type should be string #505 (#506) [jtamm-red]
- bugfix incomplete regex stripping for literal dots #507
- Fix tests [Jameel Al-Aziz]
- Fix type hint support for functools cached_property wrapped funcs [Jameel Al-Aziz]
- Extend enum type hint support to more Enum subclasses [Jameel Al-Aziz]
Breaking changes / important additions:
- Severely improved path parameter detection for Django-style parameters, RE parameters, and custom converters
- Significantly more defensive settings loading for safer project imports (less prone to import loops)
- Improved type hint support for
Enum
and other native types - Explicit support for drf-nested-routers
- A lot more small improvements
- fix default value handling for custom ModelField #422
- fill html title with title from settings #491
- add Enum support in type hints #492
- Move system check registration to AppConfig [Jameel Al-Aziz]
Breaking changes / important additions:
- Primarily ironing out another issue with the Django check and some minor improvements
- Improved docs regarding how ENUM_NAME_OVERRIDES works [Luke Plant]
- bugfix raw schema handling for @extend_schema_field on SerializerMethodField method 481
- load common SwaggerUI dep SwaggerUIStandalonePreset #483
- allow versioning of SpectacularAPIView via query #483
- update swagger UI
- move checks to "--deploy" section, bugfix public=True #487
Breaking changes / important additions:
- This is a hotfix release as the newly introduced Django check was executing the wrong code path.
- Check also moved into the
--deploy
section to prevent double execution. This can be disabled withENABLE_DJANGO_DEPLOY_CHECK
- Facitities added to utilize SwaggerUI Topbar for versioning.
- prevent exception and warn when ReadOnlyField is used with non-ModelSerializer #432
- allow raw JS in Swagger settings #457
- add support for check framework #477
- improve common FAQ @action question #399
- update @extend_schema doc #476
- adapt to changes in iMerica/dj-rest-auth 2.1.10 (ResendEmailVerification)
- add raw schema to @extend_schema(request={MIME: RAW}) #476
- bugfix test case for 3.6 #474
- bugfix header underscore handling for simplejwt #474
- properly parse TokenMatchesOASRequirements (oauth toolkit) #469
- add whitelist setting to manage auth method exposure #326 #471
- Update set_password instead of list [Greg Campion]
- Update documentation to illustrate how to override a specific method [Greg Campion]
Breaking changes / important additions:
- This is a y-stream release because we added Django checks
which might emit warnings and subsequently break CI. This can be easily suppressed with Django's
SILENCED_SYSTEM_CHECKS
. - Several small fixes and features that should not have a big impact.
- port custom "Bearer" bugfix/workaround to simplejwt #467
- add setting for listing/paginating/filtering on non-2XX #402 #277
- fix Typo [Eunsub LEE]
- nit typofix [adamsteele-city]
- Add a few return type annotations [Nikhil Benesch]
- add django-filter queryset annotation and
extend_schema_field
support - account for functools.partial wrapped type hints #451
- Update swagger_ui.js [Jordan Facibene]
- Update customization.rst to fix example typo [Atsuo Shiraki]
- update swagger-ui version
- add oauth2 config for swagger ui #438
Breaking changes / important additions:
- Just a few bugfixes and some small features with minimal impact on existing schema
- prevent endless loop in extensions when augmenting schema #426
- bugfix secondary import cycle (generics.APIView) #430
- fix: avoid circular import of/via rest_framework's APIView [Daniel Hahler]
Breaking changes / important additions:
- Hotfix release that addresses a carelessly added import in 0.17.1. In certain use-cases, this may have led to an import cycle inside DRF.
- bugfix 201 response for (List)CreateAPIVIew #428
- support paginated ListSerializer with field child #413
- fix django-filter.BooleanFilter subclass issue #317
- serializer field deprecation #415
- improve extension documentation #426
- improve type hints and fix mypy issues on tests.
- add missing usage case to type hints #418
- Typo(?) README fix [Jan Jurec]
Breaking changes / important additions:
- This release is mainly for fixing incomplete type hints which mypy will potentially complain about.
- A few small fixes that should either have no or a very small impact in schemas.
- improve type hint detection for Iterable and NamedTuple #404
- bugfix ReadOnlyField when used as ListSerlializer child #404
- improve component discard logic #395
- allow disabling operation sorting for sorting in PREPROCESSIN_HOOKS #410
- add regression test for #407
- fix error on read-only serializer [Matthieu Treussart]
- invert component exclusion logic (OpenApiSerializerExtension) #351 #391
- add many=True support to PolymorphicProxySerializer #382
- improve documentation, remove py2 wheel tag, mark as mypy-enabled
- bugfix YAML serialization errors that are ok with JSON #388
- bugfix missing auth extension for JWTTokenUserAuthentication #387
- Rename MethodSerializerField -> SerializerMethodField in README [Christoph Krybus]
Breaking changes / important additions:
- Quite a few small improvements. The biggest change is the inversion of the component discard logic. This should have no negative impact, but to be on the safe side we'll opt for a y-stream release.
- The package is now marked as being typed, which should get picked up natively by mypy
- add redoc dist setting
- bugfix mock request asymmetry #370 #250
- refactor urlpattern simplification #373 #168
- include relation PKs into SCHEMA_COERCE_PATH_PK handling #251
- allow PolymorphicProxySerializer to be simple 'oneOf'
- bugfix incorrect PolymorphicProxySerializer warning on extend_schema_field #263
- add break-out option for SerializerFieldExtension
- Modify urls for nested routers [Matthias Erll]
Breaking changes / important additions:
- Revamped handling of mocked requests. Now
GET_MOCK_REQUEST
is always called, not just for offline schema generation. In case there is a real request available, we carry over headers and authentication. If you use your own implementation, you may want to inspect the new default implementation. - NamespaceVersioning: switched path variable substitution from regex to custom state machine due to parethesis counting issue.
- Improved implicit support for drf-nested-routers
- Added some convenience options for plain
oneOf
to PolymorphicProxySerializer - This release should have minimal impact on the generated schema. We opt for a y-stream release due to potentially breaking changes when a user-provided
GET_MOCK_REQUEST
is used.
- bugfix prefix estimation with RE special char literals in path #358
Breaking changes / important additions:
- minor release to fix newly introduced default prefix estimation.
- fix boundaries for decimals coerced to strings #335
- improve util type hints
- add convenience response wrapper OpenApiResponse #345 #272 #116
- adapt for dj-rest-auth upstream changes in iMerica/dj-rest-auth#227
- Fixed traversing of 'Optional' type annotations [Luke Plant]
- prevent pagination on error responses. #277
- fix SCHEMA_PATH_PREFIX_TRIM ^/ pitfall & remove unused old URL mounting
- slightly improve #332 for django-filter range filters
- introduce non-redundant title field. #191 #286
- improve schema version string handling including variations #303
- bugfix ENUM_NAME_OVERRIDES for categorized choices #339
- improve SCHEMA_PATH_PREFIX handling, add auto-detect default, introduce prefix trimming #336
- add support for all django-filters RangeFilter [Jules Waldhart]
- Added default value for missing attribute [Matthias Erll]
- Fix map_renderers where format is None [Matthias Erll]
Breaking changes / important additions:
- explicitly set responses via
@extend_schema
will not get paginated/listed anymore for non2XX
status codes. - New default
None
forSCHEMA_PATH_PREFIX
will attempt to determine a reasonable prefix. Previous behavior is restored with''
- Added
OpenApiResponses
to gain access to response object descriptions.
- Fixed bug with
cached_property
non-Model objects not being traversed [Luke Plant] - Fixed issue #314 - include information about view/serializer in warnings. [Luke Plant]
- bugfix forward/reverse model traversal #323
- fix nested serializer detection & smarter metadata extraction #319
- add drf-yasg compatibility feature 'swagger_fake_view' #321
- fix django-filter through model edge case & catch exceptions #320
- refactor/bugfix PATCH & Serializer(partial=True) behaviour.
- bugfix django-filter custom filter class resolution #317
- bugfix django-filter for Django 2.2 AutoField
- improved/restructured resolution priority in django-filter extension #317 #234
- handle Decimals for YAML #316
- remove deprecated django-filter backend solution
- update swagger-ui version
- bugfix [] case and lint #312
- discriminate None and typing.Any usage #315
- fix multi-step source relation field resolution, again. #274 #296
- Add any type for OpenApiTypes [André da Silva]
- improve Extension usage documentation #307
- restructure request body for extend_schema #266 #279
- bugfix multipart boundary showing up in Accept header
- bugfix: use get_parsers() and get_renderers() #266
- Fix for better support of PEP 563 compatible annotations. [Luke Plant]
- Add document authentication [gongul]
- Do not override query params [Fabricio Aguiar]
- New setting for enabling/disabling error/warn messages [Fabricio Aguiar]
- bugfix response headers without body #297
- issue #296 [Luis Saavedra]
- Fixes #283 -- implement response header parameters [Sergei Maertens]
- Added feature test for response headers [Sergei Maertens]
- robustify django-filter enum sorting #295
Breaking changes / important additions:
- drf-spectacular's custom
DjangoFilterBackend
removed after previous deprecation. Just use the original class again. - django-filter extension received a significant refactoring so your schema may have several changes, hopefully positive ones.
- Added response headers feature
- Extended
@extend_schema(request=X)
, whereX
may now also be aDict[content_type, serializer_etc]
- Updated Swagger UI version
- Fixed several model traversal issues that may lead to PK changes in the schema
- Added drf-yasg's
swagger_fake_view
- add setting for operation parameter sorting #281
- bugfix/generalize Union hint extraction #284
- bugfix functools.partial methods in django-filters #290
- bugfix django-filter method filter #290
- Check serialzer help_text field is passed to the query description [Jorge Rodríguez-Flores Esparza]
- QUERY Parameters from serializer ignore description in SwaggerUI [Jorge Rodríguez-Flores Esparza]
- README.rst encoding change [gongul]
- Add support for SCOPES_BACKEND_CLASS setting from django-oauth-toolkit [diesieben07]
- use source instead of field_name for model field detection #274 [diesieben07]
- bugfix parameter removal from custom AutoSchema #212
- add specification extension option to info section #165
- add default to OpenApiParameter #271
- show violating view for easier fixing #278
- fix readonly related fields generating incorrect schema #274 [diesieben07]
- bugfix save parameter removal #212
- bugfix/handle more django-filter cases #263
- bugfix missing meta on extend_serializer_field, raw schema, and breakout
- expose explode and style for OpenApiParameter #267
- Only generate mock request if there is no actual request [Matthias Erll]
- Update blueprints.rst [takizuka]
- bugfix enum substitution for enumed arrays (multiple choice)
- Update README.rst [Chad Ramos]
- Create new mock request on each operation [Matthias Erll]
- add setting for additionalProperties handling #238
- bugfix path param extraction for PrimaryKeyRelatedField #258
- use injected django-filter help_text #234
- robustify normalization of types #257
- bugfix PATCH split serializer disparity #249
- django-filter description bugfix #234
- bugfix unsupported http verbs #244
- bugfix assert on methods in django-filter #252 #234 #241
- Regression: Filterset defined as method (and from a @property) are not supported [Nicolas Delaby]
- bugfix view-level AutoSchema noneffective with extend_schema #241
- bugfix incorrect warning on paginated actions #233
Breaking changes:
- several small improvements that should not have a big impact. this is a y-stream release mainly due to schema changes that may occur with django-filter.
- add exclusion for discovered parameters #212
- bugfix incorrect collision warning #233
- introduce filter extensions #234
- revert Swagger UI view to single request and alternative #211 #173
- bugfix Simple JWT token refresh #232
- bugfix simple JWT serializer schema #232
- Fix enum postprocessor to allow 0 as possible value [Vikas]
- bugfix/restore optional default parameter value #226
- Include QuerySerializer in documentation [KimSoungRyoul]
- support OAS3.0 ExampleObject to @extend_schema & @extend_schema_serializer #115 [KimSoungRyoul]
- add explicit double and int32 types. #214
- added type extension for int64 format support [Peter Dreuw]
- fix TokenAuthentication handling of keyword #205
- Allow callable limit_value in schema [Serkan Hosca]
- @extend_schema responses param now accepts tuples with media type #201
- bugfix List hint extraction with non-basic sub types #207
Breaking changes:
- reverted back to 0.10.0 Swagger UI behavior as default. Users relying on stricter CSP should use
SpectacularSwaggerSplitView
tokenAuth
slightly changed to properly model correctAuthorization
header- a lot of minor improvements that may slightly alter the schema
- bugfix hint extraction on @cached_property #198
- add support for basic TypedDict hints #184
- improve type hint resolution #199
- add option to disable Null/Blank enum choice feature #185
- bugfix return code for Viewset create methods #196
- honor SCHEMA_COERCE_PATH_PK on path param type resolution #194
- bugfix absolute schema URL to relative in UI #193
Breaking changes:
- return code for
create
onViewSet
changed from200
to201
. Some generator targets are picky, others don't care.
- Remove unnecessary view permission from action [Vikas]
- Fix security definition for IsAuthenticatedOrReadOnly permission [Vikas]
- introduce convenience decorator @schema_extend_view #182
- bugfix override behaviour of extend_schema with methods and views
- move some plumbing to drainage to make importable without cirular import issues
- bugfix naming for ListSerializer with pagination #183
- cleanup trailing whitespace in docstrings
- normalize regex in pattern, remove ECMA-incompatible URL pattern #175
- remove Swagger UI inline script for stricter CSP #173
- fixed typo [Sebastian Pabst]
- add the PASSWORD format to types.py [Sebastian Pabst]
- docs(settings): fix favicon example [Max Wittig]
Breaking changes:
@extend_schema
override mechanics are now consistent. may affect schema only if used on both view and view method- otherwise mainly small improvement/fixes that should have minimal impact on the schema.
- bugfix non-effective multi-usage of view extension.
- improve resolvable enum collisions with split components
- Update README.rst [Jose Luis da Cruz Junior]
- fix regular expression in detype_pattern [Ruslan Ibragimov]
- improve enum naming with resolvable collisions
- improve handling of discouraged SECURITY setting (fixes #48 fixes #136)
- instance check with ViewSetMixin instead of GenericViewSet [SoungRyoul Kim]
- support swagger-ui-settings [SoungRyoul Kim]
- Change Settings variable, allow override of default swagger settings and remove unnecessary line [Nix]
- Fix whitespace issues in code [Nix]
- Allow Swagger-UI configuration through settings Closes #162 [Nix]
- extend django_filters test case #155
- add enum postprocessing handling of blank and null #135
- rest-auth improvements
- test_rest_auth: Add test schema transforms [John Vandenberg]
- tests: Allow transformers on expected schemas [John Vandenberg]
- Improve schema difference test harness [John Vandenberg]
- Add rest-auth tests [John Vandenberg]
- contrib: Add rest-auth support [John Vandenberg]
Breaking changes:
- enum naming collision resolution changed in cleanly resolvable situations.
- enums gained
null
andblank
cases, which are modeled throughoneOf
for deduplication - SECURITY setting is now additive instead of being the mostly overridden default
- improve client generation for paginated listings
- update pinned swagger-ui version #160
- Hot fix for AcceptVersioningHeader support [Nicolas Delaby]
- bugfix module string includes with urlpatterns #157
- add expressive error in case of misconfiguration #156
- fix django-filter related resolution. improve test #150 #151
- improve follow_field_source for reverse resolution and model leafs #150
- add ref if list field child is serializer [Matt Shirley]
- add customization option for mock request generation #135
Breaking changes:
- paginated list response is now wrapped in its own component
- bugfix filter parameter application on non-list views #147
- improved support for django-filter
- add mocked request for view processing. #81 #141
- Use sha256 to hash lists [David Davis]
- change empty operation name on API prefix-cut to "root"
- bugfix lost "missing hint" warning and incorrect empty fallback
- add operationId collision resolution #137
- bugfix leaking path var names in operationId #137
- add config for camelizing names #138
- bugfix parameterized patterns for namespace versioning #145
- Add support for Accept header versioning [Krzysztof Socha]
- support for DictField child type (#142) and models.JSONField (Django>=3.1)
- add convenience inline_serializer for extend_schema #139
- remove multipleOf due to schema violation #131
Breaking changes:
operationId
changed for endpoints using the DRF'sFORMAT
path feature.operationId
changed where there were path variables leaking into the name.
- Temporarily pin the swagger-ui unpkg URL to 3.30.0 [Mohamed Abdulaziz]
- Add
deepLinking
parameter [p.alekseev] - added preprocessing hooks for operation list modification/filtering #93
- Document effective DRF settings [John Vandenberg]
- add format query parameter #110
- improve assert messages #126
- more graceful handling of magic fields #126
- allow for field child on ListSerializer. #120
- Fix sorting of endpoints with params [John Vandenberg]
- Emit enum of possible format suffixes [John Vandenberg]
- i18n #109
- bugfix INSTALLED_APP retrieval #114
- emit import warning for extensions with installed apps #114
Breaking changes:
drf_spectacular.hooks.postprocess_schema_enums
moved fromblumbing
tohooks
for consistency. Only relevant ifPOSTPROCESSING_HOOKS
is explicitly set by user.- preprocessing hooks are currently experimental and may change on the next release.
- extend instead of replace extra parameters #111
- add client generator helper settings for readOnly
- bugfix format param: path params must be required=True
- bugfix DRF docstring excludes and configuration #107
- bugfix operations with urlpattern override #92
- decrease built-in extension priority and improve doc #106
- add option to hide serializer fields #100
- allow None on @extend_schema request/response
- bugfix json spec violation on "required :[]" for COMPONENT_SPLIT_REQUEST
Breaking changes:
@extend_schema(parameters=...)
is extending instead of replacing for customAutoSchema
- path parameter are now always
required=True
as required by specification
- bugfix cyclic import in plumbing. #104
- add upstream test target with contrib allowed to fail
- preparations for django 3.1 and DRF 3.12
- improve tox targets for unreleased upstream
- added explicit URL option to UI views. #103
- improve auth extension doc #99
- bugfix attr typo with Token auth extension #99
- improve docstring extraction #96
- Manual polymorphic [Jair Henrique]
- Add summary field to extend_schema #97 [lilisha100]
- reduce minimal package requirements
- extend sdist with tests & doc
- bugfix nested RO/WO serializer on COMPONENT_SPLIT_REQUEST
- add pytest option --skip-missing-contrib #87
- Save test files in temporary folder [Jair Henrique]
- Setup isort library [Jair Henrique]
- bugfix read-only many2many relation processing #79
- Implement OrderedDict representer for yaml dumper [Jair Henrique]
- bugfix UI permissions #84
- fix abc import #82
- add duration field #78
- put contrib code in packages named files
- improve djangorestframework-camel-case support #73
- Add support to djangorestframework-camel-case [Jair Henrique]
- ENUM_NAME_OVERRIDES accepts import string for easier handling #70
- honor versioning on schema UIs #71
- improve enum naming mechanism. #63 #70
- provide global enum naming. #70
- refactor choice field
- remove unused sorter setting
- improve FileField, add test and documentation. #69
- Fix file fields [John Vandenberg]
- allow for functions on models beside properties. #68
- replace removed DRF compat function
Breaking changes:
- Enum naming conflicts are now resolved explicitly. how to resolve conflicts
- Choice fields may be rendered slightly different
- Swagger UI and Redoc views now honor versioned requests
- Contrib package code moved. each package has its own file now
- overhaul documentation #52
- improve serializer field mapping (nullbool & time)
- remove duplicate and misplaced description. #61
- extract serializer docstring
- Recognise ListModelMixin as a list [John Vandenberg]
- bugfix component sorting to include enums. #60
- bugfix fail on missing readOnly flag
- Fix incorrect parameter cutting [p.alekseev]
- add optional serializer component split
- improve SerializerField meta extraction
- improve serializer directionality
- add mypy static analysis
- make all readonly fields required for output. #54
- make yaml multi-line strings nicer
- alphanumeric component sorting.
- generalize postprocessing hooks
- extension override through priority attr
Breaking changes:
- Schemas are functionally identical, but component sorting changed slightly.
- All
read_only
fields are required by default SerializerFieldExtension
gained direction parameter
- robustify serializer resolution & enum postprocessing
- expose api_version to command. robustify version matching. #22
- add versioning support #22
- robustify urlconf wrapping. resolver does not like lists
- explicit override for non-list serializers on ViewSet list #49
- improve model field mapping via DRF init logic
- bugfix enum substitution with additional field parameters.
- Fix getting default parameter for
MultipleChoiceField
[p.alekseev] - bugfix model path traversal via intermediate property
- try to be more graceful with unknown custom model fields. #33
Breaking changes:
- If URL or namespace versioning is set in views, it is automatically used for generation.
Schemas might shrink because of that. Explicit usage of
--api-version="XXX"
should yield the old result. - Some warnings might change, as the field/view introspection tries to go deeper.
- Add (partial) support for drf-yasg's serializer ref_name #27
- Add thin wrappers for redoc and swagger-ui. #19
- Simplify serializer naming override #27
- Handle drf type error for yaml. #41
- Tox.ini: Add {posargs} [John Vandenberg]
- add djangorestframework-jwt auth handler [John Vandenberg]
- Docs: example of a manual configuration to use a apiKey in securitySchemes [Jelmer Draaijer]
- Introduce view override extension
- Consolidate extensions
- Parse path parameter type hints from url. closes #34
- Consolidate duplicate warnings/add error #28
- Prevent warning for DRF format suffix param
- Improve ACCEPT header handling #42
Breaking changes:
- all extension base classes moved to
drf_spectacular.extensions
- Fix incorrect PK access through id. #25.
- Enable attr settings on SpectacularAPIView #35.
- Bugfix @api_view annotation and tests.
- Fix exception/add support for explicit ListSerializer #29.
- Introduce custom serializer field extension mechanic. enables tackling #31
- Improve serializer estimation with educated guesses. #28.
- Bugfix import error and incorrect warning #26.
- Improve scope parsing for oauth2. #26.
- Postprocessing enums to components
- Handle decimal coersion. closes #24.
- Improvement: patched serializer variation only on request.
- Add serializer directionality.
- End the bucket brigade / cleaner interface.
- Add poly serializer warning.
- Bugfix: add serialization for default values.
- Bugfix reverse access collision from schema to view.
Breaking changes:
- internal interface changed (method & path removed)
- fewer PatchedSerializers emitted
- Enums are no longer inlined
- Bugfix missing openapi schema spec json in package
- Add multi-method action decoration support.
- rest-polymorphic str loading prep.
- Improve list view detection.
- Bugfix: response codes must be string. closes #17.
- Add missing related serializer fields #15.
- Bugfix properties with $ref component. closes #16.
- Bugfix polymorphic resource_type lookup. closes #14.
- Generalize plugin system.
- Support
required
parameter for body. [p.alekseev] - Improve serializer retrieval.
- Add query serializer support #10.
- Custom serializer parsing with plugins.
- Refactor auth plugin system. support for DjangoOAuthToolkit & SimpleJWT.
- Bugfix extra components.
Breaking changes:
- removed
to_schema()
fromOpenApiParameter
. Handled inAutoSchema
now.
- Documentation.
- Schema serving with
SpectacularAPIView
(configurable) - Add generator stats and
--fail-on-warn
command option. - Schema validation with
--validation
against OpenAPI JSON specification - Added various settings.
- Bugfix/add support for basic type responses (parity with requests)
- Bugfix required in parameters. failed schema validation.
- Add validation against OpenAPI schema specification.
- Improve parameter resolution, warnings and tests.
- Allow default parameter override. (e.g.
id
) - Fix queryset function call. [p.g.alekseev]
- Supporting enum values in params. [p.g.alekseev]
- Allow
@extend_schema
request basic type annotation. - Add support for typing Optional[*]
- Bugfix: handle proxy models where pk is a OnetoOne relation.
- Warn on duplicate serializer names.
- Added explicit exclude flag for operation.
- Bugfix: PrimaryKeyRelatedField(read_only=True) failing to find type.
- Change operation sorting to alphanumeric with option (#6)
- Robustify serializer field support for
@extend_schema_field
. - Enable field serializers support. [p.g.alekseev]
- Adding custom tags support [p.g.alekseev]
- Document extend_schema.
- Allow operation hiding.
- Catch unknown model traversals. custom fields can be tricky.
- Improve model field mapping. extend field tests.
- Add deprecated method to extend_schema decorator. [p.g.alekseev]
Breaking changes:
@extend_schema
renamedextra_parameters
->parameters
ExtraParameter
renamed toOpenApiParameter
- Generalize
PolymorphicResponse
intoPolymorphicProxySerializer
. - Type dict is resolved as object.
- Simplify hint resolution.
- Allow
@extend_schema_field
for custom serializer fields.
@extend_schema_field
accepts Serializers and OpenApiTypes- Generalize query parameter.
- Bugfix serializer init.
- Fix unused get_request_serializer.
- Refactor and robustify typing system.
- Helper scripts for swagger and generator.
- Fix license.
- Fix parameter type resolution.
- Remove empty parameters.
- Improved assert message.
- Working release.
- Bugfix wrong call & remove yaml aliases.
- Initial published version.