Security Journey Reporting API
Use our Reporting API to send learner data to other tools such a business intelligence and data visualization programs.
Security Journey Reporting API
Security Journey provides Program Administrators access to a RESTful API; this can be used to generate custom reports within a BI tool or pull reporting metrics into your Learning Managment System (LMS) building management reports.
Requirements
- You must be a Security Journey Admin to generate and manage API keys.
Generating an API Key
- In Security Journey, go to Admin > Connections > Reporting API.
- Click Create Reporting API Key.
- Enter a name for the key.
- Copy the key and store it in a secure location.
Authentication
Authorization header as a Bearer token.Authorization: Bearer {YOUR_API_TOKEN}API Documentation
The Reporting API route is:
POST
https://my.securityjourney.com/api/v3/public-reporting/{endpoint}
Headers
Authorization: Bearer {your_api_token}
Content-Type: application/json
Reporting Endpoints
| Function | Endpoint |
| Users progress in their levels and current paths enrollments | /api/v3/public-reporting/enrollments |
| Users Details |
/api/v3/public-reporting/users |
| Users progress in assignments |
/api/v3/public-reporting/assignments |
| Users lesson attempt data (lessons started & completed) | /api/v3/public-reporting/lesson-attempts |
| Users progress in all their paths |
/api/v3/public-reporting/progress |
| Users Champion Passport activity details |
/api/v3/public-reporting/activities |
| User Assessment data |
/svc/public-reporting/assessments |
| Developer Profile and User Profile Data |
/svc/public-reporting/user-profiles |
Example Responses
Some fields in the responses are optional. Fields like company, jobRole, and securityChampion are only returned when that data has been uploaded to the Security Journey platform. See Learner Attributes for more information.
The examples below may include additional fields to demonstrate possible responses, but these fields are not guaranteed to be present.
GET https://my.securityjourney.com/api/v3/public-reporting/enrollments
{
"enrollments":[
{
"user":{
"email":"john_smith@securityjourney.com",
"firstName":"John",
"lastName":"Smith",
"totalPoints":0,
"securityChampion":"f",
"archived":true,
"archivedAt":"2024-04-09T13:45:43.355836Z"
},
"levelEnrollment":{
"levelName":"Foundational",
"levelType":"level",
"status":"in_progress",
"totalLessons":7,
"passedLessons":0,
"pointsEarned":0,
"updatedAt":"2024-01-22T13:46:24.193Z",
"createdAt":"2024-01-22T13:46:24.193Z"
},
"pathEnrollment":{
"pathName":"HackEDU: OWASP API Top 10",
"status":""
}
}
GET https://my.securityjourney.com/api/v3/public-reporting/users
{
"email":"john_smith@securityjourney.com",
"firstName":"John",
"lastName":"Smith",
"totalPoints":0,
"securityChampion":"f",
"archived":true,
"archivedAt":"2023-12-15T19:48:33.630916Z"
}
GET https://my.securityjourney.com/api/v3/public-reporting/assignments
{
"assignments":[
{
"user":{
"email":"john_smith@securityjourney.com",
"firstName":"John",
"lastName":"Smith",
"totalPoints":2767,
"company":"SecurityJourney",
"jobRole":"Sr. Devops Engineer",
"businessUnit":"DevOps",
"team":"DevOps",
"securityChampion":"false",
"timeSpent":"49h1m50.000000s"
},
"assignmentName":"Annual Compliance Training",
"pathName":"Content Engineering 2024",
"dueDate":"2025-05-30T23:59:59Z",
"passedLessons":0,
"totalLessons":14,
"status":"overdue"
}
GET https://my.securityjourney.com/api/v3/public-reporting/lesson-attempts
{
"user":{
"email":"john_smith@securityjourney.com",
"firstName":"John",
"lastName":"Smith",
"totalPoints":16069,
"securityChampion":"f",
"archived":true,
"archivedAt":"2023-12-15T19:49:55.539130Z",
"timeSpent":"4h52m25.000000s"
},
"lessonName":"Ruby Static Code Analysis",
"difficulty":"advanced",
"length":"9m",
"status":"passed",
"questions":10,
"correctAnswers":8,
"watchedVideo":"watched",
"readTranscript":"not read",
"startedAt":"2023-02-24T21:07:45.715429Z",
"createdAt":"2023-02-24T21:07:45.567756Z",
"updatedAt":"2023-02-24T21:14:52.087774Z"
}
GET https://my.securityjourney.com/api/v3/public-reporting/progress
{
"user":{
"email":"john_smith@securityjourney.com",
"firstName":"John",
"lastName":"Smith",
"totalPoints":0,
"company":"Security Journey",
"jobRole":"Web Developer",
"securityChampion":"false",
"archived":true,
"archivedAt":"2024-11-13T19:12:31.140936Z"
},
"pathName":"HackEDU: OWASP API Top 10",
"levelName":"Foundational",
"status":"not_started",
"requiredLessons":7,
"requiredLessonsPassed":0,
"lessonsPassed":0,
"allLessons":7,
"startedAt":"2024-03-21T20:26:46.371061Z",
"lastEngagement":"2024-03-21T20:26:46.371061Z",
"createdAt":"2024-03-21T20:26:46.371061Z",
"updatedAt":"2024-07-12T10:54:49.217408Z",
"timeSpent":"0h0m0s",
"pathArchived":true,
"pathArchivedAt":"2024-11-13T19:12:31.140936Z"
}
GET https://my.securityjourney.com/api/v3/public-reporting/activities
{
"activities":[
{
"user":{
"email":"john_smith@securityjourney.com",
"firstName":"John",
"lastName":"Smith",
"totalPoints":16069,
"archived":true,
"archivedAt":"2023-12-15T19:49:55.539130Z",
"timeSpent":"4h52m25.000000s"
},
"text":"Teach by delivering a presentation or talk for my group",
"description":"Presentation about side channel attacks. Explains what a side channel attack is, gives some examples, and gives examples relevant to AWS. Provides a technical explanation of how a side channel attack like spectre can work.",
"points":3,
"status":"in_progress",
"levelName":"Professional",
"createdAt":"2023-06-16T18:35:52.208612Z",
"updatedAt":"2023-06-22T18:55:32.418682Z"
}
GET https://my.securityjourney.com/svc/public-reporting/assessments
{
"assessmentName":"Engineering Secure Coding Assessment",
"userGivenName":"John",
"userFamilyName":"Smith",
"userEmail":"john_smith@securityjourney.com",
"programmingLanguage":"ccp",
"status":"completed",
"scorePercentage":17,
"completionDate":"2025-02-04T22:03:47.130308Z",
"dueDate":"2025-01-25T21:42:50.564Z",
"proficiencyScore":"Foundational",
"timeSpentSeconds":83608,
"categories":[
"secure-coding"
]
GET https://my.securityjourney.com/api/svc/public-reporting/user-profiles
{
"email":"john_smith@securityjourney.com",
"name":{
"familyName":"Smith",
"givenName":"John"
},
"attributes":{
"employeeNumber":"123456",
"jobRole":"Front End Engineer",
"title":"",
"country":"",
"company":"Security Journey",
"businessUnit":"Engineering",
"department":"",
"teamName":"",
"managersEmail":"",
"managersName":"",
"securityChampion":false
},
"createdAt":"2023-06-26T17:58:54Z",
"lastSeen":"2025-09-09T16:02:35Z",
"updatedAt":"2025-04-30T16:16:37.590660Z",
"developerProfile":{
"experience":"experienced",
"jobFunction":"frontend_web_developer",
"expertise":"reads_writes_code_regularly",
"language":"javascript",
"topics":[
"docker"
],
"githubUsername":""
}
Note: "status" : "abandoned" means that the user has switched paths. In the Platform UI, it will be displayed as "paused."
API Specifications and Resources
- Postman Collection
- Use our Postman Collection to start making requests immediately. This collection includes pre-configured examples and workflows that you can run in your local environment to test our API in real-time.
- OpenAPI/Swagger Specification
- Download our OpenAPI Specification (OAS) to view the full API contract. This machine-readable file is the source of truth for our API structure and can be used to generate client libraries or integrate with your own development tools.