Download OpenAPI specification:
Monitoring, Evaluation & Learning Management Information System API
The ALiVE MIS API provides comprehensive endpoints for managing projects, activities, milestones, forms, reports, and user authentication. This API follows RESTful principles and uses JWT-based authentication.
Most endpoints require authentication using either:
Authorization: Bearer <token> headerauth_token cookie is automatically set after loginAuthenticate user with email and password
{- "email": "user@example.com",
- "password": "password123"
}{- "accessToken": "jwt_token",
- "refreshToken": "refresh_token",
- "user": {
- "id": "user-id",
- "email": "user@example.com",
- "firstName": "John",
- "lastName": "Doe"
}
}Register a new user account
{- "email": "newuser@example.com",
- "password": "password123",
- "firstName": "John",
- "lastName": "Doe"
}{- "id": "user-id",
- "email": "newuser@example.com",
- "firstName": "John",
- "lastName": "Doe"
}Get a new access token using refresh token
{- "refreshToken": "refresh_token_value"
}{- "accessToken": "new_jwt_token",
- "refreshToken": "new_refresh_token"
}Send password reset link to email
{- "email": "user@example.com"
}{- "message": "If that email is registered you will receive a reset link shortly"
}Reset password using token from email
{- "token": "reset_token_from_email",
- "password": "newpassword123"
}{- "message": "Password reset successfully. Please sign in with your new password."
}Logout user and invalidate tokens
{- "refreshToken": "refresh_token_value"
}{- "message": "Logged out successfully"
}Create a new user account (super admin only)
{- "email": "newuser@example.com",
- "password": "password123",
- "firstName": "John",
- "lastName": "Doe",
- "tenantId": "tenant-id"
}{- "id": "user-id",
- "email": "newuser@example.com",
- "firstName": "John",
- "lastName": "Doe"
}Retrieve a list of all projects accessible to the current user.
[- {
- "id": "proj-001",
- "name": "Q1 Training Initiative",
- "description": "Comprehensive training program for new employees",
- "status": "active",
- "startDate": "2024-01-01",
- "endDate": "2024-03-31",
- "budget": 50000,
- "tenantId": "tenant-001",
- "createdAt": "2024-01-01T08:00:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}
]Create a new project in the system.
Project creation payload
{- "name": "Q1 Training Initiative",
- "description": "Comprehensive training program for new employees",
- "startDate": "2024-01-01",
- "endDate": "2024-03-31",
- "budget": 50000
}{- "id": "proj-001",
- "name": "Q1 Training Initiative",
- "description": "Comprehensive training program for new employees",
- "status": "active",
- "startDate": "2024-01-01",
- "endDate": "2024-03-31",
- "budget": 50000,
- "tenantId": "tenant-001",
- "createdAt": "2024-01-01T08:00:00Z",
- "updatedAt": "2024-01-01T08:00:00Z"
}Retrieve detailed information about a specific project.
| id required | string Example: proj-001 The unique identifier of the project |
{- "id": "proj-001",
- "name": "Q1 Training Initiative",
- "description": "Comprehensive training program for new employees",
- "status": "active",
- "startDate": "2024-01-01",
- "endDate": "2024-03-31",
- "budget": 50000,
- "tenantId": "tenant-001",
- "createdAt": "2024-01-01T08:00:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}Partially update a project.
| id required | string Example: proj-001 The unique identifier of the project to update |
Project update payload (partial)
{- "name": "Q1 Training Initiative - Updated",
- "budget": 55000
}{- "id": "proj-001",
- "name": "Q1 Training Initiative - Updated",
- "description": "Comprehensive training program for new employees",
- "status": "active",
- "startDate": "2024-01-01",
- "endDate": "2024-03-31",
- "budget": 55000,
- "tenantId": "tenant-001",
- "createdAt": "2024-01-01T08:00:00Z",
- "updatedAt": "2024-01-15T11:45:00Z"
}Retrieve all expenses associated with a specific project.
| id required | string Example: proj-001 The unique identifier of the project |
[- {
- "id": "exp-001",
- "projectId": "proj-001",
- "description": "Training materials",
- "amount": 5000,
- "category": "materials",
- "date": "2024-01-10",
- "createdAt": "2024-01-10T09:00:00Z"
}
]Create a new expense record for a project.
| id required | string Example: proj-001 The unique identifier of the project |
Expense creation payload
{- "description": "Training materials",
- "amount": 5000,
- "category": "materials",
- "date": "2024-01-10"
}{- "id": "exp-001",
- "projectId": "proj-001",
- "description": "Training materials",
- "amount": 5000,
- "category": "materials",
- "date": "2024-01-10",
- "createdAt": "2024-01-10T09:00:00Z"
}Remove an expense from a project.
| id required | string Example: proj-001 The unique identifier of the project |
| expenseId required | string Example: exp-001 The unique identifier of the expense to delete |
{- "success": true,
- "message": "Expense deleted"
}Retrieve all milestones for a specific project.
| projectId required | string Example: proj-001 The unique identifier of the project |
[- {
- "id": "mile-001",
- "projectId": "proj-001",
- "name": "Phase 1 Completion",
- "description": "Complete initial training modules",
- "dueDate": "2024-02-15",
- "status": "in_progress",
- "createdAt": "2024-01-01T08:00:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}
]Create a new milestone for a project.
| projectId required | string Example: proj-001 The unique identifier of the project |
Milestone creation payload
{- "name": "Phase 1 Completion",
- "description": "Complete initial training modules",
- "dueDate": "2024-02-15"
}{- "id": "mile-001",
- "projectId": "proj-001",
- "name": "Phase 1 Completion",
- "description": "Complete initial training modules",
- "dueDate": "2024-02-15",
- "status": "pending",
- "createdAt": "2024-01-01T08:00:00Z",
- "updatedAt": "2024-01-01T08:00:00Z"
}Retrieve detailed information about a specific milestone.
| projectId required | string Example: proj-001 The unique identifier of the project |
| id required | string Example: mile-001 The unique identifier of the milestone |
{- "id": "mile-001",
- "projectId": "proj-001",
- "name": "Phase 1 Completion",
- "description": "Complete initial training modules",
- "dueDate": "2024-02-15",
- "status": "in_progress",
- "createdAt": "2024-01-01T08:00:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}Partially update a milestone.
| projectId required | string Example: proj-001 The unique identifier of the project |
| id required | string Example: mile-001 The unique identifier of the milestone to update |
Milestone update payload (partial)
{- "status": "completed"
}{- "id": "mile-001",
- "projectId": "proj-001",
- "name": "Phase 1 Completion",
- "description": "Complete initial training modules",
- "dueDate": "2024-02-15",
- "status": "completed",
- "createdAt": "2024-01-01T08:00:00Z",
- "updatedAt": "2024-01-15T11:45:00Z"
}Delete a milestone from a project.
| projectId required | string Example: proj-001 The unique identifier of the project |
| id required | string Example: mile-001 The unique identifier of the milestone to delete |
{- "success": true,
- "message": "Milestone deleted"
}Retrieve all activities for a specific project.
| projectId required | string Example: proj-001 The unique identifier of the project |
[- {
- "id": "act-001",
- "projectId": "proj-001",
- "name": "Module 1: Introduction",
- "description": "Introduction to the training program",
- "status": "active",
- "startDate": "2024-01-15",
- "endDate": "2024-01-20",
- "createdAt": "2024-01-01T08:00:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}
]Create a new activity for a project.
| projectId required | string Example: proj-001 The unique identifier of the project |
Activity creation payload
{- "name": "Module 1: Introduction",
- "description": "Introduction to the training program",
- "startDate": "2024-01-15",
- "endDate": "2024-01-20"
}{- "id": "act-001",
- "projectId": "proj-001",
- "name": "Module 1: Introduction",
- "description": "Introduction to the training program",
- "status": "active",
- "startDate": "2024-01-15",
- "endDate": "2024-01-20",
- "createdAt": "2024-01-01T08:00:00Z",
- "updatedAt": "2024-01-01T08:00:00Z"
}Retrieve detailed information about a specific activity.
| projectId required | string Example: proj-001 The unique identifier of the project |
| id required | string Example: act-001 The unique identifier of the activity |
{- "id": "act-001",
- "projectId": "proj-001",
- "name": "Module 1: Introduction",
- "description": "Introduction to the training program",
- "status": "active",
- "startDate": "2024-01-15",
- "endDate": "2024-01-20",
- "createdAt": "2024-01-01T08:00:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}Partially update an activity.
| projectId required | string Example: proj-001 The unique identifier of the project |
| id required | string Example: act-001 The unique identifier of the activity to update |
Activity update payload (partial)
{- "status": "completed"
}{- "id": "act-001",
- "projectId": "proj-001",
- "name": "Module 1: Introduction",
- "description": "Introduction to the training program",
- "status": "completed",
- "startDate": "2024-01-15",
- "endDate": "2024-01-20",
- "createdAt": "2024-01-01T08:00:00Z",
- "updatedAt": "2024-01-15T11:45:00Z"
}Delete an activity from a project.
| projectId required | string Example: proj-001 The unique identifier of the project |
| id required | string Example: act-001 The unique identifier of the activity to delete |
{- "success": true,
- "message": "Activity deleted"
}Assign a user to an activity.
| projectId required | string Example: proj-001 The unique identifier of the project |
| id required | string Example: act-001 The unique identifier of the activity |
User assignment payload
{- "user_id": "user-123"
}{- "id": "assign-001",
- "activityId": "act-001",
- "userId": "user-123",
- "assignedAt": "2024-01-15T10:30:00Z"
}Remove a user assignment from an activity.
| projectId required | string Example: proj-001 The unique identifier of the project |
| assignmentId required | string Example: assign-001 The unique identifier of the assignment to remove |
{- "success": true,
- "message": "Assignment removed"
}Retrieve a paginated list of all forms accessible to the current user.
| limit | any Example: limit=20 Items per page (default: 20) |
| page | any Example: page=1 Page number (default: 1) |
{- "data": [
- {
- "id": "form-001",
- "name": "Employee Onboarding",
- "description": "New employee onboarding form",
- "status": "active",
- "createdAt": "2024-01-01T08:00:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}
], - "total": 1,
- "page": 1,
- "limit": 20
}Create a new form.
Form creation payload
{- "name": "Employee Onboarding",
- "description": "New employee onboarding form"
}{- "id": "form-001",
- "name": "Employee Onboarding",
- "description": "New employee onboarding form",
- "status": "active",
- "createdAt": "2024-01-01T08:00:00Z",
- "updatedAt": "2024-01-01T08:00:00Z"
}Retrieve detailed information about a specific form including all fields.
| id required | string Example: form-001 The unique identifier of the form |
{- "id": "form-001",
- "name": "Employee Onboarding",
- "description": "New employee onboarding form",
- "status": "active",
- "fields": [
- {
- "id": "field-001",
- "name": "Full Name",
- "type": "text",
- "required": true
}
], - "createdAt": "2024-01-01T08:00:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}Partially update a form.
| id required | string Example: form-001 The unique identifier of the form to update |
Form update payload (partial)
{- "name": "Employee Onboarding - Updated"
}Create a copy of an existing form with all its fields.
| id required | string Example: form-001 The unique identifier of the form to duplicate |
{- "id": "form-002",
- "name": "Employee Onboarding (Copy)",
- "description": "New employee onboarding form",
- "status": "active",
- "createdAt": "2024-01-15T10:30:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}Add a new field to a form.
| id required | string Example: form-001 The unique identifier of the form |
Form field creation payload
{- "name": "Full Name",
- "type": "text",
- "required": true,
- "placeholder": "Enter your full name"
}{- "id": "field-001",
- "formId": "form-001",
- "name": "Full Name",
- "type": "text",
- "required": true,
- "placeholder": "Enter your full name"
}Update a field in a form.
| id required | string Example: form-001 The unique identifier of the form |
| fieldId required | string Example: field-001 The unique identifier of the field to update |
Form field update payload
{ }Remove a field from a form.
| id required | string Example: form-001 The unique identifier of the form |
| fieldId required | string Example: field-001 The unique identifier of the field to delete |
{- "success": true,
- "message": "Field deleted"
}Assign a form to a user or group of users.
| id required | string Example: form-001 The unique identifier of the form |
Form assignment payload
{- "userId": "user-123",
- "dueDate": "2024-02-15"
}{- "id": "assign-001",
- "formId": "form-001",
- "userId": "user-123",
- "dueDate": "2024-02-15",
- "assignedAt": "2024-01-15T10:30:00Z"
}Remove a form assignment from a user.
| id required | string Example: form-001 The unique identifier of the form |
| assignmentId required | string Example: assign-001 The unique identifier of the assignment to remove |
{- "success": true,
- "message": "Assignment removed"
}Submit a completed form with field responses.
| id required | string Example: form-001 The unique identifier of the form |
Form submission payload
{- "responses": {
- "field-001": "John Doe",
- "field-002": "john@example.com"
}
}{- "id": "submission-001",
- "formId": "form-001",
- "userId": "user-123",
- "responses": {
- "field-001": "John Doe",
- "field-002": "john@example.com"
}, - "submittedAt": "2024-01-15T10:30:00Z"
}Retrieve all submissions for a specific form.
| id required | string Example: form-001 The unique identifier of the form |
[- {
- "id": "submission-001",
- "formId": "form-001",
- "userId": "user-123",
- "responses": {
- "field-001": "John Doe",
- "field-002": "john@example.com"
}, - "submittedAt": "2024-01-15T10:30:00Z"
}
]Generate a new report based on specified criteria. Requires SUPER_ADMIN, TENANT_ADMIN, or REPORT_VIEWER role.
Report generation parameters
{- "title": "Q1 Training Report",
- "type": "training_summary",
- "filters": {
- "startDate": "2024-01-01",
- "endDate": "2024-03-31",
- "tenantId": "tenant-001"
}
}{- "id": "report-001",
- "title": "Q1 Training Report",
- "type": "training_summary",
- "status": "completed",
- "fullReport": "Report content here...",
- "wordCount": 2500,
- "createdAt": "2024-01-15T10:30:00Z"
}Save a client-generated report to the database as COMPLETED.
Report save payload
{- "title": "Q1 Training Report",
- "fullReport": "Report content here...",
- "wordCount": 2500
}{- "id": "report-001",
- "title": "Q1 Training Report",
- "status": "completed",
- "fullReport": "Report content here...",
- "wordCount": 2500,
- "createdAt": "2024-01-15T10:30:00Z"
}Retrieve a paginated list of all reports accessible to the current user.
| page | string Example: page=1 Page number (default: 1) |
| limit | string Example: limit=10 Items per page (default: 10, max: 100) |
{- "data": [
- {
- "id": "report-001",
- "title": "Q1 Training Report",
- "type": "training_summary",
- "status": "completed",
- "wordCount": 2500,
- "createdAt": "2024-01-15T10:30:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}
], - "total": 1,
- "page": 1,
- "limit": 10
}Retrieve detailed information about a specific report.
| id required | string Example: report-001 The unique identifier of the report |
{- "id": "report-001",
- "title": "Q1 Training Report",
- "type": "training_summary",
- "status": "completed",
- "fullReport": "Report content here...",
- "sections": {
- "summary": "Summary section...",
- "details": "Details section..."
}, - "wordCount": 2500,
- "createdAt": "2024-01-15T10:30:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}Update report details such as title, content, or sections.
| id required | string Example: report-001 The unique identifier of the report to update |
Report update payload
{- "title": "Q1 Training Report - Updated",
- "fullReport": "Updated report content...",
- "wordCount": 2600
}{- "id": "report-001",
- "title": "Q1 Training Report - Updated",
- "status": "completed",
- "fullReport": "Updated report content...",
- "wordCount": 2600,
- "updatedAt": "2024-01-15T11:45:00Z"
}Retrieve a list of all tenants in the system. Requires SUPER_ADMIN or TENANT_ADMIN role.
[- {
- "id": "tenant-001",
- "name": "Acme Corporation",
- "email": "admin@acme.com",
- "phone": "+1-555-0100",
- "address": "123 Business Ave, Tech City, TC 12345",
- "status": "active",
- "createdAt": "2024-01-15T10:30:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}
]Create a new tenant in the system. Only SUPER_ADMIN can perform this action.
Tenant creation payload
{- "name": "Acme Corporation",
- "email": "admin@acme.com",
- "phone": "+1-555-0100",
- "address": "123 Business Ave, Tech City, TC 12345"
}{- "id": "tenant-001",
- "name": "Acme Corporation",
- "email": "admin@acme.com",
- "phone": "+1-555-0100",
- "address": "123 Business Ave, Tech City, TC 12345",
- "status": "active",
- "createdAt": "2024-01-15T10:30:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}Retrieve detailed information about a specific tenant.
| id required | string Example: tenant-001 The unique identifier of the tenant |
{- "id": "tenant-001",
- "name": "Acme Corporation",
- "email": "admin@acme.com",
- "phone": "+1-555-0100",
- "address": "123 Business Ave, Tech City, TC 12345",
- "status": "active",
- "createdAt": "2024-01-15T10:30:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}Partially update a tenant. Only SUPER_ADMIN can perform this action.
| id required | string Example: tenant-001 The unique identifier of the tenant to update |
Tenant update payload (partial)
{- "name": "Acme Corporation Updated",
- "phone": "+1-555-0101"
}{- "id": "tenant-001",
- "name": "Acme Corporation Updated",
- "email": "admin@acme.com",
- "phone": "+1-555-0101",
- "address": "123 Business Ave, Tech City, TC 12345",
- "status": "active",
- "createdAt": "2024-01-15T10:30:00Z",
- "updatedAt": "2024-01-15T11:45:00Z"
}Update a tenant using PUT method for dashboard compatibility. Only SUPER_ADMIN can perform this action.
| id required | string Example: tenant-001 The unique identifier of the tenant to update |
Tenant update payload
{ }Delete a tenant from the system. Only SUPER_ADMIN can perform this action.
| id required | string Example: tenant-001 The unique identifier of the tenant to delete |
{- "success": true,
- "message": "Tenant deleted"
}Activate a deactivated tenant. Restores the tenant to active status.
| id required | string Example: tenant-001 The unique identifier of the tenant to activate |
{- "id": "tenant-001",
- "name": "Acme Corporation",
- "status": "active"
}Assign a user to a tenant. SUPER_ADMIN or TENANT_ADMIN can perform this action.
| id required | string Example: tenant-001 The unique identifier of the tenant |
User assignment payload
{- "userId": "user-123"
}{- "id": "assignment-001",
- "tenantId": "tenant-001",
- "userId": "user-123",
- "assignedAt": "2024-01-15T10:30:00Z"
}Remove a user from a tenant. SUPER_ADMIN or TENANT_ADMIN can perform this action.
| id required | string Example: tenant-001 The unique identifier of the tenant |
| userId required | string Example: user-123 The unique identifier of the user to remove |
{- "success": true,
- "message": "User removed from tenant"
}Retrieve a list of recent ETL job runs with their execution details.
| limit | string Example: limit=20 Maximum number of job runs to return (default: 20) |
[- {
- "id": "job-001",
- "startedAt": "2024-01-15T10:30:00Z",
- "completedAt": "2024-01-15T10:45:00Z",
- "status": "completed",
- "rowsProcessed": 1250,
- "durationMs": 15000,
- "errors": [ ]
}
]Retrieve key performance indicators for training programs.
| tenantId | string Example: tenantId=tenant-001 Filter KPIs by tenant ID (optional) |
{- "totalTrainees": 250,
- "completionRate": 85.5,
- "averageScore": 78.3,
- "coursesCompleted": 1250,
- "certificatesIssued": 210
}Retrieve performance metrics for all courses.
| tenantId | string Example: tenantId=tenant-001 Filter performance data by tenant ID (optional) |
[- {
- "courseId": "course-001",
- "courseName": "Introduction to Training",
- "enrollments": 150,
- "completions": 128,
- "completionRate": 85.3,
- "averageScore": 78.5,
- "averageTimeSpent": 240
}
]Retrieve a list of all available integrations and their connection status.
[- {
- "id": "moodle",
- "name": "Moodle LMS",
- "type": "MOODLE",
- "description": "Moodle Learning Management System — syncs users, courses, enrolments and completions",
- "status": "connected",
- "enabled": true,
- "lastSync": "2024-01-15T10:30:00Z",
- "config": {
- "host": "moodle.example.com",
- "port": 3306,
- "database": "moodle_db"
}
}
]Manually trigger a synchronization with the integration service.
| id required | string Example: moodle The integration identifier (e.g., "moodle") |
{- "success": true,
- "message": "Sync completed",
- "rowsProcessed": 150,
- "durationMs": 5000
}Retrieve the synchronization history for an integration.
| id required | string Example: moodle The integration identifier (e.g., "moodle") |
[- {
- "id": 1,
- "startedAt": "2024-01-15T10:30:00Z",
- "completedAt": "2024-01-15T10:35:00Z",
- "status": "completed",
- "message": "Synced 150 rows from mdl_user",
- "usersProcessed": 150,
- "coursesProcessed": null,
- "enrolmentsProcessed": null
}
]Disconnect an integration service.
| id required | string Example: moodle The integration identifier (e.g., "moodle") |
{- "success": false,
- "message": "Disconnect not supported for Moodle — update env vars to disable"
}Retrieve key performance indicators for training programs.
| tenant | any Example: tenant=tenant-001 Filter by tenant ID (optional) |
{- "totalTrainees": 250,
- "completionRate": 85.5,
- "averageScore": 78.3,
- "coursesCompleted": 1250,
- "certificatesIssued": 210,
- "activePrograms": 12
}Retrieve training trends over a specified time period.
| tenant | any Example: tenant=tenant-001 Filter by tenant ID (optional) |
| months | any Example: months=6 Number of months to analyze (default: 6) |
[- {
- "month": "2023-08",
- "enrollments": 45,
- "completions": 38,
- "averageScore": 76.5
}
]Retrieve analytics data for all courses.
| tenant | any Example: tenant=tenant-001 Filter by tenant ID (optional) |
[- {
- "courseId": "course-001",
- "courseName": "Introduction to Training",
- "enrollments": 150,
- "completions": 128,
- "completionRate": 85.3,
- "averageScore": 78.5
}
]Retrieve an overall performance summary across all training programs.
{- "totalEnrollments": 1250,
- "totalCompletions": 1050,
- "overallCompletionRate": 84,
- "averageScore": 77.8,
- "topPerformers": 45,
- "needsSupport": 120
}Retrieve performance metrics for all assignments.
[- {
- "assignmentId": "assign-001",
- "assignmentName": "Project 1",
- "submissions": 200,
- "averageScore": 78.3,
- "submissionRate": 95,
- "averageTimeSpent": 120
}
]