Package-level declarations

Types

Link copied to clipboard
@Serializable
data class Assessment(val submissionId: Long? = null, val memberIds: List<Long> = emptyList(), val selections: Map<String, Assessment.CategorySelection> = emptyMap(), val fileAnnotations: Map<String, List<SarifAnnotation>> = emptyMap(), val generalFeedback: String = "", val staffNotes: String = "", val finalGrade: Int? = null)
Link copied to clipboard
sealed interface AssessmentAccessOutcome

Result of loading an assessment under the current grader ownership rules.

Link copied to clipboard
data class AssessmentPublicationRecord(val courseId: Long, val exerciseId: Long, val studentId: Long, val expectedRevision: Long, val sentByUserId: Long, val manualSubmissionId: Long?)
Link copied to clipboard
@Serializable
data class AssessmentPublicationResponse(val studentId: Long, val points: Int, val state: AssessmentPublicationState)
Link copied to clipboard

Durable result of a grade publication attempt.

Link copied to clipboard
@Serializable
data class AssessmentPutBody(val assessment: Assessment, val status: AssessmentStatus, val expectedUpdatedAtMillis: Long? = null)
Link copied to clipboard
@Serializable
data class AssessmentRow(val exerciseId: Long, val studentId: Long, val assessment: Assessment, val status: AssessmentStatus, val graderUserId: Long, val sentAtMillis: Long? = null, val sentByUserId: Long? = null, val updatedAtMillis: Long, val sending: Boolean = false)
Link copied to clipboard
sealed interface AssessmentSaveOutcome

Result of an assessment save after ownership, send state, and revision checks.

Link copied to clipboard
sealed interface AssessmentSendOutcome

Result of publication preflight and delivery.

Link copied to clipboard
@Serializable
enum AssessmentStatus : Enum<AssessmentStatus>
Link copied to clipboard
data class AssignableAssistant(val userId: Long, val languages: List<String>, val gradingTags: List<String> = emptyList())
Link copied to clipboard
data class AssignableStudent(val studentId: Long, val tags: List<String>)
Link copied to clipboard
@Serializable
data class AssignmentOverviewEntry(val exerciseId: Long, val studentId: Long, val fullName: String?, val languageTags: List<String>, val assigneeUserId: Long, val assessmentStatus: AssessmentStatus?)
Link copied to clipboard
@Serializable
data class AssignmentPutEntry(val studentId: Long, val assigneeUserId: Long? = null)
Link copied to clipboard
@Serializable
data class AutoAssignBody(val replaceExisting: Boolean = false)
Link copied to clipboard
@Serializable
data class CourseAssignmentRow(val exerciseId: Long, val studentId: Long, val assigneeUserId: Long)
Link copied to clipboard

Marks an error that proves A+ rejected the grade before accepting it.

Link copied to clipboard
@Serializable
data class FeedbackHtmlBody(val rubric: Rubric, val feedbackHtml: String, val assistantFeedbackHtml: String? = null, val assessmentUpdatedAtMillis: Long)
Link copied to clipboard
data class GradeConfirmation(val submissionId: Long, val status: String, val points: Int)
Link copied to clipboard
data class GradePublication(val publicationId: String, val exerciseId: Long, val submitterIds: List<Long>, val points: Int, val feedbackHtml: String, val assistantFeedbackHtml: String?, val gradingData: String)
Link copied to clipboard
interface GradePublisher

Publishes grades to A+ and checks whether a specific publication was accepted.

