2015.02.05 Course APIs

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.

  • 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?