diff --git a/swh/web/api/urls.py b/swh/web/api/urls.py index afbcaf44..4267c73d 100644 --- a/swh/web/api/urls.py +++ b/swh/web/api/urls.py @@ -15,6 +15,25 @@ import swh.web.api.views.snapshot # noqa import swh.web.api.views.stat # noqa import swh.web.api.views.vault # noqa +from django.conf.urls import url from swh.web.api.apiurls import APIUrls urlpatterns = APIUrls.get_url_patterns() + +from rest_framework.decorators import api_view, renderer_classes +from rest_framework import renderers, response, schemas + +class SchemaGenerator(schemas.SchemaGenerator): + def get_links(self, request=None): + links = super().get_links(request) + return links['1'] # uses /api/1/ as prefix instead of just /api/ + +generator = SchemaGenerator(title='Bookings API', patterns=urlpatterns) + +@api_view() +@renderer_classes([renderers.OpenAPIRenderer]) +def schema_view(request): + schema = generator.get_schema(request) + return response.Response(schema) + +urlpatterns += [url('1/schema/', schema_view)]