Training
Training protocol schemas
Information Security Training Protocol — ISO 27001:2022 (A.6.3)
Defines schemas for security awareness and training management including
course definitions, completion tracking, and organizational training plans.
@see https://www.iso.org/standard/27001
@category Security
Source: packages/spec/src/system/training.zod.ts
TypeScript Usage
import { TrainingCategory, TrainingCompletionStatus, TrainingCourse, TrainingPlan, TrainingRecord } from '@objectstack/spec/system';
import type { TrainingCategory, TrainingCompletionStatus, TrainingCourse, TrainingPlan, TrainingRecord } from '@objectstack/spec/system';
// Validate data
const result = TrainingCategory.parse(data);TrainingCategory
Allowed Values
security_awarenessdata_protectionincident_responseaccess_controlphishing_awarenesscompliancesecure_developmentphysical_securitybusiness_continuityother
TrainingCompletionStatus
Allowed Values
not_startedin_progresscompletedfailedexpired
TrainingCourse
Security training course definition
Properties
| Property | Type | Required | Description |
|---|---|---|---|
| id | string | ✅ | Unique course identifier |
| title | string | ✅ | Course title |
| description | string | ✅ | Course description and learning objectives |
| category | Enum<'security_awareness' | 'data_protection' | 'incident_response' | 'access_control' | 'phishing_awareness' | 'compliance' | 'secure_development' | 'physical_security' | 'business_continuity' | 'other'> | ✅ | Training category |
| durationMinutes | number | ✅ | Estimated course duration in minutes |
| mandatory | boolean | ✅ | Whether training is mandatory |
| targetRoles | string[] | ✅ | Target roles or groups |
| validityDays | number | optional | Certification validity period in days |
| passingScore | number | optional | Minimum passing score percentage |
| version | string | optional | Course content version |
TrainingPlan
Organizational training plan per ISO 27001:2022 A.6.3
Properties
| Property | Type | Required | Description |
|---|---|---|---|
| enabled | boolean | ✅ | Enable training management |
| courses | Object[] | ✅ | Training courses |
| recertificationIntervalDays | number | ✅ | Default recertification interval in days |
| trackCompletion | boolean | ✅ | Track training completion for compliance |
| gracePeriodDays | number | ✅ | Grace period in days after certification expiry |
| sendReminders | boolean | ✅ | Send reminders for upcoming training deadlines |
| reminderDaysBefore | number | ✅ | Days before deadline to send first reminder |
TrainingRecord
Individual training completion record
Properties
| Property | Type | Required | Description |
|---|---|---|---|
| courseId | string | ✅ | Training course identifier |
| userId | string | ✅ | User identifier |
| status | Enum<'not_started' | 'in_progress' | 'completed' | 'failed' | 'expired'> | ✅ | Training completion status |
| assignedAt | number | ✅ | Assignment timestamp |
| completedAt | number | optional | Completion timestamp |
| score | number | optional | Assessment score percentage |
| expiresAt | number | optional | Certification expiry timestamp |
| notes | string | optional | Training notes or comments |