From b47412167f8e3f61a80bc4d44ba0efd851f4968b Mon Sep 17 00:00:00 2001
From: Sebastian
your 200 word story
", - "exempt" : false, - "created" : "2023-10-09T18:40:34.278Z", - "attemptDate" : "2023-10-09T18:41:00.562Z", - "modified" : "2023-10-12T13:03:14.372Z", - "attemptReceipt" : { - "receiptId" : "eec942431d4f4266b5571ecade1fe4c1", - "submissionDate" : "2023-10-09T18:41:00.562Z", - "submissionTotalSize" : 26 - } - } - ] + "results": [ + { + "id": "_844981_1", + "userId": "_28497_1", + "status": "Completed", + "displayGrade": { + "scaleType": "Score", + "score": 62.5 + }, + "text": "62.50000", + "score": 62.5, + "feedback": "your 200 word story
", + "exempt": false, + "created": "2023-10-09T18:40:34.278Z", + "attemptDate": "2023-10-09T18:41:00.562Z", + "modified": "2023-10-12T13:03:14.372Z", + "attemptReceipt": { + "receiptId": "eec942431d4f4266b5571ecade1fe4c1", + "submissionDate": "2023-10-09T18:41:00.562Z", + "submissionTotalSize": 26 + } + } + ] } ``` The pertinent data we have collected thus far on our rubric quest is: -* `"courseId":"_1234_1` -* `"rubricId": "_11964_1"` -* `"gradebookColumnId": "_120127_1"` -* `"associationId": "_15388_1"` -* `"attemptId" : "_844981_1"` -* and `"userId" : "_28497_1"` +- `"courseId":"_1234_1` +- `"rubricId": "_11964_1"` +- `"gradebookColumnId": "_120127_1"` +- `"associationId": "_15388_1"` +- `"attemptId" : "_844981_1"` +- and `"userId" : "_28497_1"` Note: You may leverage the grade `status` to determine whether to proceed with pulling any evaluation data. There is really no point in making the evaluation requests if the status is not "Completed". #### Evaluations + You may use the attempt information, notably the `attemptId` and the `gradebookColumnId` to find the instructor entered evaluation data: `GET /learn/api/public/v1/courses/{courseId}/gradebook/columns/{columnId}/attempts/{attemptId}/rubric/evaluations` @@ -381,35 +394,36 @@ Results: ```json { - "results" : [ - { - "id" : "_47213_1", - "rubricAssociationId" : "_15388_1", - "evaluationEntity" : { - "attemptId" : "_844981_1" - }, - "possibleScore" : { - "numerator" : 100, - "denominator" : 1 - }, - "totalScore" : { - "numerator" : 125, - "denominator" : 2 - }, - "submitted" : "2023-10-11T19:56:19.483Z" - } - ] + "results": [ + { + "id": "_47213_1", + "rubricAssociationId": "_15388_1", + "evaluationEntity": { + "attemptId": "_844981_1" + }, + "possibleScore": { + "numerator": 100, + "denominator": 1 + }, + "totalScore": { + "numerator": 125, + "denominator": 2 + }, + "submitted": "2023-10-11T19:56:19.483Z" + } + ] } ``` + The pertinent data we have collected thus far on our rubric quest is: -* `"courseId":"_1234_1` -* `"rubricId": "_11964_1"` -* `"gradebookColumnId": "_120127_1"` -* `"associationId": "_15388_1"` -* `"attemptId" : "_844981_1"` -* `"userId" : "_28497_1"` -* and `"evaluationId": "_47213_1"` +- `"courseId":"_1234_1` +- `"rubricId": "_11964_1"` +- `"gradebookColumnId": "_120127_1"` +- `"associationId": "_15388_1"` +- `"attemptId" : "_844981_1"` +- `"userId" : "_28497_1"` +- and `"evaluationId": "_47213_1"` To access the actual rubric criteria applied for the evaluation and any feedback provided by the grader you need to expand the evaluation cells: @@ -421,62 +435,62 @@ Results: ```json { - "id" : "_47213_1", - "rubricAssociationId" : "_15388_1", - "evaluationEntity" : { - "attemptId" : "_844981_1" - }, - "possibleScore" : { - "numerator" : 100, - "denominator" : 1 - }, - "totalScore" : { - "numerator" : 125, - "denominator" : 2 - }, - "submitted" : "2023-10-11T19:56:19.483Z", - "cells" : [ - { - "id" : "_95594_1", - "rubricCellId" : "_167078_1", - "rubricRowId" : "_45050_1", - "selectedScore" : { - "numerator" : 100, - "denominator" : 1 - }, - "feedback" : "comment 1
" - }, - { - "id" : "_95596_1", - "rubricCellId" : "_167083_1", - "rubricRowId" : "_45051_1", - "selectedScore" : { - "numerator" : 75, - "denominator" : 1 - }, - "feedback" : "comment 2
" - }, - { - "id" : "_95599_1", - "rubricCellId" : "_167088_1", - "rubricRowId" : "_45052_1", - "selectedScore" : { - "numerator" : 50, - "denominator" : 1 - }, - "feedback" : "comment 3
" - }, - { - "id" : "_95603_1", - "rubricCellId" : "_167093_1", - "rubricRowId" : "_45053_1", - "selectedScore" : { - "numerator" : 25, - "denominator" : 1 - }, - "feedback" : "comment 4
" - } - ] + "id": "_47213_1", + "rubricAssociationId": "_15388_1", + "evaluationEntity": { + "attemptId": "_844981_1" + }, + "possibleScore": { + "numerator": 100, + "denominator": 1 + }, + "totalScore": { + "numerator": 125, + "denominator": 2 + }, + "submitted": "2023-10-11T19:56:19.483Z", + "cells": [ + { + "id": "_95594_1", + "rubricCellId": "_167078_1", + "rubricRowId": "_45050_1", + "selectedScore": { + "numerator": 100, + "denominator": 1 + }, + "feedback": "comment 1
" + }, + { + "id": "_95596_1", + "rubricCellId": "_167083_1", + "rubricRowId": "_45051_1", + "selectedScore": { + "numerator": 75, + "denominator": 1 + }, + "feedback": "comment 2
" + }, + { + "id": "_95599_1", + "rubricCellId": "_167088_1", + "rubricRowId": "_45052_1", + "selectedScore": { + "numerator": 50, + "denominator": 1 + }, + "feedback": "comment 3
" + }, + { + "id": "_95603_1", + "rubricCellId": "_167093_1", + "rubricRowId": "_45053_1", + "selectedScore": { + "numerator": 25, + "denominator": 1 + }, + "feedback": "comment 4
" + } + ] } ``` @@ -485,33 +499,45 @@ Now that you know the rubricCellId and rubricRowId you may inspect the original Also, by this point you have collected sufficient information (course, user, grade column, grade, rubric, etc) to inform any additional logic such as passing data to your SIS, Reporting, or User facing interfaces! ## Entitlements and System Role Privileges -### Necessary Entitlements + +### Necessary Entitlements + Rubrics entitlements required per endpoint are listed in the rubrics API documentation. #### Read Rubrics -* course.rubrics.VIEW + +- course.rubrics.VIEW + #### Read Associations -* course.rubrics.VIEW -* course.gradebook-metadata.VIEW -* course.gradebook.MODIFY + +- course.rubrics.VIEW +- course.gradebook-metadata.VIEW +- course.gradebook.MODIFY + #### Read Evaluations, and Columns and Attempts -* course.gradebook.MODIFY +- course.gradebook.MODIFY + +### Necessary Role Privileges -### Necessary Role Privileges **Note**: You must share these System Role Privileges with Learn System Admins via your documentation for successful deployment of your application on their Learn server. + #### Read Rubrics -* Course/Organization Control Panel (Tools) > Rubrics > View Rubric + +- Course/Organization Control Panel (Tools) > Rubrics > View Rubric + #### Read Associations -* Course/Organization Control Panel (Tools) > Rubrics > View Rubric -* Course/Organization Control Panel (Grade Center) > View Grade Center Items and Settings -* Course/Organization Control Panel (Grade Center) > Full Control + +- Course/Organization Control Panel (Tools) > Rubrics > View Rubric +- Course/Organization Control Panel (Grade Center) > View Grade Center Items and Settings +- Course/Organization Control Panel (Grade Center) > Full Control + #### Read Evaluations, and Columns and Attempts -* Course/Organization Control Panel (Grade Center) > Full Control + +- Course/Organization Control Panel (Grade Center) > Full Control ## Rubrics APIs Best Practices -Note: Please review our General REST API Best Practices which are outlined in our [REST API Best Practices](/docs/rest-apis/rest-api-best-practices) guide. -* Cache rubrics and gradebook data when working within a specific course and gradebook to reduce the number of requests required. +Note: Please review our General REST API Best Practices which are outlined in our [REST API Best Practices](/docs/blackboard/rest-apis/best-practices.md) guide. -+ Connect with other developers, learn from their experiences, and share + your knowledge. +
+ + Visit our community +Discover everything you need to build for Anthology Solutions.
+{props.message}
+ + Documentation{" "} +{description}
-{siteConfig.tagline}
- Explore the latest Anthology developer documentation, including - tutorials, sample code, articles, and APIs. -}maq
zzaB%PXlr7f1@4yo)T8x^A{NXn2(^)Au0-)8bPT9T$II?xT?EaoN1qFf2(1)aml@XD
zpm8A&MdRavJQ3R`1o82 Nx-!+30;X5B~EbXPXtnefIJdxjnvFH`Cmn>8TGO
zPEfC-w?sd^LXry>P3irZ=@`B5QfkKw6%vtXn`FsXT$1a1Amw2Zo!+dpEy