Skip to content
minimal implementation of nbgallery api in python/flask
Jupyter Notebook Python Dockerfile HTML
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
API test notebook.ipynb

This project is a minimal implementation of the nbgallery server and APIs in order to understand the set of endpoints in nbgallery/controllers and facilitate development of Jupyter notebook extensions.

I am not 100% comfortable reading/writing/understanding either Javascript or Ruby, and if you aren't either, than this project might help you better understand the nbgallery server and the Jupyter nbextensions that connect Jupyter to the Gallery.


So far in this package the endpoints defined are:

  • GET to /, returns links to /environments and /notebooks
  • GET to /environments, returns a json list of environments ({name, url})
  • POST to /environments with {name, url} to create a new environment in environments.json table
  • GET to /notebooks, returns an html list of notebooks
  • GET to /notebooks/<uuid>, returns a json blob of notebook metadata and content
  • POST to /stages with {title, description, notebook}, creates a new notebook in notebooks.json table and returns a uuid


When the Docker container is first started, it creates two tinydb tables (environments.json and notebooks.json) with example records. The databases are stored in the same container as the webserver for this minimal example project (unlike nbgallery).

Docker container

To run this Docker container in a development / interactive mode, clone this repo and build/run the Docker file.

git clone
cd nbgallery-api-python
docker build -t nbgallery_api . && docker run -it -p 5000:5000 nbgallery_api

Test notebook

Once the Docker container is running, the API test notebook.ipynb should work to get a list of environments, register a new environment in the database, get a list of notebooks, and create a new notebook in the database.

You can’t perform that action at this time.