Secure Code Warrior Training API

The Training API from Secure Code Warrior — 5 operation(s) for training.

OpenAPI Specification

secure-code-warrior-training-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Secure Code Warrior Portal Assessments Training API
  description: The Secure Code Warrior Portal API provides programmatic access to the developer security training platform. Manage users, teams, training progress, assessments, tournaments, courses, programs, metrics, and audit logs. Supports multiple API key types for granular access control across US and EU regions.
  version: 2.0.0
  contact:
    url: https://portal-api.securecodewarrior.com/api/docs/v2/
servers:
- url: https://portal-api.securecodewarrior.com/api/v2
  description: Secure Code Warrior Portal API - US
- url: https://portal-api.eu.securecodewarrior.com/api/v2
  description: Secure Code Warrior Portal API - EU
security:
- apiKey: []
tags:
- name: Training
paths:
  /training/developer-leaderboard:
    get:
      operationId: getDeveloperLeaderboard
      summary: Get Developer Leaderboard
      description: Returns a list of all developers within the organisation, with their current stats as well as the change in stats over the report period.
      tags:
      - Training
      parameters:
      - name: report_period
        in: query
        description: Report period in days (1, 7, or 30)
        schema:
          type: integer
          enum:
          - 1
          - 7
          - 30
          default: 30
      - name: page
        in: query
        schema:
          type: integer
          default: 1
      - name: startdate
        in: query
        description: Start date filter (ISO 8601)
        schema:
          type: string
          format: date
      - name: enddate
        in: query
        description: End date filter (ISO 8601)
        schema:
          type: string
          format: date
      responses:
        '200':
          description: Developer leaderboard data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LeaderboardResponse'
  /training/developer-leaderboard/search:
    post:
      operationId: searchDeveloperLeaderboard
      summary: Search Developer Leaderboard
      description: Search leaderboard with email, tag, and team filters.
      tags:
      - Training
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                tags:
                  type: array
                  items:
                    type: string
                team:
                  type: string
      responses:
        '200':
          description: Filtered leaderboard data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LeaderboardResponse'
  /training/developers-progress:
    get:
      operationId: getDevelopersProgress
      summary: Get Developers Progress
      description: Retrieve training progress with realm, level, and quest data for all developers.
      tags:
      - Training
      parameters:
      - name: page
        in: query
        schema:
          type: integer
          default: 1
      responses:
        '200':
          description: Developer training progress
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProgressResponse'
  /training/developers-activity:
    get:
      operationId: getDevelopersActivity
      summary: Get Developers Activity
      description: Returns the detailed challenge log of all developers.
      tags:
      - Training
      parameters:
      - name: page
        in: query
        schema:
          type: integer
          default: 1
      responses:
        '200':
          description: Developer activity log
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityResponse'
  /training/team-leaderboard:
    get:
      operationId: getTeamLeaderboard
      summary: Get Team Leaderboard
      description: Fetch team statistics and rankings.
      tags:
      - Training
      parameters:
      - name: omitInactive
        in: query
        description: Exclude inactive teams from results
        schema:
          type: boolean
          default: false
      - name: page
        in: query
        schema:
          type: integer
          default: 1
      responses:
        '200':
          description: Team leaderboard data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TeamLeaderboardResponse'
components:
  schemas:
    User:
      type: object
      properties:
        id:
          type: string
        email:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        role:
          type: string
        teams:
          type: array
          items:
            type: string
        tags:
          type: array
          items:
            type: string
        createdAt:
          type: string
          format: date-time
        lastActiveAt:
          type: string
          format: date-time
    ProgressResponse:
      type: object
      properties:
        developers:
          type: array
          items:
            type: object
            properties:
              user:
                $ref: '#/components/schemas/User'
              realm:
                type: string
              level:
                type: integer
              quests_completed:
                type: integer
        total:
          type: integer
        page:
          type: integer
    ActivityResponse:
      type: object
      properties:
        activities:
          type: array
          items:
            type: object
            properties:
              userId:
                type: string
              email:
                type: string
              challenge:
                type: string
              language:
                type: string
              framework:
                type: string
              result:
                type: string
                enum:
                - pass
                - fail
              timestamp:
                type: string
                format: date-time
        total:
          type: integer
        page:
          type: integer
    Team:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        memberCount:
          type: integer
        tags:
          type: array
          items:
            type: string
        createdAt:
          type: string
          format: date-time
    LeaderboardResponse:
      type: object
      properties:
        entries:
          type: array
          items:
            type: object
            properties:
              rank:
                type: integer
              user:
                $ref: '#/components/schemas/User'
              points:
                type: integer
              completions:
                type: integer
              change:
                type: integer
                description: Rank change over report period
        total:
          type: integer
        page:
          type: integer
    TeamLeaderboardResponse:
      type: object
      properties:
        entries:
          type: array
          items:
            type: object
            properties:
              rank:
                type: integer
              team:
                $ref: '#/components/schemas/Team'
              points:
                type: integer
              completions:
                type: integer
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-Key
      description: Report API key, Admin API key, or Team API Key