-
Notifications
You must be signed in to change notification settings - Fork 2
Dashboard Endpoints
Carlin Tan edited this page May 1, 2025
·
19 revisions
GET: /api/dashboard/student/:studentId/deadlines
- Authorization Required:
authorizeSignedIn
Response Body:
{
deadlines: [
{
deadline: {
name: string;
id: number;
type: DEADLINE_TYPES;
dueBy: string; // ISO 8601
...
},
toProject?: { // Only applicable for type 'Evaluation' and 'Feedback'
id: number;
name: string;
...
},
toProjectSubmission?: Submission, // Exists when project has made a submission for the specified deadline
toUser?: {// Only applicable for type 'Feedback'
id: number;
name: string;
...
},
submission?: { // Only exists if a draft OR a submission has been created
id: number;
updatedAt: string; // ISO 8601
isDraft: boolean;
...
}
}
]
}
GET: /api/dashboard/student/:studentId/evaluations-feedbacks
- Authorization Required:
authorizeSignedIn
Response Body:
{
deadlines: [
{
deadline: {
id: number;
name: string;
type: 'Evaluation' | 'Feedback';
dueBy: string; // ISO 8601;
evaluatingMilestoneId?: number;
...
},
submissions: [
{
id?: number,
fromProject?: { // Only applicable when deadline.type === 'Evaluation'
id: number;
name: string;
...
},
fromUser?: { // Only applicable when deadline.type === 'Evaluation' OR 'Feedback'
id: number;
name: string;
...
},
updatedAt: string; // ISO 8601
}
]
}
]
}
GET: /api/dashboard/adviser/:adviserId/deadlines
- Authorization Required:
authorizeSignedIn
Response Body:
{
deadlines: [
{
deadline: {
name: string;
id: number;
type: 'Evaluation' | 'Feedback';
dueBy: string; // ISO 8601
...
},
toProject: {
id: number;
name: string;
submissionId?: number; // Exists when project has made a submission for the specified deadline
...
},
submission?: { // Only exists if a draft OR a submission has been created
id: number;
updatedAt: string; // ISO 8601
...
}
}
]
}
GET: /api/dashboard/adviser/:adviserId/submissions
- Authorization Required:
authorizeSignedIn
Response Body:
{
deadlines: [
{
deadline: {
id: number;
name: string;
type: DEADLINE_TYPE,
dueBy: string; // ISO 8601
...
},
submissions: [
{
id?: number, // id exists if submission exists
fromProject: {
id: number;
name: string;
...
},
toProject?: { // Only applicable when deadline.type === 'Evaluation' OR 'Feedback'
id: number;
name: string;
...
},
toUser?: { // Only applicable when deadline.type === 'Feedback'
id: number;
name: string;
...
},
updatedAt: string; // ISO 8601
}
]
}
]
}
GET: /api/dashboard/mentor/:mentorId/submissions
- Authorization Required:
authorizeSignedIn
Response Body:
{
deadlines: [
{
deadline: {
id: number;
name: string;
type: "Milestone",
dueBy: string; // ISO 8601
...
},
submissions: [
{
id?: number, // id exists if submission exists
fromProject: {
id: number;
name: string;
...
},
updatedAt: string; // ISO 8601
}
]
}
]
}
GET: /api/dashboard/administrator/team-submissions
- Authorization Required:
authorizeAdmin
Query Params:
- cohortYear: number;
- deadlineId: number;
- search?: string;
- submissionStatus?: SUBMISSION_STATUS; => If not provided, return regardless of status
- page?: number; => If both page and limit not provided, return all
- limit?: number;
enum SUBMISSION_STATUS {
UNSUBMITTED = "Unsubmitted" (submission does not exist || isDraft === true)
SUBMITTED = "Submitted"
SUBMITTED_LATE = "Submitted_Late"
}
Response Data:
The response body varies depending on the presence of deadlineId:
If deadlineId is provided:
{
submissions: [
{
id?: number, // id exists if submission exists
updatedAt?: Date // exists if submission exists
fromProject: {
id: number,
name: string,
achievement: string,
students: Student[],
adviser: {
id: number,
userId: number,
name: string,
email: string,
nusnetId: string,
matricNo: string,
profilePicUrl?: string,
githubUrl?: string,
linkedinUrl?: string,
personalSiteUrl?: string,
selfIntro?: string,
},
mentor: {
id: number,
userId: number,
name: string,
email: string,
profilePicUrl?: string,
githubUrl?: string,
linkedinUrl?: string,
personalSiteUrl?: string,
selfIntro?: string,
},
},
updatedAt: string; // ISO 8601
}
],
unsubmitted: number,
submittedOnTime: number,
submittedLate: number
}
If deadlineId is not provided:
{
submissions: [
{
deadlineId: number;
deadlineTitle: string;
deadlineDueAt: string; // ISO 8601
submissionStatus: SUBMISSION_STATUS;
id?: number;
updatedAt?: string; // ISO 8601
fromProject: { ... } // same as above
}
]
}
POST: /api/dashboard/administrator/team-submissions/send-reminders
- Authorization Required:
authorizeAdmin
Query Params:
- emails: string[];
- ccs: string[];
- subject: string;
- message: string;
Response Data:
{
message: string; // e.g. "Reminders sent to 12 teams."
}
-
Auth Endpoints
/api/auth -
Users Endpoints
/api/users -
Students Endpoints
/api/students -
Advisers Endpoints
/api/advisers -
Mentors Endpoints
/api/mentors -
Administrators Endpoints
/api/administrators -
Cohorts Endpoints
/api/cohorts -
Deadlines Endpoints
/api/deadlines -
Projects Endpoints
/api/projects -
Dashboard Endpoints
/api/dashboard -
Evaluation Relationships Endpoints
/api/relations -
Submissions Endpoints
/api/submissions -
Announcements Endpoints
/api/announcements -
Application Endpoints
/api/application -
Vote Events Endpoints
/api/vote-events -
AI Endpoints
/api/ai