1.0.10 • Published 5 months ago

coachlms v1.0.10

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

Coach LMS API Client

A secure and robust Node.js client for interacting with the Coach LMS API.

Installation

npm install coach-lms-api-client

Usage

const ApiClient = require('coach-lms-api-client');

// Initialize the client
const client = new ApiClient('YOUR_API_KEY', {
    baseURL: 'https://super-admin.coachlms.org/api', // Optional: defaults to this URL
    timeout: 30000,                                   // Optional: default 30 seconds
    maxRetries: 3,                                   // Optional: default 3 retries
    retryDelay: 1000                                // Optional: default 1 second
});

Features

  • Secure API key authentication
  • Automatic retry mechanism with exponential backoff
  • Request/Response interceptors for security headers
  • Input validation and sanitization
  • Comprehensive error handling
  • Request tracking with unique IDs

Available Methods

Organization Structure

getOrganisationCategory()

Get all available organization categories.

const categories = await client.getOrganisationCategory();

getOrgSubcategory(categoryId)

Get subcategories for a specific category.

const subcategories = await client.getOrgSubcategory('categoryId');

getOrgProgram(subcategoryId)

Get programs for a specific subcategory.

const programs = await client.getOrgProgram('subcategoryId');

getOrgProgramCohort(programId)

Get cohorts for a specific program.

const cohorts = await client.getOrgProgramCohort('programId');

Program Structure

getProgramTerm(cohortId)

Get terms for a specific cohort.

const terms = await client.getProgramTerm('cohortId');

getProgramTermSection(termId)

Get sections for a specific term.

const sections = await client.getProgramTermSection('termId');

getCourses(sectionId)

Get courses for a specific section.

const courses = await client.getCourses('sectionId');

User Management

getUsersDetails(userId)

Get details for a specific user.

const userDetails = await client.getUsersDetails('userId');

getUserAssignment(userId)

Get assignments for a specific user.

const assignments = await client.getUserAssignment('userId');

getUserAnnouncements(userId)

Get announcements for a specific user.

const announcements = await client.getUserAnnouncements('userId');

getUserPortfolioDetails(userId)

Get portfolio details for a specific user.

const portfolioDetails = await client.getUserPortfolioDetails('userId');

getUserSessions(userId)

Get all sessions for a specific user.

const sessions = await client.getUserSessions('userId');

Error Handling

The client includes built-in error handling that throws detailed error messages for:

  • API errors (with status codes)
  • Network errors
  • Request errors
try {
    const data = await client.getUsersDetails('userId');
} catch (error) {
    console.error(error.message);
    // Handles: API Error: 404 - User not found
    // Handles: Network Error: Connection timeout
    // Handles: Request Error: Invalid parameters
}

Security Features

  • Automatic request ID generation for tracking
  • Request timestamp headers
  • Input sanitization
  • Content-Type enforcement
  • Client version tracking
  • Configurable timeout
  • Bearer token authentication

License

MIT

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Security Features

Built-in Security Measures

  1. Request Timeout: Default 30-second timeout for all requests
  2. Automatic Retries: Implements exponential backoff strategy for failed requests
  3. Input Sanitization: Removes potentially dangerous characters from input
  4. Request Tracking:
    • Unique request IDs for each API call
    • Request timestamps for audit trails
  5. Secure Headers: Automatically includes security-related headers
  6. Error Handling: Enhanced error reporting with detailed messages

Configuration Options

const client = new ApiClient('your-api-key', {
    baseURL: 'https://api.example.com',
    timeout: 5000,           // Custom timeout in milliseconds
    maxRetries: 3,           // Maximum number of retry attempts
    retryDelay: 1000        // Base delay between retries in milliseconds
});

Best Practices

  1. API Key Security:

    • Never commit API keys to version control
    • Use environment variables for API key storage
    const client = new ApiClient(process.env.API_KEY);
  2. Error Handling:

    try {
        const userData = await client.getUserData({ uuid: 'user-id' });
    } catch (error) {
        if (error.message.includes('API Error: 401')) {
            // Handle authentication errors
        } else if (error.message.includes('Network Error')) {
            // Handle connection issues
        }
    }
  3. Rate Limiting:

    • Implement appropriate delays between requests
    • Handle rate limit responses appropriately
1.0.9

5 months ago

1.0.10

5 months ago

1.0.8

6 months ago

1.0.7

6 months ago

1.0.6

6 months ago

1.0.5

6 months ago

1.0.4

7 months ago

1.0.3

7 months ago

1.0.2

7 months ago

1.0.1

7 months ago

1.0.0

7 months ago