---
title: Training
description: Training protocol schemas
---

{/* ⚠️  AUTO-GENERATED — DO NOT EDIT. Run build-docs.ts to regenerate. Hand-written docs go in content/docs/guides/. */}

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

<Callout type="info">
**Source:** `packages/spec/src/system/training.zod.ts`
</Callout>

## TypeScript Usage

```typescript
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_awareness`
* `data_protection`
* `incident_response`
* `access_control`
* `phishing_awareness`
* `compliance`
* `secure_development`
* `physical_security`
* `business_continuity`
* `other`


---

## TrainingCompletionStatus

### Allowed Values

* `not_started`
* `in_progress`
* `completed`
* `failed`
* `expired`


---

## 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 |


---

