Целью этой статьи является демонстрация возможностей drf-spectacular для документирования API и основного набора техник, которые покроют большую часть сценариев использования. Мы настроим генерацию документации и рассмотрим все основные способы гибкой настройки отображения. drf-spectacular - единственный проект, который сейчас активно поддерживается. django-rest-swagger и drf-yasg устарели и не обновлялись уже пару-тройку лет. Сначала устанавливаем сам пакет через pip install drf-spectacular После чего добавляем в INSTALLED_APPS  Далее необходимо добавить DEFAULT_SCHEMA_CLASS в настройки REST_FRAMEWORK в settings.py. Этот класс будет отвечать за генерацию самой схемы. В некоторых ситуациях мы можем прописать здесь свой класс для добавления дополнительной функциональности. После чего добавляем  в наш главный файл urls.py следующее: По адресу api/schema/ будет генерироваться JSON-схема нашего API, из которой по адресу api/docs/ будет строиться Swagger-UI документация. После добавления этих настроек по адресу  http://127.0.0.1:8000/api/docs/ можно будет увидеть список всех наших эндпоинтов вот в таком формате: Теперь поговорим о более гибкой настройке. Возьмем для примера /groups/ Для начала более детально разберём интерфейс. Здесь есть четыре основных блока: описание, в котором может быть описано назначение эндпоинта и даны какие-либо подсказки принимаемые query-параметры пример запроса пример ответа для каждого статус-кода (200, 201, 400, 404 и так далее) Теперь попробуем изменить описание. Для этого есть три способа. Использовать декоратор @extend_schema_view и явно указать описание для каждого метода. Использовать @extend_schema для каждого метода отдельно Указать описание в doc-string для каждого метода Если описание короткое - используем summary, если длинное - используем description. Либо оба, если нужно и короткое и длинное описание. У summary есть большой плюс - он отображается напротив эндпоинта и помогает быстро сориентироваться. Пример: Теперь можно добавить тег, для группировки эндпоинтов. Если у каждой группы эндпоинтов проставлен тег, это сильно упростит навигацию и поиск нужной информации.  Теги добавляются с помощью @extend_schema над @extend_schema_view. Таким образом все эндпоинты, помеченные одним тегом будут сгруппированы  в один блок. Теперь перейдем к описанию запросов и ответов. В аргумент responses нужно передать словарь вида {"код ответа": "сериализатор или объект OpenApiResponse"} Для описания стандартных ответов я использую заранее созданный DummyDetailSerializer/DummyDetailAndStatusSerializer. Так будут выглядеть наши ответы: Теперь перейдем к более детальной настройке входных параметров на примере update. С помощью аргумента parameters можно добавить новые параметры, либо дополнить существующие. Так это отобразится в интерфейсе: Ключевой аргумент при создании дополнительного параметра - location. В нашем случае используем OpenApiParameter.QUERY. Это значит, что этот параметр будет передаваться как query параметр в формате ?some_new_parameter=123.  Так же доступны:  OpenApiParameter.PATH - доп. параметр в url OpenApiParameter.HEADER - доп. параметр в headers OpenApiParameter.COOKIE - доп. параметр в cookies Теперь рассмотрим добавление примеров запроса. В аргумент examples мы должны передать список объектов OpenApiExample. Например: Наш пример отобразится в интерфейсе следующим образом: Теперь осталось добавить общие настройки отображения. Это делается в файле settings.py следующим образом: В заключение могу уверенно сказать, что drf-spectacular - это гибкий и полезный инструмент, Хорошая документация API помогает на всех этапах разработки проекта, упрощает тестирование и поддержку кода.  Python developer