@timeback/powerpath 0.2.2-beta.20260331191116 → 0.2.2

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.
@@ -1,1184 +1,2 @@
1
- /**
2
- * PowerPath Base Types
3
- *
4
- * Common types and enums for PowerPath API responses.
5
- */
6
-
7
- // ═══════════════════════════════════════════════════════════════════════════════
8
- // ENUMS
9
- // ═══════════════════════════════════════════════════════════════════════════════
10
-
11
- /**
12
- * Test assignment status values.
13
- */
14
- type TestAssignmentStatus =
15
- | 'assigned'
16
- | 'in_progress'
17
- | 'completed'
18
- | 'failed'
19
- | 'expired'
20
- | 'cancelled'
21
-
22
- /**
23
- * Lesson types for PowerPath assessments.
24
- */
25
- type PowerPathLessonType =
26
- | 'powerpath-100'
27
- | 'quiz'
28
- | 'test-out'
29
- | 'placement'
30
- | 'unit-test'
31
- | 'alpha-read-article'
32
-
33
- /**
34
- * Lesson types that behave like quizzes (static tests with finalization).
35
- *
36
- * These types can be finalized via `finalStudentAssessmentResponse`,
37
- * return score 0 while not finalized, and support both internal and external tests.
38
- */
39
- type QuizLikeLessonType = 'quiz' | 'test-out' | 'placement' | 'unit-test'
40
-
41
- /**
42
- * Lesson types that support external test assignment via third-party tools.
43
- *
44
- * These types can use `makeExternalTestAssignment` and
45
- * `importExternalTestAssignmentResults`.
46
- */
47
- type ExternalTestCapableLessonType = 'test-out' | 'placement' | 'unit-test'
48
-
49
- /**
50
- * Score status values for assessment attempts.
51
- */
52
- type ScoreStatus =
53
- | 'exempt'
54
- | 'fully graded'
55
- | 'not submitted'
56
- | 'partially graded'
57
- | 'submitted'
58
-
59
- /**
60
- * Question difficulty levels.
61
- */
62
- type PowerPathQuestionDifficulty = 'easy' | 'medium' | 'hard'
63
-
64
- /**
65
- * Lesson plan operation types.
66
- */
67
- type LessonPlanOperationType =
68
- | 'set-skipped'
69
- | 'add-custom-resource'
70
- | 'move-item-before'
71
- | 'move-item-after'
72
- | 'move-item-to-start'
73
- | 'move-item-to-end'
74
- | 'change-item-parent'
75
-
76
- // ═══════════════════════════════════════════════════════════════════════════════
77
- // PAGINATION
78
- // ═══════════════════════════════════════════════════════════════════════════════
79
-
80
- /**
81
- * Pagination metadata from PowerPath list responses.
82
- */
83
- interface PaginationMeta {
84
- /** Total items across all pages */
85
- totalCount: number
86
- /** Total number of pages */
87
- pageCount: number
88
- /** Current page number (1-indexed) */
89
- pageNumber: number
90
- /**
91
- * Offset for the next page of results.
92
- *
93
- * This API uses offset pagination: request `offset` is the number of items to skip.
94
- * List responses also include an `offset` field; treat it as the server-provided
95
- * next offset (and fall back to `currentOffset + limit` when implementing iterators).
96
- */
97
- offset: number
98
- /** Items per page (default 100, max 3000) */
99
- limit: number
100
- }
101
-
102
- /**
103
- * PowerPath Response Types
104
- *
105
- * Entity types returned by PowerPath API endpoints.
106
- */
107
-
108
-
109
-
110
- // ═══════════════════════════════════════════════════════════════════════════════
111
- // TEST ASSIGNMENTS
112
- // ═══════════════════════════════════════════════════════════════════════════════
113
-
114
- /**
115
- * A single test assignment entity.
116
- */
117
- interface TestAssignment {
118
- sourcedId: string
119
- studentSourcedId: string
120
- studentEmail: string
121
- assignedByUserSourcedId: string | null
122
- subject: string
123
- grade: string
124
- assignmentStatus: TestAssignmentStatus
125
- testName?: string | null
126
- assignedAt?: string | null
127
- expiresAt?: string | null
128
- completedAt?: string | null
129
- resourceSourcedId?: string | null
130
- componentResourceSourcedId?: string | null
131
- }
132
-
133
- /**
134
- * List response for test assignments.
135
- */
136
- interface TestAssignmentsListResponse extends PaginationMeta {
137
- testAssignments: TestAssignment[]
138
- }
139
-
140
- /**
141
- * Result from creating a test assignment.
142
- */
143
- interface AssignmentResult {
144
- assignmentId: string
145
- lessonId: string
146
- resourceId: string
147
- }
148
-
149
- /**
150
- * Result from bulk operations.
151
- */
152
- interface BulkResult {
153
- success: boolean
154
- results: AssignmentResult[]
155
- errors: Array<{ row: number; message: string }>
156
- }
157
-
158
- // ═══════════════════════════════════════════════════════════════════════════════
159
- // QUESTIONS
160
- // ═══════════════════════════════════════════════════════════════════════════════
161
-
162
- /**
163
- * QTI content associated with a question.
164
- */
165
- interface PowerPathQuestionContent {
166
- /** The type of the question (e.g., choiceInteraction) */
167
- type?: string
168
- /** The raw XML question in QTI format */
169
- rawXml: string
170
- }
171
-
172
- /**
173
- * Result of evaluating a student's response to a question.
174
- */
175
- interface PowerPathQuestionResult {
176
- /** Score assigned considering the student's response */
177
- score: number
178
- /** Feedback — plain string from updateStudentQuestionResponse, structured object from progress/next-question responses */
179
- feedback: string | { value: string; identifier: string }
180
- /** Outcome variables from response processing (values may be strings or numbers) */
181
- outcomes?: Record<string, string | number>
182
- }
183
-
184
- /**
185
- * A question in a PowerPath test.
186
- *
187
- * Represents a question with its metadata, optional QTI content,
188
- * and (when answered) the student's response and result.
189
- */
190
- interface PowerPathTestQuestion {
191
- /** ID that represents the question in the test */
192
- id: string
193
- /** Index of the question in the test */
194
- index: number
195
- /** Title of the question */
196
- title: string
197
- /** URL of the QTI question */
198
- url: string
199
- /** Difficulty of the question */
200
- difficulty: PowerPathQuestionDifficulty
201
- /** Whether the question has been approved by a human */
202
- humanApproved?: boolean | null
203
- /** QTI content of the question */
204
- content?: PowerPathQuestionContent
205
- /** Student's response (single value or array) */
206
- response?: string | string[]
207
- /** Student's responses keyed by response identifier */
208
- responses?: Record<string, string | string[]>
209
- /** Whether the student's response is correct */
210
- correct?: boolean
211
- /** Result of evaluating the response */
212
- result?: PowerPathQuestionResult
213
- /** sourcedId of the AssessmentResult for this question attempt */
214
- resultId?: string
215
- /** Learning objective IDs associated with the question */
216
- learningObjectives?: string[]
217
- }
218
-
219
- // ═══════════════════════════════════════════════════════════════════════════════
220
- // ASSESSMENTS
221
- // ═══════════════════════════════════════════════════════════════════════════════
222
-
223
- /**
224
- * Result from creating an external test (test-out or placement).
225
- */
226
- interface ExternalTestCreateResponse {
227
- /** Type of lesson created. */
228
- lessonType: PowerPathLessonType
229
- /** The sourcedId of the created lesson (ComponentResource). */
230
- lessonId: string
231
- /** The sourcedId of the component (unit) containing the test. */
232
- courseComponentId: string
233
- /** The sourcedId of the resource representing the external test. */
234
- resourceId: string
235
- /** URL to the external test system. */
236
- launchUrl?: string
237
- /** The tool provider identifier (e.g. 'edulastic', 'mastery-track'). */
238
- toolProvider: string
239
- /** The ID of the test in the vendor's system. */
240
- vendorId?: string
241
- /** The courseId to enroll the student in on failure (placement tests). */
242
- courseIdOnFail?: string | null
243
- /** Grade levels for the resource. */
244
- grades?: Array<number | string>
245
- }
246
-
247
- /**
248
- * Result from creating an internal test (QTI or assessment-bank).
249
- */
250
- interface InternalTestCreateResponse {
251
- /** Type of lesson created. */
252
- lessonType: PowerPathLessonType
253
- /** The internal test type. */
254
- testType: 'qti' | 'assessment-bank'
255
- /** The sourcedId of the created lesson (ComponentResource). */
256
- lessonId: string
257
- /** The sourcedId of the component (unit) containing the test. */
258
- courseComponentId: string
259
- /** The sourcedId of the main resource (parent for assessment-bank). */
260
- resourceId: string
261
- /** Child resource IDs (only for assessment-bank type). */
262
- childResourceIds?: string[]
263
- /** The courseId to enroll the student in on failure (placement tests). */
264
- courseIdOnFail?: string | null
265
- /** Grade levels for the resource. */
266
- grades?: Array<number | string>
267
- }
268
-
269
- /**
270
- * A single attempt record.
271
- *
272
- * Matches the backend `PowerPath100AttemptSchema` with full metadata
273
- * including XP, timestamps, and typed score status.
274
- */
275
- interface Attempt {
276
- /** Attempt number, or null if not yet started. */
277
- attempt: number | null
278
- /** Current score for this attempt. */
279
- score: number
280
- /** Grading status of this attempt. */
281
- scoreStatus: ScoreStatus
282
- /** XP earned in this attempt. */
283
- xp: number | null
284
- /** When this attempt was started. */
285
- startedAt: string | null
286
- /** When this attempt was completed. */
287
- completedAt: string | null
288
- }
289
-
290
- /**
291
- * Result from creating a new attempt.
292
- */
293
- interface CreateAttemptResponse {
294
- attempt: Attempt
295
- }
296
-
297
- /**
298
- * Result from getting attempts for a lesson.
299
- */
300
- interface GetAttemptsResponse {
301
- attempts: Attempt[]
302
- }
303
-
304
- /**
305
- * Result from resetting an attempt.
306
- */
307
- interface ResetAttemptResponse {
308
- success: boolean
309
- score: number
310
- }
311
-
312
- // ═══════════════════════════════════════════════════════════════════════════════
313
- // ASSESSMENT PROGRESS (getAssessmentProgress)
314
- // ═══════════════════════════════════════════════════════════════════════════════
315
-
316
- /**
317
- * Progress for a PowerPath 100 lesson.
318
- *
319
- * Uses `seenQuestions` (not `questions`) and includes remaining question counts
320
- * per difficulty level.
321
- */
322
- interface PowerPath100ProgressResponse {
323
- lessonType: 'powerpath-100'
324
- /** Remaining question counts per difficulty level */
325
- remainingQuestionsPerDifficulty: {
326
- easy: number
327
- medium: number
328
- hard: number
329
- }
330
- /** Current score for this attempt */
331
- score: number
332
- /** Questions the student has seen */
333
- seenQuestions: PowerPathTestQuestion[]
334
- /** sourcedId of the parent test AssessmentResult */
335
- testResultId?: string
336
- /** Attempt number */
337
- attempt: number
338
- /** XP earned in the lesson */
339
- xp: number | null
340
- /** Multiplier for XP */
341
- multiplier: number | null
342
- /** Accuracy of the student's attempted questions */
343
- accuracy: number
344
- /** Number of correct questions answered */
345
- correctQuestions: number
346
- /** Total number of questions in the lesson */
347
- totalQuestions: number
348
- }
349
-
350
- /**
351
- * Progress for quiz, test-out, placement, or unit-test lessons.
352
- *
353
- * Uses `questions` (not `seenQuestions`). Includes `finalized` to indicate
354
- * whether the lesson has been completed.
355
- */
356
- interface StandardProgressResponse {
357
- lessonType: 'quiz' | 'test-out' | 'placement' | 'unit-test'
358
- /** Whether the lesson has been finalized in the current attempt */
359
- finalized: boolean
360
- /** Current score for this attempt */
361
- score?: number
362
- /** Questions in the test */
363
- questions: PowerPathTestQuestion[]
364
- /** Tool provider of the lesson if external */
365
- toolProvider: string | null
366
- /** Whether auto-enrollment failed (only for finalized external tests) */
367
- enrollmentFailed?: boolean
368
- /** sourcedId of the parent test AssessmentResult */
369
- testResultId?: string
370
- /** Attempt number */
371
- attempt: number
372
- /** XP earned in the lesson */
373
- xp: number | null
374
- /** Multiplier for XP */
375
- multiplier: number | null
376
- /** Accuracy of the student's attempted questions */
377
- accuracy: number
378
- /** Number of correct questions answered */
379
- correctQuestions: number
380
- /** Total number of questions in the lesson */
381
- totalQuestions: number
382
- }
383
-
384
- /**
385
- * Result from getting assessment progress.
386
- *
387
- * Discriminated union on `lessonType`:
388
- * - `'powerpath-100'` — uses `seenQuestions` and `remainingQuestionsPerDifficulty`
389
- * - `'quiz' | 'test-out' | 'placement' | 'unit-test'` — uses `questions` and `finalized`
390
- */
391
- type GetAssessmentProgressResponse = PowerPath100ProgressResponse | StandardProgressResponse
392
-
393
- // ═══════════════════════════════════════════════════════════════════════════════
394
- // GET NEXT QUESTION (getNextQuestion)
395
- // ═══════════════════════════════════════════════════════════════════════════════
396
-
397
- /**
398
- * Result from getting the next question in a PowerPath 100 lesson.
399
- */
400
- interface GetNextQuestionResponse {
401
- /** Current PowerPath score of the student in this lesson */
402
- score: number
403
- /** The next question to present */
404
- question: PowerPathTestQuestion
405
- }
406
-
407
- // ═══════════════════════════════════════════════════════════════════════════════
408
- // UPDATE STUDENT QUESTION RESPONSE (updateStudentQuestionResponse)
409
- // ═══════════════════════════════════════════════════════════════════════════════
410
-
411
- /**
412
- * Response feedback for a student's answer.
413
- */
414
- interface ResponseResultFeedback {
415
- identifier?: string
416
- value?: string
417
- }
418
-
419
- /**
420
- * Result of processing a student's response.
421
- */
422
- interface ResponseResult {
423
- /** Whether the student's response is correct */
424
- isCorrect: boolean
425
- /** Score for this specific response (0 or 1) */
426
- score: number
427
- /** Optional feedback */
428
- feedback?: ResponseResultFeedback
429
- }
430
-
431
- /**
432
- * Result from updating a student's response in a PowerPath 100 lesson.
433
- *
434
- * Includes the updated PowerPath score, response correctness, and accuracy stats.
435
- */
436
- interface PowerPath100UpdateResponseResult {
437
- lessonType: 'powerpath-100'
438
- /** Updated PowerPath score */
439
- powerpathScore: number
440
- /** Result of processing the response */
441
- responseResult: ResponseResult
442
- /** Assessment result for the question (for debugging) */
443
- questionResult?: unknown
444
- /** Assessment result for the test (for debugging) */
445
- testResult?: unknown
446
- /** Accuracy of the student's attempted questions */
447
- accuracy: number
448
- /** Number of correct questions answered */
449
- correctQuestions: number
450
- /** Total number of questions */
451
- totalQuestions: number
452
- /** XP earned */
453
- xp: number | null
454
- /** XP multiplier */
455
- multiplier: number | null
456
- }
457
-
458
- /**
459
- * Result from updating a student's response in a quiz/test-out/placement/unit-test lesson.
460
- *
461
- * Minimal response — correctness is evaluated at finalization.
462
- */
463
- interface StandardUpdateResponseResult {
464
- lessonType: 'quiz' | 'test-out' | 'placement' | 'unit-test'
465
- /** Assessment result for the question (for debugging) */
466
- questionResult?: unknown
467
- }
468
-
469
- /**
470
- * Result from updating a student question response.
471
- *
472
- * Discriminated union on `lessonType`:
473
- * - `'powerpath-100'` — includes score, accuracy, and response correctness
474
- * - Other lesson types — minimal, evaluated at finalization
475
- */
476
- type UpdateStudentQuestionResponseResult =
477
- | PowerPath100UpdateResponseResult
478
- | StandardUpdateResponseResult
479
-
480
- // ═══════════════════════════════════════════════════════════════════════════════
481
- // FINALIZE ASSESSMENT (finalStudentAssessmentResponse)
482
- // ═══════════════════════════════════════════════════════════════════════════════
483
-
484
- /**
485
- * Result from finalizing a test assessment.
486
- *
487
- * Returned after all questions have been answered and the lesson is
488
- * evaluated. Only applicable to quiz-like lesson types (quiz, test-out,
489
- * placement, unit-test). Not applicable to `powerpath-100`.
490
- */
491
- interface FinalizeAssessmentResponse {
492
- /** Type of the lesson that was finalized (quiz-like only). */
493
- lessonType: QuizLikeLessonType
494
- /** Whether the lesson has been finalized. */
495
- finalized: boolean
496
- /** The attempt number. */
497
- attempt: number
498
- }
499
-
500
- // ═══════════════════════════════════════════════════════════════════════════════
501
- // TEST OUT (testOut)
502
- // ═══════════════════════════════════════════════════════════════════════════════
503
-
504
- /**
505
- * Result from getting the test-out lesson for a student/course.
506
- *
507
- * Returns the test-out lesson reference, finalization status,
508
- * and optional external tool credentials.
509
- */
510
- interface TestOutResponse {
511
- lessonType: 'test-out'
512
- /** ID of the test-out lesson, or null if none exists */
513
- lessonId: string | null
514
- /** Whether the test-out has been finalized in the current attempt */
515
- finalized: boolean
516
- /** Tool provider for the test-out lesson, or null if internal */
517
- toolProvider: string | null
518
- /** Attempt number */
519
- attempt?: number
520
- /** Credentials for accessing the assigned test on external tool */
521
- credentials?: {
522
- email: string
523
- password: string
524
- }
525
- /** Assignment ID on external tool for results retrieval */
526
- assignmentId?: string
527
- /** Class ID on external tool for results retrieval */
528
- classId?: string
529
- /** URL of the test on external tool */
530
- testUrl?: string
531
- /** ID of the test on external tool */
532
- testId?: string
533
- }
534
-
535
- // ═══════════════════════════════════════════════════════════════════════════════
536
- // IMPORT EXTERNAL RESULTS (importExternalTestAssignmentResults)
537
- // ═══════════════════════════════════════════════════════════════════════════════
538
-
539
- /**
540
- * Result from importing external test assignment results.
541
- *
542
- * Contains the lesson reference, finalization status, and optional
543
- * external tool credentials/assignment data.
544
- */
545
- interface ImportExternalResultsResponse {
546
- /** Lesson type (external-capable types only). */
547
- lessonType: ExternalTestCapableLessonType
548
- /** The sourcedId of the lesson (ComponentResource). */
549
- lessonId: string | null
550
- /** The tool provider for the lesson. */
551
- toolProvider: string | null
552
- /** Whether the test has been finalized in the current attempt. */
553
- finalized: boolean
554
- /** Attempt number. */
555
- attempt: number
556
- /** Credentials for accessing the assigned test on external tool. */
557
- credentials?: {
558
- email: string
559
- password: string
560
- }
561
- /** Assignment ID on external tool for results retrieval. */
562
- assignmentId?: string
563
- /** Class ID on external tool for results retrieval. */
564
- classId?: string
565
- /** URL of the test on external tool. */
566
- testUrl?: string
567
- /** ID of the test on external tool. */
568
- testId?: string
569
- }
570
-
571
- // ═══════════════════════════════════════════════════════════════════════════════
572
- // MAKE EXTERNAL TEST ASSIGNMENT (makeExternalTestAssignment)
573
- // ═══════════════════════════════════════════════════════════════════════════════
574
-
575
- /**
576
- * Result from assigning an external test to a student.
577
- *
578
- * Contains the tool provider, lesson type, attempt number, and optional
579
- * external tool credentials/assignment data.
580
- */
581
- interface MakeExternalTestAssignmentResponse {
582
- /** The tool provider (e.g. 'edulastic', 'mastery-track'). */
583
- toolProvider: string
584
- /** Lesson type (external-capable types only). */
585
- lessonType: ExternalTestCapableLessonType
586
- /** Attempt number. */
587
- attempt: number
588
- /** Credentials for accessing the assigned test on external tool. */
589
- credentials?: {
590
- email: string
591
- password: string
592
- }
593
- /** Assignment ID on external tool for results retrieval. */
594
- assignmentId?: string
595
- /** Class ID on external tool for results retrieval. */
596
- classId?: string
597
- /** URL of the test on external tool. */
598
- testUrl?: string
599
- /** ID of the test on external tool. */
600
- testId?: string
601
- }
602
-
603
- // ═══════════════════════════════════════════════════════════════════════════════
604
- // PLACEMENT
605
- // ═══════════════════════════════════════════════════════════════════════════════
606
-
607
- /**
608
- * Result from getting all placement tests.
609
- */
610
- interface GetAllPlacementTestsResponse {
611
- placementTests: unknown[]
612
- }
613
-
614
- /**
615
- * Result from getting current placement level.
616
- */
617
- interface GetCurrentLevelResponse {
618
- gradeLevel?: unknown
619
- onboarded?: boolean
620
- availableTests: number
621
- }
622
-
623
- /**
624
- * Result from getting the next placement test.
625
- */
626
- interface GetNextPlacementTestResponse {
627
- availableTests: number
628
- lesson: string
629
- }
630
-
631
- /**
632
- * Result from getting subject progress.
633
- */
634
- interface GetSubjectProgressResponse {
635
- progress: unknown[]
636
- }
637
-
638
- /**
639
- * Result from resetting placement.
640
- */
641
- interface ResetPlacementResponse {
642
- success: boolean
643
- placementResultsDeleted: number
644
- onboardingReset: boolean
645
- }
646
-
647
- // ═══════════════════════════════════════════════════════════════════════════════
648
- // SCREENING
649
- // ═══════════════════════════════════════════════════════════════════════════════
650
-
651
- /**
652
- * Result from screening getResults.
653
- * Response shape depends on MAP integration configuration.
654
- */
655
- interface ScreeningResultsResponse {
656
- [key: string]: unknown
657
- }
658
-
659
- /**
660
- * Result from screening getSession.
661
- * Response shape depends on MAP integration configuration.
662
- */
663
- interface ScreeningSessionResponse {
664
- [key: string]: unknown
665
- }
666
-
667
- /**
668
- * Result from resetting a screening session.
669
- */
670
- interface ScreeningResetSessionResponse {
671
- success?: boolean
672
- [key: string]: unknown
673
- }
674
-
675
- /**
676
- * Result from assigning a screening test.
677
- */
678
- interface ScreeningAssignTestResponse {
679
- success?: boolean
680
- [key: string]: unknown
681
- }
682
-
683
- // ═══════════════════════════════════════════════════════════════════════════════
684
- // LESSON PLANS
685
- // ═══════════════════════════════════════════════════════════════════════════════
686
-
687
- /**
688
- * Result from creating a lesson plan.
689
- */
690
- interface LessonPlanCreateResponse {
691
- lessonPlanId: string
692
- }
693
-
694
- /**
695
- * A lesson plan operation record.
696
- */
697
- interface LessonPlanOperation {
698
- id: string
699
- type: string
700
- payload?: unknown
701
- reason?: string
702
- createdAt: string
703
- sequenceNumber: number
704
- createdBy?: string
705
- }
706
-
707
- /**
708
- * Response containing lesson plan operations.
709
- */
710
- interface LessonPlanOperationsResponse {
711
- operations: LessonPlanOperation[]
712
- }
713
-
714
- /**
715
- * Result from a single lesson plan operation.
716
- */
717
- interface LessonPlanOperationResult {
718
- success: boolean
719
- message?: string
720
- operationId?: string
721
- }
722
-
723
- /**
724
- * Result from syncing lesson plan operations.
725
- */
726
- interface LessonPlanSyncResult {
727
- success: boolean
728
- message?: string
729
- operationCount: number
730
- operationResults: Array<{ success: boolean; errors?: Array<{ message: string }> }>
731
- }
732
-
733
- /**
734
- * Result from syncing a course.
735
- */
736
- interface LessonPlanCourseSyncResult {
737
- lessonPlansAffected: string[]
738
- }
739
-
740
- /**
741
- * Response containing a lesson plan.
742
- */
743
- interface LessonPlanResponse {
744
- lessonPlan: Record<string, unknown>
745
- }
746
-
747
- /**
748
- * Response containing course progress.
749
- */
750
- interface CourseProgressResponse {
751
- lineItems: Record<string, unknown>[]
752
- }
753
-
754
- /**
755
- * Result from updating student item response.
756
- */
757
- interface UpdateStudentItemResponseResult {
758
- success?: boolean
759
- [key: string]: unknown
760
- }
761
-
762
- // ═══════════════════════════════════════════════════════════════════════════════
763
- // TEST OUT (self-elected)
764
- // ═══════════════════════════════════════════════════════════════════════════════
765
-
766
- /**
767
- * Result from checking test-out eligibility for a student/subject.
768
- */
769
- interface GetTestOutEligibilityResponse {
770
- eligible: boolean
771
- reason?: string
772
- }
773
-
774
- /**
775
- * Result from creating a self-elected test-out assignment.
776
- */
777
- interface MakeExternalStudentTestOutAssignmentResponse {
778
- success: boolean
779
- data?: Record<string, unknown>
780
- }
781
-
782
- // ═══════════════════════════════════════════════════════════════════════════════
783
- // RENDER CONFIG
784
- // ═══════════════════════════════════════════════════════════════════════════════
785
-
786
- /**
787
- * Result from upserting render configs for one or more courses.
788
- */
789
- interface RenderConfigUpsertResponse {
790
- updated: string[]
791
- }
792
-
793
- /**
794
- * Render config for a single course.
795
- */
796
- interface RenderConfigGetResponse {
797
- courseId: string
798
- rendererId: string
799
- rendererUrl: string
800
- rendererVersion?: string | null
801
- suppressFeedback: boolean
802
- suppressCorrectResponse: boolean
803
- }
804
-
805
- /**
806
- * Result from deleting a render config.
807
- */
808
- interface RenderConfigDeleteResponse {
809
- deleted: string
810
- }
811
-
812
- // ═══════════════════════════════════════════════════════════════════════════════
813
- // SYLLABUS
814
- // ═══════════════════════════════════════════════════════════════════════════════
815
-
816
- /**
817
- * Response containing syllabus data.
818
- */
819
- interface SyllabusResponse {
820
- syllabus?: unknown
821
- }
822
-
823
- type input<T> = T extends {
824
- _zod: {
825
- input: any;
826
- };
827
- } ? T["_zod"]["input"] : unknown;
828
-
829
- /**
830
- * PowerPath Schemas
831
- *
832
- * Zod schemas for the PowerPath adaptive learning API.
833
- */
834
-
835
-
836
-
837
- declare const ExternalTestOut = ExternalTestBase.extend({
838
- lessonType: z.literal('test-out'),
839
- xp: z.number(),
840
- })
841
-
842
- declare const ExternalPlacement = ExternalTestBase.extend({
843
- lessonType: z.literal('placement'),
844
- courseIdOnFail: NonEmptyString.nullable().optional(),
845
- xp: z.number().optional(),
846
- })
847
-
848
- declare const PowerPathCreateExternalPlacementTestInput = ExternalPlacement
849
-
850
- declare const PowerPathCreateExternalTestOutInput = ExternalTestOut
851
-
852
- declare const PowerPathCreateInternalTestInput = z.discriminatedUnion('testType', [
853
- InternalTestBase.extend({
854
- testType: z.literal('qti'),
855
- qti: z.object({
856
- url: z.url(),
857
- title: NonEmptyString.optional(),
858
- metadata: z.record(z.string(), z.unknown()).optional(),
859
- }),
860
- }),
861
- InternalTestBase.extend({
862
- testType: z.literal('assessment-bank'),
863
- assessmentBank: z.object({
864
- resources: z
865
- .array(
866
- z.object({
867
- url: z.url(),
868
- title: NonEmptyString.optional(),
869
- metadata: z.record(z.string(), z.unknown()).optional(),
870
- }),
871
- )
872
- .min(1),
873
- }),
874
- }),
875
- ])
876
-
877
- declare const PowerPathCreateNewAttemptInput = z.object({
878
- student: NonEmptyString,
879
- lesson: NonEmptyString,
880
- })
881
-
882
- declare const PowerPathFinalStudentAssessmentResponseInput = z.object({
883
- student: NonEmptyString,
884
- lesson: NonEmptyString,
885
- })
886
-
887
- declare const PowerPathLessonPlansCreateInput = z.object({
888
- courseId: NonEmptyString,
889
- userId: NonEmptyString,
890
- classId: NonEmptyString.optional(),
891
- })
892
-
893
- declare const PowerPathLessonPlanOperationInput = z.union([
894
- z.object({
895
- type: z.literal('set-skipped'),
896
- payload: z.object({
897
- target: LessonPlanTarget,
898
- value: z.boolean(),
899
- }),
900
- }),
901
- z.object({
902
- type: z.literal('add-custom-resource'),
903
- payload: z.object({
904
- resource_id: NonEmptyString,
905
- parent_component_id: NonEmptyString,
906
- skipped: z.boolean().optional(),
907
- }),
908
- }),
909
- z.object({
910
- type: z.literal('move-item-before'),
911
- payload: z.object({
912
- target: LessonPlanTarget,
913
- reference_id: NonEmptyString,
914
- }),
915
- }),
916
- z.object({
917
- type: z.literal('move-item-after'),
918
- payload: z.object({
919
- target: LessonPlanTarget,
920
- reference_id: NonEmptyString,
921
- }),
922
- }),
923
- z.object({
924
- type: z.literal('move-item-to-start'),
925
- payload: z.object({
926
- target: LessonPlanTarget,
927
- }),
928
- }),
929
- z.object({
930
- type: z.literal('move-item-to-end'),
931
- payload: z.object({
932
- target: LessonPlanTarget,
933
- }),
934
- }),
935
- z.object({
936
- type: z.literal('change-item-parent'),
937
- payload: z.object({
938
- target: LessonPlanTarget,
939
- new_parent_id: NonEmptyString,
940
- position: z.enum(['start', 'end']).optional(),
941
- }),
942
- }),
943
- ])
944
-
945
- declare const PowerPathLessonPlanOperationsInput = z.object({
946
- operation: PowerPathLessonPlanOperationInput,
947
- reason: NonEmptyString.optional(),
948
- })
949
-
950
- declare const PowerPathLessonPlanUpdateStudentItemResponseInput = z.object({
951
- studentId: NonEmptyString,
952
- componentResourceId: NonEmptyString,
953
- result: z.object({
954
- status: z.enum(['active', 'tobedeleted']),
955
- metadata: z.record(z.string(), z.unknown()).optional(),
956
- score: z.number().optional(),
957
- textScore: NonEmptyString.optional(),
958
- scoreDate: z.string().datetime(),
959
- scorePercentile: z.number().optional(),
960
- scoreStatus: ScoreStatus,
961
- comment: NonEmptyString.optional(),
962
- learningObjectiveSet: z
963
- .array(
964
- z.object({
965
- source: NonEmptyString,
966
- learningObjectiveResults: z.array(
967
- z.object({
968
- learningObjectiveId: NonEmptyString,
969
- score: z.number().optional(),
970
- textScore: NonEmptyString.optional(),
971
- }),
972
- ),
973
- }),
974
- )
975
- .optional(),
976
- inProgress: NonEmptyString.optional(),
977
- incomplete: NonEmptyString.optional(),
978
- late: NonEmptyString.optional(),
979
- missing: NonEmptyString.optional(),
980
- }),
981
- })
982
-
983
- declare const PowerPathMakeExternalTestAssignmentInput = z.object({
984
- student: NonEmptyString,
985
- lesson: NonEmptyString,
986
- applicationName: NonEmptyString.optional(),
987
- testId: NonEmptyString.optional(),
988
- skipCourseEnrollment: z.boolean().optional(),
989
- })
990
-
991
- declare const PowerPathPlacementResetUserPlacementInput = z.object({
992
- student: NonEmptyString,
993
- subject: TimebackSubject,
994
- })
995
-
996
- declare const PowerPathResetAttemptInput = z.object({
997
- student: NonEmptyString,
998
- lesson: NonEmptyString,
999
- })
1000
-
1001
- declare const PowerPathScreeningResetSessionInput = z.object({
1002
- userId: NonEmptyString,
1003
- })
1004
-
1005
- declare const PowerPathScreeningAssignTestInput = z.object({
1006
- userId: NonEmptyString,
1007
- subject: z.enum(['Math', 'Reading', 'Language', 'Science']),
1008
- })
1009
-
1010
- declare const PowerPathTestAssignmentsCreateInput = z.object({
1011
- student: NonEmptyString,
1012
- subject: TimebackSubject,
1013
- grade: TimebackGrade,
1014
- testName: NonEmptyString.optional(),
1015
- })
1016
-
1017
- declare const PowerPathTestAssignmentsUpdateInput = z.object({
1018
- testName: NonEmptyString,
1019
- })
1020
-
1021
- declare const PowerPathTestAssignmentsBulkInput = z.object({
1022
- items: z.array(PowerPathTestAssignmentItemInput),
1023
- })
1024
-
1025
- declare const PowerPathTestAssignmentsImportInput = z.object({
1026
- spreadsheetUrl: z.url(),
1027
- sheet: NonEmptyString,
1028
- })
1029
-
1030
- declare const PowerPathTestAssignmentsListParams = z.object({
1031
- student: NonEmptyString,
1032
- status: z
1033
- .enum(['assigned', 'in_progress', 'completed', 'failed', 'expired', 'cancelled'])
1034
- .optional(),
1035
- subject: NonEmptyString.optional(),
1036
- grade: TimebackGrade.optional(),
1037
- limit: z.number().int().positive().max(3000).optional(),
1038
- offset: z.number().int().nonnegative().optional(),
1039
- })
1040
-
1041
- declare const PowerPathTestAssignmentsAdminParams = z.object({
1042
- student: NonEmptyString.optional(),
1043
- status: z
1044
- .enum(['assigned', 'in_progress', 'completed', 'failed', 'expired', 'cancelled'])
1045
- .optional(),
1046
- subject: NonEmptyString.optional(),
1047
- grade: TimebackGrade.optional(),
1048
- limit: z.number().int().positive().max(3000).optional(),
1049
- offset: z.number().int().nonnegative().optional(),
1050
- })
1051
-
1052
- declare const PowerPathUpdateStudentQuestionResponseInput = z
1053
- .object({
1054
- student: NonEmptyString,
1055
- question: NonEmptyString,
1056
- response: z.union([NonEmptyString, z.array(NonEmptyString)]).optional(),
1057
- responses: z
1058
- .record(z.string(), z.union([NonEmptyString, z.array(NonEmptyString)]))
1059
- .optional(),
1060
- lesson: NonEmptyString,
1061
- rendererOutcomes: z
1062
- .object({
1063
- score: z.number(),
1064
- maxScore: z.number().min(0),
1065
- isCorrect: z.boolean(),
1066
- })
1067
- .optional(),
1068
- playerState: z.string().optional(),
1069
- })
1070
- .refine(data => data.response !== undefined || data.responses !== undefined, {
1071
- message: "Either 'response' or 'responses' must be provided",
1072
- path: ['response', 'responses'],
1073
- })
1074
- .transform(data => {
1075
- if (data.response !== undefined && data.responses === undefined) {
1076
- return { ...data, responses: { RESPONSE: data.response } }
1077
- }
1078
-
1079
- return data
1080
- })
1081
-
1082
- declare const PowerPathGetAssessmentProgressParams = z.object({
1083
- student: NonEmptyString,
1084
- lesson: NonEmptyString,
1085
- attempt: z.number().int().positive().optional(),
1086
- })
1087
-
1088
- declare const PowerPathGetNextQuestionParams = z.object({
1089
- student: NonEmptyString,
1090
- lesson: NonEmptyString,
1091
- })
1092
-
1093
- declare const PowerPathGetAttemptsParams = z.object({
1094
- student: NonEmptyString,
1095
- lesson: NonEmptyString,
1096
- })
1097
-
1098
- declare const PowerPathTestOutParams = z.object({
1099
- student: NonEmptyString,
1100
- course: NonEmptyString,
1101
- })
1102
-
1103
- declare const PowerPathImportExternalTestAssignmentResultsParams = z.object({
1104
- student: NonEmptyString,
1105
- lesson: NonEmptyString,
1106
- applicationName: NonEmptyString.optional(),
1107
- })
1108
-
1109
- declare const PowerPathPlacementQueryParams = z.object({
1110
- student: NonEmptyString,
1111
- subject: TimebackSubject,
1112
- })
1113
-
1114
- declare const PowerPathMakeExternalStudentTestOutAssignmentInput = z.object({
1115
- oneRosterSourcedId: NonEmptyString,
1116
- subject: NonEmptyString,
1117
- })
1118
-
1119
- declare const PowerPathRenderConfigUpsertInput = z.object({
1120
- courseIds: z.array(NonEmptyString).min(1),
1121
- rendererId: NonEmptyString,
1122
- rendererUrl: z.url(),
1123
- rendererVersion: NonEmptyString.optional(),
1124
- suppressFeedback: z.boolean().optional(),
1125
- suppressCorrectResponse: z.boolean().optional(),
1126
- })
1127
-
1128
- declare const PowerPathSyllabusQueryParams = z.object({
1129
- status: z.enum(['active', 'tobedeleted']).optional(),
1130
- })
1131
-
1132
- // ═══════════════════════════════════════════════════════════════════════════════
1133
- // TYPE EXPORTS (REQUEST INPUTS)
1134
- // ═══════════════════════════════════════════════════════════════════════════════
1135
-
1136
- // Shorter type aliases (like OneRoster pattern: schema = OneRosterFoo, type = Foo)
1137
- type CreateExternalPlacementTestInput = input<
1138
- typeof PowerPathCreateExternalPlacementTestInput
1139
- >
1140
- type CreateExternalTestOutInput = input<typeof PowerPathCreateExternalTestOutInput>
1141
- type CreateInternalTestInput = input<typeof PowerPathCreateInternalTestInput>
1142
- type CreateNewAttemptInput = input<typeof PowerPathCreateNewAttemptInput>
1143
- type FinalStudentAssessmentResponseInput = input<
1144
- typeof PowerPathFinalStudentAssessmentResponseInput
1145
- >
1146
- type LessonPlansCreateInput = input<typeof PowerPathLessonPlansCreateInput>
1147
- type LessonPlanOperationInput = input<typeof PowerPathLessonPlanOperationInput>
1148
- type LessonPlanOperationsInput = input<typeof PowerPathLessonPlanOperationsInput>
1149
- type LessonPlanUpdateStudentItemResponseInput = input<
1150
- typeof PowerPathLessonPlanUpdateStudentItemResponseInput
1151
- >
1152
- type MakeExternalTestAssignmentInput = input<
1153
- typeof PowerPathMakeExternalTestAssignmentInput
1154
- >
1155
- type PlacementResetUserPlacementInput = input<
1156
- typeof PowerPathPlacementResetUserPlacementInput
1157
- >
1158
- type ResetAttemptInput = input<typeof PowerPathResetAttemptInput>
1159
- type ScreeningResetSessionInput = input<typeof PowerPathScreeningResetSessionInput>
1160
- type ScreeningAssignTestInput = input<typeof PowerPathScreeningAssignTestInput>
1161
- type TestAssignmentsCreateInput = input<typeof PowerPathTestAssignmentsCreateInput>
1162
- type TestAssignmentsUpdateInput = input<typeof PowerPathTestAssignmentsUpdateInput>
1163
- type TestAssignmentsBulkInput = input<typeof PowerPathTestAssignmentsBulkInput>
1164
- type TestAssignmentsImportInput = input<typeof PowerPathTestAssignmentsImportInput>
1165
- type TestAssignmentsListParams = input<typeof PowerPathTestAssignmentsListParams>
1166
- type TestAssignmentsAdminParams = input<typeof PowerPathTestAssignmentsAdminParams>
1167
- type UpdateStudentQuestionResponseInput = input<
1168
- typeof PowerPathUpdateStudentQuestionResponseInput
1169
- >
1170
- type GetAssessmentProgressParams = input<typeof PowerPathGetAssessmentProgressParams>
1171
- type GetNextQuestionParams = input<typeof PowerPathGetNextQuestionParams>
1172
- type GetAttemptsParams = input<typeof PowerPathGetAttemptsParams>
1173
- type TestOutParams = input<typeof PowerPathTestOutParams>
1174
- type ImportExternalTestAssignmentResultsParams = input<
1175
- typeof PowerPathImportExternalTestAssignmentResultsParams
1176
- >
1177
- type MakeExternalStudentTestOutAssignmentInput = input<
1178
- typeof PowerPathMakeExternalStudentTestOutAssignmentInput
1179
- >
1180
- type PlacementQueryParams = input<typeof PowerPathPlacementQueryParams>
1181
- type RenderConfigUpsertInput = input<typeof PowerPathRenderConfigUpsertInput>
1182
- type SyllabusQueryParams = input<typeof PowerPathSyllabusQueryParams>
1183
-
1184
- export type { AssignmentResult, Attempt, BulkResult, CourseProgressResponse, CreateAttemptResponse, CreateExternalPlacementTestInput, CreateExternalTestOutInput, CreateInternalTestInput, CreateNewAttemptInput, ExternalTestCapableLessonType, ExternalTestCreateResponse, FinalStudentAssessmentResponseInput, FinalizeAssessmentResponse, GetAllPlacementTestsResponse, GetAssessmentProgressParams, GetAssessmentProgressResponse, GetAttemptsParams, GetAttemptsResponse, GetCurrentLevelResponse, GetNextPlacementTestResponse, GetNextQuestionParams, GetNextQuestionResponse, GetSubjectProgressResponse, GetTestOutEligibilityResponse, ImportExternalResultsResponse, ImportExternalTestAssignmentResultsParams, InternalTestCreateResponse, LessonPlanCourseSyncResult, LessonPlanCreateResponse, LessonPlanOperation, LessonPlanOperationInput, LessonPlanOperationResult, LessonPlanOperationType, LessonPlanOperationsInput, LessonPlanOperationsResponse, LessonPlanResponse, LessonPlanSyncResult, LessonPlanUpdateStudentItemResponseInput, LessonPlansCreateInput, MakeExternalStudentTestOutAssignmentInput, MakeExternalStudentTestOutAssignmentResponse, MakeExternalTestAssignmentInput, MakeExternalTestAssignmentResponse, PaginationMeta, PlacementQueryParams, PlacementResetUserPlacementInput, PowerPath100ProgressResponse, PowerPath100UpdateResponseResult, PowerPathLessonType, PowerPathQuestionContent, PowerPathQuestionDifficulty, PowerPathQuestionResult, PowerPathTestQuestion, QuizLikeLessonType, RenderConfigDeleteResponse, RenderConfigGetResponse, RenderConfigUpsertInput, RenderConfigUpsertResponse, ResetAttemptInput, ResetAttemptResponse, ResetPlacementResponse, ResponseResult, ResponseResultFeedback, ScoreStatus, ScreeningAssignTestInput, ScreeningAssignTestResponse, ScreeningResetSessionInput, ScreeningResetSessionResponse, ScreeningResultsResponse, ScreeningSessionResponse, StandardProgressResponse, StandardUpdateResponseResult, SyllabusQueryParams, SyllabusResponse, TestAssignment, TestAssignmentStatus, TestAssignmentsAdminParams, TestAssignmentsBulkInput, TestAssignmentsCreateInput, TestAssignmentsImportInput, TestAssignmentsListParams, TestAssignmentsListResponse, TestAssignmentsUpdateInput, TestOutParams, TestOutResponse, UpdateStudentItemResponseResult, UpdateStudentQuestionResponseInput, UpdateStudentQuestionResponseResult };
1
+ export * from '@timeback/types/protocols/powerpath';
2
+ export { CreateExternalPlacementTestInput, CreateExternalTestOutInput, CreateInternalTestInput, CreateNewAttemptInput, FinalStudentAssessmentResponseInput, GetAssessmentProgressParams, GetAttemptsParams, GetNextQuestionParams, ImportExternalTestAssignmentResultsParams, LessonPlanOperationInput, LessonPlanOperationsInput, LessonPlanUpdateStudentItemResponseInput, LessonPlansCreateInput, MakeExternalStudentTestOutAssignmentInput, MakeExternalTestAssignmentInput, PlacementQueryParams, PlacementResetUserPlacementInput, RenderConfigUpsertInput, ResetAttemptInput, ScreeningAssignTestInput, ScreeningResetSessionInput, SyllabusQueryParams, TestAssignmentsAdminParams, TestAssignmentsBulkInput, TestAssignmentsCreateInput, TestAssignmentsImportInput, TestAssignmentsListParams, TestAssignmentsUpdateInput, TestOutParams, UpdateStudentQuestionResponseInput } from '@timeback/types/zod';