@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.
- package/dist/errors.js +12 -2
- package/dist/index.js +744 -253
- package/dist/resources/assessment/line-items.d.ts.map +1 -1
- package/dist/resources/assessment/results.d.ts +5 -1
- package/dist/resources/assessment/results.d.ts.map +1 -1
- package/dist/resources/gradebook/categories.d.ts +1 -0
- package/dist/resources/gradebook/categories.d.ts.map +1 -1
- package/dist/resources/gradebook/line-items.d.ts.map +1 -1
- package/dist/resources/gradebook/results.d.ts +2 -1
- package/dist/resources/gradebook/results.d.ts.map +1 -1
- package/dist/resources/gradebook/score-scales.d.ts +2 -1
- package/dist/resources/gradebook/score-scales.d.ts.map +1 -1
- package/dist/resources/resources/resources.d.ts.map +1 -1
- package/dist/resources/resources/resources.type-test.d.ts +2 -0
- package/dist/resources/resources/resources.type-test.d.ts.map +1 -0
- package/dist/resources/rostering/academic-sessions.d.ts +1 -1
- package/dist/resources/rostering/academic-sessions.d.ts.map +1 -1
- package/dist/resources/rostering/classes.d.ts +1 -1
- package/dist/resources/rostering/classes.d.ts.map +1 -1
- package/dist/resources/rostering/courses.d.ts.map +1 -1
- package/dist/resources/rostering/enrollments.d.ts +3 -1
- package/dist/resources/rostering/enrollments.d.ts.map +1 -1
- package/dist/resources/rostering/orgs.d.ts +1 -1
- package/dist/resources/rostering/orgs.d.ts.map +1 -1
- package/dist/resources/rostering/schools.d.ts.map +1 -1
- package/dist/types/callable.d.ts +4 -6
- package/dist/types/callable.d.ts.map +1 -1
- 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
|
-
|
|
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
|
-
|
|
15812
|
-
|
|
15813
|
-
|
|
15814
|
-
|
|
15815
|
-
|
|
15816
|
-
|
|
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
|
-
|
|
15708
|
+
status: Status.optional(),
|
|
15709
|
+
dateLastModified: IsoDateTimeString.optional(),
|
|
15710
|
+
metadata: Metadata,
|
|
15711
|
+
assessmentLineItem: Ref,
|
|
15822
15712
|
student: Ref,
|
|
15823
|
-
|
|
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
|
-
|
|
15832
|
-
|
|
15833
|
-
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
17692
|
+
return OneRosterAcademicSessionCreateInput;
|
|
17202
17693
|
}
|
|
17203
17694
|
transform(gp) {
|
|
17204
17695
|
return {
|