Skip to main content
Authenticated API

This endpoint requires a valid JWT Bearer token. Accessible via the API gateway.

Training API

Staff training, learning management, certifications, and onboarding programs.

Overview

AttributeValue
Base Path/api/v1/training
AuthenticationBearer Token
Required Rolesrestaurant_staff, pos_staff, server, kitchen, host, manager, restaurant_manager, tenant_admin, platform_admin, system_admin, super_admin

Courses

List Courses

Retrieve available training courses.

GET /api/v1/training/courses

Query Parameters

ParameterTypeDescription
categorystringFilter by category
rolestringFilter by target role
statusstringactive, draft, archived
requiredbooleanFilter required courses

Response

{
"data": [
{
"id": "course_001",
"title": "Food Safety Fundamentals",
"description": "Essential food safety practices for all staff",
"category": "compliance",
"duration_minutes": 45,
"modules": 5,
"required": true,
"roles": ["all"],
"certification": {
"provided": true,
"validity_days": 365,
"name": "Food Handler Certificate"
},
"completion_rate": 92,
"avg_score": 87,
"thumbnail_url": "https://...",
"status": "active",
"created_at": "2025-01-01T00:00:00Z"
},
{
"id": "course_002",
"title": "POS System Training",
"description": "Complete guide to using the point of sale system",
"category": "systems",
"duration_minutes": 30,
"modules": 4,
"required": true,
"roles": ["server", "cashier", "host"],
"certification": {
"provided": false
}
}
]
}

Course Categories

CategoryDescription
complianceRequired compliance training
safetySafety procedures
systemsSoftware/system training
serviceCustomer service
productMenu/product knowledge
leadershipManagement skills
onboardingNew hire orientation

Get Course

GET /api/v1/training/courses/{course_id}

Response

{
"id": "course_001",
"title": "Food Safety Fundamentals",
"description": "Essential food safety practices for all staff",
"category": "compliance",
"modules": [
{
"id": "mod_001",
"title": "Introduction to Food Safety",
"type": "video",
"duration_minutes": 8,
"content_url": "https://...",
"order": 1
},
{
"id": "mod_002",
"title": "Temperature Control",
"type": "interactive",
"duration_minutes": 12,
"order": 2
},
{
"id": "mod_003",
"title": "Cross-Contamination Prevention",
"type": "video",
"duration_minutes": 10,
"order": 3
},
{
"id": "mod_004",
"title": "Personal Hygiene",
"type": "text",
"duration_minutes": 5,
"order": 4
},
{
"id": "mod_005",
"title": "Final Assessment",
"type": "quiz",
"duration_minutes": 10,
"passing_score": 80,
"questions": 20,
"order": 5
}
],
"prerequisites": [],
"resources": [
{
"title": "Food Safety Quick Reference",
"type": "pdf",
"url": "https://..."
}
]
}

Create Course

POST /api/v1/training/courses

Request Body

{
"title": "Allergy Awareness Training",
"description": "How to handle food allergies safely",
"category": "safety",
"roles": ["server", "cook", "host"],
"required": true,
"modules": [
{
"title": "Common Food Allergies",
"type": "video",
"content_url": "https://...",
"duration_minutes": 10
},
{
"title": "Allergy Quiz",
"type": "quiz",
"passing_score": 90
}
],
"certification": {
"provided": true,
"validity_days": 365
}
}

Employee Progress

Get Employee Progress

GET /api/v1/training/employees/{employee_id}/progress

Response

{
"employee_id": "emp_001",
"employee_name": "John Smith",
"role": "server",
"overall_progress": {
"completed_courses": 8,
"total_required": 10,
"completion_percent": 80,
"avg_score": 88
},
"courses": [
{
"course_id": "course_001",
"title": "Food Safety Fundamentals",
"status": "completed",
"progress_percent": 100,
"score": 92,
"completed_at": "2026-01-15T14:00:00Z",
"certificate_url": "https://..."
},
{
"course_id": "course_002",
"title": "POS System Training",
"status": "in_progress",
"progress_percent": 60,
"current_module": "mod_003",
"started_at": "2026-01-24T10:00:00Z"
},
{
"course_id": "course_003",
"title": "Alcohol Service",
"status": "not_started",
"required": true,
"due_date": "2026-02-01"
}
],
"certifications": [
{
"name": "Food Handler Certificate",
"course_id": "course_001",
"issued_at": "2026-01-15T14:00:00Z",
"expires_at": "2027-01-15T14:00:00Z",
"status": "valid"
}
],
"upcoming_due": [
{
"course_id": "course_003",
"title": "Alcohol Service",
"due_date": "2026-02-01"
}
]
}

Progress Status Values

StatusDescription
not_startedCourse not begun
in_progressCurrently taking
completedSuccessfully finished
failedDid not pass
expiredCertification expired

Start Course

POST /api/v1/training/employees/{employee_id}/courses/{course_id}/start

Response

{
"enrollment_id": "enroll_001",
"course_id": "course_001",
"employee_id": "emp_001",
"status": "in_progress",
"current_module": "mod_001",
"started_at": "2026-01-24T19:30:00Z",
"resume_url": "https://training.olympuscloud.ai/courses/course_001"
}

Update Progress

POST /api/v1/training/employees/{employee_id}/courses/{course_id}/progress

Request Body

{
"module_id": "mod_002",
"completed": true,
"time_spent_seconds": 720
}

Submit Quiz

POST /api/v1/training/employees/{employee_id}/courses/{course_id}/quiz

Request Body

{
"module_id": "mod_005",
"answers": [
{"question_id": "q1", "answer": "b"},
{"question_id": "q2", "answer": "c"},
{"question_id": "q3", "answer": ["a", "c"]}
]
}

