ExerciseType
ExerciseType
● ACTIVE
Specification Standard: Open Pedagogy Specification (OPS) ce-specs-registry: schemas/assessment/exercise_type.schema.yaml
⚡ Live Schema Contract Definition (Auto-synced from schemas/assessment/exercise_type.schema.yaml) ▼
Metadata Properties (metadata)
| Field | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Canonical unique identifier for the exercise type (e.g. global.exercise_type.free_text.v1). |
| reference_code | string | Yes | Reference code identifying the interaction format across environments. |
| referenceCode | string | Yes | CamelCase alias for reference_code supported for backward compatibility. |
| name | string | Yes | Internal programmatic name of the exercise type. |
| title | string | No | Human-readable label displayed in authoring editors and catalogs. |
| version | string | No | Semantic version of the exercise type contract. |
| status | string | No | Lifecycle status of the exercise type (ACTIVE = production ready). |
Specification Body (spec)
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | No | Main type discriminator alias used by the evaluation engine (e.g. free_text, audio_response). |
| ui_components | object[] | Yes | List of frontend UI widgets to dynamically render for student input (Flutter/React). |
| report_components | object[] | No | Widgets and report visualizers to format grading results and teacher feedback. |
| configuration_schema | object[] | No | — |
📦 Canonical YAML Example (Auto-synced from examples/assessment/exercise_type.example.yaml) ▼
apiVersion: colabedu.ai/v1beta1
kind: ExerciseType
metadata:
id: global.exercise_type.free_text.v1
name: "free_text"
title: "Free Text / Essay"
version: "1.0.0"
spec:
type: "free_text"
ui_components:
- type: "markdown_editor_widget"
config:
spellcheck: true
report_components:
- type: "free_text_rubric_evaluation"
config:
show_criteria_breakdown: true The ExerciseType resource defines modular User Interface (UI) and Evaluation components. This YAML tells the frontend which widgets (Flutter/React) to render, and the reporting backend how the correction report should be displayed or structured (e.g., table, chart, rich text).