Skip to main content

A Tutor plugin for course discovery, the Open edX service for providing access to consolidated course and program metadata

Project description

This is a plugin for Tutor that integrates the Course Discovery application in an Open edX platform. it is useful for integration with, for example, Ecommerce or an external course catalog.


This plugin was developed and open sourced to the community thanks to the generous support of E-ducation. Thank you!


This plugin requires tutor>=3.6.0. If you have installed tutor from a pre-compiled binary, it already comes bundled with the discovery plugin. Otherwise:

pip install tutor-discovery

Then, to enable this plugin, run:

tutor plugins enable discovery

You will have to re-generate the environment:

tutor config save

The, run migrations:

tutor local init

This last step is unnecessary if you run instead tutor local quickstart.


Creating a user

The discovery user interface will be available at for a local test instance, and at DISCOVERY_HOST (by default: http(s)://discovery.<your lms host>) in production. In order to run commands from the UI, a user must be created:

tutor local run discovery ./ createsuperuser

Then, you must login with this user at

Alternatively, you can login with oauth2 using a pre-existing user created on the LMS/CMS by accessing http(s)://discovery.<your lms host>/login. To do so, the proper domain names must exist and point to the production server.

Re-indexing courses

tutor local run discovery ./ refresh_course_metadata --partner_code=openedx
tutor local run discovery ./ update_index --disable-change-limit

Caching programs

In order to cache programs in the LMS, you will need to manually create a catalog integration. This step should be performed just once:

tutor local run lms ./ lms create_catalog_integrations --enabled \
    --internal_api_url=http://discovery:8000/api/v1 \


tutor local run lms ./ lms cache_programs


To debug the course discovery service, you are encouraged to mount the course-discovery repo from the host in the development container:

tutor dev runserver -v ~/projets/openedx/repos/course-discovery/:/openedx/discovery discovery

You can then access the development server at Feel free to add breakpoints (import pdb; pdb.set_trace()) anywhere in your source code to debug your application.

Alternatively, you may bind-mount a local course-discovery repository by adding the following to $(tutor config printroot)/env/dev/docker-compose.override.yml:

version: "3.7"
            - /path/to/course-discovery/:/openedx/discovery

Once a local repository is mounted in the image, you will have to install nodejs dependencies and collect static assets:

tutor dev run discovery npm install --development
tutor dev run discovery make


This work is licensed under the terms of the GNU Affero General Public License (AGPL).

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for tutor-discovery, version 10.1.7
Filename, size File type Python version Upload date Hashes
Filename, size tutor-discovery-10.1.7.tar.gz (9.4 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page