@timeback/core 0.1.2 → 0.1.4
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/client.d.ts +13 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/constants.d.ts +4 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/errors.js +42 -10
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19707 -919
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types.js +7 -0
- package/dist/utils.js +575 -68
- package/package.json +7 -5
package/dist/utils.js
CHANGED
|
@@ -485,6 +485,9 @@ var BEYONDAI_PATHS = {
|
|
|
485
485
|
},
|
|
486
486
|
edubridge: {
|
|
487
487
|
base: "/edubridge"
|
|
488
|
+
},
|
|
489
|
+
powerpath: {
|
|
490
|
+
base: "/powerpath"
|
|
488
491
|
}
|
|
489
492
|
};
|
|
490
493
|
var LEARNWITHAI_PATHS = {
|
|
@@ -500,7 +503,8 @@ var LEARNWITHAI_PATHS = {
|
|
|
500
503
|
gradebook: "/gradebook/1.0",
|
|
501
504
|
resources: "/resources/1.0"
|
|
502
505
|
},
|
|
503
|
-
edubridge: null
|
|
506
|
+
edubridge: null,
|
|
507
|
+
powerpath: null
|
|
504
508
|
};
|
|
505
509
|
var PLATFORM_PATHS = {
|
|
506
510
|
BEYOND_AI: BEYONDAI_PATHS,
|
|
@@ -520,7 +524,8 @@ function resolvePathProfiles(pathProfile, customPaths) {
|
|
|
520
524
|
return {
|
|
521
525
|
caliper: customPaths?.caliper ?? basePaths.caliper,
|
|
522
526
|
oneroster: customPaths?.oneroster ?? basePaths.oneroster,
|
|
523
|
-
edubridge: customPaths?.edubridge ?? basePaths.edubridge
|
|
527
|
+
edubridge: customPaths?.edubridge ?? basePaths.edubridge,
|
|
528
|
+
powerpath: customPaths?.powerpath ?? basePaths.powerpath
|
|
524
529
|
};
|
|
525
530
|
}
|
|
526
531
|
|
|
@@ -556,6 +561,10 @@ class TimebackProvider {
|
|
|
556
561
|
baseUrl: platformEndpoints.api[env],
|
|
557
562
|
authUrl: this.authUrl
|
|
558
563
|
},
|
|
564
|
+
powerpath: {
|
|
565
|
+
baseUrl: platformEndpoints.api[env],
|
|
566
|
+
authUrl: this.authUrl
|
|
567
|
+
},
|
|
559
568
|
caliper: {
|
|
560
569
|
baseUrl: platformEndpoints.caliper[env],
|
|
561
570
|
authUrl: this.authUrl
|
|
@@ -572,6 +581,7 @@ class TimebackProvider {
|
|
|
572
581
|
this.endpoints = {
|
|
573
582
|
oneroster: { baseUrl: config.baseUrl, authUrl: this.authUrl },
|
|
574
583
|
edubridge: { baseUrl: config.baseUrl, authUrl: this.authUrl },
|
|
584
|
+
powerpath: { baseUrl: config.baseUrl, authUrl: this.authUrl },
|
|
575
585
|
caliper: { baseUrl: config.baseUrl, authUrl: this.authUrl },
|
|
576
586
|
qti: { baseUrl: config.baseUrl, authUrl: this.authUrl }
|
|
577
587
|
};
|
|
@@ -689,7 +699,17 @@ class TimebackProvider {
|
|
|
689
699
|
}
|
|
690
700
|
function getEnv(key) {
|
|
691
701
|
try {
|
|
692
|
-
|
|
702
|
+
if (typeof process === "undefined")
|
|
703
|
+
return;
|
|
704
|
+
if (typeof key === "string") {
|
|
705
|
+
return process.env[key];
|
|
706
|
+
}
|
|
707
|
+
for (const k of key) {
|
|
708
|
+
const value = process.env[k];
|
|
709
|
+
if (value !== undefined)
|
|
710
|
+
return value;
|
|
711
|
+
}
|
|
712
|
+
return;
|
|
693
713
|
} catch {
|
|
694
714
|
return;
|
|
695
715
|
}
|
|
@@ -720,6 +740,18 @@ var DEFAULT_PROVIDER_REGISTRY = {
|
|
|
720
740
|
}
|
|
721
741
|
}
|
|
722
742
|
};
|
|
743
|
+
function primaryEnvVar(key) {
|
|
744
|
+
if (typeof key === "string") {
|
|
745
|
+
return key;
|
|
746
|
+
}
|
|
747
|
+
if (key.length === 0) {
|
|
748
|
+
throw new Error(`Missing env var key: ${key}`);
|
|
749
|
+
}
|
|
750
|
+
return key[0];
|
|
751
|
+
}
|
|
752
|
+
function formatEnvVarKey(key) {
|
|
753
|
+
return primaryEnvVar(key);
|
|
754
|
+
}
|
|
723
755
|
function validateEnv(env) {
|
|
724
756
|
if (env !== "staging" && env !== "production") {
|
|
725
757
|
throw new Error(`Invalid env "${env}": must be "staging" or "production"`);
|
|
@@ -730,10 +762,10 @@ function validateAuth(auth, envVars) {
|
|
|
730
762
|
const clientId = auth?.clientId ?? getEnv(envVars.clientId);
|
|
731
763
|
const clientSecret = auth?.clientSecret ?? getEnv(envVars.clientSecret);
|
|
732
764
|
if (!clientId) {
|
|
733
|
-
throw new Error(`Missing clientId: provide in config or set ${envVars.clientId}`);
|
|
765
|
+
throw new Error(`Missing clientId: provide in config or set ${formatEnvVarKey(envVars.clientId)}`);
|
|
734
766
|
}
|
|
735
767
|
if (!clientSecret) {
|
|
736
|
-
throw new Error(`Missing clientSecret: provide in config or set ${envVars.clientSecret}`);
|
|
768
|
+
throw new Error(`Missing clientSecret: provide in config or set ${formatEnvVarKey(envVars.clientSecret)}`);
|
|
737
769
|
}
|
|
738
770
|
return { clientId, clientSecret };
|
|
739
771
|
}
|
|
@@ -749,21 +781,21 @@ function buildMissingEnvError(envVars) {
|
|
|
749
781
|
const clientId = getEnv(envVars.clientId);
|
|
750
782
|
const clientSecret = getEnv(envVars.clientSecret);
|
|
751
783
|
if (baseUrl === undefined && clientId === undefined) {
|
|
752
|
-
const hint = envVars.env ?? envVars.baseUrl;
|
|
784
|
+
const hint = formatEnvVarKey(envVars.env ?? envVars.baseUrl);
|
|
753
785
|
return `Missing env: provide in config or set ${hint}`;
|
|
754
786
|
}
|
|
755
787
|
const missing = [];
|
|
756
788
|
if (baseUrl === undefined) {
|
|
757
|
-
missing.push(envVars.env ?? envVars.baseUrl);
|
|
789
|
+
missing.push(formatEnvVarKey(envVars.env ?? envVars.baseUrl));
|
|
758
790
|
}
|
|
759
791
|
if (baseUrl !== undefined && authUrl === undefined) {
|
|
760
|
-
missing.push(envVars.authUrl);
|
|
792
|
+
missing.push(formatEnvVarKey(envVars.authUrl));
|
|
761
793
|
}
|
|
762
794
|
if (clientId === undefined) {
|
|
763
|
-
missing.push(envVars.clientId);
|
|
795
|
+
missing.push(formatEnvVarKey(envVars.clientId));
|
|
764
796
|
}
|
|
765
797
|
if (clientSecret === undefined) {
|
|
766
|
-
missing.push(envVars.clientSecret);
|
|
798
|
+
missing.push(formatEnvVarKey(envVars.clientSecret));
|
|
767
799
|
}
|
|
768
800
|
return `Missing environment variables: ${missing.join(", ")}`;
|
|
769
801
|
}
|
|
@@ -1254,10 +1286,10 @@ function validateNonEmptyString(value, name) {
|
|
|
1254
1286
|
}
|
|
1255
1287
|
}
|
|
1256
1288
|
var EDUBRIDGE_ENV_VARS = {
|
|
1257
|
-
baseUrl: "EDUBRIDGE_BASE_URL",
|
|
1258
|
-
clientId: "EDUBRIDGE_CLIENT_ID",
|
|
1259
|
-
clientSecret: "EDUBRIDGE_CLIENT_SECRET",
|
|
1260
|
-
authUrl: "EDUBRIDGE_TOKEN_URL"
|
|
1289
|
+
baseUrl: ["TIMEBACK_API_BASE_URL", "TIMEBACK_BASE_URL", "EDUBRIDGE_BASE_URL"],
|
|
1290
|
+
clientId: ["TIMEBACK_API_CLIENT_ID", "TIMEBACK_CLIENT_ID", "EDUBRIDGE_CLIENT_ID"],
|
|
1291
|
+
clientSecret: ["TIMEBACK_API_CLIENT_SECRET", "TIMEBACK_CLIENT_SECRET", "EDUBRIDGE_CLIENT_SECRET"],
|
|
1292
|
+
authUrl: ["TIMEBACK_API_AUTH_URL", "TIMEBACK_AUTH_URL", "EDUBRIDGE_TOKEN_URL"]
|
|
1261
1293
|
};
|
|
1262
1294
|
function resolveToProvider2(config, registry = DEFAULT_PROVIDER_REGISTRY) {
|
|
1263
1295
|
return resolveToProvider(config, EDUBRIDGE_ENV_VARS, registry);
|
|
@@ -3585,7 +3617,7 @@ class Doc {
|
|
|
3585
3617
|
var version = {
|
|
3586
3618
|
major: 4,
|
|
3587
3619
|
minor: 3,
|
|
3588
|
-
patch:
|
|
3620
|
+
patch: 6
|
|
3589
3621
|
};
|
|
3590
3622
|
var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
|
|
3591
3623
|
var _a;
|
|
@@ -4869,7 +4901,7 @@ var $ZodRecord = /* @__PURE__ */ $constructor("$ZodRecord", (inst, def) => {
|
|
|
4869
4901
|
if (keyResult instanceof Promise) {
|
|
4870
4902
|
throw new Error("Async schemas not supported in object keys currently");
|
|
4871
4903
|
}
|
|
4872
|
-
const checkNumericKey = typeof key === "string" && number.test(key) && keyResult.issues.length
|
|
4904
|
+
const checkNumericKey = typeof key === "string" && number.test(key) && keyResult.issues.length;
|
|
4873
4905
|
if (checkNumericKey) {
|
|
4874
4906
|
const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);
|
|
4875
4907
|
if (retryResult instanceof Promise) {
|
|
@@ -12186,7 +12218,7 @@ function finalize(ctx, schema) {
|
|
|
12186
12218
|
}
|
|
12187
12219
|
}
|
|
12188
12220
|
}
|
|
12189
|
-
if (refSchema.$ref) {
|
|
12221
|
+
if (refSchema.$ref && refSeen.def) {
|
|
12190
12222
|
for (const key in schema2) {
|
|
12191
12223
|
if (key === "$ref" || key === "allOf")
|
|
12192
12224
|
continue;
|
|
@@ -14818,7 +14850,7 @@ var TimebackSubject = exports_external.enum([
|
|
|
14818
14850
|
"Math",
|
|
14819
14851
|
"None",
|
|
14820
14852
|
"Other"
|
|
14821
|
-
]);
|
|
14853
|
+
]).meta({ id: "TimebackSubject", description: "Subject area" });
|
|
14822
14854
|
var TimebackGrade = exports_external.union([
|
|
14823
14855
|
exports_external.literal(-1),
|
|
14824
14856
|
exports_external.literal(0),
|
|
@@ -14835,7 +14867,10 @@ var TimebackGrade = exports_external.union([
|
|
|
14835
14867
|
exports_external.literal(11),
|
|
14836
14868
|
exports_external.literal(12),
|
|
14837
14869
|
exports_external.literal(13)
|
|
14838
|
-
])
|
|
14870
|
+
]).meta({
|
|
14871
|
+
id: "TimebackGrade",
|
|
14872
|
+
description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
|
|
14873
|
+
});
|
|
14839
14874
|
var ScoreStatus = exports_external.enum([
|
|
14840
14875
|
"exempt",
|
|
14841
14876
|
"fully graded",
|
|
@@ -14862,6 +14897,47 @@ var OneRosterUserRole = exports_external.enum([
|
|
|
14862
14897
|
"teacher"
|
|
14863
14898
|
]);
|
|
14864
14899
|
var EnrollmentRole = exports_external.enum(["administrator", "proctor", "student", "teacher"]);
|
|
14900
|
+
var ResourceType = exports_external.enum([
|
|
14901
|
+
"qti",
|
|
14902
|
+
"text",
|
|
14903
|
+
"audio",
|
|
14904
|
+
"video",
|
|
14905
|
+
"interactive",
|
|
14906
|
+
"visual",
|
|
14907
|
+
"course-material",
|
|
14908
|
+
"assessment-bank"
|
|
14909
|
+
]);
|
|
14910
|
+
var QtiSubType = exports_external.enum(["qti-test", "qti-question", "qti-stimulus", "qti-test-bank"]);
|
|
14911
|
+
var CourseMaterialSubType = exports_external.enum(["unit", "course", "resource-collection"]);
|
|
14912
|
+
var QuestionType = exports_external.enum([
|
|
14913
|
+
"choice",
|
|
14914
|
+
"order",
|
|
14915
|
+
"associate",
|
|
14916
|
+
"match",
|
|
14917
|
+
"hotspot",
|
|
14918
|
+
"hottext",
|
|
14919
|
+
"select-point",
|
|
14920
|
+
"graphic-order",
|
|
14921
|
+
"graphic-associate",
|
|
14922
|
+
"graphic-gap-match",
|
|
14923
|
+
"text-entry",
|
|
14924
|
+
"extended-text",
|
|
14925
|
+
"inline-choice",
|
|
14926
|
+
"upload",
|
|
14927
|
+
"slider",
|
|
14928
|
+
"drawing",
|
|
14929
|
+
"media",
|
|
14930
|
+
"custom"
|
|
14931
|
+
]);
|
|
14932
|
+
var Difficulty = exports_external.enum(["easy", "medium", "hard"]);
|
|
14933
|
+
var LearningObjectiveSetSchema = exports_external.array(exports_external.object({
|
|
14934
|
+
source: exports_external.string(),
|
|
14935
|
+
learningObjectiveIds: exports_external.array(exports_external.string())
|
|
14936
|
+
}));
|
|
14937
|
+
var FastFailConfigSchema = exports_external.object({
|
|
14938
|
+
consecutive_failures: exports_external.number().int().min(1).optional(),
|
|
14939
|
+
stagnation_limit: exports_external.number().int().min(1).optional()
|
|
14940
|
+
}).optional();
|
|
14865
14941
|
var LessonType = exports_external.enum(["powerpath-100", "quiz", "test-out", "placement", "unit-test", "alpha-read-article"]).nullable();
|
|
14866
14942
|
var IMSErrorResponse = exports_external.object({
|
|
14867
14943
|
imsx_codeMajor: exports_external.enum(["failure", "success"]),
|
|
@@ -14937,7 +15013,11 @@ var ActivityCompletedInput = exports_external.object({
|
|
|
14937
15013
|
eventTime: IsoDateTimeString.optional(),
|
|
14938
15014
|
metricsId: exports_external.string().optional(),
|
|
14939
15015
|
id: exports_external.string().optional(),
|
|
14940
|
-
extensions: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
|
|
15016
|
+
extensions: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
|
|
15017
|
+
attempt: exports_external.number().int().min(1).optional(),
|
|
15018
|
+
generatedExtensions: exports_external.object({
|
|
15019
|
+
pctCompleteApp: exports_external.number().optional()
|
|
15020
|
+
}).loose().optional()
|
|
14941
15021
|
}).strict();
|
|
14942
15022
|
var TimeSpentInput = exports_external.object({
|
|
14943
15023
|
actor: TimebackUser,
|
|
@@ -15020,50 +15100,121 @@ var CaliperListEventsParams = exports_external.object({
|
|
|
15020
15100
|
actorEmail: exports_external.email().optional()
|
|
15021
15101
|
}).strict();
|
|
15022
15102
|
var CourseIds = exports_external.object({
|
|
15023
|
-
staging: exports_external.string().optional(),
|
|
15024
|
-
production: exports_external.string().optional()
|
|
15025
|
-
});
|
|
15026
|
-
var CourseType = exports_external.enum(["base", "hole-filling", "optional"]);
|
|
15027
|
-
var PublishStatus = exports_external.enum(["draft", "testing", "published", "deactivated"]);
|
|
15103
|
+
staging: exports_external.string().meta({ description: "Course ID in staging environment" }).optional(),
|
|
15104
|
+
production: exports_external.string().meta({ description: "Course ID in production environment" }).optional()
|
|
15105
|
+
}).meta({ id: "CourseIds", description: "Environment-specific course IDs (populated by sync)" });
|
|
15106
|
+
var CourseType = exports_external.enum(["base", "hole-filling", "optional"]).meta({ id: "CourseType", description: "Course classification type" });
|
|
15107
|
+
var PublishStatus = exports_external.enum(["draft", "testing", "published", "deactivated"]).meta({ id: "PublishStatus", description: "Course publication status" });
|
|
15028
15108
|
var CourseGoals = exports_external.object({
|
|
15029
|
-
dailyXp: exports_external.number().int().positive().optional(),
|
|
15030
|
-
dailyLessons: exports_external.number().int().positive().optional(),
|
|
15031
|
-
dailyActiveMinutes: exports_external.number().int().positive().optional(),
|
|
15032
|
-
dailyAccuracy: exports_external.number().int().min(0).max(100).optional(),
|
|
15033
|
-
dailyMasteredUnits: exports_external.number().int().positive().optional()
|
|
15034
|
-
});
|
|
15109
|
+
dailyXp: exports_external.number().int().positive().meta({ description: "Target XP to earn per day" }).optional(),
|
|
15110
|
+
dailyLessons: exports_external.number().int().positive().meta({ description: "Target lessons to complete per day" }).optional(),
|
|
15111
|
+
dailyActiveMinutes: exports_external.number().int().positive().meta({ description: "Target active learning minutes per day" }).optional(),
|
|
15112
|
+
dailyAccuracy: exports_external.number().int().min(0).max(100).meta({ description: "Target accuracy percentage (0-100)" }).optional(),
|
|
15113
|
+
dailyMasteredUnits: exports_external.number().int().positive().meta({ description: "Target units to master per day" }).optional()
|
|
15114
|
+
}).meta({ id: "CourseGoals", description: "Daily learning goals for a course" });
|
|
15035
15115
|
var CourseMetrics = exports_external.object({
|
|
15036
|
-
totalXp: exports_external.number().int().positive().optional(),
|
|
15037
|
-
totalLessons: exports_external.number().int().positive().optional(),
|
|
15038
|
-
totalGrades: exports_external.number().int().positive().optional()
|
|
15039
|
-
});
|
|
15116
|
+
totalXp: exports_external.number().int().positive().meta({ description: "Total XP available in the course" }).optional(),
|
|
15117
|
+
totalLessons: exports_external.number().int().positive().meta({ description: "Total number of lessons/activities" }).optional(),
|
|
15118
|
+
totalGrades: exports_external.number().int().positive().meta({ description: "Total grade levels covered" }).optional()
|
|
15119
|
+
}).meta({ id: "CourseMetrics", description: "Aggregate metrics for a course" });
|
|
15040
15120
|
var CourseMetadata = exports_external.object({
|
|
15041
15121
|
courseType: CourseType.optional(),
|
|
15042
|
-
isSupplemental: exports_external.boolean().optional(),
|
|
15043
|
-
isCustom: exports_external.boolean().optional(),
|
|
15122
|
+
isSupplemental: exports_external.boolean().meta({ description: "Whether this is supplemental to a base course" }).optional(),
|
|
15123
|
+
isCustom: exports_external.boolean().meta({ description: "Whether this is a custom course for an individual student" }).optional(),
|
|
15044
15124
|
publishStatus: PublishStatus.optional(),
|
|
15045
|
-
contactEmail: exports_external.email().optional(),
|
|
15046
|
-
primaryApp: exports_external.string().optional(),
|
|
15125
|
+
contactEmail: exports_external.email().meta({ description: "Contact email for course issues" }).optional(),
|
|
15126
|
+
primaryApp: exports_external.string().meta({ description: "Primary application identifier" }).optional(),
|
|
15047
15127
|
goals: CourseGoals.optional(),
|
|
15048
15128
|
metrics: CourseMetrics.optional()
|
|
15049
|
-
});
|
|
15129
|
+
}).meta({ id: "CourseMetadata", description: "Course metadata (matches API metadata object)" });
|
|
15050
15130
|
var CourseDefaults = exports_external.object({
|
|
15051
|
-
courseCode: exports_external.string().optional(),
|
|
15052
|
-
level: exports_external.string().optional(),
|
|
15131
|
+
courseCode: exports_external.string().meta({ description: "Course code (e.g., 'MATH101')" }).optional(),
|
|
15132
|
+
level: exports_external.string().meta({ description: "Course level (e.g., 'AP', 'Honors')" }).optional(),
|
|
15133
|
+
metadata: CourseMetadata.optional()
|
|
15134
|
+
}).meta({
|
|
15135
|
+
id: "CourseDefaults",
|
|
15136
|
+
description: "Default properties that apply to all courses unless overridden"
|
|
15137
|
+
});
|
|
15138
|
+
var CourseEnvOverrides = exports_external.object({
|
|
15139
|
+
level: exports_external.string().meta({ description: "Course level for this environment" }).optional(),
|
|
15140
|
+
sensor: exports_external.url().meta({ description: "Caliper sensor endpoint URL for this environment" }).optional(),
|
|
15141
|
+
launchUrl: exports_external.url().meta({ description: "LTI launch URL for this environment" }).optional(),
|
|
15053
15142
|
metadata: CourseMetadata.optional()
|
|
15143
|
+
}).meta({
|
|
15144
|
+
id: "CourseEnvOverrides",
|
|
15145
|
+
description: "Environment-specific course overrides (non-identity fields)"
|
|
15054
15146
|
});
|
|
15147
|
+
var CourseOverrides = exports_external.object({
|
|
15148
|
+
staging: CourseEnvOverrides.meta({
|
|
15149
|
+
description: "Overrides for staging environment"
|
|
15150
|
+
}).optional(),
|
|
15151
|
+
production: CourseEnvOverrides.meta({
|
|
15152
|
+
description: "Overrides for production environment"
|
|
15153
|
+
}).optional()
|
|
15154
|
+
}).meta({ id: "CourseOverrides", description: "Per-environment course overrides" });
|
|
15055
15155
|
var CourseConfig = CourseDefaults.extend({
|
|
15056
|
-
subject: TimebackSubject,
|
|
15057
|
-
grade: TimebackGrade
|
|
15058
|
-
|
|
15156
|
+
subject: TimebackSubject.meta({ description: "Subject area for this course" }),
|
|
15157
|
+
grade: TimebackGrade.meta({
|
|
15158
|
+
description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
|
|
15159
|
+
}).optional(),
|
|
15160
|
+
ids: CourseIds.nullable().optional(),
|
|
15161
|
+
sensor: exports_external.url().meta({ description: "Caliper sensor endpoint URL for this course" }).optional(),
|
|
15162
|
+
launchUrl: exports_external.url().meta({ description: "LTI launch URL for this course" }).optional(),
|
|
15163
|
+
overrides: CourseOverrides.optional()
|
|
15164
|
+
}).meta({
|
|
15165
|
+
id: "CourseConfig",
|
|
15166
|
+
description: "Configuration for a single course. Must have either grade or courseCode (or both)."
|
|
15059
15167
|
});
|
|
15060
15168
|
var TimebackConfig = exports_external.object({
|
|
15061
|
-
|
|
15062
|
-
|
|
15063
|
-
|
|
15064
|
-
|
|
15169
|
+
$schema: exports_external.string().meta({ description: "JSON Schema reference for editor support" }).optional(),
|
|
15170
|
+
name: exports_external.string().min(1, "App name is required").meta({ description: "Display name for your app" }),
|
|
15171
|
+
defaults: CourseDefaults.meta({
|
|
15172
|
+
description: "Default properties applied to all courses"
|
|
15173
|
+
}).optional(),
|
|
15174
|
+
courses: exports_external.array(CourseConfig).min(1, "At least one course is required").meta({ description: "Courses available in this app" }),
|
|
15175
|
+
sensor: exports_external.url().meta({ description: "Default Caliper sensor endpoint URL for all courses" }).optional(),
|
|
15176
|
+
launchUrl: exports_external.url().meta({ description: "Default LTI launch URL for all courses" }).optional()
|
|
15177
|
+
}).meta({
|
|
15178
|
+
id: "TimebackConfig",
|
|
15179
|
+
title: "Timeback Config",
|
|
15180
|
+
description: "Configuration schema for timeback.config.json files"
|
|
15181
|
+
}).refine((config2) => {
|
|
15182
|
+
return config2.courses.every((c) => c.grade !== undefined || c.courseCode !== undefined);
|
|
15183
|
+
}, {
|
|
15184
|
+
message: "Each course must have either a grade or a courseCode",
|
|
15185
|
+
path: ["courses"]
|
|
15186
|
+
}).refine((config2) => {
|
|
15187
|
+
const withGrade = config2.courses.filter((c) => c.grade !== undefined);
|
|
15188
|
+
const keys = withGrade.map((c) => `${c.subject}:${c.grade}`);
|
|
15189
|
+
return new Set(keys).size === keys.length;
|
|
15190
|
+
}, {
|
|
15191
|
+
message: "Duplicate (subject, grade) pair found; each must be unique",
|
|
15192
|
+
path: ["courses"]
|
|
15193
|
+
}).refine((config2) => {
|
|
15194
|
+
const withCode = config2.courses.filter((c) => c.courseCode !== undefined);
|
|
15195
|
+
const codes = withCode.map((c) => c.courseCode);
|
|
15196
|
+
return new Set(codes).size === codes.length;
|
|
15197
|
+
}, {
|
|
15198
|
+
message: "Duplicate courseCode found; each must be unique",
|
|
15199
|
+
path: ["courses"]
|
|
15200
|
+
}).refine((config2) => {
|
|
15201
|
+
return config2.courses.every((c) => {
|
|
15202
|
+
if (c.sensor !== undefined || config2.sensor !== undefined) {
|
|
15203
|
+
return true;
|
|
15204
|
+
}
|
|
15205
|
+
const launchUrls = [
|
|
15206
|
+
c.launchUrl,
|
|
15207
|
+
config2.launchUrl,
|
|
15208
|
+
c.overrides?.staging?.launchUrl,
|
|
15209
|
+
c.overrides?.production?.launchUrl
|
|
15210
|
+
].filter(Boolean);
|
|
15211
|
+
return launchUrls.length > 0;
|
|
15212
|
+
});
|
|
15213
|
+
}, {
|
|
15214
|
+
message: "Each course must have an effective sensor. Either set `sensor` explicitly (top-level or per-course), or provide a `launchUrl` so sensor can be derived from its origin.",
|
|
15215
|
+
path: ["courses"]
|
|
15065
15216
|
});
|
|
15066
|
-
var EdubridgeDateString =
|
|
15217
|
+
var EdubridgeDateString = IsoDateTimeString;
|
|
15067
15218
|
var EduBridgeEnrollment = exports_external.object({
|
|
15068
15219
|
id: exports_external.string(),
|
|
15069
15220
|
role: exports_external.string(),
|
|
@@ -15127,13 +15278,11 @@ var EmailOrStudentId = exports_external.object({
|
|
|
15127
15278
|
});
|
|
15128
15279
|
var SubjectTrackInput = exports_external.object({
|
|
15129
15280
|
subject: NonEmptyString,
|
|
15130
|
-
|
|
15131
|
-
|
|
15132
|
-
|
|
15133
|
-
});
|
|
15134
|
-
var SubjectTrackUpsertInput = SubjectTrackInput.extend({
|
|
15135
|
-
id: NonEmptyString
|
|
15281
|
+
grade: NonEmptyString,
|
|
15282
|
+
courseId: NonEmptyString,
|
|
15283
|
+
orgSourcedId: NonEmptyString.optional()
|
|
15136
15284
|
});
|
|
15285
|
+
var SubjectTrackUpsertInput = SubjectTrackInput;
|
|
15137
15286
|
var EdubridgeListEnrollmentsParams = exports_external.object({
|
|
15138
15287
|
userId: NonEmptyString
|
|
15139
15288
|
});
|
|
@@ -15310,20 +15459,45 @@ var OneRosterScoreScaleCreateInput = exports_external.object({
|
|
|
15310
15459
|
}).strict();
|
|
15311
15460
|
var OneRosterAssessmentLineItemCreateInput = exports_external.object({
|
|
15312
15461
|
sourcedId: NonEmptyString2.optional(),
|
|
15462
|
+
status: Status.optional(),
|
|
15463
|
+
dateLastModified: IsoDateTimeString.optional(),
|
|
15313
15464
|
title: NonEmptyString2.describe("title must be a non-empty string"),
|
|
15314
|
-
|
|
15315
|
-
|
|
15316
|
-
|
|
15317
|
-
|
|
15318
|
-
|
|
15319
|
-
|
|
15465
|
+
description: exports_external.string().nullable().optional(),
|
|
15466
|
+
class: Ref.nullable().optional(),
|
|
15467
|
+
parentAssessmentLineItem: Ref.nullable().optional(),
|
|
15468
|
+
scoreScale: Ref.nullable().optional(),
|
|
15469
|
+
resultValueMin: exports_external.number().nullable().optional(),
|
|
15470
|
+
resultValueMax: exports_external.number().nullable().optional(),
|
|
15471
|
+
component: Ref.nullable().optional(),
|
|
15472
|
+
componentResource: Ref.nullable().optional(),
|
|
15473
|
+
learningObjectiveSet: exports_external.array(exports_external.object({
|
|
15474
|
+
source: exports_external.string(),
|
|
15475
|
+
learningObjectiveIds: exports_external.array(exports_external.string())
|
|
15476
|
+
})).optional().nullable(),
|
|
15477
|
+
course: Ref.nullable().optional(),
|
|
15320
15478
|
metadata: Metadata
|
|
15321
15479
|
}).strict();
|
|
15480
|
+
var LearningObjectiveResult = exports_external.object({
|
|
15481
|
+
learningObjectiveId: exports_external.string(),
|
|
15482
|
+
score: exports_external.number().optional(),
|
|
15483
|
+
textScore: exports_external.string().optional()
|
|
15484
|
+
});
|
|
15485
|
+
var LearningObjectiveScoreSetSchema = exports_external.array(exports_external.object({
|
|
15486
|
+
source: exports_external.string(),
|
|
15487
|
+
learningObjectiveResults: exports_external.array(LearningObjectiveResult)
|
|
15488
|
+
}));
|
|
15322
15489
|
var OneRosterAssessmentResultCreateInput = exports_external.object({
|
|
15323
15490
|
sourcedId: NonEmptyString2.optional(),
|
|
15324
|
-
|
|
15491
|
+
status: Status.optional(),
|
|
15492
|
+
dateLastModified: IsoDateTimeString.optional(),
|
|
15493
|
+
metadata: Metadata,
|
|
15494
|
+
assessmentLineItem: Ref,
|
|
15325
15495
|
student: Ref,
|
|
15326
|
-
|
|
15496
|
+
score: exports_external.number().nullable().optional(),
|
|
15497
|
+
textScore: exports_external.string().nullable().optional(),
|
|
15498
|
+
scoreDate: exports_external.string().datetime(),
|
|
15499
|
+
scoreScale: Ref.nullable().optional(),
|
|
15500
|
+
scorePercentile: exports_external.number().nullable().optional(),
|
|
15327
15501
|
scoreStatus: exports_external.enum([
|
|
15328
15502
|
"exempt",
|
|
15329
15503
|
"fully graded",
|
|
@@ -15331,9 +15505,12 @@ var OneRosterAssessmentResultCreateInput = exports_external.object({
|
|
|
15331
15505
|
"partially graded",
|
|
15332
15506
|
"submitted"
|
|
15333
15507
|
]),
|
|
15334
|
-
|
|
15335
|
-
|
|
15336
|
-
|
|
15508
|
+
comment: exports_external.string().nullable().optional(),
|
|
15509
|
+
learningObjectiveSet: LearningObjectiveScoreSetSchema.nullable().optional(),
|
|
15510
|
+
inProgress: exports_external.string().nullable().optional(),
|
|
15511
|
+
incomplete: exports_external.string().nullable().optional(),
|
|
15512
|
+
late: exports_external.string().nullable().optional(),
|
|
15513
|
+
missing: exports_external.string().nullable().optional()
|
|
15337
15514
|
}).strict();
|
|
15338
15515
|
var OneRosterOrgCreateInput = exports_external.object({
|
|
15339
15516
|
sourcedId: NonEmptyString2.optional(),
|
|
@@ -15401,6 +15578,75 @@ var OneRosterCredentialInput = exports_external.object({
|
|
|
15401
15578
|
var OneRosterDemographicsCreateInput = exports_external.object({
|
|
15402
15579
|
sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string")
|
|
15403
15580
|
}).loose();
|
|
15581
|
+
var CommonResourceMetadataSchema = exports_external.object({
|
|
15582
|
+
type: ResourceType,
|
|
15583
|
+
subject: TimebackSubject.nullish(),
|
|
15584
|
+
grades: exports_external.array(TimebackGrade).nullish(),
|
|
15585
|
+
language: exports_external.string().nullish(),
|
|
15586
|
+
xp: exports_external.number().nullish(),
|
|
15587
|
+
url: exports_external.url().nullish(),
|
|
15588
|
+
keywords: exports_external.array(exports_external.string()).nullish(),
|
|
15589
|
+
learningObjectiveSet: LearningObjectiveSetSchema.nullish(),
|
|
15590
|
+
lessonType: exports_external.string().nullish()
|
|
15591
|
+
}).passthrough();
|
|
15592
|
+
var QtiMetadataSchema = CommonResourceMetadataSchema.extend({
|
|
15593
|
+
type: exports_external.literal("qti"),
|
|
15594
|
+
subType: QtiSubType,
|
|
15595
|
+
questionType: QuestionType.optional(),
|
|
15596
|
+
difficulty: Difficulty.optional()
|
|
15597
|
+
});
|
|
15598
|
+
var TextMetadataSchema = CommonResourceMetadataSchema.extend({
|
|
15599
|
+
type: exports_external.literal("text"),
|
|
15600
|
+
format: exports_external.string(),
|
|
15601
|
+
author: exports_external.string().optional(),
|
|
15602
|
+
pageCount: exports_external.number().optional()
|
|
15603
|
+
});
|
|
15604
|
+
var AudioMetadataSchema = CommonResourceMetadataSchema.extend({
|
|
15605
|
+
type: exports_external.literal("audio"),
|
|
15606
|
+
duration: exports_external.string().regex(/^\d{2}:\d{2}:\d{2}(\.\d{2})?$/).optional(),
|
|
15607
|
+
format: exports_external.string(),
|
|
15608
|
+
speaker: exports_external.string().optional()
|
|
15609
|
+
});
|
|
15610
|
+
var VideoMetadataSchema = CommonResourceMetadataSchema.extend({
|
|
15611
|
+
type: exports_external.literal("video"),
|
|
15612
|
+
duration: exports_external.string().regex(/^\d{2}:\d{2}:\d{2}(\.\d{2})?$/).optional(),
|
|
15613
|
+
captionsAvailable: exports_external.boolean().optional(),
|
|
15614
|
+
format: exports_external.string()
|
|
15615
|
+
});
|
|
15616
|
+
var InteractiveMetadataSchema = CommonResourceMetadataSchema.extend({
|
|
15617
|
+
type: exports_external.literal("interactive"),
|
|
15618
|
+
launchUrl: exports_external.url().optional(),
|
|
15619
|
+
toolProvider: exports_external.string().optional(),
|
|
15620
|
+
instructionalMethod: exports_external.string().optional(),
|
|
15621
|
+
courseIdOnFail: exports_external.string().nullable().optional(),
|
|
15622
|
+
fail_fast: FastFailConfigSchema
|
|
15623
|
+
});
|
|
15624
|
+
var VisualMetadataSchema = CommonResourceMetadataSchema.extend({
|
|
15625
|
+
type: exports_external.literal("visual"),
|
|
15626
|
+
format: exports_external.string(),
|
|
15627
|
+
resolution: exports_external.string().optional()
|
|
15628
|
+
});
|
|
15629
|
+
var CourseMaterialMetadataSchema = CommonResourceMetadataSchema.extend({
|
|
15630
|
+
type: exports_external.literal("course-material"),
|
|
15631
|
+
subType: CourseMaterialSubType,
|
|
15632
|
+
author: exports_external.string().optional(),
|
|
15633
|
+
format: exports_external.string(),
|
|
15634
|
+
instructionalMethod: exports_external.string().optional()
|
|
15635
|
+
});
|
|
15636
|
+
var AssessmentBankMetadataSchema = CommonResourceMetadataSchema.extend({
|
|
15637
|
+
type: exports_external.literal("assessment-bank"),
|
|
15638
|
+
resources: exports_external.array(exports_external.string())
|
|
15639
|
+
});
|
|
15640
|
+
var ResourceMetadataSchema = exports_external.discriminatedUnion("type", [
|
|
15641
|
+
QtiMetadataSchema,
|
|
15642
|
+
TextMetadataSchema,
|
|
15643
|
+
AudioMetadataSchema,
|
|
15644
|
+
VideoMetadataSchema,
|
|
15645
|
+
InteractiveMetadataSchema,
|
|
15646
|
+
VisualMetadataSchema,
|
|
15647
|
+
CourseMaterialMetadataSchema,
|
|
15648
|
+
AssessmentBankMetadataSchema
|
|
15649
|
+
]);
|
|
15404
15650
|
var OneRosterResourceCreateInput = exports_external.object({
|
|
15405
15651
|
sourcedId: NonEmptyString2.optional(),
|
|
15406
15652
|
title: NonEmptyString2.describe("title must be a non-empty string"),
|
|
@@ -15410,7 +15656,7 @@ var OneRosterResourceCreateInput = exports_external.object({
|
|
|
15410
15656
|
vendorId: exports_external.string().optional(),
|
|
15411
15657
|
applicationId: exports_external.string().optional(),
|
|
15412
15658
|
status: Status.optional(),
|
|
15413
|
-
metadata:
|
|
15659
|
+
metadata: ResourceMetadataSchema.nullable().optional()
|
|
15414
15660
|
}).strict();
|
|
15415
15661
|
var CourseStructureItem = exports_external.object({
|
|
15416
15662
|
url: NonEmptyString2.describe("courseStructure.url must be a non-empty string"),
|
|
@@ -15435,6 +15681,267 @@ var OneRosterBulkResultItem = exports_external.object({
|
|
|
15435
15681
|
student: Ref
|
|
15436
15682
|
}).loose();
|
|
15437
15683
|
var OneRosterBulkResultsInput = exports_external.array(OneRosterBulkResultItem).min(1, "results must have at least one item");
|
|
15684
|
+
var NonEmptyString3 = exports_external.string().trim().min(1);
|
|
15685
|
+
var ToolProvider = exports_external.enum(["edulastic", "mastery-track"]);
|
|
15686
|
+
var LessonTypeRequired = exports_external.enum([
|
|
15687
|
+
"powerpath-100",
|
|
15688
|
+
"quiz",
|
|
15689
|
+
"test-out",
|
|
15690
|
+
"placement",
|
|
15691
|
+
"unit-test",
|
|
15692
|
+
"alpha-read-article"
|
|
15693
|
+
]);
|
|
15694
|
+
var GradeArray = exports_external.array(TimebackGrade);
|
|
15695
|
+
var ResourceMetadata = exports_external.record(exports_external.string(), exports_external.unknown()).optional();
|
|
15696
|
+
var ExternalTestBase = exports_external.object({
|
|
15697
|
+
courseId: NonEmptyString3,
|
|
15698
|
+
lessonTitle: NonEmptyString3.optional(),
|
|
15699
|
+
launchUrl: exports_external.url().optional(),
|
|
15700
|
+
toolProvider: ToolProvider,
|
|
15701
|
+
unitTitle: NonEmptyString3.optional(),
|
|
15702
|
+
courseComponentSourcedId: NonEmptyString3.optional(),
|
|
15703
|
+
vendorId: NonEmptyString3.optional(),
|
|
15704
|
+
description: NonEmptyString3.optional(),
|
|
15705
|
+
resourceMetadata: ResourceMetadata.nullable().optional(),
|
|
15706
|
+
grades: GradeArray
|
|
15707
|
+
});
|
|
15708
|
+
var ExternalTestOut = ExternalTestBase.extend({
|
|
15709
|
+
lessonType: exports_external.literal("test-out"),
|
|
15710
|
+
xp: exports_external.number()
|
|
15711
|
+
});
|
|
15712
|
+
var ExternalPlacement = ExternalTestBase.extend({
|
|
15713
|
+
lessonType: exports_external.literal("placement"),
|
|
15714
|
+
courseIdOnFail: NonEmptyString3.optional(),
|
|
15715
|
+
xp: exports_external.number().optional()
|
|
15716
|
+
});
|
|
15717
|
+
var InternalTestBase = exports_external.object({
|
|
15718
|
+
courseId: NonEmptyString3,
|
|
15719
|
+
lessonType: LessonTypeRequired,
|
|
15720
|
+
lessonTitle: NonEmptyString3.optional(),
|
|
15721
|
+
unitTitle: NonEmptyString3.optional(),
|
|
15722
|
+
courseComponentSourcedId: NonEmptyString3.optional(),
|
|
15723
|
+
resourceMetadata: ResourceMetadata.nullable().optional(),
|
|
15724
|
+
xp: exports_external.number().optional(),
|
|
15725
|
+
grades: GradeArray.optional(),
|
|
15726
|
+
courseIdOnFail: NonEmptyString3.optional()
|
|
15727
|
+
});
|
|
15728
|
+
var PowerPathCreateInternalTestInput = exports_external.union([
|
|
15729
|
+
InternalTestBase.extend({
|
|
15730
|
+
testType: exports_external.literal("qti"),
|
|
15731
|
+
qti: exports_external.object({
|
|
15732
|
+
url: exports_external.url(),
|
|
15733
|
+
title: NonEmptyString3.optional(),
|
|
15734
|
+
metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
|
|
15735
|
+
})
|
|
15736
|
+
}),
|
|
15737
|
+
InternalTestBase.extend({
|
|
15738
|
+
testType: exports_external.literal("assessment-bank"),
|
|
15739
|
+
assessmentBank: exports_external.object({
|
|
15740
|
+
resources: exports_external.array(exports_external.object({
|
|
15741
|
+
url: exports_external.url(),
|
|
15742
|
+
title: NonEmptyString3.optional(),
|
|
15743
|
+
metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
|
|
15744
|
+
}))
|
|
15745
|
+
})
|
|
15746
|
+
})
|
|
15747
|
+
]);
|
|
15748
|
+
var PowerPathCreateNewAttemptInput = exports_external.object({
|
|
15749
|
+
student: NonEmptyString3,
|
|
15750
|
+
lesson: NonEmptyString3
|
|
15751
|
+
});
|
|
15752
|
+
var PowerPathFinalStudentAssessmentResponseInput = exports_external.object({
|
|
15753
|
+
student: NonEmptyString3,
|
|
15754
|
+
lesson: NonEmptyString3
|
|
15755
|
+
});
|
|
15756
|
+
var PowerPathLessonPlansCreateInput = exports_external.object({
|
|
15757
|
+
courseId: NonEmptyString3,
|
|
15758
|
+
userId: NonEmptyString3,
|
|
15759
|
+
classId: NonEmptyString3.optional()
|
|
15760
|
+
});
|
|
15761
|
+
var LessonPlanTarget = exports_external.object({
|
|
15762
|
+
type: exports_external.enum(["component", "resource"]),
|
|
15763
|
+
id: NonEmptyString3
|
|
15764
|
+
});
|
|
15765
|
+
var PowerPathLessonPlanOperationInput = exports_external.union([
|
|
15766
|
+
exports_external.object({
|
|
15767
|
+
type: exports_external.literal("set-skipped"),
|
|
15768
|
+
payload: exports_external.object({
|
|
15769
|
+
target: LessonPlanTarget,
|
|
15770
|
+
value: exports_external.boolean()
|
|
15771
|
+
})
|
|
15772
|
+
}),
|
|
15773
|
+
exports_external.object({
|
|
15774
|
+
type: exports_external.literal("add-custom-resource"),
|
|
15775
|
+
payload: exports_external.object({
|
|
15776
|
+
resource_id: NonEmptyString3,
|
|
15777
|
+
parent_component_id: NonEmptyString3,
|
|
15778
|
+
skipped: exports_external.boolean().optional()
|
|
15779
|
+
})
|
|
15780
|
+
}),
|
|
15781
|
+
exports_external.object({
|
|
15782
|
+
type: exports_external.literal("move-item-before"),
|
|
15783
|
+
payload: exports_external.object({
|
|
15784
|
+
target: LessonPlanTarget,
|
|
15785
|
+
reference_id: NonEmptyString3
|
|
15786
|
+
})
|
|
15787
|
+
}),
|
|
15788
|
+
exports_external.object({
|
|
15789
|
+
type: exports_external.literal("move-item-after"),
|
|
15790
|
+
payload: exports_external.object({
|
|
15791
|
+
target: LessonPlanTarget,
|
|
15792
|
+
reference_id: NonEmptyString3
|
|
15793
|
+
})
|
|
15794
|
+
}),
|
|
15795
|
+
exports_external.object({
|
|
15796
|
+
type: exports_external.literal("move-item-to-start"),
|
|
15797
|
+
payload: exports_external.object({
|
|
15798
|
+
target: LessonPlanTarget
|
|
15799
|
+
})
|
|
15800
|
+
}),
|
|
15801
|
+
exports_external.object({
|
|
15802
|
+
type: exports_external.literal("move-item-to-end"),
|
|
15803
|
+
payload: exports_external.object({
|
|
15804
|
+
target: LessonPlanTarget
|
|
15805
|
+
})
|
|
15806
|
+
}),
|
|
15807
|
+
exports_external.object({
|
|
15808
|
+
type: exports_external.literal("change-item-parent"),
|
|
15809
|
+
payload: exports_external.object({
|
|
15810
|
+
target: LessonPlanTarget,
|
|
15811
|
+
new_parent_id: NonEmptyString3,
|
|
15812
|
+
position: exports_external.enum(["start", "end"]).optional()
|
|
15813
|
+
})
|
|
15814
|
+
})
|
|
15815
|
+
]);
|
|
15816
|
+
var PowerPathLessonPlanOperationsInput = exports_external.object({
|
|
15817
|
+
operation: exports_external.array(PowerPathLessonPlanOperationInput),
|
|
15818
|
+
reason: NonEmptyString3.optional()
|
|
15819
|
+
});
|
|
15820
|
+
var PowerPathLessonPlanUpdateStudentItemResponseInput = exports_external.object({
|
|
15821
|
+
studentId: NonEmptyString3,
|
|
15822
|
+
componentResourceId: NonEmptyString3,
|
|
15823
|
+
result: exports_external.object({
|
|
15824
|
+
status: exports_external.enum(["active", "tobedeleted"]),
|
|
15825
|
+
metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
|
|
15826
|
+
score: exports_external.number().optional(),
|
|
15827
|
+
textScore: NonEmptyString3.optional(),
|
|
15828
|
+
scoreDate: NonEmptyString3,
|
|
15829
|
+
scorePercentile: exports_external.number().optional(),
|
|
15830
|
+
scoreStatus: ScoreStatus,
|
|
15831
|
+
comment: NonEmptyString3.optional(),
|
|
15832
|
+
learningObjectiveSet: exports_external.array(exports_external.object({
|
|
15833
|
+
source: NonEmptyString3,
|
|
15834
|
+
learningObjectiveResults: exports_external.array(exports_external.object({
|
|
15835
|
+
learningObjectiveId: NonEmptyString3,
|
|
15836
|
+
score: exports_external.number().optional(),
|
|
15837
|
+
textScore: NonEmptyString3.optional()
|
|
15838
|
+
}))
|
|
15839
|
+
})).optional(),
|
|
15840
|
+
inProgress: NonEmptyString3.optional(),
|
|
15841
|
+
incomplete: NonEmptyString3.optional(),
|
|
15842
|
+
late: NonEmptyString3.optional(),
|
|
15843
|
+
missing: NonEmptyString3.optional()
|
|
15844
|
+
})
|
|
15845
|
+
});
|
|
15846
|
+
var PowerPathMakeExternalTestAssignmentInput = exports_external.object({
|
|
15847
|
+
student: NonEmptyString3,
|
|
15848
|
+
lesson: NonEmptyString3,
|
|
15849
|
+
applicationName: NonEmptyString3.optional(),
|
|
15850
|
+
testId: NonEmptyString3.optional(),
|
|
15851
|
+
skipCourseEnrollment: exports_external.boolean().optional()
|
|
15852
|
+
});
|
|
15853
|
+
var PowerPathPlacementResetUserPlacementInput = exports_external.object({
|
|
15854
|
+
student: NonEmptyString3,
|
|
15855
|
+
subject: TimebackSubject
|
|
15856
|
+
});
|
|
15857
|
+
var PowerPathResetAttemptInput = exports_external.object({
|
|
15858
|
+
student: NonEmptyString3,
|
|
15859
|
+
lesson: NonEmptyString3
|
|
15860
|
+
});
|
|
15861
|
+
var PowerPathScreeningResetSessionInput = exports_external.object({
|
|
15862
|
+
userId: NonEmptyString3
|
|
15863
|
+
});
|
|
15864
|
+
var PowerPathScreeningAssignTestInput = exports_external.object({
|
|
15865
|
+
userId: NonEmptyString3,
|
|
15866
|
+
subject: exports_external.enum(["Math", "Reading", "Language", "Science"])
|
|
15867
|
+
});
|
|
15868
|
+
var PowerPathTestAssignmentsCreateInput = exports_external.object({
|
|
15869
|
+
student: NonEmptyString3,
|
|
15870
|
+
subject: TimebackSubject,
|
|
15871
|
+
grade: TimebackGrade,
|
|
15872
|
+
testName: NonEmptyString3.optional()
|
|
15873
|
+
});
|
|
15874
|
+
var PowerPathTestAssignmentsUpdateInput = exports_external.object({
|
|
15875
|
+
testName: NonEmptyString3
|
|
15876
|
+
});
|
|
15877
|
+
var PowerPathTestAssignmentItemInput = exports_external.object({
|
|
15878
|
+
student: NonEmptyString3,
|
|
15879
|
+
subject: TimebackSubject,
|
|
15880
|
+
grade: TimebackGrade,
|
|
15881
|
+
testName: NonEmptyString3.optional()
|
|
15882
|
+
});
|
|
15883
|
+
var PowerPathTestAssignmentsBulkInput = exports_external.object({
|
|
15884
|
+
items: exports_external.array(PowerPathTestAssignmentItemInput)
|
|
15885
|
+
});
|
|
15886
|
+
var PowerPathTestAssignmentsImportInput = exports_external.object({
|
|
15887
|
+
spreadsheetUrl: exports_external.url(),
|
|
15888
|
+
sheet: NonEmptyString3
|
|
15889
|
+
});
|
|
15890
|
+
var PowerPathTestAssignmentsListParams = exports_external.object({
|
|
15891
|
+
student: NonEmptyString3,
|
|
15892
|
+
status: exports_external.enum(["assigned", "in_progress", "completed", "failed", "expired", "cancelled"]).optional(),
|
|
15893
|
+
subject: NonEmptyString3.optional(),
|
|
15894
|
+
grade: TimebackGrade.optional(),
|
|
15895
|
+
limit: exports_external.number().int().positive().max(3000).optional(),
|
|
15896
|
+
offset: exports_external.number().int().nonnegative().optional()
|
|
15897
|
+
});
|
|
15898
|
+
var PowerPathTestAssignmentsAdminParams = exports_external.object({
|
|
15899
|
+
student: NonEmptyString3.optional(),
|
|
15900
|
+
status: exports_external.enum(["assigned", "in_progress", "completed", "failed", "expired", "cancelled"]).optional(),
|
|
15901
|
+
subject: NonEmptyString3.optional(),
|
|
15902
|
+
grade: TimebackGrade.optional(),
|
|
15903
|
+
limit: exports_external.number().int().positive().max(3000).optional(),
|
|
15904
|
+
offset: exports_external.number().int().nonnegative().optional()
|
|
15905
|
+
});
|
|
15906
|
+
var PowerPathUpdateStudentQuestionResponseInput = exports_external.object({
|
|
15907
|
+
student: NonEmptyString3,
|
|
15908
|
+
question: NonEmptyString3,
|
|
15909
|
+
response: exports_external.union([NonEmptyString3, exports_external.array(NonEmptyString3)]).optional(),
|
|
15910
|
+
responses: exports_external.record(exports_external.string(), exports_external.union([NonEmptyString3, exports_external.array(NonEmptyString3)])).optional(),
|
|
15911
|
+
lesson: NonEmptyString3
|
|
15912
|
+
});
|
|
15913
|
+
var PowerPathGetAssessmentProgressParams = exports_external.object({
|
|
15914
|
+
student: NonEmptyString3,
|
|
15915
|
+
lesson: NonEmptyString3,
|
|
15916
|
+
attempt: exports_external.number().int().positive().optional()
|
|
15917
|
+
});
|
|
15918
|
+
var PowerPathGetNextQuestionParams = exports_external.object({
|
|
15919
|
+
student: NonEmptyString3,
|
|
15920
|
+
lesson: NonEmptyString3
|
|
15921
|
+
});
|
|
15922
|
+
var PowerPathGetAttemptsParams = exports_external.object({
|
|
15923
|
+
student: NonEmptyString3,
|
|
15924
|
+
lesson: NonEmptyString3
|
|
15925
|
+
});
|
|
15926
|
+
var PowerPathTestOutParams = exports_external.object({
|
|
15927
|
+
student: NonEmptyString3,
|
|
15928
|
+
lesson: NonEmptyString3.optional(),
|
|
15929
|
+
finalized: exports_external.boolean().optional(),
|
|
15930
|
+
toolProvider: NonEmptyString3.optional(),
|
|
15931
|
+
attempt: exports_external.number().int().positive().optional()
|
|
15932
|
+
});
|
|
15933
|
+
var PowerPathImportExternalTestAssignmentResultsParams = exports_external.object({
|
|
15934
|
+
student: NonEmptyString3,
|
|
15935
|
+
lesson: NonEmptyString3,
|
|
15936
|
+
applicationName: NonEmptyString3.optional()
|
|
15937
|
+
});
|
|
15938
|
+
var PowerPathPlacementQueryParams = exports_external.object({
|
|
15939
|
+
student: NonEmptyString3,
|
|
15940
|
+
subject: TimebackSubject
|
|
15941
|
+
});
|
|
15942
|
+
var PowerPathSyllabusQueryParams = exports_external.object({
|
|
15943
|
+
status: exports_external.enum(["active", "tobedeleted"]).optional()
|
|
15944
|
+
});
|
|
15438
15945
|
var QtiAssessmentItemType = exports_external.enum([
|
|
15439
15946
|
"choice",
|
|
15440
15947
|
"text-entry",
|