✓ GET    /api/ping                                       -- returns "pong"
✓ POST   /api/auth-token                                 -- create an return an auth token given {"username": "...", "password": "..."}
✓ GET    /api/verify-auth                                -- returns 200 or 401 depend on validity of the provided auth (auth ping)
✓ GET    /api/projects                                   -- return project summaries
- POST   /api/projects                                   -- create a new project
- GET    /api/project/<proj-id>                          -- TODO
* GET    /api/project/<proj-id>/runs                     -- list summary information for all runs
* GET    /api/project/<proj-id>/runs/active              -- list summary information about all currently active runs
- GET    /api/project/<proj-id>/runs/<run-id>            -- list detailed information about a specific run
✓ GET    /api/project/<proj-id>/versions                 -- list the versions of this project that have been built
* GET    /api/project/<proj-id>/version/<ref>            -- return detailed project definition (include steps) at a specific version
- GET    /api/project/<proj-id>/step/<step-id>           -- return detailed step information (include runs)
* POST   /api/project/<proj-id>/step/<step-id>/run/<ref> -- kick off a run


Legend:
  ✓ implemented with passing tests
  * implemented, needs testing
  - not implemented
  M missing (not even stubbed out)