@campusiq/sdk
Version:
Official JavaScript/TypeScript SDK for CampusIQ - A comprehensive school management system API
85 lines • 2.33 kB
TypeScript
import { BaseResource } from './base';
import { Grade, ListResponse, PaginationParams } from '../types';
export interface CreateGradeData {
studentId: string;
courseId: string;
assignmentName: string;
score: number;
maxScore: number;
weight: number;
category: 'homework' | 'quiz' | 'exam' | 'project' | 'participation';
gradedDate?: string;
notes?: string;
}
export interface UpdateGradeData extends Partial<Omit<CreateGradeData, 'studentId' | 'courseId'>> {
}
export interface GradeFilters extends PaginationParams {
studentId?: string;
courseId?: string;
category?: 'homework' | 'quiz' | 'exam' | 'project' | 'participation';
gradedDateFrom?: string;
gradedDateTo?: string;
minScore?: number;
maxScore?: number;
}
export declare class GradesResource extends BaseResource {
/**
* List all grades with optional filtering and pagination
*/
list(filters?: GradeFilters): Promise<ListResponse<Grade>>;
/**
* Get a specific grade by ID
*/
get(gradeId: string): Promise<Grade>;
/**
* Create a new grade
*/
create(data: CreateGradeData): Promise<Grade>;
/**
* Update an existing grade
*/
update(gradeId: string, data: UpdateGradeData): Promise<Grade>;
/**
* Delete a grade
*/
delete(gradeId: string): Promise<{
success: boolean;
message: string;
}>;
/**
* Bulk create grades for multiple students
*/
bulkCreate(grades: CreateGradeData[]): Promise<{
created: Grade[];
errors: any[];
}>;
/**
* Get grade statistics for a course
*/
getCourseStats(courseId: string, filters?: {
category?: string;
}): Promise<{
average: number;
median: number;
highest: number;
lowest: number;
distribution: Record<string, number>;
}>;
/**
* Get grade statistics for a student
*/
getStudentStats(studentId: string, filters?: {
courseId?: string;
semester?: string;
}): Promise<{
gpa: number;
totalCredits: number;
courseGrades: Array<{
courseId: string;
courseName: string;
grade: string;
credits: number;
}>;
}>;
}
//# sourceMappingURL=grades.d.ts.map