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 level and current path enrollment /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

Users progress in any path a user has been enrolled in, regardless of level

/api/v3/public-reporting/path-enrollments

Content Catalog details like Name, Description, and URLs for individual lessons and paths

/api/v3/public-reporting/content-catalog

 


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/api/v3/public-reporting/assessments

{

"assessmentName":"Engineering Secure Coding Assessment",

"userGivenName":"John",

"userFamilyName":"Smith",

"userEmail":"john_smith@securityjourney.com",

"programmingLanguage":"ccp",

"status":"completed",

"scorePercentage":50,

"completionDate":"2025-02-04T22:03:47.130308Z",

"dueDate":"2025-01-25T21:42:50.564Z",

"proficiencyScore":"Foundational",

"timeSpentSeconds":83608,

"categories":[

"secure-coding"

],

"topicScores":[

{

"path":"secure-coding/authentication-and-authorization-issues",

"names":[

"Secure Coding",

"Authentication and Authorization Issues"

],

"earnedPoints":1,

"possiblePoints":1

},

{

"path":"secure-coding/concurrency-issues",

"names":[

"Secure Coding",

"Concurrency Issues"

],

"earnedPoints":0,

"possiblePoints":1

}

]

}

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."

GET https://my.securityjourney.com/api/v3/public-reporting/path-enrollments

{  

"pathEnrollments": [

{

"userEmail": "john_smith@securityjourney.com",

"pathId": "adv-for-block-secq",

"status": "in_progress",

"pathTimeSpent": "02:05:23",

"startedAt": "2026-04-27T21:08:04.405055Z",

"lastAccessedAt": "2026-04-28T13:13:05.046146Z",

"completedLessons": 7,

"totalLessons": 10

}

]

}

Available filters:

email
path_id
status (example of filtering by multiple statuses: status=in_progress&status=abandoned)
updated_after
started_at
completed_at

Sorting options:

sort_by (possible values: last_accessed, user_email, enrollment_status)
order_type (possible values: asc or desc)
limit (max limit is 3000 records per page)
offset

GET https://my.securityjourney.com/api/v3/public-reporting/content-catalog

{

"path": [

{

"pathId": "advanced-c",

"pathName": "Advanced: C",

"pathDescription": "Secure application design, secure coding, and specialized C security topics, ranging from vulnerabilities, secure memory management, and secure programming techniques.",

"pathDuration": 295,

"active": true,

"pathUrl": "https://my.securityjourney.com/path/advanced-c",

"lessons": [

{

"lessonName": "Intro to Secure Development",

"lessonDescription": "The definition of secure development and it's pieces. Secure development starts and ends with the developer.",

"lessonDuration": 5,

"lessonUrl": "https://my.securityjourney.com/lesson/intro-to-secure-development"

},

{

"lessonName": "Designing a Secure App or Product",

"lessonDescription": "The four pillars of a secure application or product, secure application or product decisions, and the building blocks of secure design.",

"lessonDuration": 6,

"lessonUrl": "https://my.securityjourney.com/lesson/designing-a-secure-app-or-product"

},

{

"lessonName": "Secure Design Principles in Action: Part 1",

"lessonDescription": "Economy of mechanism, secure the weakest link, establish trust boundaries, defense in depth, don't' reinvent the wheel, usable security and default deny.",

"lessonDuration": 13,

"lessonUrl": "https://my.securityjourney.com/lesson/secure-design-principles-in-action-part-1"

},

{

"lessonName": "Secure Design Principles in Action: Part 2",

"lessonDescription": "Validate inputs, avoid bypass attacks, secure trust relationships, least privilege, fail securely, secure data at rest, and audit/verify.",

"lessonDuration": 12,

"lessonUrl": "https://my.securityjourney.com/lesson/secure-design-principles-in-action-part-2"

},

{

"lessonName": "Intro to Secure Coding",

"lessonDescription": "The need for secure coding, what are secure coding standards and how does a developer use them, and the potential dangers of Stack Overflow.",

"lessonDuration": 6,

"lessonUrl": "https://my.securityjourney.com/lesson/intro-to-secure-coding"

},

{

"lessonName": "Producing Clean, Maintainable, and Secure Code",

"lessonDescription": "Defines clean, maintainable, and secure code and gives eight tips on how to create it.",

"lessonDuration": 6,

"lessonUrl": "https://my.securityjourney.com/lesson/producing-clean-maintainable-and-secure-code"

}

],

"categories": [

"native_dev"

]

}

]

}

 


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.

Additional Resources