Developer Platform (August 2026)

Assessments and rubrics

«  My CPD Records   ·  [   home  ·   reference  ·   community   |   search  ·   index   ·  routing table   ·  scopes table   ]   ·  LTI Advantage management (registrations, deployments, and links)  »

Attributes

ASSESSMENT_T

We categorize the kinds of assessments that can be performed, and use the term ASSESSMENT_T to stand in for an appropriate string name.

Assessment type

Rubric

EVAL_T

We categorize the kinds of objects that can be associated with (evaluated by) rubrics, and use the term EVAL_T to stand in for an appropriate string name.

Object type for evaluation

Dropbox

ManualAssessment

Quiz

Survey

Discussion

Grades

ContentObject

RUBRIC_T

We categorize the kinds of scoring rubrics into types, and use the term RUBRIC_T to stand in for an appropriate integer value.

Rubric type

Value

Holistic

0

Analytic

1

SCORING_M

We support a number of different ways of scoring when providing assessments. We use the term SCORING_M to stand in for an appropriate integer value.

Scoring method

Value

TextOnly

0

Points

1

TextAndNumeric

2

CustomPoints

3

RUBRIC_STATE_ID_M

We support a number of different rubric states. We use the term RUBRIC_STATE_ID_M to stand in for an appropriate integer value.

Rubric state

Value

Published

0

Archived

1

Draft

2

VISIBILITY_M

We support a number of different visibility states. We use the term VISIBILITY_M to stand in for an appropriate integer value.

Visibility

Value

AlwaysVisible

0

VisibleOnceFeedbackPosted

1

NeverVisible

2

Rubric.CriteriaGroup
{
    "Name": <string>,
    "Levels": [  // Array of Level blocks
        { <composite:Level> },
        { <composite:Level> }, ...
    ],
    "Criteria": [  // Array of Criterion blocks
        {
            "Id": <number:D2LID>,
            "Name": <string>,
            "Cells": [  // Array of CriterionCell blocks
                {
                    "Feedback": { <composite:RichText> },
                    "Description": { <composite:RichText> },
                    "Points": <number:decimal>|null
                },
                { <composite:CriterionCell> }, ...
            ]
        },
        { <composite:Criterion> }, ...
    ]
}
Rubric.Level
{
    "Id": <number:D2LID>,
    "Name": <string>,
    "Points": <number:decimal>|null
}
Rubric.OverallLevel
{
    "Id": <number:D2LID>,
    "Name": <string>,
    "RangeStart": <number:decimal>|null,
    "Description": { <composite:RichText> },
    "Feedback": { <composite:RichText> }
}
Description and Feedback properties

Note that these properties require a RichText object.

Rubric.Rubric

Defines a rubric in the abstract, without any attached assessment.

{
    "RubricId": <number:D2LID>,
    "Name": <string>,
    "Description": "{composite:RichText}",
    "RubricType": <number:RUBRIC_T>,
    "RubricStateId": <number:RUBRIC_STATE_ID_M>,
    "ScoringMethod": <number:SCORING_M>,
    "Visibility": <number:VISIBILITY_M>, // Added with LMS v20.26.4
    "IsScoreVisibleToAssessedUsers": <boolean>,
    "ReverseLevelDisplayOrder": <boolean>, // Added with LMS v20.26.4
    "CriteriaGroups": [  // Array of CriteriaGroup blocks
        { <composite:CriteriaGroup> },
        { <composite:CriteriaGroup> }, ...
    ],
    "OverallLevels": [  // Array of OverallLevel blocks
        { <composite:Overalllevel> },
        { <composite:OverallLevel> }, ...
    ]
}
Rubric.RubricAssessment

Defines an assessment with accompanying rubric.

{
    "RubricId": <number:D2LID>,
    "UserId": <number:D2LID>,
    "ObjectType": <string>,
    "ObjectId": <number:D2LID>,
    "OverallOutcome": {
        "LevelId": <number:D2LID>,
        "Score": <number:decimal>|null,
        "ScoreIsOverridden": <boolean>,
        "Feedback": { <composite:RichText> },
        "FeedbackIsOverridden": <boolean>,
        "AssessorId": <number:D2LID>,
        "AutoCalculate": <boolean>|null,
    },
    "CriteriaOutcome": [ // Array of CriterionOutcome blocks
        {
            "CriterionId": <number:D2LID>,
            "LevelId": <number:D2LID>|null,
            "Score": <number:decimal>|null,
            "ScoreIsOverridden": <boolean>,
            "Feedback": { <composite:RichText> },
            "FeedbackIsOverridden": <boolean>
        },
        { <composite:CriterionOutcome> }, ...
    ]
}
Rubric.RubricPropertiesUpdate
{
    "Name": <string>|null,
    "Description": { <composite:RichTextInput> }|null,
    "RubricStateId": <number:RUBRIC_STATE_ID_M>|null,
    "Visibility": <number:VISIBILITY_M>|null,
    "IsScoreVisibleToAssessedUsers": <boolean>|null,
    "ReverseLevelDisplayOrder": <boolean>|null
}

