REST API specification
Retrieves the user context including role, permissions, leadership status, and experience types. Optionally filter by Canvas account ID.
Optional Canvas account ID to filter the user context
User context retrieved successfully
Internal user ID
123e4567-e89b-12d3-a456-426614174000Canvas user ID (external)
123e4567-e89b-12d3-a456-426614174000User role within the system
learnerPossible values: Indicates whether the user has leadership responsibilities
falseWhether the account this context was resolved for is a root account rather than a sub-account
trueWhether the user may administer the account this context was resolved for. Null when Canvas could not be reached, which is distinct from false: a client must not treat null as a refusal.
trueThe account this user should operate in when none is specified: the Career account they administer that sorts first by name, or the domain root for a root admin of a tenant that has Career enabled on the root itself. Always an account under the root account of the requesting domain. Null when they administer no Career account here, or when the lookup failed. Identical across every value of the accountId query parameter.
85List of enrollment types associated with the user
["TeacherEnrollment","DesignerEnrollment"]Bad Request - Invalid accountId format
Unauthorized - Invalid or missing JWT token
GET /api/v1/user/context HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"userId": "123e4567-e89b-12d3-a456-426614174000",
"canvasUserId": "123e4567-e89b-12d3-a456-426614174000",
"role": "learner",
"isLeader": false,
"isRootAccount": true,
"canAdministerAccount": true,
"defaultAccountId": "85",
"permissions": {
"can_view_analytics": true,
"can_manage_courses": false
},
"experience": {
"currentApp": "career_learner",
"availableApps": [
"career_learner",
"academic"
],
"availableRoles": [
"admin",
"course_facilitator",
"learner"
],
"currentRole": "course_facilitator"
},
"enrollmentTypes": [
"TeacherEnrollment",
"DesignerEnrollment"
]
}POST /api/v1/skills HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 55
{
"skills": [
{
"name": "text"
}
],
"skillExtractionId": "text"
}[
{
"id": "text",
"name": "text",
"proficiencyLevel": "beginner",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
]No content
POST /api/v1/skills/resume HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
No content
POST /api/v1/skills/taxonomy-source HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Base URL of the Canvas instance (e.g., "canvas.instructure.com").
The Canvas ID of the course.
No content
POST /api/v1/programs/enroll/{baseUrl}/{courseId} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
POST /api/v1/collections/{collectionId}/file HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"id": "text",
"libraryId": "text",
"itemType": "course",
"displayOrder": 1,
"canvasCourse": {
"courseId": "text",
"canvasUrl": "text",
"courseName": "text",
"courseImageUrl": "text",
"moduleCount": 1,
"moduleItemCount": 1,
"estimatedDurationMinutes": 1
},
"programId": "text",
"programCourseId": "text",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z"
}No content
GET /api/v1/prism/conversations HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Existing conversation ID to append to, omit to create new
User message content
No content
POST /api/v1/prism/conversations HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 67
{
"conversationId": "text",
"message": "text",
"canvasAccountId": "text"
}No content
Array of conversation IDs to delete
No content
DELETE /api/v1/prism/conversations HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 28
{
"conversationIds": [
"text"
]
}No content
Existing conversation ID to append to, omit to create new
User message content
SSE stream of solver events (DidDecodeIntent, DidSolve, DidVisualize, etc.) followed by a final DidConverse or DidFail event
No content
POST /api/v1/prism/conversations/sse HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 67
{
"conversationId": "text",
"message": "text",
"canvasAccountId": "text"
}SSE stream of solver events (DidDecodeIntent, DidSolve, DidVisualize, etc.) followed by a final DidConverse or DidFail event
No content
No content
GET /api/v1/prism/conversations/{id} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
ID of the query to regenerate
Error message from failed query execution
No content
POST /api/v1/prism/conversations/{id}/regenerate HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
x-request-id: text
Content-Type: application/json
Accept: */*
Content-Length: 58
{
"queryId": "text",
"error": "text",
"canvasAccountId": "text"
}No content
Array of query UUIDs to retrieve
["uuid-1","uuid-2","uuid-3"]No content
GET /api/v1/prism/queries?id=uuid-1 HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
No content
GET /api/v1/prism/queries/{id}/settings HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
User specific query parameter values
User specific title for the query
User specific style object for the query
No content
PUT /api/v1/prism/queries/{id}/settings HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 43
{
"parameters": {},
"title": "text",
"style": {}
}No content
No content
GET /api/v1/prism/widget-library?accountId=text HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Query id which needs to be added to widget library
No content
PUT /api/v1/prism/widget-library/add HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 18
{
"queryId": "text"
}No content
Query id which needs to be removed from widget library
No content
POST /api/v1/prism/widget-library/remove HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 18
{
"queryId": "text"
}No content
No content
GET /api/v1/hris/sync-status HTTP/1.1
Accept: */*
No content
No content
POST /api/v1/hris/create-stackone-connect-session HTTP/1.1
Accept: */*
No content
No content
POST /api/v1/hris/trigger-sync HTTP/1.1
Accept: */*
No content
No content
DELETE /api/v1/hris/account HTTP/1.1
Accept: */*
No content
No content
POST /api/v1/import HTTP/1.1
Accept: */*
No content
No content
GET /api/v1/import/org-chart?accountId=text HTTP/1.1
Accept: */*
No content
Retrieves fully-formed navigation items based on user context, experience type, and Canvas data. Journey fetches Canvas tabs, applies permissions, and builds complete navigation with all metadata server-side.
Canvas account ID for Learning Provider admin/instructor context
123Canvas user ID for Learner app context
456Canvas course ID for course-specific navigation (future)
789Experience type determining navigation structure
career_learning_providerPossible values: Client routing base path for URL generation (e.g., "/career" for production)
/careerOptional role override for intra-app switching (e.g., admin, course_facilitator). When provided, overrides the auto-determined role for navigation template selection.
adminNavigation items retrieved successfully
True when at least one upstream call failed and the items below were built from fallback data, so the navigation may be incomplete. Lets clients distinguish a genuinely empty or partial navigation from one degraded by an upstream outage. Absent or false means the response is complete.
falseBad Request - Invalid request parameters
Unauthorized - Invalid or missing JWT token
GET /api/v1/navigation/items?experienceType=career_learning_provider&features=[object+Object] HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"items": [
{
"id": "home",
"type": "local",
"title": "Home"
},
{
"id": "inbox",
"type": "route",
"title": "Inbox",
"route": "/conversations"
},
{
"id": "learn",
"type": "parent",
"title": "Learn",
"subNavigationItems": [
{
"id": "program-123",
"type": "local",
"title": "Leadership Program"
},
{
"id": "course-456",
"type": "local",
"title": "Standalone Course",
"isActiveIdentifier": "/courses/456"
}
]
},
{
"id": "external-tool-1",
"type": "external",
"title": "External Tool",
"route": "https://external.example.com/tool",
"canvasTabId": "context_external_tool_123",
"canvasTabType": "external"
},
{
"id": "report_bug",
"type": "click",
"title": "Report a Bug",
"isBottomItem": true
}
],
"degraded": false
}Last updated
Was this helpful?