@timeback/oneroster 0.1.2 → 0.1.3

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 (28) hide show
  1. package/dist/errors.js +12 -2
  2. package/dist/index.js +744 -253
  3. package/dist/resources/assessment/line-items.d.ts.map +1 -1
  4. package/dist/resources/assessment/results.d.ts +5 -1
  5. package/dist/resources/assessment/results.d.ts.map +1 -1
  6. package/dist/resources/gradebook/categories.d.ts +1 -0
  7. package/dist/resources/gradebook/categories.d.ts.map +1 -1
  8. package/dist/resources/gradebook/line-items.d.ts.map +1 -1
  9. package/dist/resources/gradebook/results.d.ts +2 -1
  10. package/dist/resources/gradebook/results.d.ts.map +1 -1
  11. package/dist/resources/gradebook/score-scales.d.ts +2 -1
  12. package/dist/resources/gradebook/score-scales.d.ts.map +1 -1
  13. package/dist/resources/resources/resources.d.ts.map +1 -1
  14. package/dist/resources/resources/resources.type-test.d.ts +2 -0
  15. package/dist/resources/resources/resources.type-test.d.ts.map +1 -0
  16. package/dist/resources/rostering/academic-sessions.d.ts +1 -1
  17. package/dist/resources/rostering/academic-sessions.d.ts.map +1 -1
  18. package/dist/resources/rostering/classes.d.ts +1 -1
  19. package/dist/resources/rostering/classes.d.ts.map +1 -1
  20. package/dist/resources/rostering/courses.d.ts.map +1 -1
  21. package/dist/resources/rostering/enrollments.d.ts +3 -1
  22. package/dist/resources/rostering/enrollments.d.ts.map +1 -1
  23. package/dist/resources/rostering/orgs.d.ts +1 -1
  24. package/dist/resources/rostering/orgs.d.ts.map +1 -1
  25. package/dist/resources/rostering/schools.d.ts.map +1 -1
  26. package/dist/types/callable.d.ts +4 -6
  27. package/dist/types/callable.d.ts.map +1 -1
  28. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -487,6 +487,9 @@ var BEYONDAI_PATHS = {
487
487
  },
488
488
  edubridge: {
489
489
  base: "/edubridge"
490
+ },
491
+ powerpath: {
492
+ base: "/powerpath"
490
493
  }
491
494
  };
492
495
  var LEARNWITHAI_PATHS = {
@@ -502,7 +505,8 @@ var LEARNWITHAI_PATHS = {
502
505
  gradebook: "/gradebook/1.0",
503
506
  resources: "/resources/1.0"
504
507
  },
505
- edubridge: null
508
+ edubridge: null,
509
+ powerpath: null
506
510
  };
