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-between-providers}

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.

You read more about provider submission differences here.