Skip to content

API Reference Documentation

Quick Access

Table of Contents

Base Configuration

Base URL

https://engagifii-trainingandaccreditation.azurewebsites.net

API Version

/api/v1

Required Headers

HeaderTypeRequiredDescription
tenant-codestringYesYour organization's unique tenant identifier
Content-TypestringYes*application/json for POST/PUT requests
AuthorizationstringNoBearer {token} if JWT authentication is enabled

Common Parameters

ParameterTypeDescription
pageintegerPage number for paginated results (starts at 1)
pageSizeintegerNumber of items per page (default: 50, max: 200)
sortBystringField to sort by
sortDirectionstringasc or desc

Awards Management

Awards represent certifications, credentials, and professional achievements that members can earn.

Get Awards List

Retrieve a list of all awards for your organization.

Endpoint: GET /api/v1/Awards/List

Parameters:

ParameterTypeRequiredDescription
selectedDatedatetimeNoFilter awards by date

Response: 200 OK

json
[
  {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "name": "Professional Certification",
    "description": "Advanced certification program",
    "levelType": "Advanced",
    "objectType": "Certification",
    "price": 299.99,
    "isActive": true,
    "tags": ["professional", "advanced"],
    "skills": ["leadership", "management"],
    "createdDate": "2024-01-15T10:30:00Z",
    "modifiedDate": "2024-01-20T14:45:00Z"
  }
]

Get Award Details

Retrieve detailed information about a specific award.

Endpoint: GET /api/v1/Awards/{id}

Path Parameters:

ParameterTypeRequiredDescription
idguidYesAward unique identifier

Response: 200 OK

json
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "name": "Professional Certification",
  "description": "Comprehensive professional certification program",
  "levelType": "Advanced",
  "objectType": "Certification",
  "requirements": "Minimum 2 years experience",
  "price": 299.99,
  "duration": "6 months",
  "isActive": true,
  "allowSelfRegistration": true,
  "requiresApproval": true,
  "tags": ["professional", "advanced"],
  "skills": ["leadership", "management", "communication"],
  "prerequisites": [
    {
      "id": "7ba85f64-5717-4562-b3fc-2c963f66afa8",
      "name": "Foundation Course",
      "type": "Course"
    }
  ],
  "createdDate": "2024-01-15T10:30:00Z",
  "modifiedDate": "2024-01-20T14:45:00Z"
}

Create Award

Create a new award in the system.

Endpoint: POST /api/v1/Awards

Request Body:

json
{
  "name": "New Certification",
  "description": "Description of the certification",
  "levelTypeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "objectTypeId": "7ba85f64-5717-4562-b3fc-2c963f66afa8",
  "requirements": "Entry requirements",
  "price": 199.99,
  "duration": "3 months",
  "isActive": true,
  "allowSelfRegistration": true,
  "requiresApproval": false,
  "tags": ["beginner", "technical"],
  "skills": ["programming", "analysis"]
}

Response: 201 Created

json
{
  "id": "9da85f64-5717-4562-b3fc-2c963f66afa6",
  "message": "Award created successfully"
}

Update Award

Update an existing award's information.

Endpoint: PUT /api/v1/Awards/{id}

Path Parameters:

ParameterTypeRequiredDescription
idguidYesAward unique identifier

Request Body:

json
{
  "name": "Updated Certification Name",
  "description": "Updated description",
  "price": 249.99,
  "isActive": true
}

Response: 200 OK

Delete Award

Delete an award from the system.

Endpoint: DELETE /api/v1/Awards/{id}

Path Parameters:

ParameterTypeRequiredDescription
idguidYesAward unique identifier

Response: 204 No Content

Award Statistics

Get statistical information about an award.

Endpoint: GET /api/v1/Awards/{id}/AwardStats

Response: 200 OK

json
[
  {
    "totalRegistrations": 150,
    "completedRegistrations": 120,
    "inProgressRegistrations": 25,
    "pendingApprovals": 5,
    "averageCompletionTime": "4.5 months",
    "successRate": 80
  }
]

