Insights to Signals Migration
Move your insight and session reads from the deprecated /insights/1.0 routes to the Signals routes that already serve them.
Note: This guide covers only what changes. See the API Reference for complete endpoint documentation, and Signals Insights for reporting insights.
Before you start
- Request the Signals read scope for your client:
https://timeback-platform.trilogy.com/signals/scope/insights.readonly. It replaceshttps://purl.imsglobal.org/spec/caliper/v1p2/scope/events.readonlyfor these reads. A token without it gets401from the Signals routes. Ask for it through Getting access. - Keep your current calls running while you switch. The old routes keep working with the same parameters and responses until they are removed, and each response carries a
Deprecationheader. The Signals routes do not send it.
Route mapping
Old route (scope events.readonly) |
New route (scope signals/scope/insights.readonly) |
What changes |
|---|---|---|
GET /insights/1.0/sessions/{sessionId} |
GET /signals/1.0/sessions/{sessionId}/insights |
Insight field names and two status codes; see below |
GET /insights/1.0/sessions |
GET /signals/1.0/sessions |
Nothing, unless you use the learning-integrity filters; see below |
GET /insights/1.0/users/{userId} |
GET /signals/1.0/users/{userId}/insights |
Nothing |
GET /insights/1.0/users/{userId}/sessions |
GET /signals/1.0/users/{userId}/sessions |
Nothing |
GET /insights/1.0/users/{userId}/overview |
GET /signals/1.0/users/{userId}/overview |
Nothing |
GET /insights/1.0/types |
GET /signals/1.0/insights/types |
No id, and more types; see below |
"Nothing" means the same parameters and the same response body: change the path and the scope.
What changes per route
Session insights
GET /signals/1.0/sessions/{sessionId}/insights takes the same path and query parameters and returns the same session summary and paging. Each entry in insights changes:
| Old field | New field |
|---|---|
insightType |
type |
startedAtTime |
startedAt |
endedAtTime |
endedAt |
evidence.caliperSessionId |
Removed. It is the sessionId you asked for |
| none | rule, ruleVersion: the rule that produced the insight, Reported for a reported insight |
Status codes change for two cases:
- A session outside your organization access returns
200with no insights and a zero summary, where the old route returned403. - An unknown
typeorinsightGroupsslug returns200with no insights, where the old route returned400. Check your slugs againstGET /signals/1.0/insights/types.
limit and offset must be whole numbers; a fractional value returns 400.
Org sessions
Without the learning-integrity filters, GET /signals/1.0/sessions returns the same page as the old route.
The learning-integrity review listing is not on the Signals route. On the old route, unauthorizedTags, integrityTags and reviewState narrow the list to learning sessions with unauthorized-help tags and add integrityTags, noteCount and review to each session and integrityTagCounts to the page. The Signals route ignores those parameters and returns every matching session, without those fields. If you use this listing, keep calling GET /insights/1.0/sessions for it: the Signals routes have no equivalent today.
enforcement and includeEnforcement match no session and have no effect on the old route. Drop them.
Insight types
GET /signals/1.0/insights/types takes the same category and insightGroups parameters and returns the same entries in the same order, with two differences:
- Entries have no
id. Useslug, which is what every insight carries intype. - The list also includes the v1 catalog types the old route hides, such as
SocializingDuringTestandTestIntegrityVerdict. Select by category and read the slugs from the response rather than from a fixed list.
Webhooks
insight.created,insight.updatedandinsight.deletedkeep their names and payloads. No change is needed.proctoring_enforcement.recordedis replaced byaction.created. A proctoring action (BlockTest,UnblockTest,EndTest,PreventTestStart) firesaction.created; filter ondata.type. Addaction.createdto your subscription. See Action Events.
Checklist
- Get
https://timeback-platform.trilogy.com/signals/scope/insights.readonlyon your client. - Change each path in the route mapping.
- For session insights, read
type,startedAtandendedAt, and treat an empty200as no access or no match. - For insight types, key on
slug, notid. - Keep the learning-integrity review listing on the old route.
- Subscribe to
action.createdin place ofproctoring_enforcement.recorded.
