x-cpod-domain: learning
Learning
Cohorts and assessments in the L&D surface.
Try in explorer
client.learningCohort
A group of learners in a program.
REST path
/api/v1/learning/cohortsOperations
listgetcreateupdateSDK
// list — returns only your records; add filters/search:
await client.learning.cohorts.list()
// create:
await client.learning.cohorts.create({
id: "rec_01HXEXAMPLE",
tenant_id: "example tenant_id",
created_at: "2026-01-01T00:00:00Z",
updated_at: "2026-01-01T00:00:00Z",
app_id: "example app_id",
created_by: "rec_01HXEXAMPLE",
})| Field | Type | Description |
|---|---|---|
| id* | uuid | Server-assigned ULID with type prefix (e.g. per_…). |
| tenant_id* | string | Tenant scope — auto-stamped from the caller's JWT. |
| app_id | string | App scope. Stamped ONLY when the caller's JWT was minted for a specific Application (integration API keys). Absent for human-user sessions. Filters reads when present. |
| created_at* | date-time | Server stamp. |
| updated_at* | date-time | Server stamp; updated on every patch. |
| created_by | uuid | Person id from the caller's JWT (sub). |
| updated_by | uuid | Person id from the last writer's JWT (sub). |
| source | string | Provenance tag — defaults to 'edm'. |
| source_type | enum | Where the write originated. Defaults to 'api'.frontendbackendserversystemapi |
| is_deleted | boolean | Soft-delete flag. Excluded from default list queries. |
| deleted_at | date-time | Stamped when soft-deleted; null otherwise. |
| deleted_by | uuid | Person id who soft-deleted; null otherwise. |
| schema_version | number | Document schema version. Bumped on incompatible writes. |
| group_id | string | Underlying Group with kind=cohort. Format: grp-<uuid>. |
| program_id | string | Programme catalogue identifier. |
| name | string | Human-readable cohort name. |
| start_date | date-time | Programme start date (ISO 8601). |
| end_date | date-time | Programme end date (ISO 8601). |
| status | string | Lifecycle status of the cohort. |
| session_count | number | Total number of sessions in the programme. |
| facilitator_ids | json | User IDs of facilitators responsible for this cohort. |
| assigned_assessment_ids | json | Assessment IDs assigned to this cohort. Format: asm-<uuid>. |
| completion_required_pct | number | Minimum completion percentage required to pass the programme. |
| current_completion_pct | number | Computed current completion percentage across enrolled learners. |
| metadata | json | Arbitrary key-value metadata for app-specific extensions. |
| tags | json | Free-form tags for filtering and categorisation. |
| version | number | Optimistic concurrency version counter. |
Assessment
A test, quiz, or evaluation artifact.
REST path
/api/v1/learning/assessmentsOperations
listgetcreateupdateSDK
// list — returns only your records; add filters/search:
await client.learning.assessments.list()
// create:
await client.learning.assessments.create({
id: "rec_01HXEXAMPLE",
tenant_id: "example tenant_id",
created_at: "2026-01-01T00:00:00Z",
updated_at: "2026-01-01T00:00:00Z",
app_id: "example app_id",
created_by: "rec_01HXEXAMPLE",
})| Field | Type | Description |
|---|---|---|
| id* | uuid | Server-assigned ULID with type prefix (e.g. per_…). |
| tenant_id* | string | Tenant scope — auto-stamped from the caller's JWT. |
| app_id | string | App scope. Stamped ONLY when the caller's JWT was minted for a specific Application (integration API keys). Absent for human-user sessions. Filters reads when present. |
| created_at* | date-time | Server stamp. |
| updated_at* | date-time | Server stamp; updated on every patch. |
| created_by | uuid | Person id from the caller's JWT (sub). |
| updated_by | uuid | Person id from the last writer's JWT (sub). |
| source | string | Provenance tag — defaults to 'edm'. |
| source_type | enum | Where the write originated. Defaults to 'api'.frontendbackendserversystemapi |
| is_deleted | boolean | Soft-delete flag. Excluded from default list queries. |
| deleted_at | date-time | Stamped when soft-deleted; null otherwise. |
| deleted_by | uuid | Person id who soft-deleted; null otherwise. |
| schema_version | number | Document schema version. Bumped on incompatible writes. |
| kind | string | Polymorphic kind of assessment. |
| name | string | Human-readable assessment name. |
| description | string | Optional description of the assessment's purpose. |
| responsible_user_id | string | User ID of the assessor or facilitator responsible for this assessment. |
| target_cohort_id | string | Cohort this assessment is assigned to. Used when kind=learning. |
| target_group_id | string | Group this assessment is scoped to. |
| target_account_id | string | Customer account this assessment relates to. Used for customer-related kinds. |
| framework_ids | json | GRC framework IDs. Used when kind=grc_self_assessment or compliance_audit. |
| control_ids | json | GRC control IDs in scope. Used when kind=grc_self_assessment or compliance_audit. |
| questions | json | Inline question definitions. Each item has id, text, type, options, weight, required. |
| question_bank_id | string | Reference to a shared question bank instead of inline questions. |
| frequency | string | Recurrence frequency for scheduled assessments. |
| due_date | date-time | Deadline for completing the assessment. |
| scheduled_start_at | date-time | Scheduled start time for the assessment. |
| status | string | Lifecycle status of the assessment. |
| response_count | number | Number of responses received. |
| completion_pct | number | Percentage of expected responses received. |
| findings | json | Key findings from the assessment. |
| recommendations | json | Recommendations arising from the assessment findings. |
| assessment_tools | json | Tools used to conduct the assessment (e.g. Nmap, Nessus, leadthe-ai). |
| output_document_id | string | ID of the final output report document. |
| tags | json | Free-form tags for filtering and categorisation. |
| version | number | Optimistic concurrency version counter. |