Response

{
"score": 92,
"passing_score": 80,
"passed": true,
"correct": 18,
"total": 20,
"feedback": [
{
"question_id": "q5",
"correct": false,
"correct_answer": "b",
"explanation": "The danger zone temperature range is 40°F to 140°F"
}
],
"certificate_issued": true,
"certificate_url": "https://..."
}

Assignments

Assign Course

Assign course to employee(s).

POST /api/v1/training/assignments

Request Body

{
"course_id": "course_003",
"assignees": {
"type": "employees",
"ids": ["emp_001", "emp_002", "emp_003"]
},
"due_date": "2026-02-01",
"priority": "high",
"message": "Please complete alcohol service training before Friday"
}

Assign to Role

POST /api/v1/training/assignments

Request Body

{
"course_id": "course_001",
"assignees": {
"type": "role",
"roles": ["server", "cook"]
},
"due_date": "2026-02-15",
"recurring": {
"enabled": true,
"frequency": "yearly"
}
}

List Assignments

GET /api/v1/training/assignments

Query Parameters

ParameterTypeDescription
employee_idstringFilter by employee
course_idstringFilter by course
statusstringpending, completed, overdue

Certifications

List Certifications

GET /api/v1/training/certifications

Query Parameters

ParameterTypeDescription
employee_idstringFilter by employee
statusstringvalid, expiring_soon, expired

Response

{
"data": [
{
"id": "cert_001",
"employee_id": "emp_001",
"employee_name": "John Smith",
"certification_name": "Food Handler Certificate",
"course_id": "course_001",
"issued_at": "2026-01-15T14:00:00Z",
"expires_at": "2027-01-15T14:00:00Z",
"status": "valid",
"certificate_url": "https://...",
"verification_code": "CERT-2026-001234"
}
]
}

Verify Certification

GET /api/v1/training/certifications/verify/{verification_code}

Response

{
"valid": true,
"certification": {
"name": "Food Handler Certificate",
"holder_name": "John Smith",
"issued_at": "2026-01-15T14:00:00Z",
"expires_at": "2027-01-15T14:00:00Z",
"issuer": "Olympus Cloud Training"
}
}

Get Expiring Certifications

GET /api/v1/training/certifications/expiring

Query Parameters

ParameterTypeDescription
days_aheadintegerDays until expiration
location_iduuidFilter by location

Analytics

Get Training Analytics

GET /api/v1/training/analytics

Query Parameters

ParameterTypeDescription
location_iduuidFilter by location
start_datedatePeriod start
end_datedatePeriod end

Response

{
"period": {
"start": "2026-01-01",
"end": "2026-01-24"
},
"summary": {
"total_employees": 45,
"fully_compliant": 38,
"compliance_rate": 84.4,
"courses_completed": 125,
"avg_score": 87,
"training_hours": 156
},
"by_course": [
{
"course_id": "course_001",
"title": "Food Safety",
"enrollments": 45,
"completions": 42,
"completion_rate": 93.3,
"avg_score": 88
}
],
"by_department": [
{
"department": "Front of House",
"employees": 25,
"compliance_rate": 88
},
{
"department": "Back of House",
"employees": 20,
"compliance_rate": 80
}
],
"overdue_assignments": 8,
"expiring_certifications_30_days": 5
}

Get Compliance Report

GET /api/v1/training/analytics/compliance

Response

{
"overall_compliance": 84.4,
"by_requirement": [
{
"requirement": "Food Safety",
"required_by": "Health Dept",
"compliant_employees": 42,
"total_employees": 45,
"compliance_rate": 93.3,
"non_compliant": [
{"employee_id": "emp_015", "name": "Jane Doe", "days_overdue": 5}
]
},
{
"requirement": "Alcohol Service",
"required_by": "State Law",
"compliant_employees": 18,
"total_employees": 20,
"compliance_rate": 90
}
]
}

Onboarding

Get Onboarding Checklist

GET /api/v1/training/onboarding/{employee_id}

Response

{
"employee_id": "emp_050",
"employee_name": "New Hire Alex",
"role": "server",
"start_date": "2026-01-24",
"progress_percent": 40,
"checklist": [
{
"id": "onboard_001",
"title": "Complete paperwork",
"type": "task",
"status": "completed",
"completed_at": "2026-01-24T09:00:00Z"
},
{
"id": "onboard_002",
"title": "Food Safety Training",
"type": "course",
"course_id": "course_001",
"status": "in_progress",
"progress_percent": 60
},
{
"id": "onboard_003",
"title": "POS Training",
"type": "course",
"course_id": "course_002",
"status": "not_started"
},
{
"id": "onboard_004",
"title": "Shadow shift with mentor",
"type": "task",
"status": "scheduled",
"scheduled_date": "2026-01-25"
}
],
"mentor": {
"id": "emp_001",
"name": "Senior Server John"
},
"target_completion_date": "2026-01-31"
}

Update Onboarding Task

PATCH /api/v1/training/onboarding/{employee_id}/tasks/{task_id}

Request Body

{
"status": "completed",
"notes": "Completed shadow shift successfully"
}

Webhooks

EventDescription
training.course_completedEmployee finished course
training.quiz_passedQuiz passed
training.quiz_failedQuiz failed
training.certification_issuedNew certification
training.certification_expiringCert expiring soon
training.assignment_overdueAssignment past due
training.onboarding_completeOnboarding finished

Error Responses

StatusCodeDescription
400quiz_not_readyPrerequisites not met
400already_enrolledAlready taking course
404course_not_foundCourse ID not found
409certification_validCurrent cert still valid

  • Training Guide - Training setup
  • Onboarding - Onboarding process
  • Compliance - Compliance requirements