Link copied to clipboard
data class GraderClaim(val exerciseId: Long, val studentId: Long, val graderUserId: Long)
Link copied to clipboard
@Serializable
data class GraderExerciseSummary(val exerciseId: Long, val count: Int, val sent: Int)
Link copied to clipboard
@Serializable
data class GraderWorkloadSummary(val userId: Long, val total: Int, val notStarted: Int, val draft: Int, val ready: Int, val sent: Int, val exercises: List<GraderExerciseSummary>)
Link copied to clipboard
@Serializable
data class GradingAssignment(val studentId: Long, val assigneeUserId: Long)
Link copied to clipboard
@Serializable
data class GradingExerciseSummary(val exerciseId: Long, val assigned: Int, val notStarted: Int, val draft: Int, val ready: Int, val sent: Int, val graders: Int)
Link copied to clipboard
@Serializable
enum GradingMode : Enum<GradingMode>
Link copied to clipboard
@Serializable
data class GradingOverviewResponse(val exercises: List<GradingExerciseSummary>, val workloads: List<GraderWorkloadSummary>)
Link copied to clipboard
@Serializable
data class GradingQueue(val exerciseId: Long, val exerciseName: String, val exerciseMaxPoints: Int, val entries: List<GradingQueueEntry>)
Link copied to clipboard
@Serializable
data class GradingQueueEntry(val studentId: Long, val memberIds: List<Long>, val fullName: String?, val submissionId: Long?, val submissionTime: String?, val autoGrade: Int?, val submissionTags: List<String>, val assessmentStatus: AssessmentStatus?, val assessmentPoints: Int?, val graderUserId: Long? = null, val members: List<GradingQueueEntry.Member> = emptyList(), val assigneeUserId: Long? = null, val gradingMode: GradingMode = GradingMode.AUTOMATIC)
Link copied to clipboard

Coordinates rubrics, assignments, assessment editing, queues, and grade publication.

Link copied to clipboard
@Serializable
data class Rubric(val title: String, val categories: List<Rubric.Category>)
Link copied to clipboard
@Serializable
data class RubricInfo(val exerciseId: Long, val title: String, val maxTotal: Int, val revision: Long)
Link copied to clipboard
sealed interface RubricWriteOutcome
Link copied to clipboard
@Serializable
data class SarifAnnotation(val ruleId: String, val kind: String? = null, val level: String? = null, val message: SarifAnnotation.Message, val locations: List<SarifAnnotation.Location> = emptyList(), val fingerprints: Map<String, String> = emptyMap(), val properties: JsonObject? = null)
Link copied to clipboard
data class SaveAssessmentCommand(val assessment: Assessment, val status: AssessmentStatus, val expectedUpdatedAtMillis: Long?)

Assessment content and optimistic revision supplied by an editor.

Link copied to clipboard
data class SendAssessmentCommand(val rubric: Rubric, val feedbackHtml: String, val assistantFeedbackHtml: String?, val assessmentUpdatedAtMillis: Long)

Finalized feedback and the exact rubric and assessment revisions selected by the grader.

Link copied to clipboard
@Serializable
data class StaticCodeBlock(val lines: List<StaticCodeBlock.Line>)
Link copied to clipboard
@Serializable
data class StudentAssessmentView(val exerciseId: Long, val rubricTitle: String, val totalPoints: Int, val maxPoints: Int, val submissionId: Long?, val memberIds: List<Long>, val sentAtMillis: Long?, val categories: List<StudentAssessmentView.CategoryView>, val generalFeedback: String, val fileAnnotations: Map<String, List<SarifAnnotation>>)
Link copied to clipboard
data class VersionedRubric(val rubric: Rubric, val revision: Long)

Functions

Link copied to clipboard
fun appliedPhraseIds(assessment: Assessment, categoryId: String): Set<String>
Link copied to clipboard
fun autoAssign(students: List<AssignableStudent>, assistants: List<AssignableAssistant>, existing: Map<Long, Long>, courseLanguages: List<String>, replaceExisting: Boolean = false): Map<Long, Long>
Link copied to clipboard
Link copied to clipboard
fun categoryPoints(category: Rubric.Category, assessment: Assessment): Int
Link copied to clipboard
fun gradeTotalMax(rubric: Rubric): Int
Link copied to clipboard
fun languageTags(tagSlugs: List<String>, courseLanguages: Collection<String>): List<String>
Link copied to clipboard
Link copied to clipboard
fun totalPoints(rubric: Rubric, assessment: Assessment): Int