Skip to content

Commit ef1abdb

Browse files
authored
Merge pull request #3307 from codalab/adding-api-docs
Adding API docs
2 parents a579051 + bf2e801 commit ef1abdb

3 files changed

Lines changed: 24 additions & 9 deletions

File tree

codalab/apps/api/routers.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@
33
from apps.api.views import admin_views as admin_views
44
from django.conf.urls import url
55
from rest_framework import routers
6+
from rest_framework.documentation import include_docs_urls
7+
68

79
router = routers.DefaultRouter()
810

11+
912
router.register(r'competition/(?P<competition_id>\d+)/participants', views.CompetitionParticipantAPIViewSet)
1013
router.register(r'competition', views.CompetitionAPIViewSet)
1114
router.register(r'competition/(?P<competition_id>\d+)/leaderboards', views.LeaderBoardViewSet)
@@ -19,17 +22,17 @@
1922
url(r'^competition/create/sas$', views.CompetitionCreationSasApi.as_view(), name='api_competition_creation_sas'),
2023
url(r'^competition/create/(?P<token>\d+)$', views.CompetitionCreationStatusApi.as_view(), name='api_competition_creation_status'),
2124

22-
url(r'^competition/(?P<competition_id>\d+)/submission$',views.competition_submission_create,name='api_competition_submission_post'),
23-
url(r'^competition/(?P<competition_id>\d+)/submission/sas$',views.CompetitionSubmissionSasApi.as_view(), name='api_competition_submission_sas'),
24-
url(r'^competition/(?P<competition_id>\d+)/submission/(?P<pk>\d+)$',views.competition_submission_retrieve,name='api_competition_submission_get'),
25-
url(r'^competition/(?P<competition_id>\d+)/submission/(?P<pk>\d+)/leaderboard$',views.competition_submission_leaderboard,name='api_competition_submission_leaderboard'),
25+
url(r'^competition/(?P<competition_id>\d+)/submission$', views.competition_submission_create, name='api_competition_submission_post'),
26+
url(r'^competition/(?P<competition_id>\d+)/submission/sas$', views.CompetitionSubmissionSasApi.as_view(), name='api_competition_submission_sas'),
27+
url(r'^competition/(?P<competition_id>\d+)/submission/(?P<pk>\d+)$', views.competition_submission_retrieve, name='api_competition_submission_get'),
28+
url(r'^competition/(?P<competition_id>\d+)/submission/(?P<pk>\d+)/leaderboard$', views.competition_submission_leaderboard, name='api_competition_submission_leaderboard'),
2629
url(r'^competition/(?P<competition_id>\d+)/submissions/?$', views.CompetitionSubmissionListViewSet.as_view({'get': 'list'}), name='api_competition_submission_list'),
2730

28-
url(r'^competition/(?P<pk>\d+)/phases/(?P<phasenumber>\d+)$',views.competitionphase_retrieve,name='api_competitionphase'),
29-
url(r'^competition/(?P<competition_id>\d+)/phases/(?P<phase_id>\d+)/leaderboard$',views.leaderboard_retrieve, name='api_phase_leaderboard'),
30-
url(r'^competition/(?P<competition_id>\d+)/phases/(?P<phase_id>\d+)/leaderboard/data$',views.LeaderBoardDataViewSet.as_view(), name='api_phase_leaderboarddata'),
31+
url(r'^competition/(?P<pk>\d+)/phases/(?P<phasenumber>\d+)$', views.competitionphase_retrieve, name='api_competitionphase'),
32+
url(r'^competition/(?P<competition_id>\d+)/phases/(?P<phase_id>\d+)/leaderboard$', views.leaderboard_retrieve, name='api_phase_leaderboard'),
33+
url(r'^competition/(?P<competition_id>\d+)/phases/(?P<phase_id>\d+)/leaderboard/data$', views.LeaderBoardDataViewSet.as_view(), name='api_phase_leaderboarddata'),
3134

