New Quizzes API: Planned Roadmap

The content in this blog is over six months old, and the comments are closed. For the most recent product updates and discussions, you're encouraged to explore newer posts from Instructure's Product Managers.

Instructure Alumni
Instructure Alumni

Product Blog Headers -- 1200 x 200.png


Last time I wrote about the way we imagine the documentation for New Quizzes GraphQL API and now I’d like to tell you about our planned roadmap for it. 

Our approach

As I previously mentioned, GraphQL is all about use cases and our approach is to build the API iteratively, adding a set of functions and fields for a use case first and build from there. After having the use cases worked out we’ll add more and more fields, queries and mutations to these use cases so you could add the details to your existing integrations. You won’t need to worry about using different versions of the API. Because of the nature of GraphQL no versioning is needed for adding new details to the API. GraphQL’s saying about versioning is:

“While there's nothing that prevents a GraphQL service from being versioned just like any other REST API, GraphQL takes a strong opinion on avoiding versioning by providing the tools for the continuous evolution of a GraphQL schema.

Why do most APIs version? When there's limited control over the data that's returned from an API endpoint, any change can be considered a breaking change, and breaking changes require a new version. If adding new features to an API requires a new version, then a tradeoff emerges between releasing often and having many incremental versions versus the understandability and maintainability of the API.

In contrast, GraphQL only returns the data that's explicitly requested, so new capabilities can be added via new types and new fields on those types without creating a breaking change. This has led to a common practice of always avoiding breaking changes and serving a versionless API.”

Let’s take the following example: When we release the first iteration you will be able to query a quiz and the details of the QuizItems (questions and Stimuli)  included. What you won’t be able to do is to fetch information about whether the QuizItem is in an Item Bank or not. We are going to add Item Bank functionalities later and will extend the QuizItem object with those details. In case  you have a query with QuizItems, but don’t need Item Banks information, you won’t need to change your code. If you wish to  extend your integration, you just simply amend your query with Item Banks related fields and then handle the added information in your code.    



Based on your feedback and the requirements of third party tools we have a plan in mind regarding delivering the API. As we’ll further dig into details, this might change a bit.  


Uses cases

We categorized the use cases into 8 major categories and we plan to work and release these one by one. The use cases are:

  • Building a quiz (create quiz, edit and publish it, add questions to a quiz, etc).
  • Retrieve quizzes and questions outside Canvas
  • Printing quizzes and then submitting them after scanning back
  • Setting extra time and attempts for students
  • Importing questions from textbooks or other systems
  • Generating quiz/student analytics, reports
  • Bulk submission actions
  • Item bank operations (create, edit and delete item banks, add questions to a bank, share an item bank)

Some of the above are partially overlapping each other, however one might not cover all the aspects of the other use cases. 


Iteration 1 - Quiz building:

In iteration 1, we are going to release the queries and mutations related to Quiz Building, like create, update a quiz and the same for quiz Items (questions and stimuli). 

What does this mean for you: This should cover your needs to build an entire quiz, adding quiz items to it (except from Item Banks), change any details, delete questions or quizzes, etc. Most probably the functionalities will fully cover the use case for Retrieving quiz data outside Canvas and the Importing questions from third party systems as well. 


Iteration 2-4: 

The next 3 iteration’s order is still subject to change at the moment and will be decided later considering what's best for the consumers. We will set the order for the following 3 use cases:

  • Set extra time and attempts for students
  • Generating student/item analysis
  • Bulk submission actions

What does this mean for you: You will be able to provide accommodations to students in bulk via the API, download student and item analysis reports for further use and submit a quiz in the name of particular students. The last one will also allow you to get all the submission details and generate analysis on your own if you wish. With the submitting in place you should be able to implement your Scantron process as well.


Iteration 5-6: 

In the last iterations we’ll add the Item Banks related functionality in two steps. First we will deliver the CRUD operations, then sharing Item Banks will be available.

What does this mean for you: The first will allow you to be able to create your Item Banks, fill them with questions and add quiz items to quizzes from banks. Lastly, sharing Item Banks to other courses and teachers will be available.


After all this:

Meanwhile releasing an iteration and working on the next, we will be open for feedback, suggestions and requests. Our plan is to add the small details and missing fields based on what we hear throughout the releases of iterations. 


Working with partners

We are working with some of our partners, while we haven’t heard back from others. If you are worried about your vendor’s integration with New Quizzes, please reach out to them and ask for details. 

The content in this blog is over six months old, and the comments are closed. For the most recent product updates and discussions, you're encouraged to explore newer posts from Instructure's Product Managers.