Skip to content
  • There are no suggestions because the search field is empty.

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

  1. In Security Journey, go to Admin > Connections > Reporting API.
  2. Click Create Reporting API Key.
  3. Enter a name for the key.
  4. Copy the key and store it in a secure location.

Authentication

All requests to the t API must include the API key in the Authorization header as a Bearer token.
 
For example: 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.