Functional overview
Figure 15.1 shows a representation of the views and API endpoints that will be built in this chapter:

Figure 15.1: Diagram of API views and endpoints to be built in Chapter 15
In this chapter, you will create two different sets of API views, SubjectViewSet and CourseViewSet. The former will include the list and detail views for subjects. The latter will include the list and detail views for courses. You will also implement the enroll action in CourseViewSet to enroll students in courses. This action will be only available to authenticated users, by using the IsAuthenticated permission. You will create the contents action in CourseViewSet to access a course’s content. To access course contents, users have to be authenticated and enrolled in the given course. You will implement the custom IsEnrolled permission to limit access to contents to the users enrolled in the course.
If you are not familiar with API endpoints, you just need to know...