2015.02.05 Course APIs
Clinton, Carson, Brandon, Nimisha, Dave O, Miki, Peter, Piotr, Ned, Cale, Ed, Jim, Vishal, Matt
Deltas from last time:
- stripped out all the content APIs
- structure is a json object mapping ids to block structure data, children is a list of ids
- why isn't it hierarchical?
- flat is more application-agnostic
- tree might not be general enough, if the course is a dag.
- even orphans can be listed with a flat structure.
- why isn't it hierarchical?
- authentication hasn't been discussed
- dedx is moving auth components to a separate repo
- authorization
- anyone can look at any course
- the api will be publicly exposed
- don't mobile app users have an oauth token?
- clinton will be dealing with permissions.
- MUST: be sure an oauth2 token isn't enough to access all courses.
The internal API (a method on modulestore returning JSON) is needed, but isn't meant for wide use
- MUST: Add to the docstring, explaining all of the downsides, and the appropriate use of this method.
Content versions?
- This only provides the published version.
- For analytics, they will need to report on out-of-date content, so versioning must be accommodated somehow.
- versions have to be exposed throughout the system.
Detail questions:
- The blocks are in the "blocks" object under their usage key, and then have the key as "id" in the block itself.
- The blocks have "type", what about "category"?
- "category" is old, we prefer "blocktype"
- Why is depth=2 included?
- oversight, that is going away.
- Will this be in Birch?
- no.
Everyone is OK with this going forward.
Course API Unification
- Not enough detail to code to yet.
- Dave was trying to flesh out a scheme for layering APIs
- Content-based vs Discovery-based: did that make sense?
- Dave: what would be sufficient detail to make a decision?
- Where do we plugin our API?
- Guidelines about where an API should live.
- Everyone wants to know what the whole namespace looks like,
- and what the rules are for adding to the namespace.
- for example, "this part of the namespace needs to be highly performant"
- Guiding principles for API in general.
- There's a doc growing these guidelines
- deliverable by the end of this month.
- bring that to arch council
- Deployment? Resident in LMS always?
- API/process is not 1-1
- Moving more toward a model of process components that host multiple APIs
- Discovery layer?
- Yes, we need to think about service discovery.
- People have floated ideas, but no one has gotten to the point of a proposal.
- We will favor having small APIs
- Central discovery will be important, but we don't know enough yet.
- There will be a number of deployment use cases to solve
- token storage
- rate limiting
- monitoring
- What does Dave want other people to think about?