Note

If you provide a null value for a field when providing this structure, the back-end service will leave the field’s current value un-touched.

Rubric.CriterionCellInput
{
    "Feedback": { <composite:RichTextInput> }|null,
    "Description": { <composite:RichTextInput> }|null,
    "Points": <number:decimal>|null
}
Feedback, Description

If the rubric’s SCORING_M is TextOnly the value for Feedback must not be null; if the rubric’s SCORING_M is CustomPoints (respectively), the value for Description must not be null.

Note

If you provide a null value for a field when providing this structure, the back-end service will leave the field’s current value un-touched.

Rubric.CriterionInput
{
    "Name": <string>,
    "Cells": [  // Array of CriterionCellInput blocks, one per level
        { <composite:Rubric.CriterionCellInput> },
        { <composite:Rubric.CriterionCellInput> }, ...
    ]
}
Rubric.LevelInput
{
    "Name": <string>,
    "Points": <number:decimal>|null
}
Points

Can be null (meaning the field will be ignored) if the rubric’s SCORING_M is TextOnly. Otherwise, this property must have a non-null number value.

Rubric.CriteriaGroupInput
{
    "Name": <string>,
    "Levels": [  // Array of LevelInput blocks
        { <composite:Rubric.LevelInput> },
        { <composite:Rubric.LevelInput> }, ...
    ],
    "Criteria": [  // Array of CriterionInput blocks
        { <composite:Rubric.CriterionInput> },
        { <composite:Rubric.CriterionInput> }, ...
    ]
}
Rubric.OverallLevelInput
{
    "Name": <string>,
    "RangeStart": <number:decimal>|null,
    "Description": { <composite:RichTextInput> }|null,
    "Feedback": { <composite:RichTextInput> }|null
}
Description, Feedback

If you provide null for these fields, the back-end service will leave the current value unchanged.

RangeStart

You must provide a non-null value for this field unless the rubric’s SCORING_M is TextOnly; in this case, you may provide a null value and if so, the back-end service will leave the current value unchanged.

Rubric.RubricInput

Used to create a new rubric, or to replace the contents of an existing one. This structure never includes any identifiers; not for the rubric itself, nor for any of its criteria groups, criteria, levels, or overall levels.

{
    "Name": <string>,
    "Description": { <composite:RichTextInput> },
    "RubricType": <number:RUBRIC_T>,
    "RubricStateId": <number:RUBRIC_STATE_ID_M>,
    "ScoringMethod": <number:SCORING_M>,
    "Visibility": <number:VISIBILITY_M>,
    "IsScoreVisibleToAssessedUsers": <boolean>,
    "ReverseLevelDisplayOrder": <boolean>,
    "CriteriaGroups": [  // Array of CriteriaGroupInput blocks
        { <composite:Rubric.CriteriaGroupInput> },
        { <composite:Rubric.CriteriaGroupInput> }, ...
    ],
    "OverallLevels": [  // Array of OverallLevelInput blocks
        { <composite:Rubric.OverallLevelInput> },
        { <composite:Rubric.OverallLevelInput> }, ...
    ]
}

All properties other than those documented on the nested CriterionCellInput, LevelInput, and OverallLevelInput blocks are required.

Actions

DELETE /d2l/api/le/(version)/(orgUnitId)/rubrics/(rubricId)

Delete a rubric.

Parameters:
  • version (D2LVERSION) – API version.

  • orgUnitId (D2LID) – Org unit ID.

  • rubricId (D2LID) – Rubric ID.

Oauth2 Scopes:

rubrics:objects:write

Status Codes:
API Versions:
  • 1.97+ – Route first appears in LMS v20.26.8.

GET /d2l/api/le/(version)/(orgUnitId)/assessment

Retrieve an assessment in an org unit.