32-
url(r'^competition/(?P<pk>\d+)/phases/$', views.competitionphase_list,name='api_competitionphases_list'),
35+
url(r'^competition/(?P<pk>\d+)/phases/$', views.competitionphase_list, name='api_competitionphases_list'),
3336

3437
url(r'^competition/(?P<competition_id>\d+)/pages/(?P<category>[a-zA-Z][\w\d\-\_]*)/$', views.competition_page_list, name='api_competition_page_list'),
3538
url(r'^competition/(?P<competition_id>\d+)/pages/(?P<pk>\d+)$', views.competition_page, name='api_competition_page'),
@@ -45,5 +48,7 @@
4548
url(r'^admin/competitions/list', admin_views.GetCompetitions.as_view(), name="competitions"),
4649
url(r'^admin/competitions/update', admin_views.UpdateCompetitions.as_view(), name="update_competitions"),
4750
url(r'^admin/competition/(?P<competition_id>\d+)/apply_upper_bound_limit', admin_views.ApplyUpperBoundLimit.as_view(), name="apply_upper_bound_limit"),
48-
url(r'^admin/competitions/default_upper_bound_limit', admin_views.GetDefaultUpperBoundLimit.as_view(), name="get_default_upper_bound_limit")
51+
url(r'^admin/competitions/default_upper_bound_limit', admin_views.GetDefaultUpperBoundLimit.as_view(), name="get_default_upper_bound_limit"),
52+
# API Docs
53+
url(r'^docs/', include_docs_urls(title='Codalab API Reference', public=False))
4954
)

codalab/apps/api/serializers.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ class ContentCategorySerial(serializers.ModelSerializer):
77

88
class Meta:
99
model = webmodels.ContentCategory
10+
fields = '__all__'
1011

1112
class DefaultContentSerial(serializers.ModelSerializer):
1213
category_codename = serializers.SlugField(source='category.codename')
1314
category_name = serializers.CharField(source='category.name')
1415
initial_visibility = serializers.SlugField(source='initial_visibility.codename')
1516
class Meta:
1617
model = webmodels.DefaultContentItem
18+
fields = '__all__'
1719

1820

1921
class PageContainerSerial(serializers.ModelSerializer):
@@ -56,6 +58,7 @@ def validata_phase_id(self,attr,source):
5658
class CompetitionParticipantSerial(serializers.ModelSerializer):
5759
class Meta:
5860
model = webmodels.CompetitionParticipant
61+
fields = '__all__'
5962

6063

6164
class CompetitionSubmissionSerial(serializers.ModelSerializer):
@@ -167,12 +170,14 @@ class LeaderBoardSerial(serializers.ModelSerializer):
167170
entries = CompetitionSubmissionSerial(read_only=True, source='submissions')
168171
class Meta:
169172
model = webmodels.PhaseLeaderBoard
173+
fields = '__all__'
170174

171175
class CompetitionDataSerial(serializers.ModelSerializer):
172176
image_url = serializers.URLField(source='image.url', read_only=True)
173177
phases = serializers.RelatedField(many=True, read_only=True)
174178
class Meta:
175179
model = webmodels.Competition
180+
fields = '__all__'
176181

177182

178183
class PhaseRel(serializers.ModelSerializer):
@@ -252,6 +257,7 @@ class Meta:
252257
class ScoreSerial(serializers.ModelSerializer):
253258
class Meta:
254259
model = webmodels.SubmissionScore
260+
fields = '__all__'
255261

256262
class CompetitionScoresSerial(serializers.ModelSerializer):
257263
competition_id = serializers.IntegerField(source='phase.competition.pk')
@@ -264,3 +270,4 @@ class CompetitionScoresSerial(serializers.ModelSerializer):
264270

265271
class Meta:
266272
model = webmodels.CompetitionSubmission
273+
fields = '__all__'

codalab/requirements/requirements.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,6 @@ pytest-env==0.6.2
8585
lxml==4.1.1
8686

8787
certifi==2020.6.20
88+
89+
# Adding coreapi for rest_framework api documentation
90+
coreapi

0 commit comments

Comments
 (0)