/** * Classes Resource * * Manage classes (sections) and their nested resources. */ import { Paginator } from '../../lib'; import type { EnrollInput, LineItemCreateInput, ResultCreateInput } from '@timeback/types/zod'; import type { Category, CategoryFilterFields, Class, ClassesCallable, CreateResponse, LineItem, LineItemFilterFields, ListParamsNoSearch, OneRosterTransportLike, Resource, ResourceFilterFields, Result, ResultFilterFields, ScoreScale, ScoreScaleFilterFields, User, UserFilterFields } from '../../types'; /** * Scoped resource for a specific academic session within a class. * * Access via `client.classes(classId).academicSession(sessionId)`. * * @example * ```typescript * // Create a result for a student in this class/session * await client.classes(classId).academicSession(sessionId).createResult({ * student: { sourcedId: 'student1' }, * lineItem: { sourcedId: 'li1' }, * scoreStatus: 'fully graded', * scoreDate: '2024-12-24', * score: 85, * }) * ``` */ declare class ScopedClassAcademicSessionResource { private readonly transport; private readonly gradebookPath; constructor(transport: OneRosterTransportLike, classId: string, sessionId: string); /** * Create a result for this class and academic session. * * @param result - Result data including student, lineItem, score, and scoreDate * @returns Create response with sourcedIdPairs * @throws {InputValidationError} If required fields are missing */ createResult(result: ResultCreateInput): Promise; } /** * Scoped resource for a specific student within a class. * * Access via `client.classes(classId).student(studentId)`. * * @example * ```typescript * const results = await client.classes(classId).student(studentId).results() * ``` */ declare class ScopedClassStudentResource { private readonly transport; private readonly gradebookPath; constructor(transport: OneRosterTransportLike, classId: string, studentId: string); /** * List results for this student in this class. * @param params - Optional `where` clause and pagination parameters * @returns Promise resolving to result array */ results(params?: ListParamsNoSearch): Promise; /** * Stream results with lazy pagination. * @param params - Optional `where` clause and pagination parameters * @returns Paginator for streaming results */ streamResults(params?: ListParamsNoSearch): Paginator; } /** * Scoped resource for a specific line item within a class. * * Access via `client.classes(classId).lineItem(lineItemId)`. * * @example * ```typescript * const results = await client.classes(classId).lineItem(lineItemId).results() * ``` */ declare class ScopedClassLineItemResource { private readonly transport; private readonly gradebookPath; constructor(transport: OneRosterTransportLike, classId: string, lineItemId: string); /** * List results for this line item in this class. * @param params - Optional `where` clause and pagination parameters * @returns Promise resolving to result array */ results(params?: ListParamsNoSearch): Promise; /** * Stream results with lazy pagination. * @param params - Optional `where` clause and pagination parameters * @returns Paginator for streaming results */ streamResults(params?: ListParamsNoSearch): Paginator; } /** * Scoped resource for operations on a specific class. * * Access via `client.classes(classId)`. * * @example * ```typescript * const cls = await client.classes(classId).get() * const students = await client.classes(classId).students() * const teachers = await client.classes(classId).teachers() * const lineItems = await client.classes(classId).lineItems() * const studentResults = await client.classes(classId).student(studentId).results() * ``` */ export declare class ScopedClassResource { private readonly transport; private readonly rosteringPath; private readonly gradebookPath; private readonly classId; constructor(transport: OneRosterTransportLike, classId: string); /** * Get the class details. * @returns The class object */ get(): Promise; /** * Check whether this class exists. * @returns True if found, false for 404 */ exists(): Promise; /** * List students in this class. * @param params - Optional `where` clause and pagination parameters * @returns Promise resolving to user array */ students(params?: ListParamsNoSearch): Promise; /** * Stream students with lazy pagination. * @param params - Optional `where` clause and pagination parameters * @returns Paginator for streaming students */ streamStudents(params?: ListParamsNoSearch): Paginator; /** * List teachers in this class. * @param params - Optional `where` clause and pagination parameters * @returns Promise resolving to user array */ teachers(params?: ListParamsNoSearch): Promise; /** * Stream teachers with lazy pagination. * @param params - Optional `where` clause and pagination parameters * @returns Paginator for streaming teachers */ streamTeachers(params?: ListParamsNoSearch): Paginator; /** * Enroll a user in this class. * * @param input - User sourcedId, role, and optional enrollment details * @returns Create response * @example * ```typescript * await client.classes(classId).enroll({ sourcedId: studentId, role: 'student' }) * await client.classes(classId).enroll({ sourcedId: teacherId, role: 'teacher', primary: true }) * ``` */ enroll(input: EnrollInput): Promise; /** * List line items (assignments) in this class. * @param params - Optional `where` clause and pagination parameters * @returns Promise resolving to line item array */ lineItems(params?: ListParamsNoSearch): Promise; /** * Stream line items with lazy pagination. * @param params - Optional `where` clause and pagination parameters * @returns Paginator for streaming line items */ streamLineItems(params?: ListParamsNoSearch): Paginator; /** * Create a line item (assignment) in this class. * * @param data - Line item data * @returns Create response with sourcedIdPairs * @example * ```typescript * await client.classes(classId).createLineItem({ * title: 'Homework 1', * class: { sourcedId: classId }, * school: { sourcedId: schoolId }, * category: { sourcedId: categoryId }, * assignDate: '2024-12-20', * dueDate: '2024-12-27', * status: 'active', * }) * ``` */ createLineItem(data: LineItemCreateInput): Promise; /** * List results in this class. * @param params - Optional `where` clause and pagination parameters * @returns Promise resolving to result array */ results(params?: ListParamsNoSearch): Promise; /** * Stream results with lazy pagination. * @param params - Optional `where` clause and pagination parameters * @returns Paginator for streaming results */ streamResults(params?: ListParamsNoSearch): Paginator; /** * List resources for this class. * @param params - Optional `where` clause and pagination parameters * @returns Promise resolving to resource array */ resources(params?: ListParamsNoSearch): Promise; /** * Stream resources with lazy pagination. * @param params - Optional `where` clause and pagination parameters * @returns Paginator for streaming resources */ streamResources(params?: ListParamsNoSearch): Paginator; /** * Get a scoped resource for a specific student in this class. * @param studentId - Student ID * @returns Scoped resource for the student * @example * ```typescript * const results = await client.classes(classId).student(studentId).results() * ``` */ student(studentId: string): ScopedClassStudentResource; /** * Get a scoped resource for a specific line item in this class. * @param lineItemId - Line item ID * @returns Scoped resource for the line item * @example * ```typescript * const results = await client.classes(classId).lineItem(lineItemId).results() * ``` */ lineItem(lineItemId: string): ScopedClassLineItemResource; /** * Get a scoped resource for a specific academic session in this class. * @param sessionId - Academic session ID (term, grading period, etc.) * @returns Scoped resource for session-scoped operations * @example * ```typescript * // Create a result for a grading period * await client.classes(classId).academicSession(sessionId).createResult({ * student: { sourcedId: 'student1' }, * lineItem: { sourcedId: 'lineItem1' }, * scoreStatus: 'fully graded', * scoreDate: '2024-12-24', * score: 85, * }) * ``` */ academicSession(sessionId: string): ScopedClassAcademicSessionResource; /** * List score scales for this class. * @param params - Optional `where` clause and pagination parameters * @returns Promise resolving to score scale array */ scoreScales(params?: ListParamsNoSearch): Promise; /** * Stream score scales with lazy pagination. * @param params - Optional `where` clause and pagination parameters * @returns Paginator for streaming score scales */ streamScoreScales(params?: ListParamsNoSearch): Paginator; /** * List categories for this class. * @param params - Optional `where` clause and pagination parameters * @returns Promise resolving to category array */ categories(params?: ListParamsNoSearch): Promise; /** * Stream categories with lazy pagination. * @param params - Optional `where` clause and pagination parameters * @returns Paginator for streaming categories */ streamCategories(params?: ListParamsNoSearch): Paginator; } /** * Create a callable classes resource. * @param transport - OneRoster transport instance * @returns Callable resource for classes */ export declare function createClassesResource(transport: OneRosterTransportLike): ClassesCallable; export {}; //# sourceMappingURL=classes.d.ts.map