Description |
Route |
Body |
Auth |
Get course by id |
GET /courses/{courseId} |
|
All |
Delete course by id |
DELETE /courses/{courseId} |
|
Admin |
Assign sections |
POST /courses/{courseId}/assignSections |
Optional: studentId , sectionId |
Admin |
Create course |
POST /courses |
Mandatory: title , code , term |
Admin |
Update course |
PATCH /courses/{courseId} |
Optional: gradeOptions , surveyID |
Admin |
Description |
Route |
Body |
Auth |
Get section by id |
GET /courses/{courseId}/sections/{sectionId} |
|
All |
Delete section |
DELETE /courses/{courseId}/sections/{sectionId} |
|
Admin |
Create section |
POST /courses/{courseId}/sections/ |
Mandatory: day , startTime , endTime ; Optional: location , capacity |
Admin |
Update section |
PATCH /courses/{courseId}/sections/{sectionId} |
Optional: day , startTime , endTime , location , capacity |
Admin |
Description |
Route |
Body |
Auth |
Get assignment by id |
GET /courses/{courseId}/assignments/{assignmentId} |
|
All |
Delete assignment |
DELETE /courses/{courseId}/assignments/{assignmentId} |
|
Admin |
Create assignment |
POST /courses/{courseId}/assignments/ |
Mandatory: name , mandatory , releaseDate , dueDate |
Admin |
Update assignment |
PATCH /courses/{courseId}/assignments/{assignmentId} |
Optional: name , mandatory , releaseDate , dueDate |
Admin |
Description |
Route |
Body |
Auth |
Get survey by id |
GET /courses/{courseId}/surveys/{surveyID}/ |
|
Staff |
Create survey |
POST /courses/{courseId}/surveys |
Mandatory: name |
Admin |
Publish |
POST /courses/{courseId}/surveys/{surveyID}/publish |
|
Admin |
Generate Result |
POST /courses/{courseId}/surveys/{surveyID}/results |
|
Admin |
Create response |
POST /courses/{courseId}/surveys/{surveyID}/responses |
Mandatory: times: []string |
All |
Edit response |
PATCH /courses/{courseId}/surveys/{surveyID}/responses/{responseId} |
Mandatory: times: []string |
All |
Description |
Route |
Body |
Response |
Auth |
Create a Swap Request |
POST /courses/{courseId}/swaps/ |
Mandatory: studentID , oldSectionID , toSectionID , isTemporary , reason |
{status: string, msg: string} |
All |
Update Swap Request |
PATCH /courses/{courseId}/swaps/{swapID}/ |
|
|
Self |
Handle Swap Request |
PATCH /courses/{courseId}/swaps/{swapID}/handle |
Mandatory: status , handledBy |
|
Staff |
Cancel Swap Request |
DELETE /courses/{courseId}/swaps/{swapID}/handle |
|
|
Self |
Description |
Route |
Body |
Auth |
Create a grade |
POST /courses/{courseId}/assignments/{assignmentID}/grades |
Mandatory: studentID , grade , taID |
Staff |
Update a grade |
PATCH /courses/{courseId}/assignments/{assignmentID}/grades/{gradeId} |
Mandatory: studentID , grade , taID |
Staff |
Update a grade |
DELETE /courses/{courseId}/assignments/{assignmentID}/grades/{gradeId} |
Mandatory: studentID , taID |
Staff |
Export grades |
POST /courses/{courseId}/export |
|
Admin |
Description |
Route |
Body |
Auth |
Get current user |
GET /users |
|
All |
Get user by ID |
GET /users/{userId} |
|
All |
Update user |
PATCH /users/{userId} |
|
All |
Join a course |
PATCH /users/{userId}/joinCourse |
Mandatory: accessCode |
All |
Quit a course |
PATCH /users/{userId}/quitCourse |
Mandatory: courseID |
All |
courses
id: string # unique id of the course
title: string # name of the course
code: string # course's course code
entryCode: string # course's entry code, 6 randomly generated characters
config: CourseConfig # course configurations, such as whether swap requests will be automatically approvedAuto-Approve Swap Requests
term: string # semester this course is offered
students: map[string]CourseUserData # map from studentIDs to student info
permissions: map[string]CoursePermission # map from userID to their permission for the course (admin or staff)
sections (sub-collection)
id: string # unique id of the section
courseID: string
day: string # the day this section runs
startTime: string # the time the section starts
endTime: string # the time the section ends
location: string # where the section takes place
capacity: int # max section capacity
numEnrolled: int # number of students enrolled for this section by default
swappedInStudents: map[string][]string # maps assignmentIDs to studentIDs that swap into this section
swappedOutStudents: map[string][]string # maps assignmentIDs to studentIDs that swapped out of this section
assignments (sub-collection)
id: string # unique assignment id
courseID: string
name: string # name of the assignment
optional: bool # whether or not this assignment is optional
maxScore: int # maximum points possible
releaseDate: string # when the assignment is released
dueDate: string # when the assignment is due
grades: map[string]Grade # map from studentID to grade object
grades (sub-collection)
studentID: string # the id of the student the grade is for
grade: int # grade
gradedBy: string # id of the TA that graded the assignment
timeUpdated: string # when the time was updated
swap (sub-collection)
id: string
studentID: string # ID of student
oldSectionID: string # ID of the section the student is swapping out of
newSectionID: string # ID of the section the student is swapping into
assignmentID: string # ID of the assignment for which the request is for, null for permanent swap
requestTime: timestamp # when the request was submitted
reason: string # reason for the swap
status: string # pending, cancelled, approved, denied, archived
handledBy: string # automatic or taID
surveys (sub-collection)
id: string
courseID: string
name: string
published: bool # whether if the survey is published
endTime: timestamp # when this survey will be made unavailable
description: string
capacity: map[string]int # map from option to capacity
responses: map[string][]string # map from studentID to chosen options
results: map[string][]CourseUserData # map from option to list of student data
profiles
displayName: string
email: string
access: map[string]string # map from courseID to "admin", or "staff"
courses: []string # list of courseIDs enrolled in as student
defaultSections: map[string]string # map from courseID to sectionID
actualSections: map[string]map[string]string # map from courseID to map from assignmentID to sectionID
notifications: []Notification
All time information is represented as a string in ISO format, in UTC timezone in the database. E.g. "2014-08-18T07:00:00.000Z".