diff --git a/docs/api/v3.rst b/docs/api/v3.rst index 4dda19615f6..db89832a232 100644 --- a/docs/api/v3.rst +++ b/docs/api/v3.rst @@ -463,6 +463,9 @@ Version detail "epub": "https://pip.readthedocs.io/_/downloads/epub/pip/stable/" }, "urls": { + "dashboard": { + "edit": "https://readthedocs.org/dashboard/pip/version/stable/edit/" + }, "documentation": "https://pip.pypa.io/en/stable/", "vcs": "https://github.com/pypa/pip/tree/19.0.2" }, diff --git a/readthedocs/api/v3/serializers.py b/readthedocs/api/v3/serializers.py index 6d57949b69c..5670841f3b6 100644 --- a/readthedocs/api/v3/serializers.py +++ b/readthedocs/api/v3/serializers.py @@ -222,9 +222,23 @@ def get_project(self, obj): return self._absolute_url(path) -class VersionURLsSerializer(serializers.Serializer): +class VersionDashboardURLsSerializer(BaseLinksSerializer, serializers.Serializer): + edit = serializers.SerializerMethodField() + + def get_edit(self, obj): + path = reverse( + 'project_version_detail', + kwargs={ + 'project_slug': obj.project.slug, + 'version_slug': obj.slug, + }) + return self._absolute_url(path) + + +class VersionURLsSerializer(BaseLinksSerializer, serializers.Serializer): documentation = serializers.SerializerMethodField() vcs = serializers.URLField(source='vcs_url') + dashboard = VersionDashboardURLsSerializer(source='*') def get_documentation(self, obj): return obj.project.get_docs_url(version_slug=obj.slug,) diff --git a/readthedocs/api/v3/tests/responses/projects-detail.json b/readthedocs/api/v3/tests/responses/projects-detail.json index 50182ccb802..a8472821a2a 100644 --- a/readthedocs/api/v3/tests/responses/projects-detail.json +++ b/readthedocs/api/v3/tests/responses/projects-detail.json @@ -48,6 +48,9 @@ "slug": "v1.0", "type": "tag", "urls": { + "dashboard": { + "edit": "https://readthedocs.org/dashboard/project/version/v1.0/" + }, "documentation": "http://project.readthedocs.io/en/v1.0/", "vcs": "https://github.com/rtfd/project/tree/v1.0/" }, diff --git a/readthedocs/api/v3/tests/responses/projects-versions-builds-list_POST.json b/readthedocs/api/v3/tests/responses/projects-versions-builds-list_POST.json index cccced2e13e..13067a7744a 100644 --- a/readthedocs/api/v3/tests/responses/projects-versions-builds-list_POST.json +++ b/readthedocs/api/v3/tests/responses/projects-versions-builds-list_POST.json @@ -95,6 +95,9 @@ "slug": "v1.0", "type": "tag", "urls": { + "dashboard": { + "edit": "https://readthedocs.org/dashboard/project/version/v1.0/" + }, "documentation": "http://project.readthedocs.io/en/v1.0/", "vcs": "https://github.com/rtfd/project/tree/v1.0/" }, diff --git a/readthedocs/api/v3/tests/responses/projects-versions-detail.json b/readthedocs/api/v3/tests/responses/projects-versions-detail.json index 6c8145f6bb0..ecd91468166 100644 --- a/readthedocs/api/v3/tests/responses/projects-versions-detail.json +++ b/readthedocs/api/v3/tests/responses/projects-versions-detail.json @@ -18,6 +18,9 @@ "slug": "v1.0", "type": "tag", "urls": { + "dashboard": { + "edit": "https://readthedocs.org/dashboard/project/version/v1.0/" + }, "documentation": "http://project.readthedocs.io/en/v1.0/", "vcs": "https://github.com/rtfd/project/tree/v1.0/" },