P2PU API Primitives

There's been a lot of talk recently about P2PU as a platform, an API, and possibly some sort of plugin architecture. I think a good first step is to think about P2PU as a set of primitives that we expose via the API.

What are the basic primitives shared across the different learning models at P2PU?

Goal: Define an API that will let developers create new types of P2P Learning interactions in addition to Courses, Study Groups, and Challenges.