...
Paginate the API response. This necessarily means filtering, sorting, and aggregation will also be done in the API. We will also have to make a new Insights API endpoint that mirrors and uses as a backend the Analytics Data API course summaries endpoint in order to make the data available to the Insights client-side course listings page.
TODO: Add in `fields` and `exclude` parameters to course summaries endpoints
Insights: Course Index View
...
Method | Description | Query Parameters | Statuses |
---|
GET | - Get course listing page with aggregate data
- Aggregate data is NOT affected by filters/pagination
- Course summary data NOT loaded yet
- However, query parameters are accepted and used for subsequent course summary AJAX call
- Changing the query string will not reload the page, but will trigger an AJAX call that will update the table
- Sorting/filtering/paging the table will trigger an AJAX call and update the query string
| - sortKey (optional): One of the following. Default: catalog_course_title
- catalog_course_title
- start_date
- end_date
- cumulative_count
- count
- count_change_7_days
- verified_enrollment
- passing_users
- order (optional): One of the following. Default: asc
- availability (optional): Comma-separated list of one or more of the following. Default: all availabilities
- Archived
- Current
- Upcoming
- Unknown
- program_ids (optional): Comma-separated list of course IDs to filter by. Default: all programs
- text_search (optional): (Sub)string to filter by for course titles and IDs. Default: do not filter by search string
- page (optional): Page number. Default: 1
For defaults, put enumeration-style key-value pairs in the URL | - 401 if not authenticated
- 200 otherwise
TODO: Look into what happens for bad query params. Stick with current functionality. Want to keep same URL scheme and page behavior to avoid breaking URLs |
Insights: Course Summaries API
...
Method | Description | Query Parameters | Return Values | Statuses |
---|
GET | Get paginated list of course summaries | - order_by (optional): See description for CourseIndex View 'sortKey'
- sort_order (optional): See description for Course Index View 'order'
- ... all other params from Course Index View ...
- fields (optional): Fields to include in response. A comma-separated list of one or more of the fields listed under 'results' in 'Return Values'. Mutually exclusive with 'exclude'. Default: All fields included
- exclude (optional): Fields NOT to include in response. A comma-separated list of one or more of the fields listed under 'results' in 'Return Values'. Mutually exclusive with 'fields'. Default: No fields excluded
- page_size (optional): Page size. Max: 100, Default: 100
| - results: array of page of result dicts with fields:
- count
- end_date
- created
- cumulative_count
- programs
- enrollment_modes
- availability
- verified_enrollment
- pacing_type
- passing_users
- count_change_7_days
- course_id
- catalog_course_title
- catalog_course: course ID without run
- start_date
- count: total number of results (all pages)
- next: link to next page
- previous: link to previous page
- last_updated: String containing date of time result summaries were updated
| - 401 if not authenticated
- 404 if no results422
- 422 if bad parameter key
- TODO: what does learner analytics API do?
- 400 if bad parameter value
- 200 otherwise
|
...
http(s)://<data_api_host>/api/v0.1v1/course_aggregate_data/?<query_string>Analytics Data API: Course Summariesstring>
Method | Description | Query Parameters | Return Value | Access |
---|
GET | Get aggregate data about a set of courses | - course_ids (optional): Comma-separated list of course IDs to filter by. Default: All courses
| - current_enrollmentcount
- totalcumulative_enrollmentcount
- enrollmentcount_change_7_days
- verified_enrollment
| Same as Insights Course Summaries API |
POST | Same as GET, but number of course IDs is not restricted by URL length | Same as above, but comma-separated lists are JSON arrays of strings | Same as above | Same as above |
...
http(s)://<data_api_host>/api/v0.1v1/course_summaries/?<query_string>
Method | Description | Query Parameters | Return Value | Access |
---|
GET | Get a paginated list of course summaries, with optional filtering and sorting | - course_ids (optional): Comma-separated list of course IDs to filter by. Default: All courses
- ... all params from Insights Course Summaries API ...
| Same as Insights Course Summaries API, but - last_updated is not included
- next/previous have API hostname in URL
TODO: calculate last_updated in the Data API and pass in from this endpoint
| Same as Insights Course Summaries API |
POST | Same as GET, but number of course IDs is not restricted by URL length | Same as above, but comma-separated lists are JSON arrays of strings | Same as above QUESTION: what to do about , except next/previous URLs ?are not included | Same as above |