507
511
  var PLATFORM_PATHS = {
508
512
  BEYOND_AI: BEYONDAI_PATHS,
@@ -524,7 +528,8 @@ function resolvePathProfiles(pathProfile, customPaths) {
524
528
  return {
525
529
  caliper: customPaths?.caliper ?? basePaths.caliper,
526
530
  oneroster: customPaths?.oneroster ?? basePaths.oneroster,
527
- edubridge: customPaths?.edubridge ?? basePaths.edubridge
531
+ edubridge: customPaths?.edubridge ?? basePaths.edubridge,
532
+ powerpath: customPaths?.powerpath ?? basePaths.powerpath
528
533
  };
529
534
  }
530
535
 
@@ -560,6 +565,10 @@ class TimebackProvider {
560
565
  baseUrl: platformEndpoints.api[env],
561
566
  authUrl: this.authUrl
562
567
  },
568
+ powerpath: {
569
+ baseUrl: platformEndpoints.api[env],
570
+ authUrl: this.authUrl
571
+ },
563
572
  caliper: {
564
573
  baseUrl: platformEndpoints.caliper[env],
565
574
  authUrl: this.authUrl
@@ -576,6 +585,7 @@ class TimebackProvider {
576
585
  this.endpoints = {
577
586
  oneroster: { baseUrl: config.baseUrl, authUrl: this.authUrl },
578
587
  edubridge: { baseUrl: config.baseUrl, authUrl: this.authUrl },
588
+ powerpath: { baseUrl: config.baseUrl, authUrl: this.authUrl },
579
589
  caliper: { baseUrl: config.baseUrl, authUrl: this.authUrl },
580
590
  qti: { baseUrl: config.baseUrl, authUrl: this.authUrl }
581
591
  };
@@ -1534,236 +1544,7 @@ class Transport extends BaseTransport {
1534
1544
  return parseHeaderPagination(response, data);
1535
1545
  }
1536
1546
  }
1537
- // src/lib/validation.ts
1538
- function validateListParams(params) {
1539
- if (!params)
1540
- return;
1541
- validateOffsetListParams(params);
1542
- const issues = [];
1543
- if (params.fields !== undefined) {
1544
- if (Array.isArray(params.fields)) {
1545
- for (let i = 0;i < params.fields.length; i++) {
1546
- const field = params.fields[i];
1547
- if (typeof field !== "string" || field.trim() === "") {
1548
- issues.push({
1549
- path: `fields[${i}]`,
1550
- message: "Must be a non-empty string"
1551
- });
1552
- }
1553
- }
1554
- } else {
1555
- issues.push({
1556
- path: "fields",
1557
- message: "Must be an array of field names"
1558
- });
1559
- }
1560
- }
1561
- if (issues.length > 0) {
1562
- throw createInputValidationError("Invalid list parameters", issues);
1563
- }
1564
- }
1565
-
1566
- // src/lib/pagination.ts
1567
- class Paginator2 extends Paginator {
1568
- constructor(transport, path, params = {}, unwrapKey, transform) {
1569
- validateListParams(params);
1570
- const { max, ...requestParams } = params;
1571
- super({
1572
- fetcher: (p, opts) => transport.requestPaginated(p, opts),
1573
- path,
1574
- params: requestParams,
1575
- max,
1576
- unwrapKey,
1577
- logger: log2,
1578
- transform
1579
- });
1580
- }
1581
- }
1582
- // src/resources/base.ts
1583
- class BaseResource {
1584
- transport;
1585
- basePath;
1586
- constructor(transport, resourceType, suffix) {
1587
- this.transport = transport;
1588
- const prefix = transport.paths[resourceType];
1589
- this.basePath = `${prefix}${suffix}`;
1590
- }
1591
- list(params) {
1592
- return this.stream(params).firstPage();
1593
- }
1594
- listAll(params) {
1595
- return this.stream(params).toArray();
1596
- }
1597
- async first(params) {
1598
- const result = await this.list({ ...params, limit: 1 });
1599
- return result.data[0];
1600
- }
1601
- stream(params) {
1602
- return new Paginator2(this.transport, this.basePath, params, this.unwrapKey, this.transform.bind(this));
1603
- }
1604
- async get(sourcedId) {
1605
- validateSourcedId(sourcedId, `get ${this.resourceName}`);
1606
- const response = await this.transport.request(`${this.basePath}/${sourcedId}`);
1607
- return this.unwrapSingle(response);
1608
- }
1609
- create(data) {
1610
- const schema = this.createSchema;
1611
- if (schema) {
1612
- validateWithSchema(schema, data, this.resourceName);
1613
- }
1614
- const body = this.wrapBody(data);
1615
- return this.transport.request(this.basePath, {
1616
- method: "POST",
1617
- body
1618
- });
1619
- }
1620
- async update(sourcedId, data) {
1621
- validateSourcedId(sourcedId, `update ${this.resourceName}`);
1622
- const schema = this.updateSchema;
1623
- if (schema) {
1624
- validateWithSchema(schema, data, `update ${this.resourceName}`);
1625
- }
1626
- const body = this.wrapBody(data);
1627
- await this.transport.request(`${this.basePath}/${sourcedId}`, {
1628
- method: "PUT",
1629
- body
1630
- });
1631
- }
1632
- async delete(sourcedId) {
1633
- validateSourcedId(sourcedId, `delete ${this.resourceName}`);
1634
- await this.transport.request(`${this.basePath}/${sourcedId}`, {
1635
- method: "DELETE"
1636
- });
1637
- }
1638
- transform(entity) {
1639
- return entity;
1640
- }
1641
- get createSchema() {
1642
- return;
1643
- }
1644
- get updateSchema() {
1645
- return;
1646
- }
1647
- get patchSchema() {
1648
- return;
1649
- }
1650
- get resourceName() {
1651
- return this.wrapKey;
1652
- }
1653
- unwrapSingle(response) {
1654
- const singularKey = this.wrapKey;
1655
- const data = response[singularKey];
1656
- if (!data) {
1657
- throw new Error(`Expected "${singularKey}" in response`);
1658
- }
1659
- return this.transform(data);
1660
- }
1661
- wrapBody(data) {
1662
- return { [this.wrapKey]: data };
1663
- }
1664
- }
1665
-
1666
- class ReadOnlyResource {
1667
- transport;
1668
- basePath;
1669
- constructor(transport, resourceType, suffix) {
1670
- this.transport = transport;
1671
- const prefix = transport.paths[resourceType];
1672
- this.basePath = `${prefix}${suffix}`;
1673
- }
1674
- list(params) {
1675
- return this.stream(params).firstPage();
1676
- }
1677
- listAll(params) {
1678
- return this.stream(params).toArray();
1679
- }
1680
- async first(params) {
1681
- const result = await this.list({ ...params, limit: 1 });
1682
- return result.data[0];
1683
- }
1684
- stream(params) {
1685
- return new Paginator2(this.transport, this.basePath, params, this.unwrapKey, this.transform.bind(this));
1686
- }
1687
- async get(sourcedId) {
1688
- validateSourcedId(sourcedId, `get ${this.wrapKey}`);
1689
- const response = await this.transport.request(`${this.basePath}/${sourcedId}`);
1690
- const data = response[this.wrapKey];
1691
- if (!data) {
1692
- throw new Error(`Expected "${this.wrapKey}" in response`);
1693
- }
1694
- return this.transform(data);
1695
- }
1696
- transform(entity) {
1697
- return entity;
1698
- }
1699
- }
1700
-
1701
- // src/resources/assessment/line-items.ts
1702
- class ScopedAssessmentLineItemResource {
1703
- transport;
1704
- basePath;
1705
- constructor(transport, lineItemId) {
1706
- this.transport = transport;
1707
- validateSourcedId(lineItemId, "assessment line item");
1708
- this.basePath = `${transport.paths.gradebook}/assessmentLineItems/${lineItemId}`;
1709
- }
1710
- async get() {
1711
- const response = await this.transport.request(this.basePath);
1712
- return response.assessmentLineItem;
1713
- }
1714
- }
1715
1547
 
1716
- class AssessmentLineItemsResourceImpl extends BaseResource {
1717
- constructor(transport) {
1718
- super(transport, "gradebook", "/assessmentLineItems");
1719
- }
1720
- async patch(sourcedId, data) {
1721
- validateSourcedId(sourcedId, "patch assessment line item");
1722
- await this.transport.request(`${this.basePath}/${sourcedId}`, {
1723
- method: "PATCH",
1724
- body: { assessmentLineItem: data }
1725
- });
1726
- }
1727
- get unwrapKey() {
1728
- return "assessmentLineItems";
1729
- }
1730
- get wrapKey() {
1731
- return "assessmentLineItem";
1732
- }
1733
- }
1734
- function createAssessmentLineItemsResource(transport) {
1735
- const impl = new AssessmentLineItemsResourceImpl(transport);
1736
- const callable = (id) => new ScopedAssessmentLineItemResource(transport, id);
1737
- callable.list = impl.list.bind(impl);
1738
- callable.listAll = impl.listAll.bind(impl);
1739
- callable.first = impl.first.bind(impl);
1740
- callable.stream = impl.stream.bind(impl);
1741
- callable.get = impl.get.bind(impl);
1742
- callable.create = impl.create.bind(impl);
1743
- callable.update = impl.update.bind(impl);
1744
- callable.patch = impl.patch.bind(impl);
1745
- callable.delete = impl.delete.bind(impl);
1746
- return callable;
1747
- }
1748
- // src/resources/assessment/results.ts
1749
- class AssessmentResultsResource extends BaseResource {
1750
- constructor(transport) {
1751
- super(transport, "gradebook", "/assessmentResults");
1752
- }
1753
- async patch(sourcedId, data) {
1754
- validateSourcedId(sourcedId, "patch assessment result");
1755
- await this.transport.request(`${this.basePath}/${sourcedId}`, {
1756
- method: "PATCH",
1757
- body: { assessmentResult: data }
1758
- });
1759
- }
1760
- get unwrapKey() {
1761
- return "assessmentResults";
1762
- }
1763
- get wrapKey() {
1764
- return "assessmentResult";
1765
- }
1766
- }
1767
1548
  // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/external.js
1768
1549
  var exports_external = {};
1769
1550
  __export(exports_external, {
@@ -15355,6 +15136,47 @@ var OneRosterUserRole = exports_external.enum([
15355
15136
  "teacher"
15356
15137
  ]);
15357
15138
  var EnrollmentRole = exports_external.enum(["administrator", "proctor", "student", "teacher"]);
15139
+ var ResourceType = exports_external.enum([
15140
+ "qti",
15141
+ "text",
15142
+ "audio",
15143
+ "video",
15144
+ "interactive",
15145
+ "visual",
15146
+ "course-material",
15147
+ "assessment-bank"
15148
+ ]);
15149
+ var QtiSubType = exports_external.enum(["qti-test", "qti-question", "qti-stimulus", "qti-test-bank"]);
15150
+ var CourseMaterialSubType = exports_external.enum(["unit", "course", "resource-collection"]);
15151
+ var QuestionType = exports_external.enum([
15152
+ "choice",
15153
+ "order",
15154
+ "associate",
15155
+ "match",
15156
+ "hotspot",
15157
+ "hottext",
15158
+ "select-point",
15159
+ "graphic-order",
15160
+ "graphic-associate",
15161
+ "graphic-gap-match",
15162
+ "text-entry",
15163
+ "extended-text",
15164
+ "inline-choice",
15165
+ "upload",
15166
+ "slider",
15167
+ "drawing",
15168
+ "media",
15169
+ "custom"
15170
+ ]);
15171
+ var Difficulty = exports_external.enum(["easy", "medium", "hard"]);
15172
+ var LearningObjectiveSetSchema = exports_external.array(exports_external.object({
15173
+ source: exports_external.string(),
15174
+ learningObjectiveIds: exports_external.array(exports_external.string())
15175
+ }));
15176
+ var FastFailConfigSchema = exports_external.object({
15177
+ consecutive_failures: exports_external.number().int().min(1).optional(),
15178
+ stagnation_limit: exports_external.number().int().min(1).optional()
15179
+ }).optional();
15358
15180
  var LessonType = exports_external.enum(["powerpath-100", "quiz", "test-out", "placement", "unit-test", "alpha-read-article"]).nullable();
15359
15181
  var IMSErrorResponse = exports_external.object({
15360
15182
  imsx_codeMajor: exports_external.enum(["failure", "success"]),
@@ -15431,7 +15253,11 @@ var ActivityCompletedInput = exports_external.object({
15431
15253
  eventTime: IsoDateTimeString.optional(),
15432
15254
  metricsId: exports_external.string().optional(),
15433
15255
  id: exports_external.string().optional(),
15434
- extensions: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15256
+ extensions: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
15257
+ attempt: exports_external.number().int().min(1).optional(),
15258
+ generatedExtensions: exports_external.object({
15259
+ pctCompleteApp: exports_external.number().optional()
15260
+ }).loose().optional()
15435
15261
  }).strict();
15436
15262
  var TimeSpentInput = exports_external.object({
15437
15263
  actor: TimebackUser,
@@ -15547,16 +15373,59 @@ var CourseDefaults = exports_external.object({
15547
15373
  level: exports_external.string().optional(),
15548
15374
  metadata: CourseMetadata.optional()
15549
15375
  });
15376
+ var CourseEnvOverrides = exports_external.object({
15377
+ level: exports_external.string().optional(),
15378
+ sensor: exports_external.string().url().optional(),
15379
+ launchUrl: exports_external.string().url().optional(),
15380
+ metadata: CourseMetadata.optional()
15381
+ });
15382
+ var CourseOverrides = exports_external.object({
15383
+ staging: CourseEnvOverrides.optional(),
15384
+ production: CourseEnvOverrides.optional()
15385
+ });
15550
15386
  var CourseConfig = CourseDefaults.extend({
15551
15387
  subject: TimebackSubject,
15552
- grade: TimebackGrade,
15553
- ids: CourseIds.nullable().optional()
15388
+ grade: TimebackGrade.optional(),
15389
+ ids: CourseIds.nullable().optional(),
15390
+ sensor: exports_external.string().url().optional(),
15391
+ launchUrl: exports_external.string().url().optional(),
15392
+ overrides: CourseOverrides.optional()
15554
15393
  });
15555
15394
  var TimebackConfig = exports_external.object({
15556
15395
  name: exports_external.string().min(1, "App name is required"),
15557
15396
  defaults: CourseDefaults.optional(),
15558
15397
  courses: exports_external.array(CourseConfig).min(1, "At least one course is required"),
15559
- sensors: exports_external.array(exports_external.string().url()).optional()
15398
+ sensor: exports_external.string().url().optional(),
15399
+ launchUrl: exports_external.string().url().optional()
15400
+ }).refine((config2) => {
15401
+ return config2.courses.every((c) => c.grade !== undefined || c.courseCode !== undefined);
15402
+ }, {
15403
+ message: "Each course must have either a grade or a courseCode",
15404
+ path: ["courses"]
15405
+ }).refine((config2) => {
15406
+ const withGrade = config2.courses.filter((c) => c.grade !== undefined);
15407
+ const keys = withGrade.map((c) => `${c.subject}:${c.grade}`);
15408
+ return new Set(keys).size === keys.length;
15409
+ }, {
15410
+ message: "Duplicate (subject, grade) pair found; each must be unique",
15411
+ path: ["courses"]
15412
+ }).refine((config2) => {
15413
+ const withCode = config2.courses.filter((c) => c.courseCode !== undefined);
15414
+ const codes = withCode.map((c) => c.courseCode);
15415
+ return new Set(codes).size === codes.length;
15416
+ }, {
15417
+ message: "Duplicate courseCode found; each must be unique",
15418
+ path: ["courses"]
15419
+ }).refine((config2) => {
15420
+ return config2.courses.every((c) => c.sensor !== undefined || config2.sensor !== undefined);
15421
+ }, {
15422
+ message: "Each course must have an effective sensor; set a top-level `sensor` or per-course `sensor`",
15423
+ path: ["courses"]
15424
+ }).refine((config2) => {
15425
+ return config2.courses.every((c) => c.launchUrl !== undefined || config2.launchUrl !== undefined);
15426
+ }, {
15427
+ message: "Each course must have an effective launchUrl; set a top-level `launchUrl` or per-course `launchUrl`",
15428
+ path: ["courses"]
15560
15429
  });
15561
15430
  // ../../types/src/zod/edubridge.ts
15562
15431
  var EdubridgeDateString = exports_external.union([IsoDateString, IsoDateTimeString]);
@@ -15807,20 +15676,45 @@ var OneRosterScoreScaleCreateInput = exports_external.object({
15807
15676
  }).strict();
15808
15677
  var OneRosterAssessmentLineItemCreateInput = exports_external.object({
15809
15678
  sourcedId: NonEmptyString2.optional(),
15679
+ status: Status.optional(),
15680
+ dateLastModified: IsoDateTimeString.optional(),
15810
15681
  title: NonEmptyString2.describe("title must be a non-empty string"),
15811
- class: Ref,
15812
- school: Ref,
15813
- category: Ref,
15814
- assignDate: OneRosterDateString,
15815
- dueDate: OneRosterDateString,
15816
- status: Status,
15682
+ description: exports_external.string().nullable().optional(),
15683
+ class: Ref.nullable().optional(),
15684
+ parentAssessmentLineItem: Ref.nullable().optional(),
15685
+ scoreScale: Ref.nullable().optional(),
15686
+ resultValueMin: exports_external.number().nullable().optional(),
15687
+ resultValueMax: exports_external.number().nullable().optional(),
15688
+ component: Ref.nullable().optional(),
15689
+ componentResource: Ref.nullable().optional(),
15690
+ learningObjectiveSet: exports_external.array(exports_external.object({
15691
+ source: exports_external.string(),
15692
+ learningObjectiveIds: exports_external.array(exports_external.string())
15693
+ })).optional().nullable(),
15694
+ course: Ref.nullable().optional(),
15817
15695
  metadata: Metadata
15818
15696
  }).strict();
15697
+ var LearningObjectiveResult = exports_external.object({
15698
+ learningObjectiveId: exports_external.string(),
15699
+ score: exports_external.number().optional(),
15700
+ textScore: exports_external.string().optional()
15701
+ });
15702
+ var LearningObjectiveScoreSetSchema = exports_external.array(exports_external.object({
15703
+ source: exports_external.string(),
15704
+ learningObjectiveResults: exports_external.array(LearningObjectiveResult)
15705
+ }));
15819
15706
  var OneRosterAssessmentResultCreateInput = exports_external.object({
15820
15707
  sourcedId: NonEmptyString2.optional(),
15821
- lineItem: Ref,
15708
+ status: Status.optional(),
15709
+ dateLastModified: IsoDateTimeString.optional(),
15710
+ metadata: Metadata,
15711
+ assessmentLineItem: Ref,
15822
15712
  student: Ref,
15823
- scoreDate: OneRosterDateString,
15713
+ score: exports_external.number().nullable().optional(),
15714
+ textScore: exports_external.string().nullable().optional(),
15715
+ scoreDate: exports_external.string().datetime(),
15716
+ scoreScale: Ref.nullable().optional(),
15717
+ scorePercentile: exports_external.number().nullable().optional(),
15824
15718
  scoreStatus: exports_external.enum([
15825
15719
  "exempt",
15826
15720
  "fully graded",
@@ -15828,9 +15722,12 @@ var OneRosterAssessmentResultCreateInput = exports_external.object({
15828
15722
  "partially graded",
15829
15723
  "submitted"
15830
15724
  ]),
15831
- score: exports_external.string().optional(),
15832
- status: Status,
15833
- metadata: Metadata
15725
+ comment: exports_external.string().nullable().optional(),
15726
+ learningObjectiveSet: LearningObjectiveScoreSetSchema.nullable().optional(),
15727
+ inProgress: exports_external.string().nullable().optional(),
15728
+ incomplete: exports_external.string().nullable().optional(),
15729
+ late: exports_external.string().nullable().optional(),
15730
+ missing: exports_external.string().nullable().optional()
15834
15731
  }).strict();
15835
15732
  var OneRosterOrgCreateInput = exports_external.object({
15836
15733
  sourcedId: NonEmptyString2.optional(),
@@ -15898,6 +15795,75 @@ var OneRosterCredentialInput = exports_external.object({
15898
15795
  var OneRosterDemographicsCreateInput = exports_external.object({
15899
15796
  sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string")
15900
15797
  }).loose();
15798
+ var CommonResourceMetadataSchema = exports_external.object({
15799
+ type: ResourceType,
15800
+ subject: TimebackSubject.nullish(),
15801
+ grades: exports_external.array(TimebackGrade).nullish(),
15802
+ language: exports_external.string().nullish(),
15803
+ xp: exports_external.number().nullish(),
15804
+ url: exports_external.url().nullish(),
15805
+ keywords: exports_external.array(exports_external.string()).nullish(),
15806
+ learningObjectiveSet: LearningObjectiveSetSchema.nullish(),
15807
+ lessonType: exports_external.string().nullish()
15808
+ }).passthrough();
15809
+ var QtiMetadataSchema = CommonResourceMetadataSchema.extend({
15810
+ type: exports_external.literal("qti"),
15811
+ subType: QtiSubType,
15812
+ questionType: QuestionType.optional(),
15813
+ difficulty: Difficulty.optional()
15814
+ });
15815
+ var TextMetadataSchema = CommonResourceMetadataSchema.extend({
15816
+ type: exports_external.literal("text"),
15817
+ format: exports_external.string(),
15818
+ author: exports_external.string().optional(),
15819
+ pageCount: exports_external.number().optional()
15820
+ });
15821
+ var AudioMetadataSchema = CommonResourceMetadataSchema.extend({
15822
+ type: exports_external.literal("audio"),
15823
+ duration: exports_external.string().regex(/^\d{2}:\d{2}:\d{2}(\.\d{2})?$/).optional(),
15824
+ format: exports_external.string(),
15825
+ speaker: exports_external.string().optional()
15826
+ });
15827
+ var VideoMetadataSchema = CommonResourceMetadataSchema.extend({
15828
+ type: exports_external.literal("video"),
15829
+ duration: exports_external.string().regex(/^\d{2}:\d{2}:\d{2}(\.\d{2})?$/).optional(),
15830
+ captionsAvailable: exports_external.boolean().optional(),
15831
+ format: exports_external.string()
15832
+ });
15833
+ var InteractiveMetadataSchema = CommonResourceMetadataSchema.extend({
15834
+ type: exports_external.literal("interactive"),
15835
+ launchUrl: exports_external.url().optional(),
15836
+ toolProvider: exports_external.string().optional(),
15837
+ instructionalMethod: exports_external.string().optional(),
15838
+ courseIdOnFail: exports_external.string().nullable().optional(),
15839
+ fail_fast: FastFailConfigSchema
15840
+ });
15841
+ var VisualMetadataSchema = CommonResourceMetadataSchema.extend({
15842
+ type: exports_external.literal("visual"),
15843
+ format: exports_external.string(),
15844
+ resolution: exports_external.string().optional()
15845
+ });
15846
+ var CourseMaterialMetadataSchema = CommonResourceMetadataSchema.extend({
15847
+ type: exports_external.literal("course-material"),
15848
+ subType: CourseMaterialSubType,
15849
+ author: exports_external.string().optional(),
15850
+ format: exports_external.string(),
15851
+ instructionalMethod: exports_external.string().optional()
15852
+ });
15853
+ var AssessmentBankMetadataSchema = CommonResourceMetadataSchema.extend({
15854
+ type: exports_external.literal("assessment-bank"),
15855
+ resources: exports_external.array(exports_external.string())
15856
+ });
15857
+ var ResourceMetadataSchema = exports_external.discriminatedUnion("type", [
15858
+ QtiMetadataSchema,
15859
+ TextMetadataSchema,
15860
+ AudioMetadataSchema,
15861
+ VideoMetadataSchema,
15862
+ InteractiveMetadataSchema,
15863
+ VisualMetadataSchema,
15864
+ CourseMaterialMetadataSchema,
15865
+ AssessmentBankMetadataSchema
15866
+ ]);
15901
15867
  var OneRosterResourceCreateInput = exports_external.object({
15902
15868
  sourcedId: NonEmptyString2.optional(),
15903
15869
  title: NonEmptyString2.describe("title must be a non-empty string"),
@@ -15907,7 +15873,7 @@ var OneRosterResourceCreateInput = exports_external.object({
15907
15873
  vendorId: exports_external.string().optional(),
15908
15874
  applicationId: exports_external.string().optional(),
15909
15875
  status: Status.optional(),
15910
- metadata: Metadata
15876
+ metadata: ResourceMetadataSchema.nullable().optional()
15911
15877
  }).strict();
15912
15878
  var CourseStructureItem = exports_external.object({
15913
15879
  url: NonEmptyString2.describe("courseStructure.url must be a non-empty string"),
@@ -15932,6 +15898,268 @@ var OneRosterBulkResultItem = exports_external.object({
15932
15898
  student: Ref
15933
15899
  }).loose();
15934
15900
  var OneRosterBulkResultsInput = exports_external.array(OneRosterBulkResultItem).min(1, "results must have at least one item");
15901
+ // ../../types/src/zod/powerpath.ts
15902
+ var NonEmptyString3 = exports_external.string().trim().min(1);
15903
+ var ToolProvider = exports_external.enum(["edulastic", "mastery-track"]);
15904
+ var LessonTypeRequired = exports_external.enum([
15905
+ "powerpath-100",
15906
+ "quiz",
15907
+ "test-out",
15908
+ "placement",
15909
+ "unit-test",
15910
+ "alpha-read-article"
15911
+ ]);
15912
+ var GradeArray = exports_external.array(TimebackGrade);
15913
+ var ResourceMetadata = exports_external.record(exports_external.string(), exports_external.unknown()).optional();
15914
+ var ExternalTestBase = exports_external.object({
15915
+ courseId: NonEmptyString3,
15916
+ lessonTitle: NonEmptyString3.optional(),
15917
+ launchUrl: exports_external.url().optional(),
15918
+ toolProvider: ToolProvider,
15919
+ unitTitle: NonEmptyString3.optional(),
15920
+ courseComponentSourcedId: NonEmptyString3.optional(),
15921
+ vendorId: NonEmptyString3.optional(),
15922
+ description: NonEmptyString3.optional(),
15923
+ resourceMetadata: ResourceMetadata.nullable().optional(),
15924
+ grades: GradeArray
15925
+ });
15926
+ var ExternalTestOut = ExternalTestBase.extend({
15927
+ lessonType: exports_external.literal("test-out"),
15928
+ xp: exports_external.number()
15929
+ });
15930
+ var ExternalPlacement = ExternalTestBase.extend({
15931
+ lessonType: exports_external.literal("placement"),
15932
+ courseIdOnFail: NonEmptyString3.optional(),
15933
+ xp: exports_external.number().optional()
15934
+ });
15935
+ var InternalTestBase = exports_external.object({
15936
+ courseId: NonEmptyString3,
15937
+ lessonType: LessonTypeRequired,
15938
+ lessonTitle: NonEmptyString3.optional(),
15939
+ unitTitle: NonEmptyString3.optional(),
15940
+ courseComponentSourcedId: NonEmptyString3.optional(),
15941
+ resourceMetadata: ResourceMetadata.nullable().optional(),
15942
+ xp: exports_external.number().optional(),
15943
+ grades: GradeArray.optional(),
15944
+ courseIdOnFail: NonEmptyString3.optional()
15945
+ });
15946
+ var PowerPathCreateInternalTestInput = exports_external.union([
15947
+ InternalTestBase.extend({
15948
+ testType: exports_external.literal("qti"),
15949
+ qti: exports_external.object({
15950
+ url: exports_external.url(),
15951
+ title: NonEmptyString3.optional(),
15952
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15953
+ })
15954
+ }),
15955
+ InternalTestBase.extend({
15956
+ testType: exports_external.literal("assessment-bank"),
15957
+ assessmentBank: exports_external.object({
15958
+ resources: exports_external.array(exports_external.object({
15959
+ url: exports_external.url(),
15960
+ title: NonEmptyString3.optional(),
15961
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15962
+ }))
15963
+ })
15964
+ })
15965
+ ]);
15966
+ var PowerPathCreateNewAttemptInput = exports_external.object({
15967
+ student: NonEmptyString3,
15968
+ lesson: NonEmptyString3
15969
+ });
15970
+ var PowerPathFinalStudentAssessmentResponseInput = exports_external.object({
15971
+ student: NonEmptyString3,
15972
+ lesson: NonEmptyString3
15973
+ });
15974
+ var PowerPathLessonPlansCreateInput = exports_external.object({
15975
+ courseId: NonEmptyString3,
15976
+ userId: NonEmptyString3,
15977
+ classId: NonEmptyString3.optional()
15978
+ });
15979
+ var LessonPlanTarget = exports_external.object({
15980
+ type: exports_external.enum(["component", "resource"]),
15981
+ id: NonEmptyString3
15982
+ });
15983
+ var PowerPathLessonPlanOperationInput = exports_external.union([
15984
+ exports_external.object({
15985
+ type: exports_external.literal("set-skipped"),
15986
+ payload: exports_external.object({
15987
+ target: LessonPlanTarget,
15988
+ value: exports_external.boolean()
15989
+ })
15990
+ }),
15991
+ exports_external.object({
15992
+ type: exports_external.literal("add-custom-resource"),
15993
+ payload: exports_external.object({
15994
+ resource_id: NonEmptyString3,
15995
+ parent_component_id: NonEmptyString3,
15996
+ skipped: exports_external.boolean().optional()
15997
+ })
15998
+ }),
15999
+ exports_external.object({
16000
+ type: exports_external.literal("move-item-before"),
16001
+ payload: exports_external.object({
16002
+ target: LessonPlanTarget,
16003
+ reference_id: NonEmptyString3
16004
+ })
16005
+ }),
16006
+ exports_external.object({
16007
+ type: exports_external.literal("move-item-after"),
16008
+ payload: exports_external.object({
16009
+ target: LessonPlanTarget,
16010
+ reference_id: NonEmptyString3
16011
+ })
16012
+ }),
16013
+ exports_external.object({
16014
+ type: exports_external.literal("move-item-to-start"),
16015
+ payload: exports_external.object({
16016
+ target: LessonPlanTarget
16017
+ })
16018
+ }),
16019
+ exports_external.object({
16020
+ type: exports_external.literal("move-item-to-end"),
16021
+ payload: exports_external.object({
16022
+ target: LessonPlanTarget
16023
+ })
16024
+ }),
16025
+ exports_external.object({
16026
+ type: exports_external.literal("change-item-parent"),
16027
+ payload: exports_external.object({
16028
+ target: LessonPlanTarget,
16029
+ new_parent_id: NonEmptyString3,
16030
+ position: exports_external.enum(["start", "end"]).optional()
16031
+ })
16032
+ })
16033
+ ]);
16034
+ var PowerPathLessonPlanOperationsInput = exports_external.object({
16035
+ operation: exports_external.array(PowerPathLessonPlanOperationInput),
16036
+ reason: NonEmptyString3.optional()
16037
+ });
16038
+ var PowerPathLessonPlanUpdateStudentItemResponseInput = exports_external.object({
16039
+ studentId: NonEmptyString3,
16040
+ componentResourceId: NonEmptyString3,
16041
+ result: exports_external.object({
16042
+ status: exports_external.enum(["active", "tobedeleted"]),
16043
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
16044
+ score: exports_external.number().optional(),
16045
+ textScore: NonEmptyString3.optional(),
16046
+ scoreDate: NonEmptyString3,
16047
+ scorePercentile: exports_external.number().optional(),
16048
+ scoreStatus: ScoreStatus,
16049
+ comment: NonEmptyString3.optional(),
16050
+ learningObjectiveSet: exports_external.array(exports_external.object({
16051
+ source: NonEmptyString3,
16052
+ learningObjectiveResults: exports_external.array(exports_external.object({
16053
+ learningObjectiveId: NonEmptyString3,
16054
+ score: exports_external.number().optional(),
16055
+ textScore: NonEmptyString3.optional()
16056
+ }))
16057
+ })).optional(),
16058
+ inProgress: NonEmptyString3.optional(),
16059
+ incomplete: NonEmptyString3.optional(),
16060
+ late: NonEmptyString3.optional(),
16061
+ missing: NonEmptyString3.optional()
16062
+ })
16063
+ });
16064
+ var PowerPathMakeExternalTestAssignmentInput = exports_external.object({
16065
+ student: NonEmptyString3,
16066
+ lesson: NonEmptyString3,
16067
+ applicationName: NonEmptyString3.optional(),
16068
+ testId: NonEmptyString3.optional(),
16069
+ skipCourseEnrollment: exports_external.boolean().optional()
16070
+ });
16071
+ var PowerPathPlacementResetUserPlacementInput = exports_external.object({
16072
+ student: NonEmptyString3,
16073
+ subject: TimebackSubject
16074
+ });
16075
+ var PowerPathResetAttemptInput = exports_external.object({
16076
+ student: NonEmptyString3,
16077
+ lesson: NonEmptyString3
16078
+ });
16079
+ var PowerPathScreeningResetSessionInput = exports_external.object({
16080
+ userId: NonEmptyString3
16081
+ });
16082
+ var PowerPathScreeningAssignTestInput = exports_external.object({
16083
+ userId: NonEmptyString3,
16084
+ subject: exports_external.enum(["Math", "Reading", "Language", "Science"])
16085
+ });
16086
+ var PowerPathTestAssignmentsCreateInput = exports_external.object({
16087
+ student: NonEmptyString3,
16088
+ subject: TimebackSubject,
16089
+ grade: TimebackGrade,
16090
+ testName: NonEmptyString3.optional()
16091
+ });
16092
+ var PowerPathTestAssignmentsUpdateInput = exports_external.object({
16093
+ testName: NonEmptyString3
16094
+ });
16095
+ var PowerPathTestAssignmentItemInput = exports_external.object({
16096
+ student: NonEmptyString3,
16097
+ subject: TimebackSubject,
16098
+ grade: TimebackGrade,
16099
+ testName: NonEmptyString3.optional()
16100
+ });
16101
+ var PowerPathTestAssignmentsBulkInput = exports_external.object({
16102
+ items: exports_external.array(PowerPathTestAssignmentItemInput)
16103
+ });
16104
+ var PowerPathTestAssignmentsImportInput = exports_external.object({
16105
+ spreadsheetUrl: exports_external.url(),
16106
+ sheet: NonEmptyString3
16107
+ });
16108
+ var PowerPathTestAssignmentsListParams = exports_external.object({
16109
+ student: NonEmptyString3,
16110
+ status: exports_external.enum(["assigned", "in_progress", "completed", "failed", "expired", "cancelled"]).optional(),
16111
+ subject: NonEmptyString3.optional(),
16112
+ grade: TimebackGrade.optional(),
16113
+ limit: exports_external.number().int().positive().max(3000).optional(),
16114
+ offset: exports_external.number().int().nonnegative().optional()
16115
+ });
16116
+ var PowerPathTestAssignmentsAdminParams = exports_external.object({
16117
+ student: NonEmptyString3.optional(),
16118
+ status: exports_external.enum(["assigned", "in_progress", "completed", "failed", "expired", "cancelled"]).optional(),
16119
+ subject: NonEmptyString3.optional(),
16120
+ grade: TimebackGrade.optional(),
16121
+ limit: exports_external.number().int().positive().max(3000).optional(),
16122
+ offset: exports_external.number().int().nonnegative().optional()
16123
+ });
16124
+ var PowerPathUpdateStudentQuestionResponseInput = exports_external.object({
16125
+ student: NonEmptyString3,
16126
+ question: NonEmptyString3,
16127
+ response: exports_external.union([NonEmptyString3, exports_external.array(NonEmptyString3)]).optional(),
16128
+ responses: exports_external.record(exports_external.string(), exports_external.union([NonEmptyString3, exports_external.array(NonEmptyString3)])).optional(),
16129
+ lesson: NonEmptyString3
16130
+ });
16131
+ var PowerPathGetAssessmentProgressParams = exports_external.object({
16132
+ student: NonEmptyString3,
16133
+ lesson: NonEmptyString3,
16134
+ attempt: exports_external.number().int().positive().optional()
16135
+ });
16136
+ var PowerPathGetNextQuestionParams = exports_external.object({
16137
+ student: NonEmptyString3,
16138
+ lesson: NonEmptyString3
16139
+ });
16140
+ var PowerPathGetAttemptsParams = exports_external.object({
16141
+ student: NonEmptyString3,
16142
+ lesson: NonEmptyString3
16143
+ });
16144
+ var PowerPathTestOutParams = exports_external.object({
16145
+ student: NonEmptyString3,
16146
+ lesson: NonEmptyString3.optional(),
16147
+ finalized: exports_external.boolean().optional(),
16148
+ toolProvider: NonEmptyString3.optional(),
16149
+ attempt: exports_external.number().int().positive().optional()
16150
+ });
16151
+ var PowerPathImportExternalTestAssignmentResultsParams = exports_external.object({
16152
+ student: NonEmptyString3,
16153
+ lesson: NonEmptyString3,
16154
+ applicationName: NonEmptyString3.optional()
16155
+ });
16156
+ var PowerPathPlacementQueryParams = exports_external.object({
16157
+ student: NonEmptyString3,
16158
+ subject: TimebackSubject
16159
+ });
16160
+ var PowerPathSyllabusQueryParams = exports_external.object({
16161
+ status: exports_external.enum(["active", "tobedeleted"]).optional()
16162
+ });
15935
16163
  // ../../types/src/zod/qti.ts
15936
16164
  var QtiAssessmentItemType = exports_external.enum([
15937
16165
  "choice",
@@ -16182,6 +16410,248 @@ var QtiLessonFeedbackInput = exports_external.object({
16182
16410
  lessonId: exports_external.string().min(1),
16183
16411
  humanApproved: exports_external.boolean().optional()
16184
16412
  }).strict();
16413
+ // src/lib/validation.ts
16414
+ function validateListParams(params) {
16415
+ if (!params)
16416
+ return;
16417
+ validateOffsetListParams(params);
16418
+ const issues = [];
16419
+ if (params.fields !== undefined) {
16420
+ if (Array.isArray(params.fields)) {
16421
+ for (let i = 0;i < params.fields.length; i++) {
16422
+ const field = params.fields[i];
16423
+ if (typeof field !== "string" || field.trim() === "") {
16424
+ issues.push({
16425
+ path: `fields[${i}]`,
16426
+ message: "Must be a non-empty string"
16427
+ });
16428
+ }
16429
+ }
16430
+ } else {
16431
+ issues.push({
16432
+ path: "fields",
16433
+ message: "Must be an array of field names"
16434
+ });
16435
+ }
16436
+ }
16437
+ if (issues.length > 0) {
16438
+ throw createInputValidationError("Invalid list parameters", issues);
16439
+ }
16440
+ }
16441
+
16442
+ // src/lib/pagination.ts
16443
+ class Paginator2 extends Paginator {
16444
+ constructor(transport, path, params = {}, unwrapKey, transform2) {
16445
+ validateListParams(params);
16446
+ const { max, ...requestParams } = params;
16447
+ super({
16448
+ fetcher: (p, opts) => transport.requestPaginated(p, opts),
16449
+ path,
16450
+ params: requestParams,
16451
+ max,
16452
+ unwrapKey,
16453
+ logger: log2,
16454
+ transform: transform2
16455
+ });
16456
+ }
16457
+ }
16458
+ // src/resources/base.ts
16459
+ class BaseResource {
16460
+ transport;
16461
+ basePath;
16462
+ constructor(transport, resourceType, suffix) {
16463
+ this.transport = transport;
16464
+ const prefix = transport.paths[resourceType];
16465
+ this.basePath = `${prefix}${suffix}`;
16466
+ }
16467
+ list(params) {
16468
+ return this.stream(params).firstPage();
16469
+ }
16470
+ listAll(params) {
16471
+ return this.stream(params).toArray();
16472
+ }
16473
+ async first(params) {
16474
+ const result = await this.list({ ...params, limit: 1 });
16475
+ return result.data[0];
16476
+ }
16477
+ stream(params) {
16478
+ return new Paginator2(this.transport, this.basePath, params, this.unwrapKey, this.transform.bind(this));
16479
+ }
16480
+ async get(sourcedId) {
16481
+ validateSourcedId(sourcedId, `get ${this.resourceName}`);
16482
+ const response = await this.transport.request(`${this.basePath}/${sourcedId}`);
16483
+ return this.unwrapSingle(response);
16484
+ }
16485
+ create(data) {
16486
+ const schema = this.createSchema;
16487
+ if (schema) {
16488
+ validateWithSchema(schema, data, this.resourceName);
16489
+ }
16490
+ const body = this.wrapBody(data);
16491
+ return this.transport.request(this.basePath, {
16492
+ method: "POST",
16493
+ body
16494
+ });
16495
+ }
16496
+ async update(sourcedId, data) {
16497
+ validateSourcedId(sourcedId, `update ${this.resourceName}`);
16498
+ const schema = this.updateSchema;
16499
+ if (schema) {
16500
+ validateWithSchema(schema, data, `update ${this.resourceName}`);
16501
+ }
16502
+ const body = this.wrapBody(data);
16503
+ await this.transport.request(`${this.basePath}/${sourcedId}`, {
16504
+ method: "PUT",
16505
+ body
16506
+ });
16507
+ }
16508
+ async delete(sourcedId) {
16509
+ validateSourcedId(sourcedId, `delete ${this.resourceName}`);
16510
+ await this.transport.request(`${this.basePath}/${sourcedId}`, {
16511
+ method: "DELETE"
16512
+ });
16513
+ }
16514
+ transform(entity) {
16515
+ return entity;
16516
+ }
16517
+ get createSchema() {
16518
+ return;
16519
+ }
16520
+ get updateSchema() {
16521
+ return;
16522
+ }
16523
+ get patchSchema() {
16524
+ return;
16525
+ }
16526
+ get resourceName() {
16527
+ return this.wrapKey;
16528
+ }
16529
+ unwrapSingle(response) {
16530
+ const singularKey = this.wrapKey;
16531
+ const data = response[singularKey];
16532
+ if (!data) {
16533
+ throw new Error(`Expected "${singularKey}" in response`);
16534
+ }
16535
+ return this.transform(data);
16536
+ }
16537
+ wrapBody(data) {
16538
+ return { [this.wrapKey]: data };
16539
+ }
16540
+ }
16541
+
16542
+ class ReadOnlyResource {
16543
+ transport;
16544
+ basePath;
16545
+ constructor(transport, resourceType, suffix) {
16546
+ this.transport = transport;
16547
+ const prefix = transport.paths[resourceType];
16548
+ this.basePath = `${prefix}${suffix}`;
16549
+ }
16550
+ list(params) {
16551
+ return this.stream(params).firstPage();
16552
+ }
16553
+ listAll(params) {
16554
+ return this.stream(params).toArray();
16555
+ }
16556
+ async first(params) {
16557
+ const result = await this.list({ ...params, limit: 1 });
16558
+ return result.data[0];
16559
+ }
16560
+ stream(params) {
16561
+ return new Paginator2(this.transport, this.basePath, params, this.unwrapKey, this.transform.bind(this));
16562
+ }
16563
+ async get(sourcedId) {
16564
+ validateSourcedId(sourcedId, `get ${this.wrapKey}`);
16565
+ const response = await this.transport.request(`${this.basePath}/${sourcedId}`);
16566
+ const data = response[this.wrapKey];
16567
+ if (!data) {
16568
+ throw new Error(`Expected "${this.wrapKey}" in response`);
16569
+ }
16570
+ return this.transform(data);
16571
+ }
16572
+ transform(entity) {
16573
+ return entity;
16574
+ }
16575
+ }
16576
+
16577
+ // src/resources/assessment/line-items.ts
16578
+ class ScopedAssessmentLineItemResource {
16579
+ transport;
16580
+ basePath;
16581
+ constructor(transport, lineItemId) {
16582
+ this.transport = transport;
16583
+ validateSourcedId(lineItemId, "assessment line item");
16584
+ this.basePath = `${transport.paths.gradebook}/assessmentLineItems/${lineItemId}`;
16585
+ }
16586
+ async get() {
16587
+ const response = await this.transport.request(this.basePath);
16588
+ return response.assessmentLineItem;
16589
+ }
16590
+ }
16591
+
16592
+ class AssessmentLineItemsResourceImpl extends BaseResource {
16593
+ constructor(transport) {
16594
+ super(transport, "gradebook", "/assessmentLineItems");
16595
+ }
16596
+ async patch(sourcedId, data) {
16597
+ validateSourcedId(sourcedId, "patch assessment line item");
16598
+ await this.transport.request(`${this.basePath}/${sourcedId}`, {
16599
+ method: "PATCH",
16600
+ body: { assessmentLineItem: data }
16601
+ });
16602
+ }
16603
+ get unwrapKey() {
16604
+ return "assessmentLineItems";
16605
+ }
16606
+ get wrapKey() {
16607
+ return "assessmentLineItem";
16608
+ }
16609
+ get createSchema() {
16610
+ return OneRosterAssessmentLineItemCreateInput;
16611
+ }
16612
+ get updateSchema() {
16613
+ return OneRosterAssessmentLineItemCreateInput;
16614
+ }
16615
+ }
16616
+ function createAssessmentLineItemsResource(transport) {
16617
+ const impl = new AssessmentLineItemsResourceImpl(transport);
16618
+ const callable = (id) => new ScopedAssessmentLineItemResource(transport, id);
16619
+ callable.list = impl.list.bind(impl);
16620
+ callable.listAll = impl.listAll.bind(impl);
16621
+ callable.first = impl.first.bind(impl);
16622
+ callable.stream = impl.stream.bind(impl);
16623
+ callable.get = impl.get.bind(impl);
16624
+ callable.create = impl.create.bind(impl);
16625
+ callable.update = impl.update.bind(impl);
16626
+ callable.patch = impl.patch.bind(impl);
16627
+ callable.delete = impl.delete.bind(impl);
16628
+ return callable;
16629
+ }
16630
+ // src/resources/assessment/results.ts
16631
+ class AssessmentResultsResource extends BaseResource {
16632
+ constructor(transport) {
16633
+ super(transport, "gradebook", "/assessmentResults");
16634
+ }
16635
+ async patch(sourcedId, data) {
16636
+ validateSourcedId(sourcedId, "patch assessment result");
16637
+ await this.transport.request(`${this.basePath}/${sourcedId}`, {
16638
+ method: "PATCH",
16639
+ body: { assessmentResult: data }
16640
+ });
16641
+ }
16642
+ get unwrapKey() {
16643
+ return "assessmentResults";
16644
+ }
16645
+ get wrapKey() {
16646
+ return "assessmentResult";
16647
+ }
16648
+ get createSchema() {
16649
+ return OneRosterAssessmentResultCreateInput;
16650
+ }
16651
+ get updateSchema() {
16652
+ return OneRosterAssessmentResultCreateInput;
16653
+ }
16654
+ }
16185
16655
  // src/resources/gradebook/line-items.ts
16186
16656
  class ScopedLineItemResource {
16187
16657
  transport;
@@ -16220,6 +16690,9 @@ class LineItemsResourceImpl extends BaseResource {
16220
16690
  get createSchema() {
16221
16691
  return OneRosterLineItemCreateInput;
16222
16692
  }
16693
+ get updateSchema() {
16694
+ return OneRosterLineItemCreateInput;
16695
+ }
16223
16696
  }
16224
16697
  function createLineItemsResource(transport) {
16225
16698
  const impl = new LineItemsResourceImpl(transport);
@@ -16251,6 +16724,9 @@ class ResultsResource extends BaseResource {
16251
16724
  get createSchema() {
16252
16725
  return OneRosterResultCreateInput;
16253
16726
  }
16727
+ get updateSchema() {
16728
+ return OneRosterResultCreateInput;
16729
+ }
16254
16730
  }
16255
16731
  // src/resources/gradebook/categories.ts
16256
16732
  class CategoriesResource extends BaseResource {
@@ -16266,6 +16742,9 @@ class CategoriesResource extends BaseResource {
16266
16742
  get createSchema() {
16267
16743
  return OneRosterCategoryCreateInput;
16268
16744
  }
16745
+ get updateSchema() {
16746
+ return OneRosterCategoryCreateInput;
16747
+ }
16269
16748
  }
16270
16749
  // src/resources/gradebook/score-scales.ts
16271
16750
  class ScoreScalesResource extends BaseResource {
@@ -16282,7 +16761,7 @@ class ScoreScalesResource extends BaseResource {
16282
16761
  return OneRosterScoreScaleCreateInput;
16283
16762
  }
16284
16763
  get updateSchema() {
16285
- return OneRosterScoreScaleCreateInput.partial();
16764
+ return OneRosterScoreScaleCreateInput;
16286
16765
  }
16287
16766
  }
16288
16767
  // src/resources/resources/resources.ts
@@ -16584,7 +17063,7 @@ class OrgsResource extends BaseResource {
16584
17063
  return OneRosterOrgCreateInput;
16585
17064
  }
16586
17065
  get updateSchema() {
16587
- return OneRosterOrgCreateInput.partial();
17066
+ return OneRosterOrgCreateInput;
16588
17067
  }
16589
17068
  }
16590
17069
  // src/resources/rostering/schools.ts
@@ -16711,7 +17190,7 @@ class SchoolsResourceImpl extends BaseResource {
16711
17190
  return OneRosterSchoolCreateInput;
16712
17191
  }
16713
17192
  get updateSchema() {
16714
- return OneRosterSchoolCreateInput.partial();
17193
+ return OneRosterSchoolCreateInput;
16715
17194
  }
16716
17195
  }
16717
17196
  function createSchoolsResource(transport) {
@@ -16887,6 +17366,9 @@ class ClassesResourceImpl extends BaseResource {
16887
17366
  get createSchema() {
16888
17367
  return OneRosterClassCreateInput;
16889
17368
  }
17369
+ get updateSchema() {
17370
+ return OneRosterClassCreateInput.partial();
17371
+ }
16890
17372
  transform(cls) {
16891
17373
  return {
16892
17374
  ...cls,
@@ -17034,6 +17516,9 @@ class CoursesResourceImpl extends BaseResource {
17034
17516
  get createSchema() {
17035
17517
  return OneRosterCourseCreateInput;
17036
17518
  }
17519
+ get updateSchema() {
17520
+ return OneRosterCourseCreateInput;
17521
+ }
17037
17522
  transform(course) {
17038
17523
  return {
17039
17524
  ...course,
@@ -17092,6 +17577,12 @@ class EnrollmentsResource extends BaseResource {
17092
17577
  get createSchema() {
17093
17578
  return OneRosterEnrollmentCreateInput;
17094
17579
  }
17580
+ get updateSchema() {
17581
+ return OneRosterEnrollmentCreateInput;
17582
+ }
17583
+ get patchSchema() {
17584
+ return OneRosterEnrollmentCreateInput.partial();
17585
+ }
17095
17586
  }
17096
17587
  // src/resources/rostering/academic-sessions.ts
17097
17588
  class AcademicSessionsResource extends BaseResource {
@@ -17108,7 +17599,7 @@ class AcademicSessionsResource extends BaseResource {
17108
17599
  return OneRosterAcademicSessionCreateInput;
17109
17600
  }
17110
17601
  get updateSchema() {
17111
- return OneRosterAcademicSessionCreateInput.partial();
17602
+ return OneRosterAcademicSessionCreateInput;
17112
17603
  }
17113
17604
  transform(session) {
17114
17605
  session.startDate = normalizeDateOnly(session.startDate);
@@ -17165,7 +17656,7 @@ class TermsResourceImpl extends BaseResource {
17165
17656
  return OneRosterAcademicSessionCreateInput;
17166
17657
  }
17167
17658
  get updateSchema() {
17168
- return OneRosterAcademicSessionCreateInput.partial();
17659
+ return OneRosterAcademicSessionCreateInput;
17169
17660
  }
17170
17661
  transform(term) {
17171
17662
  term.startDate = normalizeDateOnly(term.startDate);
@@ -17198,7 +17689,7 @@ class GradingPeriodsResource extends BaseResource {
17198
17689
  return OneRosterAcademicSessionCreateInput;
17199
17690
  }
17200
17691
  get updateSchema() {
17201
- return OneRosterAcademicSessionCreateInput.partial();
17692
+ return OneRosterAcademicSessionCreateInput;
17202
17693
  }
17203
17694
  transform(gp) {
17204
17695
  return {