Modules Resource

Description

Modules represent self-contained training content that users can complete. Each module contains metadata such as a title, description, categories, and a hosted content URL (typically on S3). Modules can be created and managed by Admins or Content Managers.

Modules

Modules are the core content item assigned to users and grouped using categories and tags.


Example

Module:

{
  "title": "Introduction to Cybersecurity",
  "description": "A beginner-friendly course on cybersecurity fundamentals.",
  "categories": ["cat123", "cat456"], // array of category IDs
  "estimatedDuration": 45,
  "isActive": true,
  "tags": ["security", "entry-level", "tech"],
  "createdAt": 1672444800000,
  "updatedAt": 1672444800000,
  "schemaVersion": 1,
  "_id": "mod123"
}

Create Module – (!Admin or Content Manager!)

POST /api/v1/modules

Example Request:

{
  "title": "Introduction to Cybersecurity",
  "description": "A beginner-friendly course on cybersecurity fundamentals.",
  "categories": ["cat123", "cat456"], // array of category IDs
  "estimatedDuration": 45,
  "isActive": true,
  "tags": ["security", "entry-level", "tech"],
  "createdAt": 1672444800000,
  "updatedAt": 1672444800000,
  "schemaVersion": 1,
  "_id": "mod123"
}

Example Response (201 Created):

{
  "success": true,
  "message": "created module successfully.",
  "data": {
    "title": "Introduction to Cybersecurity",
    "description": "A beginner-friendly course on cybersecurity fundamentals.",
    "categories": ["cat123", "cat456"], // array of category IDs
    "estimatedDuration": 45,
    "isActive": true,
    "tags": ["security", "entry-level", "tech"],
    "createdAt": 1672444800000,
    "updatedAt": 1672444800000,
    "schemaVersion": 1,
    "_id": "mod123"
  }
}

Get All Modules & Optionally Categorize

GET /api/v1/modules

With category filter:

GET /api/v1/modules?categoryId={categoryID}

Example Response (200 OK):

{
  "success": true,
  "message": "retrieved modules successfully.",
  "data": [
    {
      "title": "Introduction to Cybersecurity",
      "description": "A beginner-friendly course on cybersecurity fundamentals.",
      "categories": ["cat123", "cat456"], // array of category IDs
      "estimatedDuration": 45,
      "isActive": true,
      "tags": ["security", "entry-level", "tech"],
      "createdAt": 1672444800000,
      "updatedAt": 1672444800000,
      "schemaVersion": 1,
      "_id": "mod123"
    }
  ]
}

Example Response (Filtered by Category)

{
  "success": true,
  "message": "Modules retrieved for category abc successfully.",
  "data": [
    {
      "_id": "5",
      "title": "Bulltrout test",
      "description": "blah blah blah moer more more test test test",
      "estimatedDuration": 5,
      "isActive": true,
      "tags": [
        "Security"
      ],
      "createdAt": 1753900359452,
      "updatedAt": 1753900359452,
      "schemaVersion": 1,
      "categories": [
        "abc"
      ]
    }
  ]
}

Get Module by ID

GET /api/v1/modules/:id

Example Response (200 OK):

{
  "success": true,
  "message": "retrieved module successfully.",
  "data": {
    "title": "Introduction to Cybersecurity",
    "description": "A beginner-friendly course on cybersecurity fundamentals.",
    "categories": ["cat123", "cat456"], // array of category IDs
    "estimatedDuration": 45,
    "isActive": true,
    "tags": ["security", "entry-level", "tech"],
    "createdAt": 1672444800000,
    "updatedAt": 1672444800000,
    "schemaVersion": 1,
    "_id": "mod123"
  }
}

Update Module – (!Admin or Content Manager!)

PATCH /api/v1/modules/:id

Example Request:

{
  "title": "Cybersecurity Basics", // optional
  "isActive": false, // optional
  "tags": ["security", "updated"] // optional
}

Example Response (200 OK):

{
  "success": true,
  "message": "updated module successfully.",
  "data": {
    "title": "Introduction to Cybersecurity",
    "description": "A beginner-friendly course on cybersecurity fundamentals.",
    "categories": ["cat123", "cat456"], // array of category IDs
    "estimatedDuration": 45,
    "isActive": true,
    "tags": ["security", "entry-level", "tech"],
    "createdAt": 1672444800000,
    "updatedAt": 1672444800000,
    "schemaVersion": 1,
    "_id": "mod123"
  }
}

Delete Module – (!Admin Only!)

DELETE /api/v1/modules/:id

Example Response (200 OK):

{
  "success": true,
  "message": "deleted module successfully."
}

Last updated