@timeback/oneroster 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 (85) hide show
  1. package/README.md +295 -0
  2. package/dist/client.d.ts +125 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/constants.d.ts +23 -0
  5. package/dist/constants.d.ts.map +1 -0
  6. package/dist/errors.d.ts +7 -0
  7. package/dist/errors.d.ts.map +1 -0
  8. package/dist/errors.js +1414 -0
  9. package/dist/factory.d.ts +100 -0
  10. package/dist/factory.d.ts.map +1 -0
  11. package/dist/index.d.ts +42 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +2614 -0
  14. package/dist/lib/index.d.ts +11 -0
  15. package/dist/lib/index.d.ts.map +1 -0
  16. package/dist/lib/pagination.d.ts +30 -0
  17. package/dist/lib/pagination.d.ts.map +1 -0
  18. package/dist/lib/resolve.d.ts +21 -0
  19. package/dist/lib/resolve.d.ts.map +1 -0
  20. package/dist/lib/transport.d.ts +32 -0
  21. package/dist/lib/transport.d.ts.map +1 -0
  22. package/dist/resources/assessment/index.d.ts +6 -0
  23. package/dist/resources/assessment/index.d.ts.map +1 -0
  24. package/dist/resources/assessment/line-items.d.ts +38 -0
  25. package/dist/resources/assessment/line-items.d.ts.map +1 -0
  26. package/dist/resources/assessment/results.d.ts +25 -0
  27. package/dist/resources/assessment/results.d.ts.map +1 -0
  28. package/dist/resources/base.d.ts +181 -0
  29. package/dist/resources/base.d.ts.map +1 -0
  30. package/dist/resources/gradebook/categories.d.ts +16 -0
  31. package/dist/resources/gradebook/categories.d.ts.map +1 -0
  32. package/dist/resources/gradebook/index.d.ts +8 -0
  33. package/dist/resources/gradebook/index.d.ts.map +1 -0
  34. package/dist/resources/gradebook/line-items.d.ts +52 -0
  35. package/dist/resources/gradebook/line-items.d.ts.map +1 -0
  36. package/dist/resources/gradebook/results.d.ts +24 -0
  37. package/dist/resources/gradebook/results.d.ts.map +1 -0
  38. package/dist/resources/gradebook/score-scales.d.ts +16 -0
  39. package/dist/resources/gradebook/score-scales.d.ts.map +1 -0
  40. package/dist/resources/index.d.ts +11 -0
  41. package/dist/resources/index.d.ts.map +1 -0
  42. package/dist/resources/resources/index.d.ts +5 -0
  43. package/dist/resources/resources/index.d.ts.map +1 -0
  44. package/dist/resources/resources/resources.d.ts +39 -0
  45. package/dist/resources/resources/resources.d.ts.map +1 -0
  46. package/dist/resources/rostering/academic-sessions.d.ts +97 -0
  47. package/dist/resources/rostering/academic-sessions.d.ts.map +1 -0
  48. package/dist/resources/rostering/classes.d.ts +276 -0
  49. package/dist/resources/rostering/classes.d.ts.map +1 -0
  50. package/dist/resources/rostering/courses.d.ts +75 -0
  51. package/dist/resources/rostering/courses.d.ts.map +1 -0
  52. package/dist/resources/rostering/demographics.d.ts +18 -0
  53. package/dist/resources/rostering/demographics.d.ts.map +1 -0
  54. package/dist/resources/rostering/enrollments.d.ts +28 -0
  55. package/dist/resources/rostering/enrollments.d.ts.map +1 -0
  56. package/dist/resources/rostering/index.d.ts +12 -0
  57. package/dist/resources/rostering/index.d.ts.map +1 -0
  58. package/dist/resources/rostering/orgs.d.ts +18 -0
  59. package/dist/resources/rostering/orgs.d.ts.map +1 -0
  60. package/dist/resources/rostering/schools.d.ts +214 -0
  61. package/dist/resources/rostering/schools.d.ts.map +1 -0
  62. package/dist/resources/rostering/users.d.ts +191 -0
  63. package/dist/resources/rostering/users.d.ts.map +1 -0
  64. package/dist/types/base.d.ts +127 -0
  65. package/dist/types/base.d.ts.map +1 -0
  66. package/dist/types/callable.d.ts +246 -0
  67. package/dist/types/callable.d.ts.map +1 -0
  68. package/dist/types/client.d.ts +58 -0
  69. package/dist/types/client.d.ts.map +1 -0
  70. package/dist/types/filters.d.ts +165 -0
  71. package/dist/types/filters.d.ts.map +1 -0
  72. package/dist/types/gradebook.d.ts +262 -0
  73. package/dist/types/gradebook.d.ts.map +1 -0
  74. package/dist/types/index.d.ts +13 -0
  75. package/dist/types/index.d.ts.map +1 -0
  76. package/dist/types/resources.d.ts +191 -0
  77. package/dist/types/resources.d.ts.map +1 -0
  78. package/dist/types/rostering.d.ts +732 -0
  79. package/dist/types/rostering.d.ts.map +1 -0
  80. package/dist/types.d.ts +10 -0
  81. package/dist/types.d.ts.map +1 -0
  82. package/dist/types.js +0 -0
  83. package/dist/utils.d.ts +51 -0
  84. package/dist/utils.d.ts.map +1 -0
  85. package/package.json +41 -0