Parameters:
Query Parameters:
  • assessmentType (ASSESSMENT_T) – Assessment type.

  • objectType (EVAL_T) – Type name for object associated with the assessment.

  • objectId (D2LID) – Object ID.

  • rubricId (D2LID) – Rubric ID.

  • userId (D2LID) – User for whom the assessment applies.

Oauth2 Scopes:

rubrics:assessments:read

Status Codes:
API Versions:
  • 1.93+ – Route first appears in LMS v20.26.4.

Input. You must provide: a particular object type name (for example, Discussion), the identifier for that object, an assessment type, a rubric identifier for the relevant rubric, and the user ID for the user in question.

Return. This action returns a RubricAssessment JSON structure.

GET /d2l/api/le/(version)/(orgUnitId)/rubrics/

Retrieve rubrics for an object in an org unit.

Parameters:
Query Parameters:
  • objectType (EVAL_T) – Type name for object associated with the evaluation.

  • objectId (D2LID) – Object ID.

Oauth2 Scopes:

rubrics:objects:read

Status Codes:
API Versions:
  • 1.93+ – Route first appears in LMS v20.26.4.

Input. You must provide a particular object type name (for example, Discussion), and the identifier for that object.

Return. This action returns a JSON array of Rubric blocks for all the rubrics that apply to your specified object.

GET /d2l/api/le/(version)/(orgUnitId)/rubrics/(rubricId)

Retrieve a single rubric.

Parameters:
  • version (D2LVERSION) – API version.

  • orgUnitId (D2LID) – Org unit ID.

  • rubricId (D2LID) – Rubric ID.

Oauth2 Scopes:

rubrics:objects:read

Status Codes:
API Versions:
  • 1.97+ – Route first appears in LMS v20.26.8.

Return. This action returns a single Rubric JSON block.

POST /d2l/api/le/(version)/(orgUnitId)/rubrics/

Create a new rubric in an org unit.

Parameters:
JSON Parameters:
Oauth2 Scopes:

rubrics:objects:write

Status Codes:
API Versions:
  • 1.97+ – Route first appears in LMS v20.26.8.

Input. Provide a RubricInput JSON block describing the new rubric.

Return. This action returns the newly created rubric as a full Rubric JSON block.

PUT /d2l/api/le/(version)/(orgUnitId)/assessment

Update an assessment in an org unit.

Parameters:
JSON Parameters:
  • RubricAssessment (JSON composite) – Required. Updated assessment properties (see input description).

Query Parameters:
  • objectType (EVAL_T) – Type name for object associated with the assessment.

  • objectId (D2LID) – Object ID.

  • userId (D2LID) – User for whom the assessment applies.

Oauth2 Scopes:

rubrics:assessments:write

Status Codes:
API Versions:
  • 1.93+ – Route first appears in LMS v20.26.4.

Input. You must provide a query parameter value for: a particular object type name (for example, Discussion); the identifier for that object; and, the user ID for the user in question. You must also provide a JSON block for the updated assessment.

Return. This action returns the updated value of the assessment in a RubricAssessment JSON structure.

PUT /d2l/api/le/(version)/(orgUnitId)/rubrics/(rubricId)

Update an existing rubric, including its criteria groups, criteria, levels, and overall levels.

Parameters:
  • version (D2LVERSION) – API version.

  • orgUnitId (D2LID) – Org unit ID.

  • rubricId (D2LID) – Rubric ID.

JSON Parameters:
Oauth2 Scopes:

rubrics:objects:write

Status Codes:
API Versions:
  • 1.97+ – Route first appears in LMS v20.26.8.

Input. Provide a RubricInput JSON block.

Return. This action returns the updated rubric as a full Rubric JSON block.

PUT /d2l/api/le/(version)/(orgUnitId)/rubrics/info/(rubricId)

Update a small set of basic properties on an existing rubric.

Parameters:
  • version (D2LVERSION) – API version.

  • orgUnitId (D2LID) – Org unit ID.

  • rubricId (D2LID) – Rubric ID.

JSON Parameters:
Oauth2 Scopes:

rubrics:objects:write

Status Codes:
API Versions:
  • 1.97+ – Route first appears in LMS v20.26.8.

Input. Provide a RubricPropertiesUpdate JSON block.

Return. This action returns the full updated rubric as a Rubric JSON block.

«  My CPD Records   ·  [   home  ·   reference  ·   community   |   search  ·   index   ·  routing table   ·  scopes table   ]   ·  LTI Advantage management (registrations, deployments, and links)  »