@timeback/edubridge 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +220 -0
  2. package/dist/client.d.ts +70 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/constants.d.ts +25 -0
  5. package/dist/constants.d.ts.map +1 -0
  6. package/dist/errors.d.ts +9 -0
  7. package/dist/errors.d.ts.map +1 -0
  8. package/dist/errors.js +1217 -0
  9. package/dist/factory.d.ts +46 -0
  10. package/dist/factory.d.ts.map +1 -0
  11. package/dist/index.d.ts +43 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +1566 -0
  14. package/dist/lib/index.d.ts +9 -0
  15. package/dist/lib/index.d.ts.map +1 -0
  16. package/dist/lib/resolve.d.ts +21 -0
  17. package/dist/lib/resolve.d.ts.map +1 -0
  18. package/dist/lib/transport.d.ts +49 -0
  19. package/dist/lib/transport.d.ts.map +1 -0
  20. package/dist/resources/analytics.d.ts +56 -0
  21. package/dist/resources/analytics.d.ts.map +1 -0
  22. package/dist/resources/applications.d.ts +30 -0
  23. package/dist/resources/applications.d.ts.map +1 -0
  24. package/dist/resources/enrollments.d.ts +71 -0
  25. package/dist/resources/enrollments.d.ts.map +1 -0
  26. package/dist/resources/index.d.ts +10 -0
  27. package/dist/resources/index.d.ts.map +1 -0
  28. package/dist/resources/learning-reports.d.ts +30 -0
  29. package/dist/resources/learning-reports.d.ts.map +1 -0
  30. package/dist/resources/subject-track.d.ts +48 -0
  31. package/dist/resources/subject-track.d.ts.map +1 -0
  32. package/dist/resources/users.d.ts +53 -0
  33. package/dist/resources/users.d.ts.map +1 -0
  34. package/dist/types/analytics.d.ts +208 -0
  35. package/dist/types/analytics.d.ts.map +1 -0
  36. package/dist/types/applications.d.ts +27 -0
  37. package/dist/types/applications.d.ts.map +1 -0
  38. package/dist/types/base.d.ts +38 -0
  39. package/dist/types/base.d.ts.map +1 -0
  40. package/dist/types/client.d.ts +52 -0
  41. package/dist/types/client.d.ts.map +1 -0
  42. package/dist/types/enrollments.d.ts +113 -0
  43. package/dist/types/enrollments.d.ts.map +1 -0
  44. package/dist/types/index.d.ts +14 -0
  45. package/dist/types/index.d.ts.map +1 -0
  46. package/dist/types/learning-reports.d.ts +27 -0
  47. package/dist/types/learning-reports.d.ts.map +1 -0
  48. package/dist/types/subject-track.d.ts +54 -0
  49. package/dist/types/subject-track.d.ts.map +1 -0
  50. package/dist/types/users.d.ts +107 -0
  51. package/dist/types/users.d.ts.map +1 -0
  52. package/dist/types.d.ts +10 -0
  53. package/dist/types.d.ts.map +1 -0
  54. package/dist/types.js +0 -0
  55. package/dist/utils.d.ts +64 -0
  56. package/dist/utils.d.ts.map +1 -0
  57. package/package.json +40 -0
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Internal Library Exports
3
+ *
4
+ * @internal
5
+ */
6
+ export { resolveToProvider } from './resolve';
7
+ export { Transport } from './transport';
8
+ export type { ResolvedConfig } from '@timeback/internal-client-infra';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,YAAY,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Provider Resolution
3
+ *
4
+ * Edubridge-specific wrapper around the generic provider resolver.
5
+ *
6
+ * @internal
7
+ */
8
+ import type { ProviderRegistry } from '@timeback/internal-client-infra';
9
+ import type { EdubridgeClientConfig, EdubridgeResolvedProvider } from '../types';
10
+ /**
11
+ * Resolve Edubridge client config to a TimebackProvider.
12
+ *
13
+ * @param config - Client configuration
14
+ * @param registry - Provider registry for platform/env resolution
15
+ * @returns Resolved provider or transport
16
+ * @throws {Error} If configuration is invalid or incomplete
17
+ *
18
+ * @internal
19
+ */
20
+ export declare function resolveToProvider(config: EdubridgeClientConfig, registry?: ProviderRegistry): EdubridgeResolvedProvider;
21
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/lib/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAEhF;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,GAAE,gBAA4C,GACpD,yBAAyB,CAM3B"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Transport Layer
3
+ *
4
+ * HTTP transport for Edubridge API communication.
5
+ */
6
+ import { BaseTransport } from '@timeback/internal-client-infra';
7
+ import type { EdubridgePaths, PaginatedResponse, RequestOptions } from '@timeback/internal-client-infra';
8
+ import type { EdubridgeTransportConfig } from '../types';
9
+ /**
10
+ * HTTP transport layer for Edubridge API communication.
11
+ *
12
+ * Uses body-based pagination (totalCount, pageNumber, pageCount in response body).
13
+ */
14
+ export declare class Transport extends BaseTransport {
15
+ /** API path profiles for Edubridge operations */
16
+ readonly paths: EdubridgePaths;
17
+ constructor(config: EdubridgeTransportConfig);
18
+ /**
19
+ * Make a paginated request using body-based pagination.
20
+ *
21
+ * Edubridge APIs return pagination metadata in the response body:
22
+ * - `totalCount`: Total items across all pages
23
+ * - `pageCount`: Total number of pages
24
+ * - `pageNumber`: Current page (1-indexed)
25
+ *
26
+ * The returned `data` is the full response body. Use Paginator's `unwrapKey`
27
+ * to extract the actual items (e.g., "users", "enrollments").
28
+ *
29
+ * @template T - Expected item type in the response
30
+ * @param path - API endpoint path
31
+ * @param options - Request options
32
+ * @returns Normalized paginated response with body as data
33
+ */
34
+ requestPaginated<T>(path: string, options?: RequestOptions): Promise<PaginatedResponse<T>>;
35
+ /**
36
+ * Extract error message from Edubridge API error response.
37
+ *
38
+ * Edubridge returns errors in array format:
39
+ * - `errors[].message`: High-level error message
40
+ * - `errors[].detail`: More specific error detail
41
+ * - `errors[].meta.issues[]`: Field-level validation errors
42
+ *
43
+ * @param body - The error response body
44
+ * @param fallback - Fallback message if extraction fails
45
+ * @returns Human-readable error message with field details
46
+ */
47
+ protected extractErrorMessage(body: unknown, fallback: string): string;
48
+ }
49
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/lib/transport.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAA0B,MAAM,iCAAiC,CAAA;AAIvF,OAAO,KAAK,EAEX,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AAqBxD;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,aAAa;IAC3C,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAA;IAE9B,YAAY,MAAM,EAAE,wBAAwB,EAG3C;IAED;;;;;;;;;;;;;;;OAeG;IACG,gBAAgB,CAAC,CAAC,EACvB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAI/B;IAED;;;;;;;;;;;OAWG;IACH,UAAmB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmC9E;CACD"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Analytics Resource
3
+ *
4
+ * Student activity data and metrics.
5
+ */
6
+ import type { ActivityParams, DailyActivityMap, EdubridgeTransportLike, EnrollmentFacts, EnrollmentFactsParams, HighestGradeMastered, WeeklyFacts, WeeklyFactsParams } from '../types';
7
+ /**
8
+ * Analytics resource for retrieving student activity data.
9
+ *
10
+ * Provides access to activity metrics, weekly facts, and grade mastery data.
11
+ */
12
+ export declare class AnalyticsResource {
13
+ private readonly transport;
14
+ constructor(transport: EdubridgeTransportLike);
15
+ /**
16
+ * Get activity data for a date range.
17
+ *
18
+ * Returns metrics grouped by date, then by subject.
19
+ * Accepts dates in YYYY-MM-DD or full ISO 8601 format.
20
+ *
21
+ * @param params - Query parameters including email or studentId, startDate, endDate
22
+ * @returns Activity data keyed by date, then subject
23
+ */
24
+ getActivity(params: ActivityParams): Promise<DailyActivityMap>;
25
+ /**
26
+ * Get weekly facts for a student.
27
+ *
28
+ * Returns individual facts grouped by date for a specific week.
29
+ * Accepts weekDate in YYYY-MM-DD or full ISO 8601 format.
30
+ *
31
+ * @param params - Query parameters including email or studentId and weekDate
32
+ * @returns Weekly facts data
33
+ */
34
+ getWeeklyFacts(params: WeeklyFactsParams): Promise<WeeklyFacts>;
35
+ /**
36
+ * Get aggregated facts for an enrollment.
37
+ *
38
+ * Returns aggregated metrics for all activity within an enrollment.
39
+ * Accepts dates in YYYY-MM-DD or full ISO 8601 format.
40
+ *
41
+ * @param params - Query parameters including enrollmentId and optional date filters
42
+ * @returns Enrollment facts
43
+ */
44
+ getEnrollmentFacts(params: EnrollmentFactsParams): Promise<EnrollmentFacts>;
45
+ /**
46
+ * Get the highest grade a student has mastered for a subject.
47
+ *
48
+ * Returns grade data from multiple sources (Edulastic, placement tests, test-out).
49
+ *
50
+ * @param studentId - Student ID
51
+ * @param subject - Subject name
52
+ * @returns Highest grade mastered data
53
+ */
54
+ getHighestGradeMastered(studentId: string, subject: string): Promise<HighestGradeMastered>;
55
+ }
56
+ //# sourceMappingURL=analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/resources/analytics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACX,cAAc,EAEd,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EAErB,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EAEjB,MAAM,UAAU,CAAA;AAEjB;;;;GAIG;AACH,qBAAa,iBAAiB;IACjB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAtC,YAA6B,SAAS,EAAE,sBAAsB,EAAI;IAElE;;;;;;;;OAQG;IACG,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAcnE;IAED;;;;;;;;OAQG;IACG,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAapE;IAED;;;;;;;;OAQG;IACG,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAYhF;IAED;;;;;;;;OAQG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAIzF;CACD"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Applications Resource
3
+ *
4
+ * Manage and retrieve applications available in the system.
5
+ */
6
+ import type { Application, ApplicationMetrics, EdubridgeTransportLike } from '../types';
7
+ /**
8
+ * Applications resource for managing learning platforms.
9
+ *
10
+ * Applications represent different learning platforms or educational
11
+ * software that can be integrated with Timeback.
12
+ */
13
+ export declare class ApplicationsResource {
14
+ private readonly transport;
15
+ constructor(transport: EdubridgeTransportLike);
16
+ /**
17
+ * List all applications.
18
+ *
19
+ * @returns List of applications
20
+ */
21
+ list(): Promise<Application[]>;
22
+ /**
23
+ * Get metrics for an application.
24
+ *
25
+ * @param applicationSourcedId - Application ID
26
+ * @returns Application metrics
27
+ */
28
+ getMetrics(applicationSourcedId: string): Promise<ApplicationMetrics>;
29
+ }
30
+ //# sourceMappingURL=applications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applications.d.ts","sourceRoot":"","sources":["../../src/resources/applications.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAEvF;;;;;GAKG;AACH,qBAAa,oBAAoB;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAtC,YAA6B,SAAS,EAAE,sBAAsB,EAAI;IAElE;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAKnC;IAED;;;;;OAKG;IACG,UAAU,CAAC,oBAAoB,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAK1E;CACD"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Enrollments Resource
3
+ *
4
+ * Simplified, course-centric enrollment management.
5
+ */
6
+ import type { DefaultClass, EdubridgeTransportLike, Enrollment, EnrollOptions, ListEnrollmentsParams, ResetGoalsResult } from '../types';
7
+ /**
8
+ * Enrollments resource for course-centric enrollment management.
9
+ *
10
+ * Provides simplified methods to enroll/unenroll users in courses
11
+ * without needing to understand the underlying OneRoster academic hierarchy.
12
+ */
13
+ export declare class EnrollmentsResource {
14
+ private readonly transport;
15
+ constructor(transport: EdubridgeTransportLike);
16
+ /**
17
+ * List enrollments with filtering.
18
+ *
19
+ * @param params - Query parameters including userId filter
20
+ * @returns List of course enrollments
21
+ */
22
+ list(params: ListEnrollmentsParams): Promise<Enrollment[]>;
23
+ /**
24
+ * Enroll a user in a course.
25
+ *
26
+ * Automatically handles creating the appropriate class and academic session
27
+ * records required by OneRoster.
28
+ *
29
+ * @param userId - User ID to enroll
30
+ * @param courseId - Course ID to enroll in
31
+ * @param schoolId - Optional school ID (uses user's primary org if not specified)
32
+ * @param options - Enrollment options (role, metadata, etc.)
33
+ * @returns Created enrollment
34
+ */
35
+ enroll(userId: string, courseId: string, schoolId?: string, options?: EnrollOptions): Promise<Enrollment>;
36
+ /**
37
+ * Unenroll a user from a course.
38
+ *
39
+ * Marks the enrollment as 'tobedeleted'.
40
+ *
41
+ * @param userId - User ID to unenroll
42
+ * @param courseId - Course ID to unenroll from
43
+ * @param schoolId - Optional school ID
44
+ */
45
+ unenroll(userId: string, courseId: string, schoolId?: string): Promise<void>;
46
+ /**
47
+ * Reset enrollment goals for all users in a course.
48
+ *
49
+ * @param courseId - Course ID to reset goals for
50
+ * @returns Result with count of updated enrollments
51
+ */
52
+ resetGoals(courseId: string): Promise<ResetGoalsResult>;
53
+ /**
54
+ * Reset a user's progress in a course.
55
+ *
56
+ * Marks all assessment results for the user/course as 'tobedeleted'.
57
+ *
58
+ * @param userId - User ID
59
+ * @param courseId - Course ID
60
+ */
61
+ resetProgress(userId: string, courseId: string): Promise<void>;
62
+ /**
63
+ * Get the default class for a course.
64
+ *
65
+ * @param courseId - Course ID
66
+ * @param schoolId - Optional school ID
67
+ * @returns Default class and term information
68
+ */
69
+ getDefaultClass(courseId: string, schoolId?: string): Promise<DefaultClass>;
70
+ }
71
+ //# sourceMappingURL=enrollments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrollments.d.ts","sourceRoot":"","sources":["../../src/resources/enrollments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAEX,YAAY,EACZ,sBAAsB,EACtB,UAAU,EACV,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,MAAM,UAAU,CAAA;AAEjB;;;;;GAKG;AACH,qBAAa,mBAAmB;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAtC,YAA6B,SAAS,EAAE,sBAAsB,EAAI;IAElE;;;;;OAKG;IACG,IAAI,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAK/D;IAED;;;;;;;;;;;OAWG;IACG,MAAM,CACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,GAAE,aAAkB,GACzB,OAAO,CAAC,UAAU,CAAC,CASrB;IAED;;;;;;;;OAQG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKjF;IAED;;;;;OAKG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAM5D;IAED;;;;;;;OAOG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKnE;IAED;;;;;;OAMG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAMhF;CACD"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Edubridge Resources
3
+ */
4
+ export { AnalyticsResource } from './analytics';
5
+ export { ApplicationsResource } from './applications';
6
+ export { EnrollmentsResource } from './enrollments';
7
+ export { LearningReportsResource } from './learning-reports';
8
+ export { SubjectTrackResource } from './subject-track';
9
+ export { UsersResource } from './users';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Learning Reports Resource
3
+ *
4
+ * Student learning reports and time tracking.
5
+ */
6
+ import type { EdubridgeTransportLike, MapProfile, TimeSaved } from '../types';
7
+ /**
8
+ * Learning Reports resource for student progress data.
9
+ *
10
+ * Provides access to MAP profiles and time saved metrics.
11
+ */
12
+ export declare class LearningReportsResource {
13
+ private readonly transport;
14
+ constructor(transport: EdubridgeTransportLike);
15
+ /**
16
+ * Get MAP profile for a user.
17
+ *
18
+ * @param userId - User ID
19
+ * @returns MAP profile data
20
+ */
21
+ getMapProfile(userId: string): Promise<MapProfile>;
22
+ /**
23
+ * Get time saved metrics for a user.
24
+ *
25
+ * @param userId - User ID
26
+ * @returns Time saved data
27
+ */
28
+ getTimeSaved(userId: string): Promise<TimeSaved>;
29
+ }
30
+ //# sourceMappingURL=learning-reports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learning-reports.d.ts","sourceRoot":"","sources":["../../src/resources/learning-reports.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAE7E;;;;GAIG;AACH,qBAAa,uBAAuB;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAtC,YAA6B,SAAS,EAAE,sBAAsB,EAAI;IAElE;;;;;OAKG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAKvD;IAED;;;;;OAKG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAKrD;CACD"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Subject Track Resource
3
+ *
4
+ * Manage subject track mappings.
5
+ */
6
+ import type { EdubridgeTransportLike, SubjectTrack, SubjectTrackGroup, SubjectTrackInput } from '../types';
7
+ /**
8
+ * Subject Track resource for managing subject-to-course mappings.
9
+ *
10
+ * Subject tracks determine the target course for each subject and grade level.
11
+ * For example, for subject 'Math' grade level '9', the target course can be
12
+ * 'Math Academy 9th Grade'.
13
+ */
14
+ export declare class SubjectTrackResource {
15
+ private readonly transport;
16
+ constructor(transport: EdubridgeTransportLike);
17
+ /**
18
+ * List all subject tracks.
19
+ *
20
+ * @returns List of subject tracks
21
+ */
22
+ list(): Promise<SubjectTrack[]>;
23
+ /**
24
+ * Create or update a subject track.
25
+ *
26
+ * This is an upsert operation - if the subject track with the given id
27
+ * exists it will be updated, otherwise it will be created.
28
+ *
29
+ * @param data - Subject track data including id
30
+ * @returns The created or updated subject track
31
+ */
32
+ upsert(data: SubjectTrackInput & {
33
+ id: string;
34
+ }): Promise<SubjectTrack>;
35
+ /**
36
+ * Delete a subject track.
37
+ *
38
+ * @param id - Subject track ID
39
+ */
40
+ delete(id: string): Promise<void>;
41
+ /**
42
+ * List all subject track groups.
43
+ *
44
+ * @returns List of subject track groups
45
+ */
46
+ listGroups(): Promise<SubjectTrackGroup[]>;
47
+ }
48
+ //# sourceMappingURL=subject-track.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject-track.d.ts","sourceRoot":"","sources":["../../src/resources/subject-track.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EAEjB,iBAAiB,EAGjB,MAAM,UAAU,CAAA;AAEjB;;;;;;GAMG;AACH,qBAAa,oBAAoB;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAtC,YAA6B,SAAS,EAAE,sBAAsB,EAAI;IAElE;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAKpC;IAED;;;;;;;;OAQG;IACG,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAM5E;IAED;;;;OAIG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtC;IAED;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAK/C;CACD"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Users Resource
3
+ *
4
+ * Enhanced user management beyond standard OneRoster.
5
+ */
6
+ import type { EdubridgeTransportLike, ListUsersParams, Role, User } from '../types';
7
+ /**
8
+ * Users resource for querying users with enhanced filtering.
9
+ *
10
+ * Provides role-based filtering and search capabilities beyond
11
+ * the standard OneRoster API.
12
+ */
13
+ export declare class UsersResource {
14
+ private readonly transport;
15
+ constructor(transport: EdubridgeTransportLike);
16
+ /**
17
+ * List users with filtering.
18
+ *
19
+ * Returns users who have exclusively the specified role(s) and no other roles.
20
+ *
21
+ * @param params - Query parameters including required roles filter
22
+ * @returns List of matching users
23
+ */
24
+ list(params: ListUsersParams): Promise<User[]>;
25
+ /**
26
+ * List all students.
27
+ *
28
+ * Convenience method for listing users with student role.
29
+ *
30
+ * @param params - Optional query parameters
31
+ * @returns List of students
32
+ */
33
+ listStudents(params?: Omit<ListUsersParams, 'roles'>): Promise<User[]>;
34
+ /**
35
+ * List all teachers.
36
+ *
37
+ * Convenience method for listing users with teacher role.
38
+ *
39
+ * @param params - Optional query parameters
40
+ * @returns List of teachers
41
+ */
42
+ listTeachers(params?: Omit<ListUsersParams, 'roles'>): Promise<User[]>;
43
+ /**
44
+ * Search users by role.
45
+ *
46
+ * @param roles - Roles to filter by
47
+ * @param search - Search term
48
+ * @param limit - Maximum results
49
+ * @returns List of matching users
50
+ */
51
+ search(roles: Role[], search: string, limit?: number): Promise<User[]>;
52
+ }
53
+ //# sourceMappingURL=users.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/resources/users.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAEnF;;;;;GAKG;AACH,qBAAa,aAAa;IACb,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAtC,YAA6B,SAAS,EAAE,sBAAsB,EAAI;IAElE;;;;;;;OAOG;IACG,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CA2CnD;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,MAAM,GAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAEzE;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,MAAM,GAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAEzE;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAElE;CACD"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Analytics Types
3
+ *
4
+ * Types for analytics and reporting endpoints.
5
+ */
6
+ /**
7
+ * Activity metrics from the API.
8
+ */
9
+ export interface ActivityMetricsData {
10
+ xpEarned: number;
11
+ totalQuestions: number;
12
+ correctQuestions: number;
13
+ masteredUnits: number;
14
+ }
15
+ /**
16
+ * Time spent metrics from the API.
17
+ */
18
+ export interface TimeSpentMetricsData {
19
+ activeSeconds: number;
20
+ inactiveSeconds: number;
21
+ wasteSeconds: number;
22
+ }
23
+ /**
24
+ * Metrics for a specific subject on a given day.
25
+ */
26
+ export interface SubjectMetrics {
27
+ activityMetrics: ActivityMetricsData;
28
+ timeSpentMetrics: TimeSpentMetricsData;
29
+ apps: string[];
30
+ }
31
+ /**
32
+ * Activity data grouped by date, then by subject.
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const activity: DailyActivityMap = {
37
+ * "2025-12-17": {
38
+ * "FastMath": {
39
+ * activityMetrics: { xpEarned: 3.4, totalQuestions: 114, ... },
40
+ * timeSpentMetrics: { activeSeconds: 0, ... },
41
+ * apps: ["Math Raiders"]
42
+ * }
43
+ * }
44
+ * }
45
+ * ```
46
+ */
47
+ export type DailyActivityMap = Record<string, Record<string, SubjectMetrics>>;
48
+ /**
49
+ * A single fact/event record from the weekly facts endpoint.
50
+ */
51
+ export interface WeeklyFactRecord {
52
+ id: number;
53
+ email: string;
54
+ date: string;
55
+ datetime: string;
56
+ username?: string;
57
+ userGrade?: string;
58
+ userFamilyName?: string;
59
+ userGivenName?: string;
60
+ userId?: string;
61
+ subject?: string;
62
+ app?: string;
63
+ courseId?: string;
64
+ courseName?: string;
65
+ campusId?: string;
66
+ campusName?: string;
67
+ enrollmentId?: string;
68
+ activityId?: string;
69
+ activityName?: string;
70
+ totalQuestions?: number;
71
+ correctQuestions?: number;
72
+ xpEarned?: number;
73
+ masteredUnits?: number;
74
+ activeSeconds?: string;
75
+ inactiveSeconds?: string;
76
+ wasteSeconds?: string;
77
+ source: string;
78
+ alphaLevel?: string;
79
+ generatedAt?: string;
80
+ sendTime?: string;
81
+ sensor?: string;
82
+ eventType?: string;
83
+ year: number;
84
+ month: number;
85
+ day: number;
86
+ dayOfWeek: number;
87
+ }
88
+ /**
89
+ * Weekly facts is an array of individual fact records.
90
+ */
91
+ export type WeeklyFacts = WeeklyFactRecord[];
92
+ /**
93
+ * Enrollment facts grouped by date, then by subject.
94
+ *
95
+ * Same structure as DailyActivityMap - the enrollment endpoint returns
96
+ * activity data filtered to a specific enrollment.
97
+ */
98
+ export type EnrollmentFacts = DailyActivityMap;
99
+ /**
100
+ * Grade mastery data from various sources.
101
+ */
102
+ export interface GradeMasteryData {
103
+ ritGrade: number | null;
104
+ edulasticGrade: string | null;
105
+ placementGrade: string | null;
106
+ testOutGrade: string | null;
107
+ highestGradeOverall: string | null;
108
+ }
109
+ /**
110
+ * Highest grade mastered for a subject.
111
+ */
112
+ export interface HighestGradeMastered {
113
+ studentId: string;
114
+ subject: string;
115
+ grades: GradeMasteryData;
116
+ }
117
+ /**
118
+ * Response from the activity endpoint.
119
+ */
120
+ export interface ActivityResponse {
121
+ message: string;
122
+ startDate: string;
123
+ endDate: string;
124
+ facts: DailyActivityMap;
125
+ factsByApp?: Record<string, Record<string, Record<string, SubjectMetrics>>>;
126
+ }
127
+ /**
128
+ * Response from the weekly facts endpoint.
129
+ */
130
+ export interface WeeklyFactsResponse {
131
+ message: string;
132
+ startDate: string;
133
+ endDate: string;
134
+ facts: WeeklyFacts;
135
+ }
136
+ /**
137
+ * Response from the enrollment facts endpoint.
138
+ */
139
+ export interface EnrollmentFactsResponse {
140
+ message: string;
141
+ enrollmentId: string;
142
+ startDate?: string;
143
+ endDate?: string;
144
+ facts: EnrollmentFacts;
145
+ factsByApp?: Record<string, Record<string, Record<string, SubjectMetrics>>>;
146
+ }
147
+ /**
148
+ * Parameters for activity query.
149
+ *
150
+ * Must provide either `email` or `studentId` to identify the user.
151
+ */
152
+ export interface ActivityParams {
153
+ /** User email address */
154
+ email?: string;
155
+ /** Student sourcedId */
156
+ studentId?: string;
157
+ /** Start date (ISO format: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ssZ) */
158
+ startDate: string;
159
+ /** End date (ISO format: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ssZ) */
160
+ endDate: string;
161
+ /** IANA timezone for date calculations (e.g., America/New_York) */
162
+ timezone?: string;
163
+ }
164
+ /**
165
+ * Parameters for weekly facts query.
166
+ *
167
+ * Must provide either `email` or `studentId` to identify the user.
168
+ */
169
+ export interface WeeklyFactsParams {
170
+ /** User email address */
171
+ email?: string;
172
+ /** Student sourcedId */
173
+ studentId?: string;
174
+ /** Week date (ISO format) - required, determines which week to query */
175
+ weekDate: string;
176
+ /** IANA timezone for date calculations (e.g., America/New_York) */
177
+ timezone?: string;
178
+ }
179
+ /**
180
+ * Parameters for enrollment facts query.
181
+ */
182
+ export interface EnrollmentFactsParams {
183
+ /** Enrollment ID */
184
+ enrollmentId: string;
185
+ /** Start date filter (ISO format) */
186
+ startDate?: string;
187
+ /** End date filter (ISO format) */
188
+ endDate?: string;
189
+ /** Timezone for date calculations */
190
+ timezone?: string;
191
+ }
192
+ /**
193
+ * Aggregated metrics across all dates and subjects.
194
+ *
195
+ * Use `aggregateActivityMetrics()` to compute this from a DailyActivityMap.
196
+ */
197
+ export interface AggregatedMetrics {
198
+ totalXp: number;
199
+ totalQuestions: number;
200
+ correctQuestions: number;
201
+ masteredUnits: number;
202
+ activeSeconds: number;
203
+ inactiveSeconds: number;
204
+ wasteSeconds: number;
205
+ dayCount: number;
206
+ subjectCount: number;
207
+ }
208
+ //# sourceMappingURL=analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/types/analytics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,eAAe,EAAE,mBAAmB,CAAA;IACpC,gBAAgB,EAAE,oBAAoB,CAAA;IACtC,IAAI,EAAE,MAAM,EAAE,CAAA;CACd;AAMD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;AAM7E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,gBAAgB,EAAE,CAAA;AAM5C;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,gBAAgB,CAAA;AAM9C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,gBAAgB,CAAA;CACxB;AAMD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,gBAAgB,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;CAC3E;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,WAAW,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,eAAe,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;CAC3E;AAMD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAA;IACjB,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAA;IACf,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IACjC,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAA;IAChB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB;AAMD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;CACpB"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Application Types
3
+ *
4
+ * Types for application management.
5
+ */
6
+ /**
7
+ * An application/learning platform.
8
+ */
9
+ export interface Application {
10
+ sourcedId: string;
11
+ name: string;
12
+ description?: string | null;
13
+ domain: string[];
14
+ metadata?: Record<string, unknown> | null;
15
+ }
16
+ /**
17
+ * Metrics for an application.
18
+ */
19
+ export interface ApplicationMetrics {
20
+ applicationSourcedId: string;
21
+ totalUsers?: number;
22
+ activeUsers?: number;
23
+ totalSessions?: number;
24
+ avgSessionDuration?: number;
25
+ metadata?: Record<string, unknown>;
26
+ }
27
+ //# sourceMappingURL=applications.d.ts.map