Class Management

Classes represent scheduled training sessions, workshops, or educational events.

Get Classes List

Retrieve a list of all classes.

Endpoint: GET /api/v1/Classes/List

Parameters:

ParameterTypeRequiredDescription
selectedDatedatetimeNoFilter by date
statusstringNoFilter by status (upcoming, inprogress, completed)

Response: 200 OK

json
[
  {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "name": "Advanced Training Workshop",
    "courseId": "7ba85f64-5717-4562-b3fc-2c963f66afa8",
    "courseName": "Leadership Development",
    "startDate": "2024-02-15T09:00:00Z",
    "endDate": "2024-02-15T17:00:00Z",
    "location": "Conference Room A",
    "locationType": "In-Person",
    "instructor": "John Doe",
    "capacity": 30,
    "enrolled": 25,
    "availableSeats": 5,
    "status": "upcoming",
    "price": 99.99
  }
]

Create Class

Create a new class session.

Endpoint: POST /api/v1/Classes

Request Body:

json
{
  "name": "New Training Session",
  "courseId": "7ba85f64-5717-4562-b3fc-2c963f66afa8",
  "startDate": "2024-03-01T09:00:00Z",
  "endDate": "2024-03-01T17:00:00Z",
  "locationId": "5ca85f64-5717-4562-b3fc-2c963f66afa9",
  "locationType": "In-Person",
  "instructorId": "8ea85f64-5717-4562-b3fc-2c963f66afa7",
  "capacity": 25,
  "price": 149.99,
  "registrationStartDate": "2024-02-01T00:00:00Z",
  "registrationEndDate": "2024-02-28T23:59:59Z",
  "allowWaitlist": true,
  "requiresApproval": false
}

Response: 201 Created

Class Registration

Register a member for a class.

Endpoint: POST /api/v1/registration/ClassRegistration

Request Body:

json
{
  "classId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "memberId": "9fa85f64-5717-4562-b3fc-2c963f66afa4",
  "registrationType": "Regular",
  "paymentMethod": "Credit Card",
  "notes": "Dietary restrictions: Vegetarian"
}

Response: 201 Created

json
{
  "registrationId": "2ba85f64-5717-4562-b3fc-2c963f66afa3",
  "status": "Confirmed",
  "confirmationNumber": "REG-2024-001234",
  "message": "Registration successful"
}

Class Attendance

Mark attendance for a class session.

Endpoint: POST /api/v1/ClassAttendance/MarkAttendance

Request Body:

json
{
  "classId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "sessionId": "4ca85f64-5717-4562-b3fc-2c963f66afa5",
  "attendanceRecords": [
    {
      "memberId": "9fa85f64-5717-4562-b3fc-2c963f66afa4",
      "status": "Present",
      "checkInTime": "2024-02-15T08:55:00Z"
    },
    {
      "memberId": "8fa85f64-5717-4562-b3fc-2c963f66afa3",
      "status": "Absent",
      "reason": "Sick leave"
    }
  ]
}

Response: 200 OK

Course Management

Courses represent educational programs or training curricula.

Get Courses List

Retrieve all available courses.

Endpoint: GET /api/v1/Courses/List

Response: 200 OK

json
[
  {
    "id": "7ba85f64-5717-4562-b3fc-2c963f66afa8",
    "name": "Leadership Development Program",
    "description": "Comprehensive leadership training",
    "category": "Management",
    "duration": "40 hours",
    "credits": 4,
    "level": "Intermediate",
    "prerequisites": [],
    "tags": ["leadership", "management"],
    "isActive": true
  }
]

Get Course Details

Retrieve detailed information about a course.

Endpoint: GET /api/v1/Courses/{id}

Response: 200 OK

