{
  "openapi": "3.0.0",
  "info": {
    "description": "This is AppsecEngineer Enterprise API server console.\n\n## Generating API Token and Customer ID\nAs an admin, follow these steps to generate an API token and retrieve your customer ID:\n1. Navigate to \"My Profile\" in the \"My Account\" section of the app\n2. Look for the API token generation option in your profile\n3. Generate a new token or copy your existing token and customer ID\n",
    "version": "1.0.0",
    "title": "AppSecEngineer Enterprise API",
    "termsOfService": "https://appsecengineer.com/tos",
    "contact": { "email": "support@appsecengineer.com" },
    "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" }
  },
  "paths": {
    "/report/completed-courses": {
      "post": {
        "summary": "Get completed courses and assignments by user ID",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string", "format": "uuid" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserCompletedCoursesRequest" } } }, "description": "email of the user for which completed courses should be listed", "required": true },
        "responses": {
          "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserCompletedCoursesResponse" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/report/active-courses": {
      "post": {
        "summary": "Get active courses and assignments by user ID",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string", "format": "uuid" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserActiveCoursesRequest" } } }, "description": "email of the user for which completed courses should be listed", "required": true },
        "responses": {
          "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserActiveCoursesResponse" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/report/company-stats": {
      "post": {
        "summary": "Get company user statistics by user ID",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string", "format": "uuid" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CompanyStatsRequest" } } }, "description": "Company stats request body", "required": true },
        "responses": {
          "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CompanyStatsResponse" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/report/team-stats": {
      "post": {
        "summary": "Get team statistics",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string", "format": "uuid" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamStatsRequest" } } }, "description": "Team stats request body", "required": true },
        "responses": {
          "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamStatResponse" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/report/proficiency-report": {
      "post": {
        "summary": "Get proficiency report",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string", "format": "uuid" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "responses": {
          "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProficiencyReportResponse" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/report/lp-report": {
      "post": {
        "summary": "Get learning path report",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string", "format": "uuid" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "responses": {
          "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LPReportResponse" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/report/lp-completed-report": {
      "post": {
        "summary": "Get learning path completed report",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string", "format": "uuid" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "responses": {
          "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LPCompletedReportResponse" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/report/journey-report": {
      "post": {
        "summary": "Get journey report",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string", "format": "uuid" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LearningJourneyRequest" } } }, "description": "Journey report request body", "required": true },
        "responses": {
          "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LearningJourneyResponse" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/user-activity": {
      "post": {
        "summary": "Get user activity",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string", "format": "uuid" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserActiveCoursesRequest" } } }, "description": "User activity request body", "required": true },
        "responses": {
          "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserActivityReport" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/report/user-report": {
      "post": {
        "summary": "Get user report",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string", "format": "uuid" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserCompletedCoursesRequest" } } }, "description": "User report request body", "required": true },
        "responses": {
          "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserReport" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/report/individual-journey-report": {
      "post": {
        "summary": "Get individual journey report",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string", "format": "uuid" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IndividualJourneyRequest" } } }, "description": "Individual journey report request body", "required": true },
        "responses": {
          "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IndividualJourneyResponse" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/report/top-users": {
      "post": {
        "summary": "Get top users (overall or monthly)",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string", "format": "uuid" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TopUsersRequest" } } }, "description": "Top users report request body", "required": true },
        "responses": {
          "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TopUsersResponse" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/report/list-teams": {
      "post": {
        "summary": "List all teams for a customer",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string", "format": "uuid" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginationModel" } } }, "description": "Optional pagination model for listing teams" },
        "responses": {
          "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListTeamsResponse" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/report/list-assignments": {
      "post": {
        "summary": "List all assignments for a customer",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string", "format": "uuid" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginationModel" } } }, "description": "Optional pagination model for listing assignments" },
        "responses": {
          "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListAssignmentsResponse" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/report/assignment-report": {
      "post": {
        "summary": "Get assignment report",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAssignmentRequest" } } }, "description": "Assignment report request body", "required": true },
        "responses": {
          "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAssignmentResponse" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/scorm/registration/courses": {
      "post": {
        "summary": "List all the courses with SCORM package",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScormListCoursesRequest" } } }, "description": "Optional pagination token payload input" },
        "responses": {
          "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScormListCoursesResponse" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/scorm/registration/create": {
      "post": {
        "summary": "Create a new SCORM registration",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string", "format": "uuid" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateLearnerRegistrationRequest" } } }, "description": "SCORM registration creation request", "required": true },
        "responses": {
          "201": { "description": "Registration created successfully" },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/scorm/registrations/list": {
      "post": {
        "summary": "List registrations for a specific course",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": ["course_id"], "properties": { "course_id": { "type": "string", "description": "ID of the course to list registrations for" }, "pagination": { "type": "string", "description": "Optional pagination token" } } } } }, "description": "Request body for listing registrations", "required": true },
        "responses": {
          "200": { "description": "Successful response with list of registrations", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListRegistrationsResponse" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    },
    "/scorm/registration/launch": {
      "post": {
        "summary": "Launch a SCORM course registration",
        "parameters": [
          { "in": "header", "name": "X-ASE-API-Token", "required": true, "schema": { "type": "string", "format": "uuid" } },
          { "in": "header", "name": "X-ASE-Customer-ID", "required": true, "schema": { "type": "string", "format": "uuid" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScormRegistrationLaunchRequest" } } }, "description": "Registration launch request", "required": true },
        "responses": {
          "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScormRegistrationLaunchResponse" } } } },
          "400": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
          "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
        }
      }
    }
  },
  "externalDocs": { "description": "Find out more about AppSecEngineer", "url": "https://appsecengineer.com" },
  "servers": [ { "url": "https://api.appsecengineer.app/enterprise" } ],
  "components": {
    "schemas": {
      "UserCompletedCoursesRequest": { "type": "object", "properties": { "user_id": { "type": "string", "example": "john@doe.com" } } },
      "TopUsersRequest": { "type": "object", "required": ["select"], "properties": { "select": { "type": "string", "enum": ["overall", "monthly"], "example": "overall" }, "query": { "type": "string", "format": "yyyy-MM", "example": "2023-05" } } },
      "UserCompletedCoursesResponse": { "type": "object", "properties": { "success": { "type": "boolean" }, "error": { "type": "boolean" }, "data": { "type": "array", "items": { "type": "object", "properties": { "event_name": { "type": "string" }, "id": { "type": "string" }, "vid_duration": { "type": "number", "format": "float", "description": "total watch duration of the user for the course in minutes" }, "lab_duration": { "type": "number", "format": "float", "description": "total time spent on the lab by the user in minutes" } } } }, "assignments": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "end_date": { "type": "string", "format": "date" }, "name": { "type": "string" }, "start_date": { "type": "string", "format": "date" } } } } } },
      "ErrorResponse": { "type": "object", "properties": { "success": { "type": "boolean" }, "error": { "type": "boolean" }, "message": { "type": "string" } } },
      "UserActiveCoursesRequest": { "type": "object", "properties": { "user_id": { "type": "string", "example": "john@doe.com" } } },
      "UserActiveCoursesResponse": { "type": "object", "properties": { "success": { "type": "boolean" }, "error": { "type": "boolean" }, "data": { "type": "array", "items": { "type": "object", "properties": { "event_name": { "type": "string" }, "id": { "type": "string" }, "vid_duration": { "type": "number", "format": "float" }, "lab_duration": { "type": "number", "format": "float" } } } }, "assignments": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "end_date": { "type": "string", "format": "date" }, "name": { "type": "string" }, "start_date": { "type": "string", "format": "date" } } } } } },
      "CompanyStatsRequest": { "type": "object", "properties": { "user_id": { "type": "string", "example": "john@doe.com" } } },
      "CompanyStatsResponse": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "array", "items": { "type": "object", "properties": { "first_name": { "type": "string" }, "last_name": { "type": "string" }, "video_count": { "type": "integer", "description": "total number of quiz completed" }, "lab_count": { "type": "integer", "description": "total number of labs completed" }, "media_count": { "type": "integer", "description": "total number of medias completed" }, "quiz_count": { "type": "integer", "description": "total number of quizes completed" }, "email": { "type": "string" } } } } } },
      "TeamStatsRequest": { "type": "object", "properties": { "team_id": { "type": "string", "example": "team_062c0918-e7eb-40e0-af3b-ecdca8b91f9f" }, "select": { "type": "string", "enum": ["overall", "monthly"], "example": "overall" } } },
      "GetAssignmentRequest": { "type": "object", "properties": { "id": { "type": "string", "example": "assign_062c0918-e7eb-40e0-af3b-ecdca8b91f9f" } } },
      "ProficiencyReportResponse": { "type": "object", "properties": { "message": { "type": "string" }, "success": { "type": "boolean" }, "data": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string" }, "total_enroll_count": { "type": "integer", "description": "Total number of enrollments" }, "courses": { "type": "array", "items": { "type": "object", "properties": { "event_name": { "type": "string", "description": "Name of the Course" }, "enroll_count": { "type": "integer", "description": "Number of enrollments for the course" } } } } } } } } },
      "TeamStatResponse": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "object", "properties": { "activity": { "type": "array", "description": "Array of activities", "items": { "type": "object", "properties": { "activity": { "type": "integer", "description": "Activity count" }, "date": { "type": "string", "format": "date", "description": "Date of the activity" } } } }, "progress": { "type": "array", "items": { "type": "object", "properties": { "course": { "type": "string", "description": "Name of the course" }, "averageProgress": { "type": "number", "format": "float", "description": "Average progress by the team percentage in percentage" }, "duration": { "type": "number", "format": "float", "description": "Duration in minutes" } } } }, "assignments": { "type": "array", "items": { "type": "object", "description": "Assignment details" } }, "assign_completed": { "type": "array", "items": { "type": "object", "properties": { "assign": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the assignment" }, "end_date": { "type": "string", "format": "date", "description": "Assignment end date" }, "name": { "type": "string", "description": "Name of the assignment" }, "start_date": { "type": "string", "format": "date", "description": "Assignment start date" } } }, "users": { "type": "array", "items": { "type": "string", "description": "List of user identifiers" } } } } }, "stat": { "type": "object", "properties": { "assignments_completed": { "type": "number", "format": "float", "description": "Number of assignments completed" }, "badges": { "type": "integer", "description": "Number of badges earned" }, "challenges_completed": { "type": "number", "format": "float", "description": "Number of challenges completed" }, "doc_type": { "type": "string", "description": "Document type identifier" }, "enrolled": { "type": "number", "format": "float", "description": "Number of enrollments" }, "lab_minutes": { "type": "number", "format": "float", "description": "Total lab time in minutes" }, "labs_completed": { "type": "number", "format": "float", "description": "Number of labs completed" }, "video_minutes": { "type": "number", "format": "float", "description": "Total video watch time in minutes" }, "videos_completed": { "type": "number", "format": "float", "description": "Number of videos completed" } } }, "recent": { "type": "array", "items": { "type": "object", "properties": { "activity": { "type": "string", "description": "type of activity ( lab/videso/course etc completed )" }, "item": { "type": "string", "description": "Name of the completed item" }, "date": { "type": "string", "description": "completed date" } } } }, "items": { "type": "array", "items": { "type": "object", "properties": { "first_name": { "type": "string", "description": "User's first name" }, "last_name": { "type": "string", "description": "User's last name" }, "lab_minutes": { "type": "number", "format": "float", "description": "Total lab time in minutes for the user" }, "course_minutes": { "type": "number", "format": "float", "description": "Total course time in minutes for the user" }, "email": { "type": "string", "description": "User's email address" } } } } } } } },
      "LPReportResponse": { "type": "object", "properties": { "message": { "type": "string" }, "success": { "type": "boolean" }, "error": { "type": "boolean" }, "data": { "type": "object", "properties": { "lab_duration": { "type": "array", "items": { "type": "object", "properties": { "lpId": { "type": "string", "description": "unique learning path id" }, "learning_path_name": { "type": "string", "description": "learning path name" }, "lab_duration": { "type": "number", "format": "float", "description": "total lab duration spent by users in the company in minutes" } } } }, "vid_duration": { "type": "array", "description": "watch time duration in minutes across different learning paths", "items": { "type": "object", "properties": { "lpId": { "type": "string" }, "learning_path_name": { "type": "string" }, "vid_duration": { "type": "number", "format": "float", "description": "watch time for videos across selected learning path" } } } } } } } },
      "LPCompletedReportResponse": { "type": "object", "properties": { "message": { "type": "string" }, "success": { "type": "boolean" }, "data": { "type": "array", "items": { "type": "object", "properties": { "completed_count": { "type": "number", "format": "float", "description": "number of videos/labs/quizes completed" }, "lp": { "type": "string", "description": "Learning path id" }, "learning_path_name": { "type": "string" } } } } } },
      "LearningJourneyRequest": { "type": "object", "properties": { "skip": { "type": "integer", "description": "Number of records to skip." }, "limit": { "type": "integer", "description": "Maximum number of records to return." } } },
      "LearningJourneyResponse": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "array", "items": { "type": "object", "properties": { "journey_id": { "type": "string", "description": "Unique identifier for the learning journey." }, "enroll_count": { "type": "integer", "description": "Number of users enrolled in the journey." }, "journey": { "type": "object", "properties": { "proficiency": { "type": "string", "description": "Proficiency level expected for the journey." }, "id": { "type": "string", "description": "Sort key for the journey." }, "description": { "type": "string", "description": "Description of the learning journey." }, "logo": { "type": "string", "format": "url", "description": "URL of the logo for the learning journey." }, "duration": { "type": "integer", "description": "Duration of the learning journey in minutes." }, "name": { "type": "string", "description": "Name of the learning journey." } } } } } } } },
      "UserActivityReport": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "array", "items": { "type": "object", "properties": { "activity": { "type": "integer", "description": "Total count of completed labs/videos/quiz on related date" }, "date": { "type": "string", "format": "date" } } } } } },
      "UserReport": { "type": "object", "properties": { "success": { "type": "boolean" }, "error": { "type": "boolean" }, "data": { "type": "object", "properties": { "challenges_completed": { "type": "integer", "description": "total count of challenges solved" }, "labs_completed": { "type": "number", "description": "total count of labs completed" }, "videos_completed": { "type": "number", "description": "total count of videos completed" }, "badges": { "type": "number", "description": "total count of badges earned through courses/assignments/streaks etc" }, "total_enrolled": { "type": "integer", "description": "total count of enrolled courses" }, "dashboard": { "type": "array", "items": { "type": "object", "properties": { "activity": { "type": "integer", "description": "total count of items ( videos/labs/quizes ) completed" }, "date": { "type": "string", "format": "date" } } } }, "total_course_minutes": { "type": "number", "description": "videos watched duration in minutes" }, "month_lab_minutes": { "type": "integer", "description": "total duration of labs used on the given month" }, "total_lab_minutes": { "type": "number", "description": "total duration of labs used in minutes" } } } } },
      "IndividualJourneyRequest": { "type": "object", "properties": { "id": { "type": "string", "description": "Journey ID" }, "skip": { "type": "integer", "description": "Number of records to skip" }, "limit": { "type": "integer", "description": "Maximum number of records to return" } } },
      "IndividualJourneyResponse": { "type": "object", "properties": { "data": { "type": "object", "properties": { "ttl": { "type": "integer", "description": "sum duration of all the contents in the journey" }, "logo": { "type": "string", "format": "url" }, "name": { "type": "string" }, "active": { "type": "boolean" }, "roles": { "type": "array", "items": { "type": "string" } }, "events": { "type": "array", "items": { "type": "string" } }, "proficiency": { "type": "string" }, "id": { "type": "string" }, "description": { "type": "string" }, "type": { "type": "string" }, "duration": { "type": "integer" }, "created_on": { "type": "string", "format": "date-time" }, "report": { "type": "object", "properties": { "avg_user_progress": { "type": "array", "items": { "type": "object", "properties": { "email": { "type": "string", "format": "email" }, "avg_progress": { "type": "number", "format": "float" }, "first_name": { "type": "string" }, "last_name": { "type": "string" } } } }, "avg_progress": { "type": "number", "format": "float", "description": "average rogress on Journey by all the users" }, "avg_course_progress": { "type": "object", "description": "average progress of different courses by all the users", "additionalProperties": { "type": "number", "format": "float" } }, "completed": { "type": "array", "items": { "type": "object", "properties": { "email": { "type": "string", "format": "email" }, "completed_courses": { "type": "integer" }, "first_name": { "type": "string" }, "last_name": { "type": "string" } } } } } }, "skills": { "type": "array", "items": { "type": "object", "properties": { "date": { "type": "string", "format": "date" }, "topTag": { "type": "string" }, "count": { "type": "integer" } } } } } }, "success": { "type": "boolean" }, "error": { "type": "boolean" } } },
      "TopUsersResponse": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "data": { "type": "object", "properties": { "data": { "type": "array", "items": { "type": "object", "properties": { "first_name": { "type": "string", "example": "John" }, "last_name": { "type": "string", "example": "Doe" }, "lab_minutes": { "type": "number", "example": 100 }, "assignments_completed": { "type": "integer", "example": 5 }, "course_minutes": { "type": "integer", "example": 200 }, "email": { "type": "string", "example": "john.doe@example.com" }, "challenge_completed": { "type": "integer", "example": 2 } } } }, "badges": { "type": "integer", "example": 10 }, "total": { "type": "integer", "example": 100 } } } } },
      "PaginationModel": { "type": "object", "description": "The pagination token", "properties": { "pagination": { "type": "string" } } },
      "ListTeamsResponse": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "error": { "type": "boolean", "example": false }, "data": { "type": "object", "properties": { "Items": { "type": "array", "items": { "type": "object", "properties": { "stat": { "type": "array", "items": { "type": "object", "properties": { "lp": { "type": "string", "description": "learning path name" }, "duration": { "type": "integer", "description": "sum of watch time and lab time by all the team members" }, "percentage": { "type": "number", "format": "float", "description": "percentage vs all the learning paths" } } } }, "team_name": { "type": "string" }, "id": { "type": "string" }, "search_name": { "type": "string" }, "type": { "type": "string" }, "created_on": { "type": "string", "format": "date-time" }, "lab_minutes": { "type": "number", "format": "float", "description": "total lab time spent by all the team members" }, "video_minutes": { "type": "number", "format": "float", "description": "total video watch time sum for all the team members" } } } } } } } },
      "ListAssignmentsResponse": { "type": "object", "properties": { "success": { "type": "boolean" }, "error": { "type": "boolean" }, "LastEvaluatedKey": { "type": "string" }, "data": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "start_date": { "type": "string", "format": "date-time" }, "end_date": { "type": "string", "format": "date-time" }, "users": { "type": "array", "items": { "type": "string", "format": "email" } } } } } } },
      "GetAssignmentResponse": { "type": "object", "properties": { "success": { "type": "boolean" }, "error": { "type": "boolean" }, "data": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "start_date": { "type": "string", "description": "Assignment start date", "format": "date-time" }, "end_date": { "type": "string", "description": "Assignment start date", "format": "date-time" }, "users": { "type": "array", "description": "List of users attached to the assignment", "items": { "type": "string", "format": "email" } }, "teams": { "type": "array", "description": "List of teams attached to the assignment", "items": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } } } }, "verify_completion": { "type": "boolean" }, "events": { "type": "array", "description": "List of courses in the assignment", "items": { "type": "object", "properties": { "event_name": { "type": "string", "description": "Name of the course" }, "duration": { "type": "number", "format": "float", "description": "time spent by each user in the course" }, "id": { "type": "string", "description": "id of the course" } } } }, "report": { "type": "object", "properties": { "avg_course_progress": { "type": "number", "format": "float", "description": "average progress of different courses by all the users" }, "avg_progress": { "type": "number", "format": "float", "description": "overall progress made on the assignment by each user" }, "avg_user_progress": { "type": "number", "format": "float", "description": "average progress made by each user on the assignment" }, "avg_lab_progress": { "type": "number", "format": "float" }, "completed": { "type": "array", "description": "completion status of assigned courses in the assigment by individual users", "items": { "type": "object", "properties": { "email": { "type": "string", "format": "email" }, "duration": { "type": "number", "format": "float" }, "first_name": { "type": "string" }, "last_name": { "type": "string" }, "completed_courses": { "type": "number", "description": "number of courses completed by the user" } } } } } } } } } },
      "ScormListCoursesRequest": { "type": "object", "properties": { "pagination": { "type": "string", "description": "Optional pagination token" } } },
      "ScormListCoursesResponse": { "type": "object", "properties": { "success": { "type": "boolean" }, "error": { "type": "boolean" }, "message": { "type": "string" }, "data": { "type": "object", "properties": { "pagination": { "type": "string" }, "courses": { "type": "array", "items": { "type": "object", "properties": { "course_id": { "type": "string" }, "proficiency": { "type": "string" }, "skills": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "tags": { "type": "array", "items": { "type": "string" } }, "is_active": { "type": "boolean" }, "logo": { "type": "string" }, "event_name": { "type": "string" } } } } } } } },
      "CreateLearnerRegistrationRequest": { "type": "object", "required": ["course_id", "learner"], "properties": { "course_id": { "type": "string", "format": "uuid" }, "learner": { "$ref": "#/components/schemas/LearnerRegistration" } } },
      "LearnerRegistration": { "type": "object", "required": ["learner_id", "email", "first_name", "last_name"], "properties": { "learner_id": { "type": "string", "format": "uuid" }, "email": { "type": "string", "format": "email" }, "first_name": { "type": "string" }, "last_name": { "type": "string" } } },
      "ListRegistrationsResponse": { "type": "object", "properties": { "message": { "type": "string" }, "success": { "type": "boolean" }, "data": { "type": "object", "properties": { "pagination": { "type": "string" }, "data": { "type": "array", "items": { "type": "object", "properties": { "registration_id": { "type": "string" }, "course_id": { "type": "string" }, "progress": { "type": "number", "format": "float" }, "learner": { "$ref": "#/components/schemas/LearnerRegistration" } } } } } } } },
      "ScormRegistrationLaunchRequest": { "type": "object", "properties": { "registration_id": { "type": "string", "description": "ID of the registration to launch" }, "course_id": { "type": "string", "description": "ID of the course to launch the registration for" } } },
      "ScormRegistrationLaunchResponse": { "type": "object", "properties": { "success": { "type": "boolean" }, "message": { "type": "string" }, "data": { "type": "string", "format": "url", "description": "URL to launch the SCORM course" } } }
    }
  }
}
