Appearance
API Reference Documentation
Quick Access
Table of Contents
- Base Configuration
- Awards Management
- Class Management
- Course Management
- Registration Workflows
- Credit Management
- People & Organizations
- Reports & Analytics
- Settings & Configuration
Base Configuration
Base URL
https://engagifii-trainingandaccreditation.azurewebsites.netAPI Version
/api/v1Required Headers
| Header | Type | Required | Description |
|---|---|---|---|
tenant-code | string | Yes | Your organization's unique tenant identifier |
Content-Type | string | Yes* | application/json for POST/PUT requests |
Authorization | string | No | Bearer {token} if JWT authentication is enabled |
Common Parameters
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number for paginated results (starts at 1) |
pageSize | integer | Number of items per page (default: 50, max: 200) |
sortBy | string | Field to sort by |
sortDirection | string | asc 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
selectedDate | datetime | No | Filter 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
id | guid | Yes | Award 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
id | guid | Yes | Award 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
id | guid | Yes | Award 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
selectedDate | datetime | No | Filter by date |
status | string | No | Filter 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 allowedX-RateLimit-Remaining: Requests remainingX-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=descPagination Response Headers:
X-Total-Count: Total number of itemsX-Page-Count: Total number of pagesX-Current-Page: Current page numberX-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
- Authentication Guide
- Data Models Documentation
- Error Handling Guide
- Postman Collection
- OpenAPI Specification
API Version: v1 | Last Updated: January 2025