json
{
  "id": "7ba85f64-5717-4562-b3fc-2c963f66afa8",
  "name": "Leadership Development Program",
  "description": "Comprehensive leadership training program",
  "detailedDescription": "This program covers...",
  "objectives": [
    "Develop leadership skills",
    "Improve team management",
    "Strategic thinking"
  ],
  "curriculum": [
    {
      "module": "Module 1: Introduction",
      "duration": "4 hours",
      "topics": ["Topic 1", "Topic 2"]
    }
  ],
  "category": "Management",
  "duration": "40 hours",
  "credits": 4,
  "level": "Intermediate",
  "instructors": ["John Doe", "Jane Smith"],
  "materials": ["Textbook", "Online resources"],
  "assessmentMethod": "Final exam and project",
  "certificateOffered": true,
  "price": 499.99
}

Create Course

Create a new course.

Endpoint: POST /api/v1/Courses

Request Body:

json
{
  "name": "New Training Course",
  "description": "Course description",
  "category": "Technical",
  "duration": "20 hours",
  "credits": 2,
  "level": "Beginner",
  "price": 299.99,
  "isActive": true
}

Response: 201 Created

Registration Workflows

Award Registration

Register a member for an award/certification.

Endpoint: POST /api/v1/AwardsRegistration/RegisterMember

Request Body:

json
{
  "awardId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "memberId": "9fa85f64-5717-4562-b3fc-2c963f66afa4",
  "justification": "Meeting certification requirements",
  "supportingDocuments": [
    {
      "name": "Certificate.pdf",
      "url": "https://storage.blob/cert.pdf"
    }
  ]
}

Response: 201 Created

json
{
  "registrationId": "1ca85f64-5717-4562-b3fc-2c963f66afa2",
  "status": "PendingApproval",
  "message": "Registration submitted for approval"
}

Get Registration Status

Check the status of a registration.

Endpoint: GET /api/v1/registration/{registrationId}/status

Response: 200 OK

json
{
  "registrationId": "1ca85f64-5717-4562-b3fc-2c963f66afa2",
  "status": "Approved",
  "approvedBy": "Manager Name",
  "approvalDate": "2024-01-22T10:00:00Z",
  "comments": "All requirements met"
}

Approve Registration

Approve a pending registration.

Endpoint: POST /api/v1/AwardsRegistration/ApproveRequest

Request Body:

json
{
  "registrationId": "1ca85f64-5717-4562-b3fc-2c963f66afa2",
  "approverId": "6da85f64-5717-4562-b3fc-2c963f66afa1",
  "comments": "Approved - all criteria met",
  "grantCredits": true
}

Response: 200 OK

Reject Registration

Reject a registration request.

Endpoint: POST /api/v1/AwardsRegistration/RejectRequest

Request Body:

json
{
  "registrationId": "1ca85f64-5717-4562-b3fc-2c963f66afa2",
  "approverId": "6da85f64-5717-4562-b3fc-2c963f66afa1",
  "reason": "Missing prerequisites",
  "comments": "Please complete foundation course first"
}

Response: 200 OK

Credit Management

Credit Types

Get available credit types.

Endpoint: GET /api/v1/CreditType/List

Response: 200 OK

json
[
  {
    "id": "5ea85f64-5717-4562-b3fc-2c963f66afa0",
    "name": "CPE",
    "description": "Continuing Professional Education",
    "isActive": true
  },
  {
    "id": "6ea85f64-5717-4562-b3fc-2c963f66afa1",
    "name": "PDH",
    "description": "Professional Development Hours",
    "isActive": true
  }
]

Submit Credit Request

Submit a request for external credits.

Endpoint: POST /api/v1/CreditRequests

Request Body:

json
{
  "memberId": "9fa85f64-5717-4562-b3fc-2c963f66afa4",
  "creditTypeId": "5ea85f64-5717-4562-b3fc-2c963f66afa0",
  "creditsRequested": 8,
  "activityName": "External Conference",
  "activityDate": "2024-01-15T00:00:00Z",
  "provider": "Professional Association",
  "description": "Annual industry conference attendance",
  "supportingDocuments": [
    {
      "name": "attendance_certificate.pdf",
      "url": "https://storage/docs/cert.pdf"
    }
  ]
}

