Your Input Needed: Share Your Assignment Valence API Experience with Us!
Hi Everyone!
We will be updating our Assignment Valence APIs to ensure they are compatible with the new Advanced Assessment workflows when they become available to everyone next year.
This means we need to know more about how our users are using our Valence APIs today and therefore we're reaching out to our amazing community because we want to hear from you to understand a bit more about what you are doing with our Assignment Valence APIs now.
🔍 How are you using our APIs right now? 🤔
Whether you've built an app using our APIs, automated a tedious task such as publishing empty evaluations, or crafted something entirely unique, we want to know more about how you're using our APIs today! Share your success stories and any challenges overcome with using our Assignment Valence APIs. Your feedback will help us better understand what we need to build and update in our APIs.
💬 Drop a comment below and tell us:
- 🛠 Which API(s) are you currently leveraging? What specific problems are you trying to solve with the APIs?
- 🚀 Do you have a specific idea or project you want to build with the Valence APIs? What is the project? Are there limitations to the APIs that's causing you not to build the project?
- 🤝 How can D2L better support you in your API usage?
Looking forward to hearing from all of you!
Jackie
Product Manager
D2L
Comments
-
Hi @Jackie.G.212
Is there a date that you need this feedback by?
Regards, Anne -
1. Which API(s) are you currently leveraging? What specific problems are you trying to solve with the APIs?
We’re currently using a wide range of APIs mostly to give us the capability to do bulk setup or build capabilities that Brightspace doesn’t natively or easily support. Many of them smooth over the rough edges that happen when we sync between our SIS (Infinite Campus) and Brightspace. Our goal is to remove as much manual work as possible for teachers so they can focus on teaching rather than on administrative tasks.
- Bulk Gradebook Setup - our category splits are set by department policy at our high school and are configured correctly in our SIS. We push a mirror of this setup into Brightspace after the first sync of a new school year.
- Set Academic Term for Grade Items based on Assignment/Quiz Due Date - Grade Items only sync over to our SIS if they have an Academic Term. We set the Academic Term for all applicable grade items based on the due or end date of the associated Assignment or Quiz. This means the teacher can operate on grades solely through the tools attached to the Assignment or Quiz.
- Categorize Assignments Automatically. - We’ve built a tool that categorizes assignments in our SIS automatically based on the information in Brightspace. (Since Brightspace doesn’t use support a version of OneRoster that transmits category information.)
- Create Template Classes - We created template classes for every high school course that can be used as the clean basis of a course each year. It is also a durable place to store materials in case of personnel or teaching assignment changes.
- Local Data Warehouse from DataHub - We have a job that periodically pulls down the latest exports from Datahub and integrates them into a database. It has the option to keep export versioning, but we rarely use it.
- Update Pinning - This does a beginning of the year Pinned Courses update for instructors, pinning new courses and (optionally) unpinning old ones.
- Clean up ‘Ghost’ Enrollments’ - The rostering sync between our SIS and Brightspace isn’t perfect and the slightly different model of how those are represented sometimes causes people to remain in classes in Brightspace even when dropped in our SIS. This provides a process to force through Delete commands over the IPSIS Sync.
- Profile Picture Updater (not yet in production) - We’re not quite ready for this one, but it will update any unset profile pictures with the school photo from this year, or if the existing photo is school photo from a previous year, update it with the current one.
2. Do you have a specific idea or project you want to build with the Valence APIs? What is the project? Are there limitations to the APIs that's causing you not to build the project?
I’d like to make the process of syncing assignments and grade from Brightspace to our SIS nearly seamless. We need three main things:
- Webhooks: Some implementation of webhooks so that Brightspace can make a callback to an endpoint telling it that there was new data to process.
- Semester Dates in API: The ability to pull Semester dates from the API. (Right now they are only available via the Datahub downloads.)
- Syncing Initiation by API: The ability to kick off a grades sync for an class via the API.
End Point Tweaks:
- I’d like to see the Org Unit Descendents endpoint (/d2l/api/lp/(version)/orgstructure/(orgUnitId)/descendants/) include the IsActive field and allow filtering on it. Often I’m only wanting to operate on active OUs and right now I need to make a call to a separate endpoint to filter those.
- I’d like to see the GradeObject endpoint be filterable by if it has an associated tool (/d2l/api/le/(version)/(orgUnitId)/grades/) . A param could take a boolean for hasAssociatedTool or take a specific toolID. I’d prefer the former. I’d also prefer for the GradeObject to include IPSIS information rather than putting that behind a second call.
3. How can D2L better support you in your API usage?
Python is our primary programming language. The SDK from D2L is about 7 years out of date and is mostly useless. I’d like to see that updated or removed. Python specific getting started instructions or best practices would be nice.
-
- Which API(s) are you currently leveraging? What specific problems are you trying to solve with the APIs?
We have build our own "All in one" student app in which they can see their roster, announcements (from Brightspace), final Grades from our SIS and upcoming assignments.
For the announcements and assignments we use the API's and we run into the problem (especially with the assignments) that we need a lot of API calls per student to get the list of assignments which are open for the student. We first need to loop over the enrollments for the students, than we have to loop over all the assignments (dropboxes) to see which ones are open/available for the student to submit. With over 30.000 students this results in performance issues. It would be helpful to have one single endpoint which takes a userId as parameter to get all the available assignments for this userid. A bit like GET /d2l/api/le/(version)/news/user/(userId)/ for announcements.
The endpoint should respect the recently added visibility options (and in the ideal situation release conditions so you don't have to use the API to do an access check on every individual assignment).
We are trying to build a solution using datastreams but one single API call to get all the assignments for a user would be easier. - Do you have a specific idea or project you want to build with the Valence APIs? What is the project? Are there limitations to the APIs that's causing you not to build the project?
We are building a chain of applications to support more flexible learning paths. This chain consists of:
- AEP (Avans Edu Platform): A tool in which we define our modules and specify the assignments and how they will be graded (the rubic which will be used). We have an integration from this tool to Brightspace to created the course offering in Brightspace once a module is ready to be published.
- ASP (Avans Study Path): A tool in which a student can see which modules are available. In this tool a student can enroll in a module and this enrollment is synct to Brightspace using the API's.
- ASR (Avans Study Results): A tool we want to use to collect all the results for tests and assignments from the different tools like Brightspace we use to grade work.
For further development of this chain we are working on:
Using the the API to create the assignments assignments in Brightspace based on the assignment information in AEP. For this to work reliable we need a "OrgDefinedCode" attribute in the GradeObject data block so the grade item linked to the dropbox/assignment can always be identified by the code we use in our systems. This is PIE D7795 and D9880. When a grade item can have a OrgDefinedCode when can also use this code to sync the grade with our ASR tool.
We want to define our rubrics in the AEP tool where the modules are developed and it would be really nice to have API calls to create rubrics. This is PIE D9898
Last but not least, for a chain of linked applications to work reliable you need to be able to "lock" some items which are created through the API so a teacher can not delete a grade item or dropbox which is created using the API. This is D9553
- Which API(s) are you currently leveraging? What specific problems are you trying to solve with the APIs?
-
I'm assuming that the request for API use cases is specific to Assignment (dropbox) use cases, correct?
I have two requests at this point:
1.) An API route that shows all of a learner's submissions. Today, you need to iterate through every folder. It would be nice to flip that, and say: "show me all submissions for a particular userId."
2.) Make the Assignment event logs available via API. -
Hi @Anne.D.982 - if you can have something for me in the next week or two, that'd be great
-
Hi @Matt.F.756 - Thanks for taking the time to write such a detailed response. Unfortunately, I don't think our upcoming scope of work will include updating the SDK but I'll keep that in mind as a feedback from customers for the team.
-
Hi @Arald.d.320 for the AEP (Avans Edu Platform)and ASR (Avans Study Results)- are you going to be using the APIs to create and edit assignments? Will the ASR be instructor facing?
-
Hi @Jonathan.W.515 - yes this is strictly for assignments. We are looking to update the APIs to accomodate the workflows in Advanced Assessments, but no major re-hauling of assignment APIs.