Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

...

MethodDescriptionQuery ParametersReturn ValuesStatuses
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 results
    • TODO: what does learner analytics API do?
  • 422 if bad parameter key
  • 422 400 if bad parameter valueTODO: return error dictionary that tell what keys/values are bad
  • 200 otherwise

Analytics Data API: Course Aggregate Data

http(s)://<data_api_host>/api/v1/course_aggregate_data/?<query_string>

...

MethodDescriptionQuery ParametersReturn ValueAccess
GETGet 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
TODO: Change these to names of the fields in CourseMetaSummaryEnrollment
Same as Insights Course Summaries API
POSTSame as GET, but number of course IDs is not restricted by URL lengthSame as above, but comma-separated lists are JSON arrays of stringsSame as aboveSame as above

...

MethodDescriptionQuery ParametersReturn ValueAccess
GETGet 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
POSTSame as GET, but number of course IDs is not restricted by URL lengthSame as above, but comma-separated lists are JSON arrays of strings

Same as above

QUESTION: what to do about

, except next/previous URLs

?TODO: Ask Dave Ormsbee what we should do

are not included

Same as above