Response: 201 Created

Get Credit History

Retrieve credit history for a member.

Endpoint: GET /api/v1/CoursesCreditsEarned/{memberId}

Response: 200 OK

json
{
  "memberId": "9fa85f64-5717-4562-b3fc-2c963f66afa4",
  "totalCredits": 45,
  "creditsByType": [
    {
      "creditType": "CPE",
      "total": 30
    },
    {
      "creditType": "PDH",
      "total": 15
    }
  ],
  "creditHistory": [
    {
      "date": "2024-01-15T00:00:00Z",
      "activity": "Leadership Workshop",
      "creditType": "CPE",
      "credits": 8,
      "status": "Approved"
    }
  ]
}

People & Organizations

Get Person Details

Retrieve information about a person/member.

Endpoint: GET /api/v1/People/{id}

Response: 200 OK

json
{
  "id": "9fa85f64-5717-4562-b3fc-2c963f66afa4",
  "firstName": "John",
  "lastName": "Doe",
  "email": "john.doe@example.com",
  "title": "Senior Manager",
  "department": "Engineering",
  "organizationId": "4ga85f64-5717-4562-b3fc-2c963f66afa7",
  "organizationName": "Tech Corp",
  "isActive": true,
  "joinDate": "2020-01-15T00:00:00Z"
}

Get Organizations

Retrieve list of organizations.

Endpoint: GET /api/v1/Organization/List

Response: 200 OK

json
[
  {
    "id": "4ga85f64-5717-4562-b3fc-2c963f66afa7",
    "name": "Tech Corp",
    "type": "Corporate",
    "parentOrganizationId": null,
    "address": "123 Main St",
    "city": "San Francisco",
    "state": "CA",
    "country": "USA",
    "isActive": true
  }
]

Reports & Analytics

Training Credits Report

Generate a training credits earned report.

Endpoint: POST /api/v1/Report/TrainingCreditsEarned

Request Body:

json
{
  "startDate": "2024-01-01T00:00:00Z",
  "endDate": "2024-12-31T23:59:59Z",
  "organizationId": "4ga85f64-5717-4562-b3fc-2c963f66afa7",
  "creditType": "CPE",
  "format": "PDF"
}

Response: 200 OK

json
{
  "reportId": "RPT-2024-00123",
  "downloadUrl": "https://reports/download/RPT-2024-00123.pdf",
  "expiresAt": "2024-01-25T00:00:00Z"
}

Class Statistics

Get statistical data for classes.

Endpoint: GET /api/v1/Classes/{classId}/Statistics

Response: 200 OK

json
{
  "classId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "totalRegistrations": 25,
  "confirmedRegistrations": 23,
  "waitlistCount": 2,
  "attendanceRate": 92,
  "completionRate": 88,
  "averageRating": 4.5,
  "demographics": {
    "byDepartment": {
      "Engineering": 10,
      "Sales": 8,
      "Marketing": 5
    }
  }
}

Settings & Configuration

Get Configuration Settings

Retrieve system configuration settings.

Endpoint: GET /api/v1/ConfigurationSettings

Response: 200 OK

json
{
  "registrationSettings": {
    "allowSelfRegistration": true,
    "requireApproval": true,
    "maxWaitlistSize": 10,
    "cancellationDeadlineHours": 24
  },
  "creditSettings": {
    "allowExternalCredits": true,
    "requireDocumentation": true,
    "maxCreditsPerYear": 100
  },
  "notificationSettings": {
    "sendRegistrationConfirmation": true,
    "sendReminders": true,
    "reminderDaysBefore": 2
  }
}

Update Settings

Update configuration settings.

Endpoint: PUT /api/v1/Settings/{category}

Request Body:

json
{
  "allowSelfRegistration": true,
  "requireApproval": false,
  "maxWaitlistSize": 15
}

Response: 200 OK

Error Responses

All endpoints may return the following error responses:

