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.

TamasBalogh
Instructure
Instructure
21
8052

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.    

 

Roadmap

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.

21 Comments
hfchen
Community Participant

Is there any rough target date for the iterations or is that yet to come?

TamasBalogh
Instructure
Instructure
Author

@hfchen I can't commit do target dates at this moment, but I'll keep you informed.

ross_bell
Community Explorer

Thank you for the update Tamas.

I hope I am not late to the game.  A critical use case for our institution is the importing of our SIS data both diffing and batch uploads.  I do not immediately see where that would fit into the 8 described major categories.

I understand there cannot be a direct parity between the existing API and the new one, but is the end goal to match the functionality/user cases?

Thank you.

Ross Bell

TamasBalogh
Instructure
Instructure
Author

@ross_bell I'm not sure that API is the best fit to your use case. Let me reach out to you to discuss the matter.

heather-honer
Community Explorer

@TamasBalogh Thanks for this post. Very helpful.

We use the quizzes APIs extensively for accreditation reporting. I think our use case may be covered in iteration 4 but can you confirm based on the description below of datapoints used.

  • Quiz Name/Assignment Name
  • Quiz question text
  • Kept Score for each student based on the Scoring Policy
  • Answers for a student BY ATTEMPT  and whether they got the question right, wrong or didn't get the question at all. 

 

 

 

Valerie-Robs_
Community Member

Thanks for the info.  What happens to the current item banks for Quizzes when the classic retires?  Prior to iteration5-6?

TamasBalogh
Instructure
Instructure
Author

@Valerie-Robs_ I'm not sure if I understand your question, but just some info:

  • NQ API work will be finished before Classic Quizzes retires (06/2024),
  • You won't need the API to migrate your CQ Question Banks to NQ Item Banks,
  • Currently, there is no API for Classic Quizzes Question Banks.

If these don't answer your question, please elaborate. 

mauriciolopez
Community Explorer

Hi Tamas, 

I just read the answer to @Valerie-Robs_ and I have a few questions:

  • Wich one is te purpouse of the API if ia can´t make migrationts trought thar feature?
  • The timeline of the Classic Evaluations sunset indicates than in the first semester of 2022 will be released the API for NQ, have you some info of that?
  • The migration will be just managed by the GUI (the button to migrate) and the QTI info load?

Tnks for the info.

Mauricio López Alcárcel

TamasBalogh
Instructure
Instructure
Author

Hi @mauriciolopez,

API is not a feature one can easily use. It makes it possible to implement your own integrations/piece of code. I can imagine a way to migrate your Classic Quizzes to New Quizzes leveraging both Classic Quiz and New Quiz APIs but I don't see why would it be beneficial to implement such an integration.

You can check out a more detailed communication about what are we working on and what will be our next focus here

Yes, the bulk migration tool will be available through the GUI. 

TamasBalogh
Instructure
Instructure
Author

@heather-honer,

I'm sorry I haven't responded to you yet, somehow I missed your comment. This area is yet to be discovered, so I can't speak what data will be available exactly, but the type of your use case will be covered in one of the next 3 iterations. 

TamasBalogh
Instructure
Instructure
Author

Hello, please check out the latest update on the API here.

PaulAmoruso
Community Member

Good morning @TamasBalogh ,

If I have a Python Script that was developed for the classic quizzes to perform a GET request to collect quiz questions and statistics, how do I convert that to work with New Quizzes?

Any help or direction to recourses will be very appreciated/helpful.

 

Regards,

Paul

TamasBalogh
Instructure
Instructure
Author

Hi @PaulAmoruso,

We will provide some guidance on the difference between REST and GraphQL, example queries, etc. But also, Classic Quizzes is a bit different than New Quizzes, so you may also need to change the structure. 

PaulAmoruso
Community Member

Hi @TamasBalogh ,

 

Thank you for the response. Looking forward to your guidance!

SemblatGuillaum
Community Explorer

Hello, 

 

Any new of the launch date of the NEXT QUIZ API?

 

Thank you

 

Guillaume

TamasBalogh
Instructure
Instructure
Author

Hi,

As you may already know, we are implementing the New Quizzes APIs in REST, opposed to the original plans of GraphQL implementation. I'm happy to share that New Quiz API and New Quiz Items API are in beta now and will be released to production on April 15th.

taylori
Community Explorer

@TamasBalogh thank you so much for these new API endpoints and their documentation!

Do y'all want any beta testers?  I created over 100k questions and uploaded them as QTI zip files to old school questions banks for a couple of my economics courses.  I'm very excited to build an integration through the Bank Item and Entries API endpoints instead of dealing with all those files hahah

TamasBalogh
Instructure
Instructure
Author

Hi @taylori, I'm glad you find the new endpoints ueful. Currently we are focusing our efforts on different features for New Quizzes as you can see on our roadmap. Once we'll continue the work on the API endpoints, we'll let you know through more community posts. 

taylori
Community Explorer

Thanks @TamasBalogh !  Are the BankItem and BankEntry API endpoints associated with this feature coming in Q4 2023 - Q1 2024?

Screenshot 2023-08-31 at 4.39.00 AM.png

 

 

TamasBalogh
Instructure
Instructure
Author

@taylori I'm sorry for the late reply. I didn't notice your message. 
No, the Item Banks API will be a different item on our roadmap.

taylori
Community Explorer

Thanks @TamasBalogh !  Does that mean that the CRUD Item Banks through the API feature will be in Q2 2024 and Beyond?

Is there a suggested way to automate Item Bank creation?

To create Item Banks currently I create the New Quiz and New Quiz Items through the API, and then manually visit each question to convert it into an Item Bank Item.  This functionality works great in the web browser!

The problem is that I have individual courses with over 50,000 questions in each of them.  So manually clicking through 50,000 questions for each course becomes impossible.

Y'all have built such an awesome randomized quiz through item bank sampling experience for my students.  I'm eager to achieve the same functionality in New Quizzes that my students are enjoying from the traditional question bank feature using content migrations.

EDIT: sweet! right after posting I learned that I can create Item Banks from manually uploaded QTI zips: How do I import questions from a QTI package into ... - Instructure Community - 966 (canvaslms.com)

Super excited to CRUD these Item Banks through the API 🙂