diff --git a/modoboa/admin/api.py b/modoboa/admin/api.py index e9a334758..7a1b04e6c 100644 --- a/modoboa/admin/api.py +++ b/modoboa/admin/api.py @@ -4,6 +4,7 @@ from django import http from django.contrib.contenttypes.models import ContentType from django.utils.translation import ugettext as _ +from drf_spectacular.utils import extend_schema, extend_schema_view from rest_framework import filters, status, viewsets from rest_framework.decorators import action from rest_framework.exceptions import ParseError @@ -16,16 +17,22 @@ from modoboa.core import sms_backends from . import lib, models, serializers +@extend_schema_view( + retrieve=extend_schema( + description="Retrieve a particular domain", + summary="Retrieve a particular domain" + ), + list=extend_schema( + description="Retrieve a list of domains", + summary="Retrieve a list of domains" + ), + create=extend_schema( + description="Create a new domain", + summary="Create a new domain" + ) +) class DomainViewSet(viewsets.ModelViewSet): - """ - Domain viewset. - - retrieve: Return the given domain. - - list: Return a list of all existing domains. - - create: Create a new domain instance. - """ + """Domain viewset.""" permission_classes = [IsAuthenticated, DjangoModelPermissions, ] serializer_class = serializers.DomainSerializer diff --git a/modoboa/urls.py b/modoboa/urls.py index 5e9e1deda..3198d8844 100644 --- a/modoboa/urls.py +++ b/modoboa/urls.py @@ -8,7 +8,9 @@ from django.contrib.auth.decorators import login_required from django.urls import include, path from django.views.i18n import JavaScriptCatalog -from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView +from drf_spectacular.views import ( + SpectacularAPIView, SpectacularSwaggerView, SpectacularRedocView +) from modoboa.admin.views import user as user_views from modoboa.core import signals as core_signals, views as core_views @@ -62,6 +64,8 @@ urlpatterns += [ path('docs/api/', SpectacularSwaggerView.as_view(url_name='schema'), name='docs-index'), + path('docs/api/redoc/', SpectacularRedocView.as_view(url_name='schema'), + name='redoc'), path('api/v1/', include("modoboa.urls_api")), ]