For Developers

The Submission Lifecycle

submission-lifecycle

What is a Submission?

A Submission is a student's response to a class assignment; it is a relationship between an assignment and a student. Submissions contain an array of Attempts to which one is added each time the student submits the assignment.

A submission will always exist for every enrolled student in a course. If a student has not submitted any work for an assignment, the submission will be in the created state. This is made possible by Phantom Submissions.

What is an Attempt?

An Attempt is a student's submitted work for an assignment. A new attempt is created every time a student submits an assignment. Attempts are immutable and cannot be updated or deleted.

Submission States

The submission lifecycle is the process that a submission goes through from the time a student submits it until the time it is graded and returned to the student. The submission lifecycle is tracked by the Submission State and is as follows:

created -> submitted -> returned
\-> reclaimed

The submission state is read-only. The state is updated automatically as the submission progresses through the lifecycle and different actions are taken on the submission.

Lifecycle Events

The submission starts in the created state. When the student submits an attempt, the submission state is updated to submitted. When in this state, the student can unsubmit their submission marking it as reclaimed, allowing the student to later submit another attempt. The student can only submit when the submission is either in the created or reclaimed state.

The submission is marked as returned when the teacher finalizes its grade. Only users with the role of teacher, ta, designer, administrator, or district-administrator in the class can grade and finalize submissions.

Differences Between Providers {differences-with-submissions}

Not all providers support the concept of a submission state, reclaiming, or returning a submission. In these cases, Edlink will infer the state of the submission and will return an UNSUPPORTED_OPERATION error when attempting to reclaim/return a submission.

We recommend checking for this error if you know you are working with a provider that does not support these operations. This way, your application can differentiate between a submission that is not reclaimable/returnable and a submission that failed to be reclaimed/returned due to an error.

Another area where differences can be found is in the way that submissions are handled. Edlink maintains a lifecyle for submissions and guarantees that there will always be a submission for every student enrolled in a class.

This means that you may have items in your system that are not yet in the LMS. These are called Phantom Submissions. Edlink will create a submission in the LMS when the student submits an attempt.

Here is a list of providers that use phantom submissions:

  • Canvas
  • OneRoster

Additionally, there are some providers that do not support submissions at all:

  • Aeries
  • Clever

Furthermore, some providers require that a submission be returned to a student for them to receive the grade. In this case, there is an additional /return endpoint that you can use to return a submission to the student. If the provider does not support this feature, you will receive a response like this:

{
    "$errors": [
        {
            "code": "UNSUPPORTED_OPERATION",
            "message": "This provider does not support this operation."
        }
    ]
}

Providers that don't support returning submissions usually do not support the concept of a submission state either. In this case, Edlink will infer the state of the submission and will return an UNSUPPORTED_OPERATION error when attempting to reclaim/return a submission.

If you are using the /return or /reclaim endpoint and work with providers who do not support this functionality, you should be prepared to handle this response. It is recommended to check for this error and simply ignore it, continuing as if the submission was returned.

The following providers support the /return endpoint:

  • Google
  • Microsoft
  • Blackboard