For Developers

Assignments Overview

Assignments are coursework that is assigned to a group of students in a class. Assignments will always have a due date and some type of grading capability. They are always associated with exactly one class and they will always have a unique identifier within that class. Within a given class, assignments can be assigned to everyone, particular students, or to groups of students (called sections).

The relationship between a student and an Assignment is called a Submission. Currently, each student will have exactly 1 submission. In the future, we may choose to support group submissions, but this comes with its own set of challenges.

Please note, there is no specific entity for student grades. Grades are managed as a part of the Submission entity.

Assignment Aliases

Aliases are a way for developers to use their own identifiers for assignments. At the moment, only assignments support aliases.

For example, normally you would retrieve an assignment with the following URL:

https://ed.link/api/v2/graph/classes/60786a19-9713-49d1-a0d2-a2ba48c6d1eb/assignments/32a951a7-a2c0-4d12-b081-7e6a7d2c837e

With aliases you can use a custom identifier to retrieve the same assignment:

https://ed.link/api/v2/graph/classes/60786a19-9713-49d1-a0d2-a2ba48c6d1eb/assignments/edlink:101

Note that instead of using the Edlink UUID, you are able to access the assignment using the alias edlink:101.

Aliases must be in the format type:identifier where the type is a string and the identifier is a string. The type is used to distinguish between different types of aliases. For example, you might use the type edlink for assignments that you create from one source and atlas for assignments that come from another source.

An assignment can have multiple aliases. But the combination of the type and identifier must be unique. For example, you can't have two aliases with the same type and identifier, even if they are for different assignments.

This is how aliases appear when you retrieve an assignment:

{
    "$request": "d833925a-0d38-4bb9-9e0f-2a6f75530af1",
    "$data": {
        "id": "5654dafd-d1da-4f3f-adc2-3abd2e10b7e8",
        <...>
        "aliases": [
            {
                "identifier": "108",
                "type": "edlink"
            },
            {
                "identifier": "110",
                "type": "edlink"
            },
            {
                "identifier": "101",
                "type": "atlas"
            },
            {
                "identifier": "3",
                "type": "atlas"
            }
        ]
    }
}

Creating Aliases

There are 2 ways to create an assignment alias. When you are first creating the assignment, you can pass the alias in the request body in the id field.

POST https://ed.link/api/v2/graph/classes/:class_id/assignments
{
    "id": "edlink:101",
    "title": "Grade 1 Numbers to 20 Workbook",
    "due_date": "2022-10-17T17:30:00.000Z",
    "description": "Test Assignment",
    "display_date": "",
    "grading_type": "points",
    "points_possible": 100
}

The other way is to create an alias after the assignment has been created by posting to the Create Alias endpoint.

Properties

PropertyTypeDescription
idstringThe UUID for the object.
created_dateDateWhen the object was created in the source.
updated_dateDateWhen the object was last updated in the source.
titlestringThe name of the assignment.
descriptionstringThe description of the assignment. This will be used for LMS systems that support special formatting.
description_plaintextstringThe description without special formatting. This will be used for LMS systems that do not support special formatting.
stateAssignmentStateThe state of the assignment.
attachmentsAttachment[]The attachments associated with the assignment.
assignee_modeAssigneeModeThe method by which the assignment's assignees are determined.
assignee_idsstring[]If assignee_mode is set to individuals, this should be a list of Person ids.
section_idsstring[]If assignee_mode is set to sections, this should be a list of Section ids.
due_dateDateThe time at which new submissions are late for the assignment.
display_dateDateThe time at which the assignment becomes visible.
start_dateDateThe time at which submissions begin to be accepted for the assignment.
end_dateDateThe time at which submissions are no longer accepted for the assignment.
points_possiblenumberThe number of points possible for the assignment. Only present if grading_type is points.
grading_typeGradingTypeThe grading type for the assignment.
grading_scaleGradingScaleIf grading_type is letter_grade, this indicates the allowed letter grades and the point value of each.
submission_typesSubmissionType[]The types of Submissions accepted by the assignment. If not specified, providers may not accept submissions.
max_attemptsnumberThe maximum number of attempts that a Submission for this assignment can have.
session_idstringThe ID of the Session that the assignment is associated with.
category_idstringThe ID of the Category that the assignment is associated with.
rubric_idstringThe ID of the Rubric that the assignment will use for grading
parent_idstringThe UUID of the parent Assignment. Only valid when used as described here.

Provider-specific Property Details

ProviderPropertySupportedDetails
Blackboardstateavailability.available in combination with the availability.adaptiveRelease.start availability.adaptiveRelease.end dates to map to our AssignmentState.
Blackboardstart_datemaps to the availability.adaptiveRelease.start
Brightspacestateuses a combination of Availability.StartDate and IsHidden properties to map to our AssignmentState.
Brightspacestart_date🟡if Availability is set, then Availability.StartDate is respected here, but not all Brightspace dropbox folders have this.
Canvasstateif canvas locked_for_user property is true, we return locked. Otherwise, we use the Canvas published property to return either open or draft.
Canvasstart_datemaps to Canvas unlock_at property
GooglestateGoogle's PUBLISHED -> our open. Google's DRAFT -> our draft
Googlestart_dateHowever a similar property display_date is mapped to Google's scheduledTime property.
Schoologystateif their published property is true, we show open otherwise we show draft
Schoologystart_daten/a
ManageBacstatebased on the ManageBac draft boolean property.
ManageBacstart_dateonly due_date via the ManageBac due_date property
Microsoftstatemap the Microsoft closeDateTime and status properties to our AssignmentState.
Microsoftstart_dateonly display_date via the Microsoft assignDateTime or assignedDateTime properties

Supported Providers

ProviderSupport
aerieslist, get, create, update
aspenlist, get, create, update, delete
blackbaudlist, get, create, update, delete
blackboardlist, get, create, update, delete
brightspacelist, get, create, update
canvaslist, get, create, update, delete
classgatherlist, get, create, update, delete
cleverget, create, update
factslist, get, create, update
googlelist, get, create, update, delete
illuminatelist, get, create, update, delete
microsoftlist, get, create, update, delete
moodlelist, get, create, update, delete
onerosterlist, get, create, update, delete
powerschoollist, get, create, update, delete
schoologylist, get, create, update, delete
ltilist, get, create, update, delete
skywardlist, get, create, update, delete
veracrosslist, get, create, update, delete
qmlativlist, get, create, update, delete
infinitecampuslist, get, create, update, delete
rapididentitylist, get, create, update, delete
sapphirelist, get, create, update, delete
genesislist, get, create, update, delete
redikerlist, get, create, update, delete
renweblist, get, create, update, delete
synergylist, get, create, update, delete
managebaclist, get, update, delete
tylerlist, get, create, update, delete
bannerlist, get, create, update, delete
frontlinelist, get, create, update, delete
ascenderlist, get, create, update, delete