List all user (path session) statistics: Migration guide
We've combined the getUsersPathSessionStats
and getUserPathSessionStats
endpoints from API v1 into a single, more efficient endpoint in API v2: List all user (path session) statistics.
This guide outlines the key differences you'll encounter when moving to API v2:
- From
getUsersPathSessionStats
- From
getUserPathSessionStats
Key changes
- Pagination: The v2 endpoint is paginated and returns 200 path session statistics per page.
getUsersPathSessionStats
migration
getUsersPathSessionStats
migrationDocumentation links
Here are the links to the API reference for:
Endpoint mapping
Here's the direct correlation between the v1 and v2 endpoint URLs:
- API v1:
/api/v1/paths/sessions/:sessionId/stats/users
- API v2:
/api/v2/paths/{pathId}/sessions/{sessionId}/user-stats
Input changes
This section details the specific alterations to the input requirements between API versions.
API v1 input example
curl --location -g 'https://{{host}}/api/v1/paths/sessions/60ad14abc2615a51213dbce9/stats/users?company={{company}}&apiKey={{apiKey}}'
API v2 input example
curl --request GET \
--url https://app.360learning.com/api/v2/paths/507f1f77bcf86cd799439011/sessions/507f1f77bcf86cd799439011/user-stats \
--header '360-api-version: v2.0' \
--header 'accept: application/json'
Main input differences
Change type | API v1 | API v2 |
---|---|---|
Modified Query parameters | ccompletedBefore / completedAfter (Optional): Timestamp filters, in the formatYYYY-MM-DDTHH:mm:ss.sssZ . | completedAt (Optional): Modified name, functionality, syntax, and date format. Now, this single filter combines the functionalities of completedAtBefore and completedAtAfter . It filters stats by completion date range using the LHS bracket notation. The date format is now YYYY-MM-DD . |
Added Query parameter | - | userId (Optional): Filter the stats for a specific user using its unique ID. |
Output changes
This section details the specific alterations to the successful output returned between API versions.
API v1 output example
{
"sessionId": "6307bb305ab5e0ebdb1138e8",
"sessionName": "Onboarding session",
"pathName": "First Path",
"pathId": "6307bb2f66977c8e2316d6d5",
"usersStats": [
{
"_id": "62bdbc00293a604543f44386",
"deleted": false,
"firstName": "Jean",
"lastName": "Martin",
"mail": "[email protected]",
"totalTimeSpentInSeconds": 96.455,
"progress": 50,
"score": 38,
"completedAt": "2022-08-25T18:11:55.650Z",
"detailedStatus": {
"type": "onTime"
},
"certificate": false,
"status": "onTime",
"customFields": []
}
]
}
API v2 output example
[
{
"_id": "507f1f77bcf86cd799439011",
"progress": 0,
"status": {
"type": "awaitingCorrection"
},
"timeSpent": 0,
"userId": "507f1f77bcf86cd799439011",
"completedAt": "2025-07-01T08:17:42.042Z",
"score": 0,
"enrolledAt": "2025-07-01T08:17:42.042Z",
"unenrolledAt": "2025-07-01T08:17:42.042Z",
"certificateId": "507f1f77bcf86cd799439011",
"selfEnrolled": true,
"startedAt": "2025-07-01T08:17:42.042Z",
"dueDate": "2025-07-01T08:17:42.042Z"
}
]
Main output differences
API v2 output has been flattened: no more sub-objects in the response body, you only get raw stats.
API v2 introduces pagination for the List all user (path session) statistics endpoint. Instead of returning all stats in a single response, it now returns a maximum of 2000 statistics per page. To retrieve subsequent pages, you need to follow the URL provided in the Link
header of the response.
Change type | API v1 | API v2 |
---|---|---|
Removed Output property | pathName : Removed and not replaced in v2. | - |
Removed Output property | sessionName : Removed and not replaced in v2. | - |
Modified Output property | totalTimeSpentInSeconds : Time spent (in millis) by the learner on this path session. | timeSpent : (Required) Time spent (in millis) by the learner on this path session. |
Modified Output property | detailedStatus : Detailed status of the user in the path session. | status : (Required) Detailed status of the user in the path session. |
Added Output property | - | enrolledAt : (Required) date of enrollment of the learner in this path session,in the formatYYYY-MM-DDTHH:mm:ss.sssZ |
Added Output property | - | unenrolledAt : (Optional) date of unenrollment of the learner in this path session,in the formatYYYY-MM-DDTHH:mm:ss.sssZ |
Added Output property | - | selfEnrolled : (Required) indicate whether the learner self-enrolled to this path session or not. |
Added Output property | - | certificateId : (Optional) The ID of the certificate obtained by the user in the session. |
getUserPathSessionStats
migration
getUserPathSessionStats
migrationDocumentation links
Here are the links to the API reference for:
Endpoint mapping
Here's the direct correlation between the v1 and v2 endpoint URLs:
- API v1:
/api/v1/paths/sessions/:sessionId/stats/:userEmailOrId
- API v2:
/api/v2/paths/{pathId}/sessions/{sessionId}/user-stats
Behavior changes
How to identify users in v2
A key update in v2 is the standardized method for identifying users. For improved security and consistency, you must now use the user's unique internal ID when referencing a user.
- If you already have the internal ID, you can use it directly.
- If you only have the user's email address, you'll need to fetch their internal ID first.
To get the user ID based on their email address:
- Retrieve and cache all users:
Call List all users to retrieve the full list of users in your organization. To ensure your application is performant, this data should be stored in a local database or cache that is updated periodically. - Find the user and get their ID:
Find the user object where themail
field matches the email you are searching for.
Copy the value of their_id
. This is the internal ID.
Input changes
This section details the specific alterations to the input requirements between API versions.
API v1 input example
curl --location -g 'https://{{host}}/api/v1/paths/sessions/60ad14abc2615a51213dbce9/stats/[email protected]?company={{company}}&apiKey={{apiKey}}'
API v2 input example
curl --request GET \
--url https://app.360learning.com/api/v2/paths/507f1f77bcf86cd799439011/sessions/507f1f77bcf86cd799439011/user-stats \
--header '360-api-version: v2.0' \
--header 'accept: application/json'
Main input differences
Change type | API v1 | API v2 |
---|---|---|
Modified Query parameters | completedBefore / completedAfter (Optional): Timestamp filters, in the formatYYYY-MM-DDTHH:mm:ss.sssZ . | completedAt (Optional): Modified name, functionality, syntax, and date format. Now, this single filter combines the functionalities of completedAtBefore and completedAtAfter . It filters stats by completion date range using the LHS bracket notation. The date format is now YYYY-MM-DD . |
Modified Path parameters | userEmailOrId (Path parameter, Required): Could be the email or the ID of the user. This parameter email was part of the URL path. | userId (Optional): user's internal ID. An email is no longer accepted here, and userId has to be passed through a query param.See Behavior changes (section above) for how to get the ID from an email. |
Output changes
This section details the specific alterations to the successful output returned between API versions.
API v1 output example
{
"progress": 25,
"score": 0,
"status": "onTime",
"completedAt": null,
"detailedStatus": {
"type": "unsuccessful"
},
"result": "unsuccessful",
"globalTime": 12450
}
API v2 output example
[
{
"_id": "507f1f77bcf86cd799439011",
"progress": 0,
"status": {
"type": "awaitingCorrection"
},
"timeSpent": 0,
"userId": "507f1f77bcf86cd799439011",
"completedAt": "2025-07-01T08:17:42.042Z",
"score": 0,
"enrolledAt": "2025-07-01T08:17:42.042Z",
"unenrolledAt": "2025-07-01T08:17:42.042Z",
"certificateId": "507f1f77bcf86cd799439011",
"selfEnrolled": true,
"startedAt": "2025-07-01T08:17:42.042Z",
"dueDate": "2025-07-01T08:17:42.042Z"
}
]
Main output differences
API v2 introduces pagination for the List all user (path session) statistics endpoint. Instead of returning all stats in a single response, it now returns a maximum of 2000 statistics per page. To retrieve subsequent pages, you need to follow the URL provided in the Link
header of the response.
Change type | API v1 | API v2 |
---|---|---|
Modified Output property | globalTime : Time spent (in millis) by the learner on this path session. | timeSpent : (Required) Time spent (in millis) by the learner on this path session. |
Modified Output property | detailedStatus : Detailed status of the user in the path session. | status : (Required) Detailed status of the user in the path session. |
Added Output property | - | enrolledAt : (Required) date of enrollment of the learner in this path session,in the formatYYYY-MM-DDTHH:mm:ss.sssZ |
Added Output property | - | unenrolledAt : (Optional) date of unenrollment of the learner in this path session,in the formatYYYY-MM-DDTHH:mm:ss.sssZ |
Added Output property | - | selfEnrolled : (Required) indicate whether the learner self-enrolled to this path session or not. |
Added Output property | - | certificateId : (Optional) The ID of the certificate obtained by the user in the session. |
Updated 5 days ago