400 Bad Request

json
{
  "error": "VALIDATION_ERROR",
  "message": "Invalid request data",
  "details": {
    "field": "email",
    "issue": "Invalid email format"
  }
}

401 Unauthorized

json
{
  "error": "UNAUTHORIZED",
  "message": "Authentication required"
}

403 Forbidden

json
{
  "error": "FORBIDDEN",
  "message": "Insufficient permissions"
}

404 Not Found

json
{
  "error": "NOT_FOUND",
  "message": "Resource not found"
}

429 Too Many Requests

json
{
  "error": "RATE_LIMIT_EXCEEDED",
  "message": "Too many requests",
  "retryAfter": 60
}

500 Internal Server Error

json
{
  "error": "INTERNAL_ERROR",
  "message": "An unexpected error occurred",
  "reference": "ERR-2024-001234"
}

Rate Limiting

The API implements rate limiting to ensure fair usage:

  • Default limit: 1000 requests per minute per tenant
  • Burst limit: 50 concurrent requests
  • Rate limit headers returned:
    • X-RateLimit-Limit: Maximum requests allowed
    • X-RateLimit-Remaining: Requests remaining
    • X-RateLimit-Reset: Unix timestamp when limit resets

Pagination

For endpoints returning lists, use pagination parameters:

http
GET /api/v1/Awards/List?page=2&pageSize=50&sortBy=createdDate&sortDirection=desc

Pagination Response Headers:

  • X-Total-Count: Total number of items
  • X-Page-Count: Total number of pages
  • X-Current-Page: Current page number
  • X-Page-Size: Items per page

Code Examples

JavaScript/TypeScript

javascript
// Get awards with pagination
const response = await fetch(
  'https://engagifii-trainingandaccreditation.azurewebsites.net/api/v1/Awards/AwardListPaging',
  {
    method: 'POST',
    headers: {
      'tenant-code': 'YOUR_TENANT_CODE',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      page: 1,
      pageSize: 50,
      sortBy: 'name',
      sortDirection: 'asc'
    })
  }
);

const data = await response.json();
console.log(`Found ${data.totalCount} awards`);

Python

python
import requests

# Create a class registration
url = "https://engagifii-trainingandaccreditation.azurewebsites.net/api/v1/registration/ClassRegistration"
headers = {
    "tenant-code": "YOUR_TENANT_CODE",
    "Content-Type": "application/json"
}
data = {
    "classId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "memberId": "9fa85f64-5717-4562-b3fc-2c963f66afa4",
    "registrationType": "Regular"
}

response = requests.post(url, json=data, headers=headers)
if response.status_code == 201:
    result = response.json()
    print(f"Registration successful: {result['confirmationNumber']}")

C#/.NET

csharp
using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Add("tenant-code", "YOUR_TENANT_CODE");
    
    var response = await client.GetAsync(
        "https://engagifii-trainingandaccreditation.azurewebsites.net/api/v1/Awards/List"
    );
    
    if (response.IsSuccessStatusCode)
    {
        var json = await response.Content.ReadAsStringAsync();
        var awards = JsonConvert.DeserializeObject<List<Award>>(json);
        Console.WriteLine($"Retrieved {awards.Count} awards");
    }
}

cURL

bash
# Get course details
curl -X GET "https://engagifii-trainingandaccreditation.azurewebsites.net/api/v1/Courses/7ba85f64-5717-4562-b3fc-2c963f66afa8" \
  -H "tenant-code: YOUR_TENANT_CODE" \
  -H "Accept: application/json"

# Create award registration
curl -X POST "https://engagifii-trainingandaccreditation.azurewebsites.net/api/v1/AwardsRegistration/RegisterMember" \
  -H "tenant-code: YOUR_TENANT_CODE" \
  -H "Content-Type: application/json" \
  -d '{
    "awardId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "memberId": "9fa85f64-5717-4562-b3fc-2c963f66afa4"
  }'

Additional Resources


API Version: v1 | Last Updated: January 2025