Documentation Index
Fetch the complete documentation index at: https://docs.timeback.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The @timeback/powerpath package provides a client for the PowerPath API, enabling:
- Assessments: Create tests, attempts, and submit responses
- Placement Tests: Determine appropriate grade level
- Screening: Session management and test assignment
- Lesson Plans: Course progress and lesson plan operations
- Test Assignments: CRUD operations for test assignments
Installation
npm install @timeback/powerpath
Quick Start
import { PowerPathClient } from '@timeback/powerpath'
const client = new PowerPathClient({
env: 'staging',
auth: {
clientId: process.env.POWERPATH_CLIENT_ID!,
clientSecret: process.env.POWERPATH_CLIENT_SECRET!,
},
})
const level = await client.placement.getCurrentLevel({ student: 'student-123', subject: 'Math' })
Client Structure
const client = new PowerPathClient(options)
client.assessments // Tests, attempts, and responses
client.lessonPlans // Course lesson plans and progress
client.placement // Placement testing
client.screening // MAP test sessions
client.syllabus // Course structure
client.testAssignments // Test assignment CRUD
Typed Responses
All methods return typed responses:
import type { ExternalTestCreateResponse, GetNextPlacementTestResponse } from '@timeback/powerpath'
const test: ExternalTestCreateResponse = await client.assessments.createExternalTestOut({
courseId: 'course-123',
lessonType: 'test-out',
toolProvider: 'mastery-track',
grades: [3],
xp: 10,
resourceMetadata: { subject: 'Math' },
})
console.log(test.lessonId, test.resourceId)
const next: GetNextPlacementTestResponse = await client.placement.getNextPlacementTest({
student: 'student-123',
subject: 'Math',
})
console.log(`${next.availableTests} tests available, next: ${next.lesson}`)
Assessments
Create and manage assessments, attempts, and responses.
Create Tests
client.assessments.createInternalTest({ studentId, subject, gradeLevel })
client.assessments.createExternalTestOut({
courseId,
lessonType,
toolProvider,
grades,
xp,
resourceMetadata,
})
client.assessments.createExternalPlacementTest({ studentId, subject })
Manage Attempts
client.assessments.createNewAttempt({ studentId, testId })
client.assessments.getAttempts({ studentId, testId })
client.assessments.resetAttempt({ attemptId })
Questions and Responses
client.assessments.getNextQuestion({ attemptId })
client.assessments.updateStudentQuestionResponse({ attemptId, questionId, response })
client.assessments.finalStudentAssessmentResponse({ attemptId })
client.assessments.getAssessmentProgress({ studentId, testId })
Placement
Manage placement testing and determine appropriate grade levels. All query methods take { student, subject }:
client.placement.getCurrentLevel({ student, subject })
client.placement.getAllPlacementTests({ student, subject })
client.placement.getNextPlacementTest({ student, subject })
client.placement.getSubjectProgress({ student, subject })
client.placement.resetUserPlacement({ student, subject })
| Method | Returns | Description |
|---|
getCurrentLevel() | PlacementLevel | Current placement grade level |
getAllPlacementTests() | PlacementTest[] | All placement tests for student |
getNextPlacementTest() | PlacementTest | Next recommended test |
getSubjectProgress() | SubjectProgress | Progress in subject |
resetUserPlacement() | void | Reset placement to start over |
Screening
Manage screening sessions and results.
client.screening.getResults(userId)
client.screening.getSession(userId)
client.screening.resetSession({ userId })
client.screening.assignTest({ userId, subject })
Lesson Plans
Manage lesson plans and course progress.
client.lessonPlans.get(courseId, userId)
client.lessonPlans.create({ courseId, userId, classId? })
client.lessonPlans.getCourseProgress(courseId, studentId)
client.lessonPlans.getTree(lessonPlanId)
client.lessonPlans.getStructure(lessonPlanId)
client.lessonPlans.listOperations(lessonPlanId)
client.lessonPlans.createOperations(lessonPlanId, { operation: [{ type: 'set-skipped', payload: { target: { type: 'resource', id: itemId }, value: true } }] })
client.lessonPlans.sync(lessonPlanId)
client.lessonPlans.recreate(lessonPlanId)
client.lessonPlans.deleteAll(courseId)
Syllabus
client.syllabus.get(courseSourcedId)
Test Assignments
CRUD operations for test assignments.
client.testAssignments.list({ studentId })
client.testAssignments.create({ studentId, testId, dueDate })
client.testAssignments.get(assignmentId)
client.testAssignments.update(assignmentId, { status })
client.testAssignments.delete(assignmentId)
client.testAssignments.bulk({ assignments: [{ studentId, testId }] })
Error Handling
import { NotFoundError, PowerPathError } from '@timeback/powerpath/errors'
try {
await client.testAssignments.get('missing-id')
} catch (error) {
if (error instanceof NotFoundError) {
console.log('Assignment not found')
} else if (error instanceof PowerPathError) {
console.log(error.statusCode)
console.log(error.message)
}
}
SDK Integration
When using the full SDK:
import { createTimeback } from '@timeback/sdk'
const timeback = await createTimeback({
/* ... */
})
const level = await timeback.api.powerpath.placement.getCurrentLevel({
student: 'student-123',
subject: 'Math',
})
Next Steps
Caliper
Track learning events
Types
PowerPath type definitions