@@ -0,0 +1,246 @@
1
+ /**
2
+ * Callable Resource Types
3
+ *
4
+ * Types for callable resource patterns where
5
+ * `resource(id)` returns a scoped resource and `resource.list()` etc.
6
+ * access collection-level operations.
7
+ */
8
+ import type { ListParams } from '@timeback/internal-client-infra';
9
+ import type { Paginator } from '../lib';
10
+ import type { ScopedAssessmentLineItemResource } from '../resources/assessment/line-items';
11
+ import type { ScopedLineItemResource } from '../resources/gradebook/line-items';
12
+ import type { ScopedResourceResource } from '../resources/resources/resources';
13
+ import type { ScopedTermResource } from '../resources/rostering/academic-sessions';
14
+ import type { ScopedClassResource } from '../resources/rostering/classes';
15
+ import type { ScopedCourseResource } from '../resources/rostering/courses';
16
+ import type { ScopedSchoolResource } from '../resources/rostering/schools';
17
+ import type { ScopedStudentResource, ScopedTeacherResource, ScopedUserResource } from '../resources/rostering/users';
18
+ import type { Base } from './base';
19
+ import type { AcademicSession, AcademicSessionFilterFields, AssessmentLineItem, AssessmentLineItemFilterFields, Class, ClassCreateInput, ClassFilterFields, ComponentResource, ComponentResourceCreateInput, ComponentResourceFilterFields, Course, CourseComponent, CourseComponentCreateInput, CourseComponentFilterFields, CourseCreateInput, CourseFilterFields, CourseStructureInput, CreateResponse, LineItem, LineItemCreateInput, LineItemFilterFields, Organization, OrganizationFilterFields, Resource, ResourceFilterFields, SchoolCreateInput, User, UserCreateInput, UserFilterFields } from './index';
20
+ /**
21
+ * Base interface for callable resources.
22
+ * Resources that support scoping by ID implement this pattern.
23
+ *
24
+ * @template T - The entity type
25
+ * @template F - Filter fields type
26
+ * @template S - Scoped resource type returned when called with an ID
27
+ * @template I - Input type for create/update (defaults to Partial<T>)
28
+ */
29
+ export interface CallableResource<T extends Base, F, S, I = Partial<T>> {
30
+ /** Get a scoped resource for a specific entity */
31
+ (id: string): S;
32
+ /** List all entities */
33
+ list(params?: ListParams<F>): Promise<T[]>;
34
+ /** Stream entities with lazy pagination */
35
+ stream(params?: ListParams<F>): Paginator<T, F>;
36
+ /** Get a single entity by ID */
37
+ get(id: string): Promise<T>;
38
+ /** Create a new entity */
39
+ create(data: I): Promise<CreateResponse>;
40
+ /** Update an existing entity */
41
+ update(id: string, data: Partial<I>): Promise<void>;
42
+ /** Delete an entity */
43
+ delete(id: string): Promise<void>;
44
+ }
45
+ /**
46
+ * Read-only callable resource (no create/update/delete).
47
+ *
48
+ * @template T - The entity type
49
+ * @template F - Filter fields type
50
+ * @template S - Scoped resource type returned when called with an ID
51
+ */
52
+ export interface ReadOnlyCallableResource<T extends Base, F, S> {
53
+ /** Get a scoped resource for a specific entity */
54
+ (id: string): S;
55
+ /** List all entities */
56
+ list(params?: ListParams<F>): Promise<T[]>;
57
+ /** Stream entities with lazy pagination */
58
+ stream(params?: ListParams<F>): Paginator<T, F>;
59
+ /** Get a single entity by ID */
60
+ get(id: string): Promise<T>;
61
+ }
62
+ /**
63
+ * Callable courses resource.
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * // Collection operations
68
+ * const courses = await client.courses.list()
69
+ * const course = await client.courses.get(id)
70
+ *
71
+ * // Scoped operations
72
+ * const classes = await client.courses(courseId).classes()
73
+ * ```
74
+ */
75
+ export interface CoursesCallable extends CallableResource<Course, CourseFilterFields, ScopedCourseResource, CourseCreateInput> {
76
+ /** List all course components */
77
+ components(params?: ListParams<CourseComponentFilterFields>): Promise<CourseComponent[]>;
78
+ /** Stream course components with lazy pagination */
79
+ streamComponents(params?: ListParams<CourseComponentFilterFields>): Paginator<CourseComponent, CourseComponentFilterFields>;
80
+ /** Get a specific course component */
81
+ getComponent(sourcedId: string): Promise<CourseComponent>;
82
+ /** Create a new course component */
83
+ createComponent(data: CourseComponentCreateInput): Promise<CreateResponse>;
84
+ /** Update a course component */
85
+ updateComponent(sourcedId: string, data: Partial<CourseComponent>): Promise<void>;
86
+ /** Delete a course component */
87
+ deleteComponent(sourcedId: string): Promise<void>;
88
+ /** List all component resources */
89
+ componentResources(params?: ListParams<ComponentResourceFilterFields>): Promise<ComponentResource[]>;
90
+ /** Stream component resources with lazy pagination */
91
+ streamComponentResources(params?: ListParams<ComponentResourceFilterFields>): Paginator<ComponentResource, ComponentResourceFilterFields>;
92
+ /** Get a specific component resource */
93
+ getComponentResource(sourcedId: string): Promise<ComponentResource>;
94
+ /** Create a new component resource */
95
+ createComponentResource(data: ComponentResourceCreateInput): Promise<CreateResponse>;
96
+ /** Update a component resource */
97
+ updateComponentResource(sourcedId: string, data: Partial<ComponentResource>): Promise<void>;
98
+ /** Delete a component resource */
99
+ deleteComponentResource(sourcedId: string): Promise<void>;
100
+ /** Create a course structure from QTI tests */
101
+ createStructure(data: CourseStructureInput): Promise<CreateResponse>;
102
+ }
103
+ /**
104
+ * Callable classes resource.
105
+ *
106
+ * @example
107
+ * ```typescript
108
+ * // Collection operations
109
+ * const classes = await client.classes.list()
110
+ * const cls = await client.classes.get(id)
111
+ *
112
+ * // Scoped operations
113
+ * const students = await client.classes(classId).students()
114
+ * const lineItems = await client.classes(classId).lineItems()
115
+ * ```
116
+ */
117
+ export type ClassesCallable = CallableResource<Class, ClassFilterFields, ScopedClassResource, ClassCreateInput>;
118
+ /**
119
+ * Callable schools resource.
120
+ *
121
+ * @example
122
+ * ```typescript
123
+ * // Collection operations
124
+ * const schools = await client.schools.list()
125
+ * const school = await client.schools.get(id)
126
+ *
127
+ * // Scoped operations
128
+ * const classes = await client.schools(schoolId).classes()
129
+ * const students = await client.schools(schoolId).students()
130
+ * ```
131
+ */
132
+ export type SchoolsCallable = CallableResource<Organization, OrganizationFilterFields, ScopedSchoolResource, SchoolCreateInput>;
133
+ /**
134
+ * Callable users resource.
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * // Collection operations
139
+ * const users = await client.users.list()
140
+ * const user = await client.users.get(id)
141
+ *
142
+ * // Scoped operations
143
+ * const resources = await client.users(userId).resources()
144
+ * const classes = await client.users(userId).classes()
145
+ * ```
146
+ */
147
+ export type UsersCallable = CallableResource<User, UserFilterFields, ScopedUserResource, UserCreateInput>;
148
+ /**
149
+ * Callable students resource (read-only).
150
+ *
151
+ * @example
152
+ * ```typescript
153
+ * // Collection operations
154
+ * const students = await client.students.list()
155
+ * const student = await client.students.get(id)
156
+ *
157
+ * // Scoped operations
158
+ * const classes = await client.students(studentId).classes()
159
+ * ```
160
+ */
161
+ export type StudentsCallable = ReadOnlyCallableResource<User, UserFilterFields, ScopedStudentResource>;
162
+ /**
163
+ * Callable teachers resource (read-only).
164
+ *
165
+ * @example
166
+ * ```typescript
167
+ * // Collection operations
168
+ * const teachers = await client.teachers.list()
169
+ * const teacher = await client.teachers.get(id)
170
+ *
171
+ * // Scoped operations
172
+ * const classes = await client.teachers(teacherId).classes()
173
+ * ```
174
+ */
175
+ export type TeachersCallable = ReadOnlyCallableResource<User, UserFilterFields, ScopedTeacherResource>;
176
+ /**
177
+ * Callable terms resource (read-only).
178
+ *
179
+ * @example
180
+ * ```typescript
181
+ * // Collection operations
182
+ * const terms = await client.terms.list()
183
+ * const term = await client.terms.get(id)
184
+ *
185
+ * // Scoped operations
186
+ * const classes = await client.terms(termId).classes()
187
+ * ```
188
+ */
189
+ export type TermsCallable = ReadOnlyCallableResource<AcademicSession, AcademicSessionFilterFields, ScopedTermResource>;
190
+ /**
191
+ * Callable line items resource.
192
+ *
193
+ * @example
194
+ * ```typescript
195
+ * // Collection operations
196
+ * const lineItems = await client.lineItems.list()
197
+ * const lineItem = await client.lineItems.get(id)
198
+ *
199
+ * // Scoped operations
200
+ * const results = await client.lineItems(lineItemId).results()
201
+ * ```
202
+ */
203
+ export interface LineItemsCallable extends CallableResource<LineItem, LineItemFilterFields, ScopedLineItemResource> {
204
+ /** Create a new line item */
205
+ create(data: LineItemCreateInput): Promise<CreateResponse>;
206
+ }
207
+ /**
208
+ * Callable assessment line items resource.
209
+ *
210
+ * @example
211
+ * ```typescript
212
+ * // Collection operations
213
+ * const lineItems = await client.assessmentLineItems.list()
214
+ * const lineItem = await client.assessmentLineItems.get(id)
215
+ *
216
+ * // Partial update
217
+ * await client.assessmentLineItems.patch(id, { score: 95 })
218
+ * ```
219
+ */
220
+ export interface AssessmentLineItemsCallable extends CallableResource<AssessmentLineItem, AssessmentLineItemFilterFields, ScopedAssessmentLineItemResource> {
221
+ /** Partially update an assessment line item (only specified fields are changed) */
222
+ patch(id: string, data: Partial<AssessmentLineItem>): Promise<void>;
223
+ }
224
+ /**
225
+ * Callable resources resource.
226
+ *
227
+ * @example
228
+ * ```typescript
229
+ * // Collection operations
230
+ * const resources = await client.resources.list()
231
+ * const resource = await client.resources.get(id)
232
+ *
233
+ * // Nested resource queries (following convention)
234
+ * const classResources = await client.classes(classId).resources()
235
+ * const courseResources = await client.courses(courseId).resources()
236
+ * const userResources = await client.users(userId).resources()
237
+ *
238
+ * // Export
239
+ * await client.resources.export(resourceId)
240
+ * ```
241
+ */
242
+ export interface ResourcesCallable extends CallableResource<Resource, ResourceFilterFields, ScopedResourceResource> {
243
+ /** Export a resource to Common Cartridge (.zip) as an ArrayBuffer */
244
+ export(resourceId: string): Promise<ArrayBuffer>;
245
+ }
246
+ //# sourceMappingURL=callable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callable.d.ts","sourceRoot":"","sources":["../../src/types/callable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Client Configuration Types
3
+ *
4
+ * Types for configuring the OneRoster client.
5
+ */
6
+ import type { BaseTransportConfig, ClientConfig, OneRosterPaths, PaginatedResponse, ProviderClientConfig, RequestOptions, ResolvedProvider, TransportOnlyConfig } from '@timeback/internal-client-infra';
7
+ export type { Environment, EnvAuth, ExplicitAuth, Platform } from '@timeback/internal-client-infra';
8
+ export type { TimebackProvider, ProviderAuth } from '@timeback/internal-client-infra';
9
+ /**
10
+ * Transport interface for OneRoster client.
11
+ *
12
+ * Extends base transport requirements with OneRoster-specific paths and pagination.
13
+ * Required when using transport mode with OneRosterClient.
14
+ */
15
+ export interface OneRosterTransportLike {
16
+ /** Base URL of the API */
17
+ baseUrl: string;
18
+ /** API path profiles for OneRoster operations */
19
+ paths: OneRosterPaths;
20
+ /** Make an authenticated request */
21
+ request<T>(path: string, options?: RequestOptions): Promise<T>;
22
+ /** Make a raw request, returning the Response object (useful for binary responses) */
23
+ requestRaw(path: string, options?: RequestOptions): Promise<Response>;
24
+ /** Make a paginated request using header-based pagination */
25
+ requestPaginated<T>(path: string, options?: RequestOptions): Promise<PaginatedResponse<T>>;
26
+ }
27
+ /**
28
+ * Configuration options for creating a OneRosterClient.
29
+ *
30
+ * Accepts one of six mutually exclusive modes:
31
+ * 1. **Provider**: Provide a pre-built `TimebackProvider` instance
32
+ * 2. **Explicit**: Provide `baseUrl` and `auth` with `authUrl`
33
+ * 3. **Environment**: Provide `platform?`, `env` and `auth` (URLs derived automatically)
34
+ * 4. **Token Provider**: Provide `platform?`, `env` and `tokenProvider` (shared auth)
35
+ * 5. **Transport**: Provide a pre-configured `transport` instance with paths
36
+ * 6. **Env Vars**: Omit config entirely (reads from environment variables)
37
+ *
38
+ * The `platform` field selects which Timeback implementation to use:
39
+ * - `'BEYOND_AI'` (default): BeyondAI's Timeback platform
40
+ * - `'LEARNWITH_AI'`: Samy's LearnWith.ai platform
41
+ */
42
+ export type OneRosterClientConfig = ClientConfig | TransportOnlyConfig<OneRosterTransportLike> | ProviderClientConfig;
43
+ /**
44
+ * Configuration for OneRoster transport.
45
+ */
46
+ export type OneRosterTransportConfig = BaseTransportConfig & {
47
+ /** API path profiles for OneRoster operations */
48
+ paths: OneRosterPaths;
49
+ };
50
+ /**
51
+ * Resolved provider type for OneRoster client.
52
+ */
53
+ export type OneRosterResolvedProvider = ResolvedProvider<OneRosterTransportLike>;
54
+ /**
55
+ * Instance type of OneRosterClient.
56
+ */
57
+ export type OneRosterClientInstance = InstanceType<typeof import('../client').OneRosterClient>;
58
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,MAAM,iCAAiC,CAAA;AAExC,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AACnG,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAErF;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACtC,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,iDAAiD;IACjD,KAAK,EAAE,cAAc,CAAA;IACrB,oCAAoC;IACpC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAC9D,sFAAsF;IACtF,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACrE,6DAA6D;IAC7D,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;CAC1F;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,qBAAqB,GAC9B,YAAY,GACZ,mBAAmB,CAAC,sBAAsB,CAAC,GAC3C,oBAAoB,CAAA;AAEvB;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,mBAAmB,GAAG;IAC5D,iDAAiD;IACjD,KAAK,EAAE,cAAc,CAAA;CACrB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAA;AAEhF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,YAAY,CAAC,cAAc,WAAW,EAAE,eAAe,CAAC,CAAA"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Filter Field Types
3
+ *
4
+ * These types define the server-side filterable fields for each OneRoster entity.
5
+ * They may differ from the entity structure (e.g., `role` vs `roles`).
6
+ */
7
+ import type { OneRosterUserRole, OrganizationType } from '@timeback/types';
8
+ /**
9
+ * Base fields available for filtering on all entities.
10
+ */
11
+ export interface BaseFilterFields {
12
+ sourcedId: string;
13
+ status: 'active' | 'tobedeleted';
14
+ dateLastModified: Date;
15
+ }
16
+ /**
17
+ * Filterable fields for User entities.
18
+ *
19
+ * Note: The server accepts `role` (singular) even though the entity has `roles` (array).
20
+ */
21
+ export interface UserFilterFields extends BaseFilterFields {
22
+ givenName: string;
23
+ familyName: string;
24
+ email: string;
25
+ username: string;
26
+ enabledUser: string;
27
+ identifier: string;
28
+ userMasterIdentifier: string;
29
+ /** Server accepts singular `role` for filtering, even though entity has `roles` array */
30
+ role: OneRosterUserRole;
31
+ }
32
+ /**
33
+ * Filterable fields for Organization/School entities.
34
+ */
35
+ export interface OrganizationFilterFields extends BaseFilterFields {
36
+ name: string;
37
+ identifier: string;
38
+ type: OrganizationType;
39
+ }
40
+ /**
41
+ * Filterable fields for Class entities.
42
+ */
43
+ export interface ClassFilterFields extends BaseFilterFields {
44
+ title: string;
45
+ classCode: string;
46
+ classType: 'homeroom' | 'scheduled';
47
+ location: string;
48
+ grades: string;
49
+ }
50
+ /**
51
+ * Filterable fields for Course entities.
52
+ */
53
+ export interface CourseFilterFields extends BaseFilterFields {
54
+ title: string;
55
+ courseCode: string;
56
+ grades: string;
57
+ subjects: string;
58
+ }
59
+ /**
60
+ * Filterable fields for Enrollment entities.
61
+ */
62
+ export interface EnrollmentFilterFields extends BaseFilterFields {
63
+ role: OneRosterUserRole;
64
+ primary: string;
65
+ beginDate: Date;
66
+ endDate: Date;
67
+ 'class.sourcedId': string;
68
+ }
69
+ /**
70
+ * Filterable fields for AcademicSession entities.
71
+ */
72
+ export interface AcademicSessionFilterFields extends BaseFilterFields {
73
+ title: string;
74
+ type: 'gradingPeriod' | 'semester' | 'schoolYear' | 'term';
75
+ startDate: Date;
76
+ endDate: Date;
77
+ schoolYear: string;
78
+ }
79
+ /**
80
+ * Filterable fields for LineItem (gradebook) entities.
81
+ */
82
+ export interface LineItemFilterFields extends BaseFilterFields {
83
+ title: string;
84
+ description: string;
85
+ assignDate: Date;
86
+ dueDate: Date;
87
+ }
88
+ /**
89
+ * Filterable fields for Result (grade) entities.
90
+ */
91
+ export interface ResultFilterFields extends BaseFilterFields {
92
+ score: number;
93
+ scoreDate: Date;
94
+ scoreStatus: 'exempt' | 'fully graded' | 'not submitted' | 'partially graded' | 'submitted';
95
+ }
96
+ /**
97
+ * Filterable fields for Resource entities.
98
+ */
99
+ export interface ResourceFilterFields extends BaseFilterFields {
100
+ title: string;
101
+ vendorResourceId: string;
102
+ importance: 'primary' | 'secondary';
103
+ }
104
+ /**
105
+ * Filterable fields for CourseComponent entities.
106
+ */
107
+ export interface CourseComponentFilterFields extends BaseFilterFields {
108
+ title: string;
109
+ resourceType: string;
110
+ 'course.sourcedId': string;
111
+ }
112
+ /**
113
+ * Filterable fields for ComponentResource entities.
114
+ */
115
+ export interface ComponentResourceFilterFields extends BaseFilterFields {
116
+ title: string;
117
+ lessonType: string;
118
+ 'courseComponent.sourcedId': string;
119
+ }
120
+ /**
121
+ * Filterable fields for AssessmentLineItem entities.
122
+ */
123
+ export interface AssessmentLineItemFilterFields extends BaseFilterFields {
124
+ title: string;
125
+ description: string;
126
+ assignDate: Date;
127
+ dueDate: Date;
128
+ }
129
+ /**
130
+ * Filterable fields for AssessmentResult entities.
131
+ */
132
+ export interface AssessmentResultFilterFields extends BaseFilterFields {
133
+ score: number;
134
+ scoreDate: Date;
135
+ scoreStatus: string;
136
+ }
137
+ /**
138
+ * Filterable fields for Demographics entities.
139
+ */
140
+ export interface DemographicsFilterFields extends BaseFilterFields {
141
+ birthDate: string;
142
+ sex: 'male' | 'female';
143
+ }
144
+ /**
145
+ * Filterable fields for Category entities.
146
+ */
147
+ export interface CategoryFilterFields extends BaseFilterFields {
148
+ title: string;
149
+ }
150
+ /**
151
+ * Filterable fields for ScoreScale entities.
152
+ */
153
+ export interface ScoreScaleFilterFields extends BaseFilterFields {
154
+ title: string;
155
+ }
156
+ /**
157
+ * Filterable fields for Resource entities.
158
+ */
159
+ export interface ResourceFilterFields extends BaseFilterFields {
160
+ title: string;
161
+ vendorResourceId: string;
162
+ vendorId: string;
163
+ applicationId: string;
164
+ }
165
+ //# sourceMappingURL=filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/types/filters.ts"],"names":[],"mappings":"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"}