The 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.