@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,11 @@
1
+ /**
2
+ * Internal library modules.
3
+ *
4
+ * @internal
5
+ */
6
+ export { resolveToProvider } from './resolve';
7
+ export { Paginator } from './pagination';
8
+ export { Transport } from './transport';
9
+ export type { OneRosterResolvedProvider } from '../types';
10
+ export type { ListParams, PageResult, ResolvedConfig } from '@timeback/internal-client-infra';
11
+ //# 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,cAAc,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,YAAY,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAA;AACzD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Pagination Utilities
3
+ *
4
+ * Re-exports the common Paginator with OneRoster-specific configuration.
5
+ */
6
+ import { Paginator as BasePaginator } from '@timeback/internal-client-infra';
7
+ import type { ListParams } from '@timeback/internal-client-infra';
8
+ import type { OneRosterTransportLike } from '../types';
9
+ /**
10
+ * OneRoster-specific Paginator that uses the OneRoster transport.
11
+ *
12
+ * Accepts params with `max` included for consumer convenience,
13
+ * then extracts and forwards it to the base Paginator.
14
+ *
15
+ * @typeParam T - The type of items being paginated
16
+ * @typeParam F - The filter fields type for type-safe where/sort
17
+ */
18
+ export declare class Paginator<T, F = unknown> extends BasePaginator<T, F> {
19
+ /**
20
+ * Create a new OneRoster Paginator.
21
+ *
22
+ * @param transport - OneRoster transport instance
23
+ * @param path - API endpoint path
24
+ * @param params - List parameters including optional max
25
+ * @param unwrapKey - Response key containing the items array (e.g., "users")
26
+ * @param transform - Optional transform function applied to each item
27
+ */
28
+ constructor(transport: OneRosterTransportLike, path: string, params?: ListParams<F>, unwrapKey?: string, transform?: (item: T) => T);
29
+ }
30
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/lib/pagination.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAI5E,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,iCAAiC,CAAA;AACpF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAEtD;;;;;;;;GAQG;AACH,qBAAa,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAE,SAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IACjE;;;;;;;;OAQG;IACH,YACC,SAAS,EAAE,sBAAsB,EACjC,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,UAAU,CAAC,CAAC,CAAM,EAC1B,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAc1B;CACD"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Provider Resolution
3
+ *
4
+ * OneRoster-specific wrapper around the generic provider resolver.
5
+ *
6
+ * @internal
7
+ */
8
+ import type { ProviderRegistry } from '@timeback/internal-client-infra';
9
+ import type { OneRosterClientConfig, OneRosterResolvedProvider } from '../types';
10
+ /**
11
+ * Resolve OneRoster 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: OneRosterClientConfig, registry?: ProviderRegistry): OneRosterResolvedProvider;
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,32 @@
1
+ /**
2
+ * Transport Layer
3
+ *
4
+ * Extends BaseTransport for OneRoster API communication.
5
+ */
6
+ import { BaseTransport } from '@timeback/internal-client-infra';
7
+ import type { OneRosterPaths, PaginatedResponse, RequestOptions } from '@timeback/internal-client-infra';
8
+ import type { OneRosterTransportConfig } from '../types';
9
+ /**
10
+ * HTTP transport layer for OneRoster API communication.
11
+ *
12
+ * Uses header-based pagination (Link, X-Total-Count) per IMS Global spec.
13
+ */
14
+ export declare class Transport extends BaseTransport {
15
+ /** API path profiles for OneRoster operations */
16
+ readonly paths: OneRosterPaths;
17
+ constructor(config: OneRosterTransportConfig);
18
+ /**
19
+ * Make a paginated request using header-based pagination.
20
+ *
21
+ * OneRoster APIs return pagination metadata in HTTP headers:
22
+ * - `Link` header with `rel="next"` for more pages
23
+ * - `X-Total-Count` header for total item count
24
+ *
25
+ * @template T - Expected item type in the response array
26
+ * @param path - API endpoint path
27
+ * @param options - Request options
28
+ * @returns Response data with hasMore flag and optional total count
29
+ */
30
+ requestPaginated<T>(path: string, options?: RequestOptions): Promise<PaginatedResponse<T>>;
31
+ }
32
+ //# 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,EAAyB,MAAM,iCAAiC,CAAA;AAItF,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AACxG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AAExD;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,aAAa;IAC3C,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAA;IAE9B,YAAY,MAAM,EAAE,wBAAwB,EAG3C;IAED;;;;;;;;;;;OAWG;IACG,gBAAgB,CAAC,CAAC,EACvB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAI/B;CACD"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Assessment Resources
3
+ */
4
+ export { createAssessmentLineItemsResource, ScopedAssessmentLineItemResource } from './line-items';
5
+ export { AssessmentResultsResource } from './results';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/resources/assessment/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iCAAiC,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAA;AAClG,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Assessment Line Items Resource
3
+ *
4
+ * Manage standardized assessment line items.
5
+ */
6
+ import type { AssessmentLineItem, AssessmentLineItemsCallable, OneRosterTransportLike } from '../../types';
7
+ /**
8
+ * Scoped resource for operations on a specific assessment line item.
9
+ *
10
+ * Access via `client.assessmentLineItems(lineItemId)`.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const lineItem = await client.assessmentLineItems(lineItemId).get()
15
+ *
16
+ * // To get results for an assessment line item, use assessmentResults with a filter:
17
+ * const results = await client.assessmentResults.list({
18
+ * filter: { lineItem: { sourcedId: lineItemId } }
19
+ * })
20
+ * ```
21
+ */
22
+ export declare class ScopedAssessmentLineItemResource {
23
+ private readonly transport;
24
+ private readonly basePath;
25
+ constructor(transport: OneRosterTransportLike, lineItemId: string);
26
+ /**
27
+ * Get the assessment line item details.
28
+ * @returns The assessment line item details
29
+ */
30
+ get(): Promise<AssessmentLineItem>;
31
+ }
32
+ /**
33
+ * Create a callable assessment line items resource.
34
+ * @param transport - OneRoster transport instance
35
+ * @returns Callable resource for assessment line items
36
+ */
37
+ export declare function createAssessmentLineItemsResource(transport: OneRosterTransportLike): AssessmentLineItemsCallable;
38
+ //# sourceMappingURL=line-items.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-items.d.ts","sourceRoot":"","sources":["../../../src/resources/assessment/line-items.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACX,kBAAkB,EAElB,2BAA2B,EAC3B,sBAAsB,EACtB,MAAM,aAAa,CAAA;AAMpB;;;;;;;;;;;;;;GAcG;AACH,qBAAa,gCAAgC;IAI3C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAH3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IAEjC,YACkB,SAAS,EAAE,sBAAsB,EAClD,UAAU,EAAE,MAAM,EAGlB;IAED;;;OAGG;IACG,GAAG,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAKvC;CACD;AA2CD;;;;GAIG;AACH,wBAAgB,iCAAiC,CAChD,SAAS,EAAE,sBAAsB,GAC/B,2BAA2B,CAe7B"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Assessment Results Resource
3
+ *
4
+ * Manage standardized assessment results.
5
+ */
6
+ import { BaseResource } from '../base';
7
+ import type { AssessmentResult, AssessmentResultFilterFields, OneRosterTransportLike } from '../../types';
8
+ /**
9
+ * Resource for managing assessment results.
10
+ */
11
+ export declare class AssessmentResultsResource extends BaseResource<AssessmentResult, AssessmentResultFilterFields> {
12
+ constructor(transport: OneRosterTransportLike);
13
+ /**
14
+ * Partially update an assessment result.
15
+ *
16
+ * Only the fields provided will be updated. Other fields remain unchanged.
17
+ *
18
+ * @param sourcedId - The assessment result sourcedId
19
+ * @param data - The fields to update
20
+ */
21
+ patch(sourcedId: string, data: Partial<AssessmentResult>): Promise<void>;
22
+ protected get unwrapKey(): string;
23
+ protected get wrapKey(): string;
24
+ }
25
+ //# sourceMappingURL=results.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../../src/resources/assessment/results.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EACX,gBAAgB,EAChB,4BAA4B,EAC5B,sBAAsB,EACtB,MAAM,aAAa,CAAA;AAEpB;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,YAAY,CAC1D,gBAAgB,EAChB,4BAA4B,CAC5B;IACA,YAAY,SAAS,EAAE,sBAAsB,EAE5C;IAED;;;;;;;OAOG;IACG,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAK7E;IAED,SAAS,KAAK,SAAS,IAAI,MAAM,CAEhC;IAED,SAAS,KAAK,OAAO,IAAI,MAAM,CAE9B;CACD"}
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Base Resource
3
+ *
4
+ * Abstract base class for all OneRoster resources.
5
+ * Provides common CRUD operations.
6
+ */
7
+ import { Paginator } from '../lib';
8
+ import type { ListParams } from '@timeback/internal-client-infra';
9
+ import type { Base, CreateResponse, OneRosterTransportLike, ResourceType } from '../types';
10
+ /**
11
+ * Abstract base class for all OneRoster resources.
12
+ *
13
+ * Provides common CRUD operations with automatic response unwrapping.
14
+ *
15
+ * @template T - The resource type (must extend Base) - used for responses
16
+ * @template F - The filter fields type for type-safe where clauses
17
+ * @template I - The input type for create/update (defaults to Partial<T>)
18
+ */
19
+ export declare abstract class BaseResource<T extends Base, F = T, I = Partial<T>> {
20
+ protected readonly transport: OneRosterTransportLike;
21
+ /** Full path for this resource (pathPrefix + suffix) */
22
+ protected readonly basePath: string;
23
+ /**
24
+ * @param transport - Transport instance for making requests
25
+ * @param resourceType - Type of resource (rostering or gradebook)
26
+ * @param suffix - Resource suffix (e.g., '/users', '/lineItems')
27
+ */
28
+ constructor(transport: OneRosterTransportLike, resourceType: ResourceType, suffix: string);
29
+ /**
30
+ * List all resources, fetching all pages automatically.
31
+ *
32
+ * @param params - Optional filtering, sorting, and pagination parameters
33
+ * @returns Promise resolving to an array of all matching resources
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * const users = await client.users.list()
38
+ * const activeUsers = await client.users.list({ where: { status: 'active' } })
39
+ * ```
40
+ */
41
+ list(params?: ListParams<F>): Promise<T[]>;
42
+ /**
43
+ * Stream resources with lazy pagination.
44
+ *
45
+ * Use this for large datasets where you want to process items
46
+ * one at a time without loading everything into memory.
47
+ *
48
+ * @param params - Optional filtering, sorting, and pagination parameters
49
+ * @returns Async iterable paginator for streaming results
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * for await (const user of client.users.stream()) {
54
+ * console.log(user.name)
55
+ * }
56
+ * ```
57
+ */
58
+ stream(params?: ListParams<F>): Paginator<T, F>;
59
+ /**
60
+ * Get a single resource by sourcedId.
61
+ *
62
+ * @param sourcedId - The unique identifier of the resource
63
+ * @returns The requested resource
64
+ * @throws {NotFoundError} If the resource doesn't exist
65
+ */
66
+ get(sourcedId: string): Promise<T>;
67
+ /**
68
+ * Create a new resource.
69
+ *
70
+ * @param data - The resource data to create
71
+ * @returns Response containing the created resource's sourcedId
72
+ * @throws {ValidationError} If the data is invalid
73
+ */
74
+ create(data: I): Promise<CreateResponse>;
75
+ /**
76
+ * Update an existing resource (full replacement).
77
+ *
78
+ * @param sourcedId - The unique identifier of the resource to update
79
+ * @param data - The fields to update
80
+ * @throws {NotFoundError} If the resource doesn't exist
81
+ * @throws {ValidationError} If the data is invalid
82
+ */
83
+ update(sourcedId: string, data: Partial<I>): Promise<void>;
84
+ /**
85
+ * Delete a resource.
86
+ *
87
+ * @param sourcedId - The unique identifier of the resource to delete
88
+ * @throws {NotFoundError} If the resource doesn't exist
89
+ */
90
+ delete(sourcedId: string): Promise<void>;
91
+ /**
92
+ * The key used to unwrap list responses (e.g., "users", "classes").
93
+ * Override in subclasses.
94
+ */
95
+ protected abstract get unwrapKey(): string;
96
+ /**
97
+ * The key used to wrap request bodies (e.g., "user", "class").
98
+ * Override in subclasses.
99
+ */
100
+ protected abstract get wrapKey(): string;
101
+ /**
102
+ * Transform a response entity before returning it.
103
+ *
104
+ * Override in subclasses to normalize API responses (e.g., convert grades from strings to numbers).
105
+ * Default implementation returns the entity unchanged.
106
+ *
107
+ * @param entity - The raw entity from the API
108
+ * @returns The transformed entity
109
+ */
110
+ protected transform(entity: T): T;
111
+ /**
112
+ * Unwrap a single-item response.
113
+ *
114
+ * @param response - Raw API response object
115
+ * @returns The unwrapped resource
116
+ * @throws {Error} If expected key is missing from response
117
+ */
118
+ protected unwrapSingle(response: Record<string, T>): T;
119
+ /**
120
+ * Wrap data for POST/PUT requests.
121
+ *
122
+ * @param data - Resource data to wrap
123
+ * @returns Wrapped request body
124
+ */
125
+ protected wrapBody(data: I): Record<string, I>;
126
+ }
127
+ /**
128
+ * Base class for read-only resources (no create/update/delete).
129
+ *
130
+ * @template T - The resource type (must extend Base)
131
+ * @template F - The filter fields type for type-safe where clauses
132
+ */
133
+ export declare abstract class ReadOnlyResource<T extends Base, F = T> {
134
+ protected readonly transport: OneRosterTransportLike;
135
+ /** Full path for this resource (pathPrefix + suffix) */
136
+ protected readonly basePath: string;
137
+ /**
138
+ * @param transport - Transport instance for making requests
139
+ * @param resourceType - Type of resource (rostering or gradebook)
140
+ * @param suffix - Resource suffix (e.g., '/demographics')
141
+ */
142
+ constructor(transport: OneRosterTransportLike, resourceType: ResourceType, suffix: string);
143
+ /**
144
+ * List all resources, fetching all pages automatically.
145
+ *
146
+ * @param params - Optional filtering, sorting, and pagination parameters
147
+ * @returns Promise resolving to an array of all matching resources
148
+ */
149
+ list(params?: ListParams<F>): Promise<T[]>;
150
+ /**
151
+ * Stream resources with lazy pagination.
152
+ *
153
+ * Use this for large datasets where you want to process items
154
+ * one at a time without loading everything into memory.
155
+ *
156
+ * @param params - Optional filtering, sorting, and pagination parameters
157
+ * @returns Async iterable paginator for streaming results
158
+ */
159
+ stream(params?: ListParams<F>): Paginator<T, F>;
160
+ /**
161
+ * Get a single resource by sourcedId.
162
+ *
163
+ * @param sourcedId - The unique identifier of the resource
164
+ * @returns The requested resource
165
+ * @throws {NotFoundError} If the resource doesn't exist
166
+ */
167
+ get(sourcedId: string): Promise<T>;
168
+ /**
169
+ * Transform a response entity before returning it.
170
+ *
171
+ * Override in subclasses to normalize API responses.
172
+ * Default implementation returns the entity unchanged.
173
+ *
174
+ * @param entity - The raw entity from the API
175
+ * @returns The transformed entity
176
+ */
177
+ protected transform(entity: T): T;
178
+ protected abstract get unwrapKey(): string;
179
+ protected abstract get wrapKey(): string;
180
+ }
181
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/resources/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Categories Resource
3
+ *
4
+ * Manage gradebook categories (e.g., "Homework", "Tests", "Projects").
5
+ */
6
+ import { BaseResource } from '../base';
7
+ import type { Category, CategoryCreateInput, CategoryFilterFields, OneRosterTransportLike } from '../../types';
8
+ /**
9
+ * Resource for managing gradebook categories.
10
+ */
11
+ export declare class CategoriesResource extends BaseResource<Category, CategoryFilterFields, CategoryCreateInput> {
12
+ constructor(transport: OneRosterTransportLike);
13
+ protected get unwrapKey(): string;
14
+ protected get wrapKey(): string;
15
+ }
16
+ //# sourceMappingURL=categories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"categories.d.ts","sourceRoot":"","sources":["../../../src/resources/gradebook/categories.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EACX,QAAQ,EACR,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,MAAM,aAAa,CAAA;AAEpB;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,YAAY,CACnD,QAAQ,EACR,oBAAoB,EACpB,mBAAmB,CACnB;IACA,YAAY,SAAS,EAAE,sBAAsB,EAE5C;IAED,SAAS,KAAK,SAAS,IAAI,MAAM,CAEhC;IAED,SAAS,KAAK,OAAO,IAAI,MAAM,CAE9B;CACD"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Gradebook Resources
3
+ */
4
+ export { createLineItemsResource, ScopedLineItemResource } from './line-items';
5
+ export { ResultsResource } from './results';
6
+ export { CategoriesResource } from './categories';
7
+ export { ScoreScalesResource } from './score-scales';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/resources/gradebook/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Line Items Resource
3
+ *
4
+ * Manage gradebook line items (assignments, assessments, etc.).
5
+ */
6
+ import type { CreateResponse, LineItem, LineItemsCallable, OneRosterTransportLike, Result } from '../../types';
7
+ /**
8
+ * Scoped resource for operations on a specific line item.
9
+ *
10
+ * Access via `client.lineItems(lineItemId)`.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const lineItem = await client.lineItems(lineItemId).get()
15
+ *
16
+ * // To get results for a line item, use the class-scoped path:
17
+ * const results = await client.classes(classId).lineItem(lineItemId).results()
18
+ * ```
19
+ */
20
+ export declare class ScopedLineItemResource {
21
+ private readonly transport;
22
+ private readonly basePath;
23
+ constructor(transport: OneRosterTransportLike, lineItemId: string);
24
+ /**
25
+ * Get the line item details.
26
+ * @returns The line item details
27
+ */
28
+ get(): Promise<LineItem>;
29
+ /**
30
+ * Bulk create results for this line item.
31
+ *
32
+ * Use this to submit multiple student grades at once.
33
+ *
34
+ * @param results - Array of results to create
35
+ * @returns Create response with sourcedIdPairs
36
+ * @example
37
+ * ```typescript
38
+ * await client.lineItems(lineItemId).createResults([
39
+ * { student: { sourcedId: 'student1' }, score: 85 },
40
+ * { student: { sourcedId: 'student2' }, score: 92 },
41
+ * ])
42
+ * ```
43
+ */
44
+ createResults(results: Partial<Result>[]): Promise<CreateResponse>;
45
+ }
46
+ /**
47
+ * Create a callable line items resource.
48
+ * @param transport - OneRoster transport instance
49
+ * @returns Callable resource for line items
50
+ */
51
+ export declare function createLineItemsResource(transport: OneRosterTransportLike): LineItemsCallable;
52
+ //# sourceMappingURL=line-items.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-items.d.ts","sourceRoot":"","sources":["../../../src/resources/gradebook/line-items.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACX,cAAc,EACd,QAAQ,EAGR,iBAAiB,EACjB,sBAAsB,EACtB,MAAM,EACN,MAAM,aAAa,CAAA;AAMpB;;;;;;;;;;;;GAYG;AACH,qBAAa,sBAAsB;IAIjC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAH3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IAEjC,YACkB,SAAS,EAAE,sBAAsB,EAClD,UAAU,EAAE,MAAM,EAGlB;IAED;;;OAGG;IACG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAG7B;IAED;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAKjE;CACD;AA6BD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,sBAAsB,GAAG,iBAAiB,CAc5F"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Results Resource
3
+ *
4
+ * Manage student grades and scores.
5
+ */
6
+ import { BaseResource } from '../base';
7
+ import type { CreateResponse, OneRosterTransportLike, Result, ResultCreateInput, ResultFilterFields } from '../../types';
8
+ /**
9
+ * Resource for managing gradebook results (grades).
10
+ */
11
+ export declare class ResultsResource extends BaseResource<Result, ResultFilterFields> {
12
+ constructor(transport: OneRosterTransportLike);
13
+ /**
14
+ * Create a new result (grade).
15
+ *
16
+ * @param data - Result data including required lineItem, student, scoreStatus, and scoreDate
17
+ * @returns Response containing the created result's sourcedId
18
+ * @throws {ValidationError} If required fields are missing
19
+ */
20
+ create(data: ResultCreateInput): Promise<CreateResponse>;
21
+ protected get unwrapKey(): string;
22
+ protected get wrapKey(): string;
23
+ }
24
+ //# sourceMappingURL=results.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../../src/resources/gradebook/results.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EACX,cAAc,EACd,sBAAsB,EACtB,MAAM,EACN,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,aAAa,CAAA;AAEpB;;GAEG;AACH,qBAAa,eAAgB,SAAQ,YAAY,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAC5E,YAAY,SAAS,EAAE,sBAAsB,EAE5C;IAED;;;;;;OAMG;IACM,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CAEhE;IAED,SAAS,KAAK,SAAS,IAAI,MAAM,CAEhC;IAED,SAAS,KAAK,OAAO,IAAI,MAAM,CAE9B;CACD"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Score Scales Resource
3
+ *
4
+ * Manage grading rubrics and score definitions.
5
+ */
6
+ import { BaseResource } from '../base';
7
+ import type { OneRosterTransportLike, ScoreScale, ScoreScaleFilterFields } from '../../types';
8
+ /**
9
+ * Resource for managing score scales (grading rubrics).
10
+ */
11
+ export declare class ScoreScalesResource extends BaseResource<ScoreScale, ScoreScaleFilterFields> {
12
+ constructor(transport: OneRosterTransportLike);
13
+ protected get unwrapKey(): string;
14
+ protected get wrapKey(): string;
15
+ }
16
+ //# sourceMappingURL=score-scales.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score-scales.d.ts","sourceRoot":"","sources":["../../../src/resources/gradebook/score-scales.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAE7F;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,YAAY,CAAC,UAAU,EAAE,sBAAsB,CAAC;IACxF,YAAY,SAAS,EAAE,sBAAsB,EAE5C;IAED,SAAS,KAAK,SAAS,IAAI,MAAM,CAEhC;IAED,SAAS,KAAK,OAAO,IAAI,MAAM,CAE9B;CACD"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Resources
3
+ *
4
+ * Re-exports all resource classes.
5
+ */
6
+ export * from './base';
7
+ export * from './rostering';
8
+ export * from './gradebook';
9
+ export * from './assessment';
10
+ export * from './resources';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,QAAQ,CAAA;AACtB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Resources Resources
3
+ */
4
+ export { createResourcesResource, ScopedResourceResource } from './resources';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/resources/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Resources Resource
3
+ *
4
+ * Manage digital learning resources.
5
+ */
6
+ import type { OneRosterTransportLike, Resource, ResourcesCallable } from '../../types';
7
+ /**
8
+ * Scoped resource for operations on a specific resource.
9
+ *
10
+ * Access via `client.resources(resourceId)`.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const resource = await client.resources(resourceId).get()
15
+ * ```
16
+ */
17
+ export declare class ScopedResourceResource {
18
+ private readonly transport;
19
+ private readonly basePath;
20
+ private readonly resourceId;
21
+ constructor(transport: OneRosterTransportLike, resourceId: string);
22
+ /**
23
+ * Get the resource details.
24
+ * @returns The resource object
25
+ */
26
+ get(): Promise<Resource>;
27
+ /**
28
+ * Export this resource.
29
+ * @returns Common Cartridge zip file as an ArrayBuffer
30
+ */
31
+ export(): Promise<ArrayBuffer>;
32
+ }
33
+ /**
34
+ * Create a callable resources resource.
35
+ * @param transport - OneRoster transport instance
36
+ * @returns Callable resource for resources
37
+ */
38
+ export declare function createResourcesResource(transport: OneRosterTransportLike): ResourcesCallable;
39
+ //# sourceMappingURL=resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/resources/resources/resources.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACX,sBAAsB,EACtB,QAAQ,EAER,iBAAiB,EACjB,MAAM,aAAa,CAAA;AAMpB;;;;;;;;;GASG;AACH,qBAAa,sBAAsB;IAKjC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJ3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IAEnC,YACkB,SAAS,EAAE,sBAAsB,EAClD,UAAU,EAAE,MAAM,EAIlB;IAED;;;OAGG;IACG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAG7B;IAED;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,CAUnC;CACD;AA0CD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,sBAAsB,GAAG,iBAAiB,CAe5F"}