How to Read This Dictionary
Each Alpha field has an Alpha name, a canonical qti.* source or derived-source path, type, nullability, constraints, invalid examples, and links to Alpha architecture ITDs. If an Alpha field cannot be traced here, implementation must stop and roll back to architecture.
Approved upstream: Alpha architecture, 1EdTech data dictionary, 1EdTech architecture, 1EdTech surface QC. Benchmark used: data dictionary eval pair.
Alpha Public Object Index
Alpha public object
Workspace
The school, district, publisher, or application boundary that owns Alpha QTI content, activities, answer submissions, and result views.
Created before a package is imported or an activity starts. All public Alpha operations must be scoped to the authenticated workspace.
| Alpha Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
workspaceIdsource qti.tenant.tenant_id
Alpha rename
Public foundation
|
Required Default: none |
Stable platform identifier for one tenant boundary. Constraints: Must be a valid PostgreSQL UUID and unique as the primary key. Relationship: None. Invalid when: Not parseable as UUID, reused by another tenant, or copied into QTI XML as assessment content. |
Source: Source class: Platform gap fill Alpha ITDs: Shared QTI Persistence, Alpha Facade, School Vocabulary Layer, Alpha Provenance Requirements Example: |
workspaceKeysource qti.tenant.tenant_key
Alpha rename
Public foundation
|
Required Default: none |
Human-stable lookup key for operations, logs, and local tooling. Constraints: Unique across qti.tenant. SQL has no length or charset check; API and migrations should keep it short, stable, and non-secret. Relationship: None. Invalid when: Duplicated, empty in API input, used for direct learner identity, or treated as a QTI identifier. |
Source: Source class: Platform gap fill Alpha ITDs: Shared QTI Persistence, Alpha Facade, School Vocabulary Layer, Alpha Provenance Requirements Example: |
namesource qti.tenant.display_name
Alpha rename
Public foundation
|
Required Default: none |
Operational display label for the tenant. Constraints: Required text. SQL has no length check; do not use as an authorization key. Relationship: None. Invalid when: Null, blank in API input, or used in place of tenant_id for joins. |
Source: Source class: Platform gap fill Alpha ITDs: School Vocabulary Layer, Shared QTI Persistence, Alpha Facade, Alpha Provenance Requirements Example: |
createdAtsource qti.tenant.created_at
Alpha rename
Public foundation
|
Required Default: |
Timestamp when the tenant row was inserted. Constraints: Required timestamp with time zone. Defaults to database now(). Relationship: None. Invalid when: Null, manually backdated without migration evidence, or compared as local time without timezone normalization. |
Source: Source class: Platform gap fill Alpha ITDs: Shared QTI Persistence, Alpha Facade, School Vocabulary Layer, Alpha Provenance Requirements Example: |
Alpha public object
Assessment package
A validated uploaded QTI package summarized for teachers and app-builder LLMs. It tells whether import succeeded, what content was created, and where safe validation evidence lives.
Created by importAssessmentPackage. A package can be checking, ready, rejected, or replaced; only ready packages produce content that can be delivered.
| Alpha Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
packageIdsource qti.content_package.package_id
Alpha restriction
Public import summary
|
Required Default: none |
Stable identifier assigned to one package ingest record. Constraints: Valid UUID and unique primary key. Relationship: None. Invalid when: Not a UUID or reused across package rows. |
Source: Source class: Platform gap fill Alpha ITDs: Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
workspaceIdsource qti.content_package.tenant_id
Alpha rename
Public import summary
|
Required Default: none |
Tenant that owns the package and all extracted resources. Constraints: Must reference qti.tenant(tenant_id). Relationship: Belongs to exactly one qti.tenant; not nullable. Invalid when: References a missing tenant or disagrees with the tenant path in the API request. |
Source: Source class: Platform gap fill Alpha ITDs: Shared QTI Persistence, Alpha Facade, Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
sourceNamesource qti.content_package.source_uri
Alpha rename
Public import summary
|
Nullable Default: none |
Friendly file name, URI, or content-addressable label shown for the uploaded assessment package. It is diagnostic only and not a trusted package locator. Constraints: Nullable text. It is diagnostic only and must not be used as a trusted package locator after ingest. Relationship: None. Invalid when: Used as a primary identity, contains secrets, or points outside tenant authorization. |
Source: Source class: Platform gap fill Alpha ITDs: Restricted Assessment Package Import, School Vocabulary Layer, Plain-Language Problems, Alpha Provenance Requirements Example: |
idempotencyKeysource qti.content_package.idempotency_key
Alpha restriction
Advanced request safety
|
Nullable Default: none |
Idempotency-Key from the package ingest API so retries return the same package instead of duplicating work. Constraints: Unique with tenant_id. PostgreSQL allows multiple nulls; API ingest should provide a key for client retries. Relationship: None. Invalid when: Same tenant reuses the key for different package bytes, or a secret/token is stored here. |
Source: Source class: Platform gap fill Alpha ITDs: Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
packageHashsource qti.content_package.package_hash
Alpha restriction
Advanced provenance
|
Required Default: none |
Cryptographic hash of the normalized package payload used to identify repeated imports. Constraints: Required text and unique with tenant_id. Store the algorithm prefix with the digest, such as sha256:<hex>. Relationship: None. Invalid when: Missing, not reproducible from the normalized package, or reused for different bytes in one tenant. |
Source: Source class: Platform gap fill Alpha ITDs: Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
manifestIdentifiersource qti.content_package.manifest_identifier
Alpha restriction
Advanced provenance
|
Nullable Default: none |
IMS manifest identifier copied from imsmanifest when the package has one. Constraints: Nullable because loose XML ingest may not include imsmanifest. If present, preserve the source value without Alpha renaming. Relationship: None. Invalid when: Invented when no manifest exists, changed to a platform name, or used as a database primary key. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
qtiProfilesource qti.content_package.qti_profile
Alpha restriction
Public import summary
|
Required Default: |
Conformance profile asserted for this import. Constraints: Required text. Current default and target profile is qti-3.0; optional feature sets must be explicit and supported by conformance evidence. Relationship: None. Invalid when: Unsupported profile string, null, or used to imply the live network spec changed the accepted bundle. |
Source: Source class: Platform gap fill Alpha ITDs: Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
importStatussource qti.content_package.import_status
Alpha restriction
Public import summary
|
Required Default: |
Current lifecycle state of package ingest. Constraints: Must satisfy content_package_import_status_ck. Relationship: None. Invalid when: Outside the enum set or inconsistent with resource/artifact projection state. Allowed values: import_status |
Source: Source class: Platform gap fill Alpha ITDs: Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
contentCreatedsource qti.content_package.metadata; qti.artifact.artifact_kind
Alpha extension
Public derived field
|
Required Default: none |
Safe counts of questions, tests, passages, sections, and assets created from the package. Constraints: Derived from qti.content_package.metadata plus qti.artifact rows. Counts must not include raw package bytes, secrets, or direct learner data. Relationship: Derived view; no separate Alpha persistence table. Invalid when: The value cannot be traced to the listed upstream fields or Alpha ITD, includes direct learner PII, or contradicts the shared qti.* source. |
Source: Source class: Alpha extension Alpha ITDs: Restricted Assessment Package Import, Content Catalog Read Model Example: |
importEvidencesource qti.content_package.metadata
Alpha restriction
Public import summary
|
Required Default: |
Safe generated import evidence such as content counts, validation diagnostics, and package facts. Alpha summaries must not include package bytes or secrets. Constraints: Required JSON object. Do not store package bytes or secrets here; store original bytes in qti.package_file. Relationship: None. Invalid when: Null, non-object JSON, direct learner PII, access tokens, or duplicated source XML bytes. |
Source: Source class: Platform gap fill Alpha ITDs: Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
importedAtsource qti.content_package.imported_at
Alpha restriction
Public import summary
|
Required Default: |
Timestamp when the package row was inserted. Constraints: Required timestamp with time zone. Relationship: None. Invalid when: Null or used as the source of content version ordering instead of artifact_version.version_number. |
Source: Source class: Platform gap fill Alpha ITDs: Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
Alpha public object
Content
A school-language catalog entry for a question, test, section, passage, or other QTI artifact that can be inspected, delivered, edited, or exported.
Created by package import or authoring. It is stable across versions; each save creates a new contentVersion rather than overwriting past versions.
| Alpha Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
contentIdsource qti.artifact.artifact_id
Alpha rename
Public catalog source
|
Required Default: none |
Stable platform identity for one logical artifact across versions. Constraints: Valid UUID and unique primary key. Relationship: None. Invalid when: Not a UUID, reused, or derived from a mutable QTI identifier. |
Source: Source class: Platform gap fill Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Alpha Provenance Requirements Example: |
workspaceIdsource qti.artifact.tenant_id
Alpha rename
Public catalog source
|
Required Default: none |
Tenant that owns this artifact. Constraints: Must reference qti.tenant(tenant_id). Relationship: Belongs to exactly one qti.tenant. Invalid when: Missing tenant or different from the owning package tenant. |
Source: Source class: Platform gap fill Alpha ITDs: Shared QTI Persistence, Alpha Facade, Content Catalog Read Model, School Vocabulary Layer, Alpha Provenance Requirements Example: |
packageIdsource qti.artifact.package_id
Alpha rename
Public catalog source
|
Nullable Default: none |
Origin package for imported artifacts. Constraints: Nullable for authored loose artifacts. If present, must reference qti.content_package(package_id). Set null if package is deleted. Relationship: Belongs to zero or one qti.content_package. Invalid when: References a package owned by another tenant. |
Source: Source class: Platform gap fill Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Alpha Provenance Requirements Example: |
packageResourceIdsource qti.artifact.resource_id
Alpha rename
Advanced provenance
|
Nullable Default: none |
Origin manifest resource for imported artifacts. Constraints: Nullable for generated or loose artifacts. If present, must reference qti.package_resource(resource_id). Set null if resource is deleted. Relationship: Belongs to zero or one qti.package_resource. Invalid when: Resource comes from another package or tenant. |
Source: Source class: Platform gap fill Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Alpha Provenance Requirements Example: |
kindsource qti.artifact.artifact_kind
Alpha rename
Public catalog source
|
Required Default: none |
Repository category derived from QTI root element or manifest resource type. Constraints: Must satisfy artifact_kind_ck. Relationship: None. Invalid when: Outside enum set, inconsistent with root_element on versions, or changed for Alpha vocabulary. Allowed values: artifact_kind |
Source: Source class: Platform gap fill Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Alpha Provenance Requirements Example: |
qtiIdentifiersource qti.artifact.qti_identifier
Alpha rename
Advanced QTI identity
|
Nullable Default: none |
QTI identifier attribute copied from the root object when present. Constraints: Nullable because not every artifact has a root identifier. Preserve source spelling; do not use as a globally unique database key. Relationship: None. Invalid when: Invented when absent, rewritten to a UUID, or assumed unique outside artifact scope. |
Source: Source class: 1EdTech pass-through Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Alpha Provenance Requirements Example: |
titlesource qti.artifact.title
Alpha rename
Public catalog source
|
Nullable Default: none |
QTI title or generated display label when present. Constraints: Nullable. Preserve QTI title when present; generated labels must be distinguishable in metadata/spec trace. Relationship: None. Invalid when: Used as identity, translated without retaining source XML, or contains direct learner PII. |
Source: Source class: 1EdTech pass-through Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Alpha Provenance Requirements Example: |
languagesource qti.artifact.language
Alpha rename
Public catalog source
|
Nullable Default: none |
xml:lang or package-default language associated with the artifact. Constraints: Nullable BCP 47 language tag when known. Relationship: None. Invalid when: Not a language tag, invented without source/default evidence, or used to filter tenant access. |
Source: Source class: 1EdTech pass-through Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Alpha Provenance Requirements Example: |
latestVersionIdsource qti.artifact.latest_version_id
Alpha rename
Public catalog source
|
Nullable Default: none |
Newest immutable artifact version for convenience reads. Constraints: Nullable until a version exists. Must point to a qti.artifact_version for this same artifact when populated. Relationship: Points to zero or one qti.artifact_version for the same artifact. Invalid when: Points to another artifact's version or treated as authoritative history instead of the artifact_version table. |
Source: Source class: Platform gap fill Alpha ITDs: Content Catalog Read Model, Lossless Authoring Commands, School Vocabulary Layer, Alpha Provenance Requirements Example: |
summarysource qti.artifact.title; qti.artifact.language; qti.component.text_value; qti.content_package.metadata
Alpha extension
Public derived field
|
Required Default: none |
Safe catalog summary extracted from selected QTI components and metadata so users can find content without reading XML. Constraints: Derived only from content fields and selected component values. Must not include raw XML, package bytes, learner data, or processing traces. Relationship: Derived view; no separate Alpha persistence table. Invalid when: The value cannot be traced to the listed upstream fields or Alpha ITD, includes direct learner PII, or contradicts the shared qti.* source. |
Source: Source class: Alpha extension Alpha ITDs: Content Catalog Read Model, Cut Raw QTI Internals From Public Alpha Example: |
createdAtsource qti.artifact.created_at
Alpha rename
Public catalog source
|
Required Default: |
Logical artifact creation timestamp. Constraints: Required timestamp with time zone. Relationship: None. Invalid when: Null or used as version_number. |
Source: Source class: Platform gap fill Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Alpha Provenance Requirements Example: |
Alpha public object
Content version
One immutable saved edition of content. This is the ID activities and answer submissions pin so old results do not change when a teacher edits content later.
Created by package import or saveContentDraft. New edits create new versions; previous versions remain available for delivery history and export.
| Alpha Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
contentVersionIdsource qti.artifact_version.artifact_version_id
Alpha rename
Public version source with backstage internals
|
Required Default: none |
Stable identifier for one immutable artifact edition. Constraints: Valid UUID and unique primary key. Relationship: None. Invalid when: Not a UUID or reused. |
Source: Source class: Platform gap fill Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
contentIdsource qti.artifact_version.artifact_id
Alpha rename
Public version source with backstage internals
|
Required Default: none |
Logical artifact this version belongs to. Constraints: Must reference qti.artifact(artifact_id). Cascades on artifact delete. Relationship: Belongs to exactly one qti.artifact. Invalid when: Missing artifact or cross-tenant mismatch through artifact. |
Source: Source class: Platform gap fill Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
versionNumbersource qti.artifact_version.version_number
Alpha rename and restriction
Public version source with backstage internals
|
Required Default: none |
Forward-only per-artifact version number. Constraints: Required integer and unique with artifact_id. Should increase by one for each saved edition. Relationship: None. Invalid when: Zero or negative by convention, duplicated for an artifact, skipped without migration evidence, or reused after rollback. |
Source: Source class: Platform gap fill Alpha ITDs: Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
studentViewsource qti.artifact_version.delivery_json
Alpha rename
Public version source with backstage internals
|
Nullable Default: none |
Generated consumer-facing projection used by delivery applications and session snapshots. Constraints: Nullable before projection. May omit only declared authoring-only or diagnostic detail; must preserve identifiers needed for responses, feedback, scoring, accessibility matching, and session replay. Relationship: None. Invalid when: Drops response identifiers, scoring dependencies, feedback links, accessibility references, or includes source traces not intended for delivery. Allowed values: projection_lossiness |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, School Vocabulary Layer, Content Catalog Read Model, Lossless Authoring Commands, Alpha Provenance Requirements Example: |
editingDraftsource qti.artifact_version.authoring_json
Alpha rename and restriction
Public version source with backstage internals
|
Nullable Default: none |
Generated authoring projection for editors that must preserve all spec-defined fields. Constraints: Nullable before projection. Must round-trip to object_graph with no spec-defined field loss. Relationship: None. Invalid when: Lossy, missing extension payloads, missing source trace needed for edits, or used for delivery without declared lossiness. Allowed values: projection_lossiness |
Source: Source class: Platform gap fill Alpha ITDs: Lossless Authoring Commands, School Vocabulary Layer, Content Catalog Read Model, Activity Delivery Language, Alpha Provenance Requirements Example: |
sourceXmlsource qti.artifact_version.source_xml
Alpha restriction
Advanced QTI portability
|
Required Default: none |
Original XML accepted after bundled XSD/Schematron validation. Constraints: Required PostgreSQL xml. Must validate before object creation and persistence. Relationship: None. Invalid when: Malformed XML, not valid against the bundled schema, contains direct learner runtime PII, or differs from the persisted object graph without trace. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Lossless Authoring Commands, Alpha Provenance Requirements, Content Catalog Read Model, Activity Delivery Language Example: |
canonicalXmlsource qti.artifact_version.canonical_xml
Alpha restriction
Advanced QTI portability
|
Required Default: none |
Canonicalized XML used for equivalence checks and stable export. Constraints: Required text. Must round-trip from object graph to XML and hash to xml_hash. Relationship: None. Invalid when: Not reproducible from object_graph, hash mismatch, or changed after delivery sessions point to this version. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Lossless Authoring Commands, Alpha Provenance Requirements, Content Catalog Read Model, Activity Delivery Language Example: |
xmlHashsource qti.artifact_version.xml_hash
Alpha rename and restriction
Advanced provenance
|
Required Default: none |
Hash of canonical_xml used for idempotency and semantic preservation checks. Constraints: Required text and unique with artifact_id. Store algorithm prefix with digest. Relationship: None. Invalid when: Does not match canonical_xml, algorithm omitted, or duplicates a prior version for the same artifact. |
Source: Source class: Platform gap fill Alpha ITDs: Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
qtiRootElementsource qti.artifact_version.root_element
Alpha rename and restriction
Advanced provenance
|
Required Default: none |
Root XML element for this version. Constraints: Required text generated from bundled XSD root element catalog. Relationship: None. Invalid when: Not present in the bundled root catalog or inconsistent with source_xml. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
schemaFilesource qti.artifact_version.schema_file
Alpha rename and restriction
Advanced provenance
|
Required Default: none |
Bundled schema file used as validation authority. Constraints: Required text. Must name a schema in the offline QTI source bundle. Relationship: None. Invalid when: Live network schema URL, missing local schema, or schema that does not define the root. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
specTracesource qti.artifact_version.spec_trace
Alpha rename and restriction
Advanced provenance
|
Required Default: |
Generated traceability from classes, fields, and components to XSD/spec anchors. Constraints: Required JSON object. Must point back to the offline source bundle and generated model evidence. Relationship: None. Invalid when: Null, non-object JSON, live-only references, or links that cannot be reproduced from the bundle. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
previousVersionIdsource qti.artifact_version.supersedes_version_id
Alpha rename
Public version source with backstage internals
|
Nullable Default: none |
Previous version replaced by this version, when the save was an edit or replacement. Constraints: Nullable. If present, must reference qti.artifact_version(artifact_version_id), normally for the same artifact. Relationship: References zero or one earlier qti.artifact_version. Invalid when: Points forward in time, points to another artifact without explicit migration evidence, or creates a cycle. |
Source: Source class: Platform gap fill Alpha ITDs: Lossless Authoring Commands, Content Catalog Read Model, Activity Delivery Language, Alpha Provenance Requirements Example: |
createdAtsource qti.artifact_version.created_at
Alpha rename and restriction
Public version source with backstage internals
|
Required Default: |
Timestamp when this immutable version was created. Constraints: Required timestamp with time zone. Relationship: None. Invalid when: Null or mutated to reorder version history. |
Source: Source class: Platform gap fill Alpha ITDs: Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
createdBysource qti.artifact_version.created_by
Alpha rename and restriction
Public version source with backstage internals
|
Nullable Default: none |
Principal or system actor that created the version. Constraints: Nullable text. Must be a safe principal label; do not store raw JWTs or secrets. Relationship: None. Invalid when: Raw access token, raw JWT subject that identifies a learner, email address, or other direct learner PII. |
Source: Source class: Platform gap fill Alpha ITDs: Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
Alpha public object
Activity
A student's live or historical interaction with an immutable content version, including the exact studentView snapshot shown at start.
Created by startActivity, progresses through activity status values, and owns answer submissions. Deleting student test data removes activities and submissions for the pseudonymous studentRef.
| Alpha Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
activityIdsource qti.delivery_session.delivery_session_id
Alpha rename
Public runtime object
|
Required Default: none |
Stable session identifier exposed by delivery APIs. Constraints: Valid UUID and unique primary key. Relationship: None. Invalid when: Not a UUID, reused, or guessable outside API authorization. |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
workspaceIdsource qti.delivery_session.tenant_id
Alpha rename
Public runtime object
|
Required Default: none |
Tenant boundary for the delivery session. Constraints: Must reference qti.tenant(tenant_id). Relationship: Belongs to exactly one qti.tenant. Invalid when: Does not match authenticated tenant claim or root artifact tenant. |
Source: Source class: Platform gap fill Alpha ITDs: Shared QTI Persistence, Alpha Facade, Activity Delivery Language, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
studentRefsource qti.delivery_session.candidate_ref
Alpha rename and restriction
Public runtime object
|
Required Default: none |
The Alpha student reference for this activity. It must be an opaque tenant-scoped pseudonymous UUID string, not a student's name, email, SIS ID, JWT subject, phone number, or parent contact detail. Constraints: Required text. Reject direct PII, auth tokens, raw JWT subjects, SIS IDs, contact details, and values that are not scoped to the tenant. Relationship: Indexed with tenant_id for candidate session history and deletion. Invalid when: Contains direct learner or parent PII, can be joined outside the tenant without an identity service, or is reused as a QTI content identifier. |
Source: Source class: Platform gap fill Alpha ITDs: StudentRef Privacy Language, Activity Delivery Language, Alpha Provenance Requirements Example: |
contentVersionIdsource qti.delivery_session.root_artifact_version_id
Alpha rename
Public runtime object
|
Required Default: none |
Immutable item, test, or section version delivered in this session. Constraints: Must reference qti.artifact_version(artifact_version_id). Relationship: Belongs to exactly one qti.artifact_version. Invalid when: Missing version, version not owned by tenant, or changed after session start. |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, Content Catalog Read Model, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
statussource qti.delivery_session.status
Alpha rename
Public runtime object
|
Required Default: |
Session lifecycle state. Constraints: Must satisfy delivery_session_status_ck. Relationship: None. Invalid when: Outside enum set or inconsistent with attempts, submitted_at, or review workflow. Allowed values: delivery_session_status |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
studentViewSnapshotsource qti.delivery_session.delivery_json_snapshot
Alpha rename
Public runtime object
|
Required Default: none |
Snapshot of delivery_json at session start. Constraints: Required JSON object. Must remain stable for the session even if the artifact later receives a new version. Relationship: None. Invalid when: Null, mismatched to root_artifact_version_id at start, mutated after attempts, or contains authoring-only trace without declared lossiness. |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
activityStatesource qti.delivery_session.session_state
Alpha rename and restriction
Public runtime object
|
Required Default: |
Runtime state not modeled as QTI variables, such as navigation, item sequencing, resume information, or review flags. Constraints: Required JSON object. Treat as learner-runtime data. Do not store direct PII, raw PNP records, tokens, IP addresses, or user agents. Relationship: None. Invalid when: Null, non-object JSON, auth headers, raw PNP records, direct learner identity, or state that contradicts delivery_json_snapshot. |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
createdAtsource qti.delivery_session.created_at
Alpha rename
Public runtime object
|
Required Default: |
Session creation timestamp. Constraints: Required timestamp with time zone. Relationship: None. Invalid when: Null or later than updated_at. |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
updatedAtsource qti.delivery_session.updated_at
Alpha rename
Public runtime object
|
Required Default: |
Last session state mutation timestamp. Constraints: Required timestamp with time zone. Must be updated when status or session_state changes. Relationship: None. Invalid when: Null, earlier than created_at, or stale after status/session_state update. |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
Alpha public object
Answer submission
The student's answers for an activity, checked against generated QTI declarations before processing and stored with result state after processing.
Created or updated by submitAnswers. Alpha rejects answer shapes that do not match QTI cardinality and base-type declarations instead of coercing them silently.
| Alpha Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
submissionIdsource qti.attempt.attempt_id
Alpha rename
Public runtime object
|
Required Default: none |
Stable identifier for one attempt record. Constraints: Valid UUID and unique primary key. Relationship: None. Invalid when: Not a UUID or reused. |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
activityIdsource qti.attempt.delivery_session_id
Alpha rename
Public runtime object
|
Required Default: none |
Owning delivery session. Constraints: Must reference qti.delivery_session(delivery_session_id). Cascades on session delete. Relationship: Belongs to exactly one qti.delivery_session. Invalid when: Missing session or tenant mismatch through session. |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
contentVersionIdsource qti.attempt.artifact_version_id
Alpha rename
Public runtime object
|
Required Default: none |
Immutable item/test artifact version attempted. Constraints: Must reference qti.artifact_version(artifact_version_id). Relationship: Belongs to exactly one qti.artifact_version. Invalid when: Does not belong to the delivery session snapshot or changes after processing. |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Content Catalog Read Model, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
attemptNumbersource qti.attempt.attempt_number
Alpha rename and extension
Public runtime object
|
Required Default: none |
Attempt count within a session and artifact version. Constraints: Required integer and unique with delivery_session_id plus artifact_version_id. Should increase for repeated attempts. Relationship: None. Invalid when: Zero or negative by convention, duplicated, or reused after an adaptive attempt changes state. |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
statussource qti.attempt.status
Alpha rename and extension
Public runtime object
|
Required Default: |
Attempt lifecycle state. Constraints: Must satisfy attempt_status_ck. Relationship: None. Invalid when: Outside enum set or inconsistent with suspended_at/submitted_at. Allowed values: attempt_status |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
answerssource qti.attempt.response_state
Alpha rename and restriction
Public runtime object
|
Required Default: |
Candidate response variables at the last processing point. Constraints: Required JSON object. Keys should be QTI response variable identifiers; values must match declaration cardinality/base_type. Treat as learner data. Relationship: None. Invalid when: Null, values inconsistent with qti.variable_declaration, unnecessary learner PII copied from outside the response, or logged without redaction. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Declaration-Checked Answers, StudentRef Privacy Language, Results And Grading Explanations, Alpha Provenance Requirements Example: |
answerSchemasource qti.variable_declaration.variable_kind; qti.variable_declaration.identifier; qti.variable_declaration.cardinality; qti.variable_declaration.base_type
Alpha extension
Public derived field
|
Required Default: none |
Generated schema of answer slots, cardinality, base type, correct-response availability, and mapping rules used to validate answers before processing. Constraints: Derived from qti.variable_declaration rows where variable_kind is response. Alpha must reject undeclared answer slots and wrong cardinality/base-type values. Relationship: Derived view; no separate Alpha persistence table. Invalid when: The value cannot be traced to the listed upstream fields or Alpha ITD, includes direct learner PII, or contradicts the shared qti.* source. |
Source: Source class: Alpha extension Alpha ITDs: Declaration-Checked Answers Example: |
templateStatesource qti.attempt.template_state
Alpha restriction
Advanced provenance
|
Required Default: |
Template variables used for item cloning and stability. Constraints: Required JSON object. Keys should be QTI template variable identifiers; values must match declarations. Relationship: None. Invalid when: Null, regenerated on read instead of persisted, inconsistent with template processing trace, or logged with learner identity. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
resultssource qti.attempt.outcome_state
Alpha rename and extension
Public runtime object
|
Required Default: |
Outcome variables after template, response, and outcome processing. Constraints: Required JSON object. Keys should be QTI outcome variable identifiers; values must match declarations and processing results. Relationship: None. Invalid when: Null, cannot be reproduced by processing rules under the runtime profile, or includes unsupported outcomes without diagnostics. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Results And Grading Explanations, Declaration-Checked Answers, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
gradingExplanationsource qti.attempt.processing_trace
Alpha rename and extension
Public runtime object
|
Required Default: |
Privacy-redacted processing trace used to explain grading. Public Alpha exposes a safe explanation view, not raw tokens, headers, IP addresses, PNP records, or direct identity fields. Constraints: Required JSON array. May include rule names, variable identifiers, before/after values, and diagnostics. Must exclude JWTs, headers, access tokens, IP addresses, user agents, raw PNP records, raw package bytes, and direct learner identity fields. Relationship: None. Invalid when: Null, non-array JSON, nondeterministic, lacks failed-closed diagnostics for unsupported operators, or contains auth/PII data. |
Source: Source class: Platform gap fill Alpha ITDs: Results And Grading Explanations, StudentRef Privacy Language, Declaration-Checked Answers, Alpha Provenance Requirements Example: |
startedAtsource qti.attempt.started_at
Alpha rename and extension
Public runtime object
|
Required Default: |
Attempt start timestamp. Constraints: Required timestamp with time zone. Relationship: None. Invalid when: Null or after submitted_at. |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
suspendedAtsource qti.attempt.suspended_at
Alpha rename and extension
Public runtime object
|
Nullable Default: none |
Attempt suspension timestamp, if the attempt was suspended. Constraints: Nullable timestamp with time zone. Should be set when status is suspended. Relationship: None. Invalid when: Set while status never suspended without lifecycle evidence, before started_at, or after submitted_at. |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
submittedAtsource qti.attempt.submitted_at
Alpha rename and extension
Public runtime object
|
Nullable Default: none |
Attempt submission timestamp, if the attempt was submitted. Constraints: Nullable timestamp with time zone. Should be set when status is submitted or reviewed. Relationship: None. Invalid when: Before started_at, set while status remains active without evidence, or absent for submitted/reviewed attempts. |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
Alpha public object
Activity result
A family-readable result and grading explanation derived from answer submissions, activity state, outcome variables, and redacted processing trace.
Available after submitAnswers creates or updates an attempt. A result can be in progress, submitted, reviewed, or voided according to the underlying attempt status.
| Alpha Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
resultIdsource qti.attempt.attempt_id
Alpha extension
Public derived field
|
Required Default: none |
Stable public identifier for the result view. It is the same value as the underlying answer submission ID. Constraints: Must be a valid qti.attempt.attempt_id for the same activity and workspace. Relationship: Derived view; no separate Alpha persistence table. Invalid when: The value cannot be traced to the listed upstream fields or Alpha ITD, includes direct learner PII, or contradicts the shared qti.* source. |
Source: Source class: Alpha extension Alpha ITDs: Results And Grading Explanations Example: |
activityIdsource qti.attempt.delivery_session_id
Alpha rename
Public runtime object
|
Required Default: none |
Owning delivery session. Constraints: Must reference qti.delivery_session(delivery_session_id). Cascades on session delete. Relationship: Belongs to exactly one qti.delivery_session. Invalid when: Missing session or tenant mismatch through session. |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
contentVersionIdsource qti.attempt.artifact_version_id
Alpha rename
Public runtime object
|
Required Default: none |
Immutable item/test artifact version attempted. Constraints: Must reference qti.artifact_version(artifact_version_id). Relationship: Belongs to exactly one qti.artifact_version. Invalid when: Does not belong to the delivery session snapshot or changes after processing. |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Content Catalog Read Model, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
statussource qti.attempt.status
Alpha rename and extension
Public runtime object
|
Required Default: |
Attempt lifecycle state. Constraints: Must satisfy attempt_status_ck. Relationship: None. Invalid when: Outside enum set or inconsistent with suspended_at/submitted_at. Allowed values: attempt_status |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
scoresource qti.attempt.outcome_state; qti.variable_declaration.identifier
Alpha extension
Public derived field
|
Nullable Default: none |
Friendly score extracted from outcome variables when a SCORE-like outcome exists. Null means the QTI content did not produce a score the platform can safely summarize. Constraints: Derived from qti.attempt.outcome_state and QTI outcome declarations. Must not invent a score if no outcome variable supports it. Relationship: Derived view; no separate Alpha persistence table. Invalid when: The value cannot be traced to the listed upstream fields or Alpha ITD, includes direct learner PII, or contradicts the shared qti.* source. |
Source: Source class: Alpha extension Alpha ITDs: Results And Grading Explanations Example: |
feedbacksource qti.attempt.outcome_state; qti.artifact_version.delivery_json
Alpha extension
Public derived field
|
Nullable Default: none |
Student- or parent-readable feedback derived from outcome variables and delivery content when QTI exposes feedback state. Constraints: Must preserve QTI visibility and privacy rules. Do not reveal correct answers or hidden feedback before the activity permits review. Relationship: Derived view; no separate Alpha persistence table. Invalid when: The value cannot be traced to the listed upstream fields or Alpha ITD, includes direct learner PII, or contradicts the shared qti.* source. |
Source: Source class: Alpha extension Alpha ITDs: Results And Grading Explanations, Activity Delivery Language Example: |
gradingExplanationsource qti.attempt.processing_trace
Alpha rename and extension
Public runtime object
|
Required Default: |
Privacy-redacted processing trace used to explain grading. Public Alpha exposes a safe explanation view, not raw tokens, headers, IP addresses, PNP records, or direct identity fields. Constraints: Required JSON array. May include rule names, variable identifiers, before/after values, and diagnostics. Must exclude JWTs, headers, access tokens, IP addresses, user agents, raw PNP records, raw package bytes, and direct learner identity fields. Relationship: None. Invalid when: Null, non-array JSON, nondeterministic, lacks failed-closed diagnostics for unsupported operators, or contains auth/PII data. |
Source: Source class: Platform gap fill Alpha ITDs: Results And Grading Explanations, StudentRef Privacy Language, Declaration-Checked Answers, Alpha Provenance Requirements Example: |
submittedAtsource qti.attempt.submitted_at
Alpha rename and extension
Public runtime object
|
Nullable Default: none |
Attempt submission timestamp, if the attempt was submitted. Constraints: Nullable timestamp with time zone. Should be set when status is submitted or reviewed. Relationship: None. Invalid when: Before started_at, set while status remains active without evidence, or absent for submitted/reviewed attempts. |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
Alpha public object
QTI trust status
A read-only public summary of the latest 1EdTech conformance evidence and approved upstream documentation links.
Updated only by 1EdTech/internal release tooling and surface QC. Public Alpha can read trust status but cannot run conformance jobs.
| Alpha Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
profilesource qti.conformance_run.profile
Alpha extension
Read-only trust source
|
Required Default: none |
Targeted QTI 3.0 conformance profile or optional feature set. Constraints: Required text. Must be a profile the runner understands. Relationship: None. Invalid when: Unsupported profile, Alpha-only label, or profile not represented by assertions. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
bundleHashsource qti.conformance_run.bundle_hash
Alpha extension
Read-only trust source
|
Required Default: none |
Hash of the offline spec bundle used by the run. Constraints: Required text with algorithm prefix and digest. Relationship: None. Invalid when: Missing, live network URL, or not reproducible from the bundle used. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
runnerVersionsource qti.conformance_run.runner_version
Alpha extension
Read-only trust source
|
Required Default: none |
Version or identity of the conformance runner. Constraints: Required text. Must be specific enough to reproduce behavior. Relationship: None. Invalid when: Blank, vague, or points to unpinned code. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
lastRunStatussource qti.conformance_run.status
Alpha extension
Read-only trust source
|
Required Default: |
Run lifecycle status. Constraints: Must satisfy conformance_run_status_ck. Relationship: None. Invalid when: Outside enum set or inconsistent with child assertion statuses. Allowed values: conformance_run_status |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
startedAtsource qti.conformance_run.started_at
Alpha extension
Read-only trust source
|
Required Default: |
Run start timestamp. Constraints: Required timestamp with time zone. Relationship: None. Invalid when: Null or after finished_at. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
finishedAtsource qti.conformance_run.finished_at
Alpha extension
Read-only trust source
|
Nullable Default: none |
Run finish timestamp, if complete. Constraints: Nullable timestamp with time zone. Should be set for passed, failed, or error. Relationship: None. Invalid when: Before started_at, absent for completed terminal status without explanation, or set while still running. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
assertionSummarysource qti.conformance_assertion.status; qti.conformance_assertion.details
Alpha extension
Public derived field
|
Required Default: none |
Counts and notable failures derived from qti.conformance_assertion rows without exposing raw assertion diagnostics as a public Alpha row browser. Constraints: Failed, skipped, and error counts must remain visible. Alpha must not turn failed evidence into green status copy. Relationship: Derived view; no separate Alpha persistence table. Invalid when: The value cannot be traced to the listed upstream fields or Alpha ITD, includes direct learner PII, or contradicts the shared qti.* source. |
Source: Source class: Alpha extension Alpha ITDs: Read-Only QTI Trust Status, Cut Public Conformance Runner Example: |
surfaceQcUrlsource 1edtech/surface_qc.canonical_url
Alpha extension
Public derived field
|
Required Default: none |
Canonical approved 1EdTech surface QC URL used as public trust provenance. Constraints: Must be the driver-approved deployment URL, not the shared project alias. Relationship: Derived view; no separate Alpha persistence table. Invalid when: The value cannot be traced to the listed upstream fields or Alpha ITD, includes direct learner PII, or contradicts the shared qti.* source. |
Source: Source class: Alpha extension Alpha ITDs: Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
Alpha public object
Problem
Plain-language Alpha validation or authorization problem that preserves the stable HTTP status, problem type, invalid parameter path, and upstream QTI trace needed for support.
Returned when an Alpha command is rejected. Problems never convert hard validation failures into warnings.
| Alpha Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
typesource Alpha API boundary; qti validation/runtime source
Alpha extension
Public derived field
|
Required Default: none |
Stable machine-readable problem type for this rejection class. Constraints: Must be stable across wording edits and must not contain tenant secrets or learner data. Relationship: Derived view; no separate Alpha persistence table. Invalid when: The value cannot be traced to the listed upstream fields or Alpha ITD, includes direct learner PII, or contradicts the shared qti.* source. |
Source: Source class: Alpha extension Alpha ITDs: Plain-Language Problems Example: |
titlesource Alpha API boundary
Alpha extension
Public derived field
|
Required Default: none |
Short human-readable summary a teacher, student, parent, or app-builder LLM can act on. Constraints: Must not expose package bytes, tokens, headers, IP addresses, raw PNP records, or direct learner identity fields. Relationship: Derived view; no separate Alpha persistence table. Invalid when: The value cannot be traced to the listed upstream fields or Alpha ITD, includes direct learner PII, or contradicts the shared qti.* source. |
Source: Source class: Alpha extension Alpha ITDs: Plain-Language Problems, StudentRef Privacy Language Example: |
statussource Alpha API boundary
Alpha extension
Public derived field
|
Required Default: none |
HTTP status code for the rejected Alpha operation. Constraints: Must preserve the real rejection status; Alpha wording must not downgrade a failed validation to a warning. Relationship: Derived view; no separate Alpha persistence table. Invalid when: The value cannot be traced to the listed upstream fields or Alpha ITD, includes direct learner PII, or contradicts the shared qti.* source. |
Source: Source class: Alpha extension Alpha ITDs: Plain-Language Problems Example: |
detailsource qti.content_package.metadata; qti.variable_declaration; qti.processing_rule; qti.attempt.processing_trace
Alpha extension
Public derived field
|
Required Default: none |
Safe explanation of what failed and what the caller can change. Constraints: Must be privacy-redacted and safe for customer display. Relationship: Derived view; no separate Alpha persistence table. Invalid when: The value cannot be traced to the listed upstream fields or Alpha ITD, includes direct learner PII, or contradicts the shared qti.* source. |
Source: Source class: Alpha extension Alpha ITDs: Plain-Language Problems, StudentRef Privacy Language Example: |
invalidParamssource Alpha request schema; qti.variable_declaration
Alpha extension
Public derived field
|
Nullable Default: none |
Input paths and reasons for field-level validation failures. Constraints: Paths use Alpha names first and may include canonical QTI names in advanced metadata. Relationship: Derived view; no separate Alpha persistence table. Invalid when: The value cannot be traced to the listed upstream fields or Alpha ITD, includes direct learner PII, or contradicts the shared qti.* source. |
Source: Source class: Alpha extension Alpha ITDs: Plain-Language Problems, Declaration-Checked Answers Example: |
upstreamTracesource qti.artifact_version.spec_trace; qti.variable_declaration.source_trace; qti.processing_rule.source_trace
Alpha extension
Public derived field
|
Nullable Default: none |
Safe link to QTI schema, architecture ITD, data dictionary field, or validation source for support. Constraints: May include QTI identifiers, variable names, schema file names, and docs links; must not include secrets or raw learner identity. Relationship: Derived view; no separate Alpha persistence table. Invalid when: The value cannot be traced to the listed upstream fields or Alpha ITD, includes direct learner PII, or contradicts the shared qti.* source. |
Source: Source class: Alpha extension Alpha ITDs: Plain-Language Problems, Alpha Provenance Requirements Example: |
Shared qti.* table
qti.tenant - School or workspace
The Alpha workspace boundary for a school, district, publisher, or application. It keeps content, activities, answers, and results separated for one customer while the shared qti.tenant table remains the database truth.
Created before import, authoring, activity start, or deletion of student test data. Alpha callers usually see workspaceId rather than the qti.tenant row name.
Relationships
- Parent of qti.content_package, qti.artifact, and qti.delivery_session.
Integrity rules
- tenant_key is unique across the platform.
- Every tenant-owned API route must match the authenticated tenant claim.
Invalid examples
- A row with a tenant_id that is not a valid UUID.
- A duplicate tenant_key.
- Using a tenant row to store school PII or learner identity fields.
| Alpha / Canonical Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
workspaceIdcanonical tenant_id
Alpha rename
Public foundation
|
Required Default: none Key: Primary key |
Stable platform identifier for one tenant boundary. Constraints: Must be a valid PostgreSQL UUID and unique as the primary key. Relationship: None. Invalid when: Not parseable as UUID, reused by another tenant, or copied into QTI XML as assessment content. |
Source: Source class: Platform gap fill Alpha ITDs: Shared QTI Persistence, Alpha Facade, School Vocabulary Layer, Alpha Provenance Requirements Example: |
workspaceKeycanonical tenant_key
Alpha rename
Public foundation
|
Required Default: none Key: Unique |
Human-stable lookup key for operations, logs, and local tooling. Constraints: Unique across qti.tenant. SQL has no length or charset check; API and migrations should keep it short, stable, and non-secret. Relationship: None. Invalid when: Duplicated, empty in API input, used for direct learner identity, or treated as a QTI identifier. |
Source: Source class: Platform gap fill Alpha ITDs: Shared QTI Persistence, Alpha Facade, School Vocabulary Layer, Alpha Provenance Requirements Example: |
namecanonical display_name
Alpha rename
Public foundation
|
Required Default: none |
Operational display label for the tenant. Constraints: Required text. SQL has no length check; do not use as an authorization key. Relationship: None. Invalid when: Null, blank in API input, or used in place of tenant_id for joins. |
Source: Source class: Platform gap fill Alpha ITDs: School Vocabulary Layer, Shared QTI Persistence, Alpha Facade, Alpha Provenance Requirements Example: |
createdAtcanonical created_at
Alpha rename
Public foundation
|
Required Default: |
Timestamp when the tenant row was inserted. Constraints: Required timestamp with time zone. Defaults to database now(). Relationship: None. Invalid when: Null, manually backdated without migration evidence, or compared as local time without timezone normalization. |
Source: Source class: Platform gap fill Alpha ITDs: Shared QTI Persistence, Alpha Facade, School Vocabulary Layer, Alpha Provenance Requirements Example: |
Shared qti.* table
qti.content_package - Assessment package
An uploaded QTI assessment package after tenant authorization, idempotency checks, QTI validation, package closure checks, and friendly import-status projection.
Created by importAssessmentPackage. The package is usable only after importStatus becomes imported; rejected packages keep diagnostics without becoming deliverable activities.
Relationships
- Belongs to one qti.tenant.
- Parent of qti.package_resource, qti.package_file, and imported qti.artifact rows.
Integrity rules
- Unique (tenant_id, idempotency_key).
- Unique (tenant_id, package_hash).
- import_status must be one of the documented package lifecycle values.
Invalid examples
- Same tenant imports different bytes with the same idempotency_key.
- package_hash is missing or not the normalized package hash.
- import_status outside importing/imported/rejected/superseded.
| Alpha / Canonical Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
packageIdcanonical package_id
Alpha restriction
Public import summary
|
Required Default: none Key: Primary key |
Stable identifier assigned to one package ingest record. Constraints: Valid UUID and unique primary key. Relationship: None. Invalid when: Not a UUID or reused across package rows. |
Source: Source class: Platform gap fill Alpha ITDs: Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
workspaceIdcanonical tenant_id
Alpha rename
Public import summary
|
Required Default: none Key: Foreign key |
Tenant that owns the package and all extracted resources. Constraints: Must reference qti.tenant(tenant_id). Relationship: Belongs to exactly one qti.tenant; not nullable. Invalid when: References a missing tenant or disagrees with the tenant path in the API request. |
Source: Source class: Platform gap fill Alpha ITDs: Shared QTI Persistence, Alpha Facade, Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
sourceNamecanonical source_uri
Alpha rename
Public import summary
|
Nullable Default: none |
Friendly file name, URI, or content-addressable label shown for the uploaded assessment package. It is diagnostic only and not a trusted package locator. Constraints: Nullable text. It is diagnostic only and must not be used as a trusted package locator after ingest. Relationship: None. Invalid when: Used as a primary identity, contains secrets, or points outside tenant authorization. |
Source: Source class: Platform gap fill Alpha ITDs: Restricted Assessment Package Import, School Vocabulary Layer, Plain-Language Problems, Alpha Provenance Requirements Example: |
idempotencyKeycanonical idempotency_key
Alpha restriction
Public import summary
|
Nullable Default: none Key: Unique with tenant_id when non-null |
Idempotency-Key from the package ingest API so retries return the same package instead of duplicating work. Constraints: Unique with tenant_id. PostgreSQL allows multiple nulls; API ingest should provide a key for client retries. Relationship: None. Invalid when: Same tenant reuses the key for different package bytes, or a secret/token is stored here. |
Source: Source class: Platform gap fill Alpha ITDs: Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
packageHashcanonical package_hash
Alpha restriction
Public import summary
|
Required Default: none Key: Unique with tenant_id |
Cryptographic hash of the normalized package payload used to identify repeated imports. Constraints: Required text and unique with tenant_id. Store the algorithm prefix with the digest, such as sha256:<hex>. Relationship: None. Invalid when: Missing, not reproducible from the normalized package, or reused for different bytes in one tenant. |
Source: Source class: Platform gap fill Alpha ITDs: Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
manifestIdentifiercanonical manifest_identifier
Alpha restriction
Public import summary
|
Nullable Default: none |
IMS manifest identifier copied from imsmanifest when the package has one. Constraints: Nullable because loose XML ingest may not include imsmanifest. If present, preserve the source value without Alpha renaming. Relationship: None. Invalid when: Invented when no manifest exists, changed to a platform name, or used as a database primary key. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
qtiProfilecanonical qti_profile
Alpha restriction
Public import summary
|
Required Default: |
Conformance profile asserted for this import. Constraints: Required text. Current default and target profile is qti-3.0; optional feature sets must be explicit and supported by conformance evidence. Relationship: None. Invalid when: Unsupported profile string, null, or used to imply the live network spec changed the accepted bundle. |
Source: Source class: Platform gap fill Alpha ITDs: Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
importStatuscanonical import_status
Alpha restriction
Public import summary
|
Required Default: |
Current lifecycle state of package ingest. Constraints: Must satisfy content_package_import_status_ck. Relationship: None. Invalid when: Outside the enum set or inconsistent with resource/artifact projection state. Allowed values: import_status |
Source: Source class: Platform gap fill Alpha ITDs: Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
importEvidencecanonical metadata
Alpha restriction
Public import summary
|
Required Default: |
Safe generated import evidence such as content counts, validation diagnostics, and package facts. Alpha summaries must not include package bytes or secrets. Constraints: Required JSON object. Do not store package bytes or secrets here; store original bytes in qti.package_file. Relationship: None. Invalid when: Null, non-object JSON, direct learner PII, access tokens, or duplicated source XML bytes. |
Source: Source class: Platform gap fill Alpha ITDs: Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
importedAtcanonical imported_at
Alpha restriction
Public import summary
|
Required Default: |
Timestamp when the package row was inserted. Constraints: Required timestamp with time zone. Relationship: None. Invalid when: Null or used as the source of content version ordering instead of artifact_version.version_number. |
Source: Source class: Platform gap fill Alpha ITDs: Restricted Assessment Package Import, Plain-Language Problems, Alpha Provenance Requirements Example: |
Shared qti.* table
qti.package_resource - Package resource
Backstage IMS manifest resource evidence used to validate, export, and explain packages. Public Alpha does not expose it as a generic resource browser.
Created during package ingest and preserved for provenance. Advanced support can follow the 1EdTech data dictionary link when raw manifest detail is needed.
Relationships
- Belongs to one qti.content_package.
- May be referenced by qti.package_file and qti.artifact.
Integrity rules
- Unique (package_id, resource_identifier).
- resource_type should be one of the IMS/QTI package resource vocabulary values.
- Package hrefs and dependencies must stay inside the package closure.
Invalid examples
- A resource_identifier duplicated in one package.
- An href that escapes the package root with ../.
- A resource_type not recognized by the source bundle and not marked extension.
| Alpha / Canonical Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
resourceIdcanonical resource_id
Alpha cut
Backstage upstream internal
|
Required Default: none Key: Primary key |
Stable identifier for this manifest resource row. Constraints: Valid UUID and unique primary key. Relationship: None. Invalid when: Not a UUID or reused by another package_resource row. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Restricted Assessment Package Import, Alpha Provenance Requirements Example: |
packageIdcanonical package_id
Alpha cut
Backstage upstream internal
|
Required Default: none Key: Foreign key |
Owning content package. Constraints: Must reference qti.content_package(package_id). Cascades on package delete. Relationship: Belongs to exactly one qti.content_package. Invalid when: Missing package, cross-tenant package/resource mixture, or null. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Restricted Assessment Package Import, Alpha Provenance Requirements Example: |
resourceIdentifiercanonical resource_identifier
Alpha cut
Backstage upstream internal
|
Required Default: none Key: Unique with package_id |
IMS manifest resource identifier copied from imsmanifest. Constraints: Required text and unique within the package. Preserve source spelling. Relationship: None. Invalid when: Duplicated within a package, rewritten to a platform UUID, or missing when the manifest resource has an identifier. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Restricted Assessment Package Import, Alpha Provenance Requirements Example: |
resourceTypecanonical resource_type
Alpha cut
Backstage upstream internal
|
Required Default: none |
IMS/QTI resource type from the package manifest. Constraints: Required text. Values should match the package resource vocabulary or be explicitly preserved as extension. Relationship: None. Invalid when: Blank, invented by Alpha naming, or used to bypass validation. Allowed values: package_resource_type |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Restricted Assessment Package Import, Alpha Provenance Requirements Example: |
hrefcanonical href
Alpha cut
Backstage upstream internal
|
Nullable Default: none |
Package-relative path to the resource's primary file. Constraints: Nullable text. If present, must be normalized and must not escape the package root. Relationship: Usually corresponds to one qti.package_file.package_path. Invalid when: Absolute URL for a packaged file, path traversal, unnormalized slashes, or missing package_file for a required primary file. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Restricted Assessment Package Import, Alpha Provenance Requirements Example: |
dependenciescanonical dependencies
Alpha cut
Backstage upstream internal
|
Required Default: |
Manifest dependency references and variant resource links generated from the package manifest. Constraints: Required JSON array. Each referenced resource identifier should resolve within the same package. Relationship: References other qti.package_resource.resource_identifier values within the same package. Invalid when: Null, non-array JSON, unresolved dependency, or cross-package dependency not represented as allowed external metadata. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Restricted Assessment Package Import, Alpha Provenance Requirements Example: |
metadatacanonical metadata
Alpha cut
Backstage upstream internal
|
Required Default: |
Manifest-derived metadata, file list, and resource facts generated at ingest. Constraints: Required JSON object. Keep generated manifest/resource evidence here; keep raw bytes in qti.package_file. Relationship: None. Invalid when: Null, non-object JSON, direct learner PII, auth tokens, or package bytes. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Restricted Assessment Package Import, Alpha Provenance Requirements Example: |
Shared qti.* table
qti.package_file - Package file
Original package bytes, media, manifests, XML, and file evidence for export and audit. Alpha customer APIs do not serve raw package bytes as ordinary documentation objects.
Created during import and retained to support faithful export and diagnostics. content_bytes is deliberately cut from public Alpha.
Relationships
- Belongs to one qti.content_package.
- Optionally points to the qti.package_resource that first listed the file.
Integrity rules
- Unique (package_id, package_path).
- package_path must be normalized and package-relative.
- byte_length must match content_bytes length.
Invalid examples
- Two files with the same normalized package_path in one package.
- package_path escapes package root.
- content_hash does not match content_bytes.
| Alpha / Canonical Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
packageFileIdcanonical package_file_id
Alpha cut
Backstage upstream internal
|
Required Default: none Key: Primary key |
Stable identifier for one original package file row. Constraints: Valid UUID and unique primary key. Relationship: None. Invalid when: Not a UUID or reused. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Restricted Assessment Package Import, Alpha Provenance Requirements Example: |
packageIdcanonical package_id
Alpha cut
Backstage upstream internal
|
Required Default: none Key: Foreign key |
Owning content package. Constraints: Must reference qti.content_package(package_id). Cascades on package delete. Relationship: Belongs to exactly one qti.content_package. Invalid when: References a missing package or mixes tenants. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Restricted Assessment Package Import, Alpha Provenance Requirements Example: |
resourceIdcanonical resource_id
Alpha cut
Backstage upstream internal
|
Nullable Default: none Key: Foreign key |
Manifest resource that first listed this file, when applicable. Constraints: Nullable. If present, must reference qti.package_resource(resource_id). Set null if the resource row is deleted. Relationship: Belongs to zero or one qti.package_resource. Invalid when: References a resource from a different package or tenant. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Restricted Assessment Package Import, Alpha Provenance Requirements Example: |
packagePathcanonical package_path
Alpha cut
Backstage upstream internal
|
Required Default: none Key: Unique with package_id |
Normalized package-relative path for this file. Constraints: Required and unique inside package. Must not be absolute or contain traversal that escapes the package root. Relationship: None. Invalid when: Contains ../ escape, backslash ambiguity, an absolute scheme, duplicate normalized path, or a path not present in the uploaded package. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Restricted Assessment Package Import, Alpha Provenance Requirements Example: |
mediaTypecanonical media_type
Alpha cut
Backstage upstream internal
|
Required Default: |
Detected or declared media type used for export, diagnostics, and content serving. Constraints: Required text. Use a valid media type string; default is application/octet-stream when unknown. Relationship: None. Invalid when: Null, unparseable as a media type, or trusted more than validation of the actual content. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Restricted Assessment Package Import, Alpha Provenance Requirements Example: |
byteLengthcanonical byte_length
Alpha cut
Backstage upstream internal
|
Required Default: none |
Original byte length of content_bytes. Constraints: Required integer. Must be zero or positive and equal to the stored bytea length. Relationship: None. Invalid when: Negative, null, or mismatched with content_bytes. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Restricted Assessment Package Import, Alpha Provenance Requirements Example: |
contentHashcanonical content_hash
Alpha cut
Backstage upstream internal
|
Required Default: none |
Cryptographic hash of the original file bytes. Constraints: Required text. Store algorithm prefix with digest; must be reproducible from content_bytes. Relationship: None. Invalid when: Missing, digest does not match content_bytes, or algorithm is not recorded. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Restricted Assessment Package Import, Alpha Provenance Requirements Example: |
contentBytescanonical content_bytes
Alpha cut
Cut from public Alpha
|
Required Default: none |
Original bytes remain in storage for export and audit, but public Alpha does not expose them as a normal field. Constraints: Required byte array. Must be preserved for faithful package export and audit. Relationship: None. Invalid when: Null, replaced by parsed text only, mutated after ingest, or contains a file that failed package-closure validation. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Restricted Assessment Package Import, Alpha Provenance Requirements Example: |
metadatacanonical metadata
Alpha cut
Backstage upstream internal
|
Required Default: |
Generated evidence about the file, such as manifest listing flags, validation role, and extracted diagnostics. Constraints: Required JSON object. Must not replace content_bytes. Relationship: None. Invalid when: Null, non-object JSON, auth tokens, direct learner PII, or raw file bytes duplicated as JSON. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Restricted Assessment Package Import, Alpha Provenance Requirements Example: |
createdAtcanonical created_at
Alpha cut
Backstage upstream internal
|
Required Default: |
Timestamp when the file row was inserted. Constraints: Required timestamp with time zone. Relationship: None. Invalid when: Null or used as a proxy for QTI content versioning. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Restricted Assessment Package Import, Alpha Provenance Requirements Example: |
Shared qti.* table
qti.artifact - Content item
The stable Alpha content record for a question, test, section, passage, metadata document, or related QTI artifact. The qti.artifact row is the long-lived identity across saved versions.
Created by import or lossless authoring. The latestVersionId points to the newest immutable qti.artifact_version, but historical activities keep the version they started with.
Relationships
- Belongs to one qti.tenant.
- May originate from qti.content_package and qti.package_resource.
- Parent of qti.artifact_version.
Integrity rules
- artifact_kind must satisfy artifact_kind_ck.
- artifact_lookup_idx supports tenant/kind/QTI identifier lookup.
Invalid examples
- Using qti_identifier as a database primary key.
- Changing artifact_kind after versions exist.
- Pointing latest_version_id to a version from another artifact.
| Alpha / Canonical Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
contentIdcanonical artifact_id
Alpha rename
Public catalog source
|
Required Default: none Key: Primary key |
Stable platform identity for one logical artifact across versions. Constraints: Valid UUID and unique primary key. Relationship: None. Invalid when: Not a UUID, reused, or derived from a mutable QTI identifier. |
Source: Source class: Platform gap fill Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Alpha Provenance Requirements Example: |
workspaceIdcanonical tenant_id
Alpha rename
Public catalog source
|
Required Default: none Key: Foreign key |
Tenant that owns this artifact. Constraints: Must reference qti.tenant(tenant_id). Relationship: Belongs to exactly one qti.tenant. Invalid when: Missing tenant or different from the owning package tenant. |
Source: Source class: Platform gap fill Alpha ITDs: Shared QTI Persistence, Alpha Facade, Content Catalog Read Model, School Vocabulary Layer, Alpha Provenance Requirements Example: |
packageIdcanonical package_id
Alpha rename
Public catalog source
|
Nullable Default: none Key: Foreign key |
Origin package for imported artifacts. Constraints: Nullable for authored loose artifacts. If present, must reference qti.content_package(package_id). Set null if package is deleted. Relationship: Belongs to zero or one qti.content_package. Invalid when: References a package owned by another tenant. |
Source: Source class: Platform gap fill Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Alpha Provenance Requirements Example: |
resourceIdcanonical resource_id
Alpha rename
Public catalog source
|
Nullable Default: none Key: Foreign key |
Origin manifest resource for imported artifacts. Constraints: Nullable for generated or loose artifacts. If present, must reference qti.package_resource(resource_id). Set null if resource is deleted. Relationship: Belongs to zero or one qti.package_resource. Invalid when: Resource comes from another package or tenant. |
Source: Source class: Platform gap fill Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Alpha Provenance Requirements Example: |
kindcanonical artifact_kind
Alpha rename
Public catalog source
|
Required Default: none |
Repository category derived from QTI root element or manifest resource type. Constraints: Must satisfy artifact_kind_ck. Relationship: None. Invalid when: Outside enum set, inconsistent with root_element on versions, or changed for Alpha vocabulary. Allowed values: artifact_kind |
Source: Source class: Platform gap fill Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Alpha Provenance Requirements Example: |
qtiIdentifiercanonical qti_identifier
Alpha rename
Public catalog source
|
Nullable Default: none |
QTI identifier attribute copied from the root object when present. Constraints: Nullable because not every artifact has a root identifier. Preserve source spelling; do not use as a globally unique database key. Relationship: None. Invalid when: Invented when absent, rewritten to a UUID, or assumed unique outside artifact scope. |
Source: Source class: 1EdTech pass-through Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Alpha Provenance Requirements Example: |
titlecanonical title
Alpha rename
Public catalog source
|
Nullable Default: none |
QTI title or generated display label when present. Constraints: Nullable. Preserve QTI title when present; generated labels must be distinguishable in metadata/spec trace. Relationship: None. Invalid when: Used as identity, translated without retaining source XML, or contains direct learner PII. |
Source: Source class: 1EdTech pass-through Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Alpha Provenance Requirements Example: |
languagecanonical language
Alpha rename
Public catalog source
|
Nullable Default: none |
xml:lang or package-default language associated with the artifact. Constraints: Nullable BCP 47 language tag when known. Relationship: None. Invalid when: Not a language tag, invented without source/default evidence, or used to filter tenant access. |
Source: Source class: 1EdTech pass-through Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Alpha Provenance Requirements Example: |
latestVersionIdcanonical latest_version_id
Alpha rename
Public catalog source
|
Nullable Default: none Key: Convenience pointer |
Newest immutable artifact version for convenience reads. Constraints: Nullable until a version exists. Must point to a qti.artifact_version for this same artifact when populated. Relationship: Points to zero or one qti.artifact_version for the same artifact. Invalid when: Points to another artifact's version or treated as authoritative history instead of the artifact_version table. |
Source: Source class: Platform gap fill Alpha ITDs: Content Catalog Read Model, Lossless Authoring Commands, School Vocabulary Layer, Alpha Provenance Requirements Example: |
createdAtcanonical created_at
Alpha rename
Public catalog source
|
Required Default: |
Logical artifact creation timestamp. Constraints: Required timestamp with time zone. Relationship: None. Invalid when: Null or used as version_number. |
Source: Source class: Platform gap fill Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Alpha Provenance Requirements Example: |
Shared qti.* table
qti.artifact_version - Content version
One immutable saved version of QTI content. Alpha exposes friendly fields such as studentView and editingDraft, while raw XML, canonical XML, objectGraph, and specTrace stay advanced provenance.
Created by import or saveContentDraft. Never updated in place. Activities and answers point to exact version IDs so later edits do not change past student results.
Relationships
- Belongs to one qti.artifact.
- Parent of qti.component, qti.variable_declaration, qti.processing_rule, qti.delivery_session, and qti.attempt references.
Integrity rules
- Unique (artifact_id, version_number).
- Unique (artifact_id, xml_hash).
- source_xml must validate against bundled schema before persistence.
Invalid examples
- Mutating canonical_xml after attempts exist.
- delivery_json drops an identifier needed for scoring.
- schema_file not in the offline source bundle.
| Alpha / Canonical Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
contentVersionIdcanonical artifact_version_id
Alpha rename
Public version source with backstage internals
|
Required Default: none Key: Primary key |
Stable identifier for one immutable artifact edition. Constraints: Valid UUID and unique primary key. Relationship: None. Invalid when: Not a UUID or reused. |
Source: Source class: Platform gap fill Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
contentIdcanonical artifact_id
Alpha rename
Public version source with backstage internals
|
Required Default: none Key: Foreign key |
Logical artifact this version belongs to. Constraints: Must reference qti.artifact(artifact_id). Cascades on artifact delete. Relationship: Belongs to exactly one qti.artifact. Invalid when: Missing artifact or cross-tenant mismatch through artifact. |
Source: Source class: Platform gap fill Alpha ITDs: School Vocabulary Layer, Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
versionNumbercanonical version_number
Alpha rename and restriction
Public version source with backstage internals
|
Required Default: none Key: Unique with artifact_id |
Forward-only per-artifact version number. Constraints: Required integer and unique with artifact_id. Should increase by one for each saved edition. Relationship: None. Invalid when: Zero or negative by convention, duplicated for an artifact, skipped without migration evidence, or reused after rollback. |
Source: Source class: Platform gap fill Alpha ITDs: Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
sourceXmlcanonical source_xml
Alpha restriction
Advanced provenance
|
Required Default: none |
Original XML accepted after bundled XSD/Schematron validation. Constraints: Required PostgreSQL xml. Must validate before object creation and persistence. Relationship: None. Invalid when: Malformed XML, not valid against the bundled schema, contains direct learner runtime PII, or differs from the persisted object graph without trace. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Lossless Authoring Commands, Alpha Provenance Requirements, Content Catalog Read Model, Activity Delivery Language Example: |
canonicalXmlcanonical canonical_xml
Alpha restriction
Advanced provenance
|
Required Default: none |
Canonicalized XML used for equivalence checks and stable export. Constraints: Required text. Must round-trip from object graph to XML and hash to xml_hash. Relationship: None. Invalid when: Not reproducible from object_graph, hash mismatch, or changed after delivery sessions point to this version. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Lossless Authoring Commands, Alpha Provenance Requirements, Content Catalog Read Model, Activity Delivery Language Example: |
xmlHashcanonical xml_hash
Alpha rename and restriction
Public version source with backstage internals
|
Required Default: none Key: Unique with artifact_id |
Hash of canonical_xml used for idempotency and semantic preservation checks. Constraints: Required text and unique with artifact_id. Store algorithm prefix with digest. Relationship: None. Invalid when: Does not match canonical_xml, algorithm omitted, or duplicates a prior version for the same artifact. |
Source: Source class: Platform gap fill Alpha ITDs: Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
rootElementcanonical root_element
Alpha rename and restriction
Public version source with backstage internals
|
Required Default: none |
Root XML element for this version. Constraints: Required text generated from bundled XSD root element catalog. Relationship: None. Invalid when: Not present in the bundled root catalog or inconsistent with source_xml. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
rootTypecanonical root_type
Alpha rename and restriction
Public version source with backstage internals
|
Nullable Default: none |
Generated XSD type name for the root element. Constraints: Nullable for roots without generated type evidence; when present, must match bundled XSD generation. Relationship: None. Invalid when: Invented type, wrong schema namespace, or mismatch with root_element. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
schemaFilecanonical schema_file
Alpha rename and restriction
Public version source with backstage internals
|
Required Default: none |
Bundled schema file used as validation authority. Constraints: Required text. Must name a schema in the offline QTI source bundle. Relationship: None. Invalid when: Live network schema URL, missing local schema, or schema that does not define the root. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
objectGraphcanonical object_graph
Alpha cut
Cut from public Alpha
|
Required Default: none |
The internal generated object graph is storage truth for round trips. Alpha exposes studentView, editingDraft, and provenance summaries instead of this raw graph. Constraints: Required JSON object. Must preserve element order, attributes, text, tail text, identifiers, namespaces, types, and source trace enough to rebuild canonical XML. Relationship: None. Invalid when: Null, non-object JSON, loses mixed-content tail text, loses namespace identity, or becomes a public delivery contract. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Alpha Provenance Requirements, Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language Example: |
studentViewcanonical delivery_json
Alpha rename
Public version source with backstage internals
|
Nullable Default: none |
Generated consumer-facing projection used by delivery applications and session snapshots. Constraints: Nullable before projection. May omit only declared authoring-only or diagnostic detail; must preserve identifiers needed for responses, feedback, scoring, accessibility matching, and session replay. Relationship: None. Invalid when: Drops response identifiers, scoring dependencies, feedback links, accessibility references, or includes source traces not intended for delivery. |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, School Vocabulary Layer, Content Catalog Read Model, Lossless Authoring Commands, Alpha Provenance Requirements Example: |
editingDraftcanonical authoring_json
Alpha rename and restriction
Public version source with backstage internals
|
Nullable Default: none |
Generated authoring projection for editors that must preserve all spec-defined fields. Constraints: Nullable before projection. Must round-trip to object_graph with no spec-defined field loss. Relationship: None. Invalid when: Lossy, missing extension payloads, missing source trace needed for edits, or used for delivery without declared lossiness. |
Source: Source class: Platform gap fill Alpha ITDs: Lossless Authoring Commands, School Vocabulary Layer, Content Catalog Read Model, Activity Delivery Language, Alpha Provenance Requirements Example: |
specTracecanonical spec_trace
Alpha rename and restriction
Public version source with backstage internals
|
Required Default: |
Generated traceability from classes, fields, and components to XSD/spec anchors. Constraints: Required JSON object. Must point back to the offline source bundle and generated model evidence. Relationship: None. Invalid when: Null, non-object JSON, live-only references, or links that cannot be reproduced from the bundle. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
previousVersionIdcanonical supersedes_version_id
Alpha rename
Public version source with backstage internals
|
Nullable Default: none Key: Foreign key |
Previous version replaced by this version, when the save was an edit or replacement. Constraints: Nullable. If present, must reference qti.artifact_version(artifact_version_id), normally for the same artifact. Relationship: References zero or one earlier qti.artifact_version. Invalid when: Points forward in time, points to another artifact without explicit migration evidence, or creates a cycle. |
Source: Source class: Platform gap fill Alpha ITDs: Lossless Authoring Commands, Content Catalog Read Model, Activity Delivery Language, Alpha Provenance Requirements Example: |
createdAtcanonical created_at
Alpha rename and restriction
Public version source with backstage internals
|
Required Default: |
Timestamp when this immutable version was created. Constraints: Required timestamp with time zone. Relationship: None. Invalid when: Null or mutated to reorder version history. |
Source: Source class: Platform gap fill Alpha ITDs: Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
createdBycanonical created_by
Alpha rename and restriction
Public version source with backstage internals
|
Nullable Default: none |
Principal or system actor that created the version. Constraints: Nullable text. Must be a safe principal label; do not store raw JWTs or secrets. Relationship: None. Invalid when: Raw access token, raw JWT subject that identifies a learner, email address, or other direct learner PII. |
Source: Source class: Platform gap fill Alpha ITDs: Content Catalog Read Model, Lossless Authoring Commands, Activity Delivery Language, Alpha Provenance Requirements Example: |
Shared qti.* table
qti.component - QTI component
The lossless object-graph row projection used for QTI round trips, catalog extraction, and support traceability. Alpha does not expose a generic component tree as a customer object.
Generated from every content version and regenerated on new versions. Selected values may feed catalog summaries, but rows remain backstage.
Relationships
- Belongs to one qti.artifact_version.
- Self-references parent_component_id.
- Parent of qti.variable_declaration and qti.processing_rule rows.
Integrity rules
- Unique (artifact_version_id, component_path).
- ordinal preserves sibling order.
- component_identifier_idx supports identifier lookup when qti_identifier is present.
Invalid examples
- Two nodes with the same component_path in one version.
- Dropping tail_value for mixed content.
- Parent link creates a cycle.
| Alpha / Canonical Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
componentIdcanonical component_id
Alpha cut
Backstage upstream internal
|
Required Default: none Key: Primary key |
Stable identifier for one generated object node row. Constraints: Valid UUID and unique primary key. Relationship: None. Invalid when: Not a UUID or reused. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Alpha Provenance Requirements, Content Catalog Read Model Example: |
artifactVersionIdcanonical artifact_version_id
Alpha cut
Backstage upstream internal
|
Required Default: none Key: Foreign key |
Artifact version containing this component. Constraints: Must reference qti.artifact_version(artifact_version_id). Cascades on version delete. Relationship: Belongs to exactly one qti.artifact_version. Invalid when: Missing version or cross-artifact projection. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Alpha Provenance Requirements, Content Catalog Read Model Example: |
parentComponentIdcanonical parent_component_id
Alpha cut
Backstage upstream internal
|
Nullable Default: none Key: Self foreign key |
Parent object node, preserving the XML/object hierarchy. Constraints: Nullable for root node. If present, references qti.component(component_id) and cascades on parent delete. Relationship: References zero or one parent qti.component. Invalid when: Parent is in a different artifact_version, creates a cycle, or is missing for non-root nodes. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Alpha Provenance Requirements, Content Catalog Read Model Example: |
ordinalcanonical ordinal
Alpha cut
Backstage upstream internal
|
Required Default: none |
Sibling order under parent_component_id. Constraints: Required integer. Use zero-based or one-based consistently in the repository; order must be stable for XML canonicalization. Relationship: None. Invalid when: Null, negative by repository convention, duplicated among siblings without deterministic tie-break, or changed after hashing. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Alpha Provenance Requirements, Content Catalog Read Model Example: |
elementNamecanonical element_name
Alpha cut
Backstage upstream internal
|
Required Default: none |
XML element name generated from the bundled XSD index. Constraints: Required text. Must match the generated object node and source XML. Relationship: None. Invalid when: Unknown to the generated model, mismatched with qualified_name, or rewritten to an Alpha name. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Alpha Provenance Requirements, Content Catalog Read Model Example: |
qualifiedNamecanonical qualified_name
Alpha cut
Backstage upstream internal
|
Nullable Default: none |
Clark-notation qualified XML name used to preserve namespace identity. Constraints: Nullable for nodes without namespace evidence; when present, must combine namespace_uri and element_name correctly. Relationship: None. Invalid when: Namespace does not match namespace_uri, prefix-only value loses URI, or generated from live schema outside the bundle. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Alpha Provenance Requirements, Content Catalog Read Model Example: |
namespaceUricanonical namespace_uri
Alpha cut
Backstage upstream internal
|
Nullable Default: none |
Namespace URI for this XML component, if any. Constraints: Nullable text. Must be the actual XML namespace URI, not an arbitrary prefix. Relationship: None. Invalid when: Prefix instead of URI, wrong QTI namespace, or discarded for namespaced elements. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Alpha Provenance Requirements, Content Catalog Read Model Example: |
typeNamecanonical type_name
Alpha cut
Backstage upstream internal
|
Nullable Default: none |
Generated XSD type name for this object node. Constraints: Nullable. If present, must match generated type evidence from the bundled schema. Relationship: None. Invalid when: Invented type, type from the wrong namespace, or inconsistent with element_name. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Alpha Provenance Requirements, Content Catalog Read Model Example: |
qtiIdentifiercanonical qti_identifier
Alpha cut
Backstage upstream internal
|
Nullable Default: none |
QTI identifier attribute on this component when present. Constraints: Nullable. Preserve source value; identifier scope is QTI-defined and not always global. Relationship: None. Invalid when: Invented, coerced to UUID, or assumed globally unique across artifacts. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Alpha Provenance Requirements, Content Catalog Read Model Example: |
componentPathcanonical component_path
Alpha cut
Backstage upstream internal
|
Required Default: none Key: Unique with artifact_version_id |
Stable generated path from the root object to this component. Constraints: Required and unique within artifact_version_id. Must be reproducible from the generated object graph. Relationship: None. Invalid when: Not stable across rehydration, duplicated, or encodes tenant/private data. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Alpha Provenance Requirements, Content Catalog Read Model Example: |
attributescanonical attributes
Alpha cut
Backstage upstream internal
|
Required Default: |
Raw generated attribute projection for fields not promoted to typed query tables. Constraints: Required JSON object. Must preserve QTI/XML attributes, including extension attributes, without changing names. Relationship: None. Invalid when: Null, non-object JSON, drops data-* extension attributes, or stores API auth headers. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Alpha Provenance Requirements, Content Catalog Read Model Example: |
textValuecanonical text_value
Alpha cut
Backstage upstream internal
|
Nullable Default: none |
Text node value for text-bearing QTI and embedded content nodes. Constraints: Nullable text. Preserve source text needed for canonical XML round trip. Relationship: None. Invalid when: Dropped for mixed content, normalized in a way that changes semantics, or used to store learner responses. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Alpha Provenance Requirements, Content Catalog Read Model Example: |
tailValuecanonical tail_value
Alpha cut
Backstage upstream internal
|
Nullable Default: none |
Tail text after this element, required for mixed-content XML round trips. Constraints: Nullable text. Must be preserved when XML mixed content uses tail text. Relationship: None. Invalid when: Dropped because it is inconvenient, moved into text_value incorrectly, or included in delivery_json without declared lossiness. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Alpha Provenance Requirements, Content Catalog Read Model Example: |
sourceTracecanonical source_trace
Alpha cut
Backstage upstream internal
|
Required Default: |
Generated trace to XSD and spec source for this component. Constraints: Required JSON object. Must be reproducible from the offline source bundle and generated model. Relationship: None. Invalid when: Null, non-object JSON, live-only link, or not aligned with element_name/type_name. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Alpha Provenance Requirements, Content Catalog Read Model Example: |
Shared qti.* table
qti.variable_declaration - Answer and result declaration
QTI response, outcome, template, and context declarations used to validate Alpha answer payloads and explain result fields. Alpha exposes generated answer schemas, not standalone declaration rows.
Generated with a content version. submitAnswers reads response declarations before accepting an answer; getActivityResult reads outcome declarations for result explanation.
Relationships
- Belongs to one qti.artifact_version.
- References the qti.component that declared the variable.
Integrity rules
- Unique (artifact_version_id, variable_kind, identifier).
- variable_kind must satisfy variable_kind_ck.
- Cardinality and base_type must match QTI declaration semantics when present.
Invalid examples
- Two response declarations with the same identifier in one version.
- Cardinality value outside QTI cardinality vocabulary.
- correct_response shape inconsistent with cardinality/base_type.
| Alpha / Canonical Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
variableDeclarationIdcanonical variable_declaration_id
Alpha restriction
Derived schema source
|
Required Default: none Key: Primary key |
Stable row identifier for one promoted variable declaration. Constraints: Valid UUID and unique primary key. Relationship: None. Invalid when: Not a UUID or reused. |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, Alpha Provenance Requirements, Cut Raw QTI Internals From Public Alpha Example: |
artifactVersionIdcanonical artifact_version_id
Alpha restriction
Derived schema source
|
Required Default: none Key: Foreign key |
Artifact version that declares the variable. Constraints: Must reference qti.artifact_version(artifact_version_id). Cascades on version delete. Relationship: Belongs to exactly one qti.artifact_version. Invalid when: Missing version or mismatch with component_id artifact_version. |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, Alpha Provenance Requirements, Cut Raw QTI Internals From Public Alpha Example: |
componentIdcanonical component_id
Alpha restriction
Derived schema source
|
Required Default: none Key: Foreign key |
Component node that declared this variable. Constraints: Must reference qti.component(component_id). Cascades on component delete. Relationship: Belongs to exactly one qti.component. Invalid when: Component is not in the same artifact_version or is not a variable declaration node. |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, Alpha Provenance Requirements, Cut Raw QTI Internals From Public Alpha Example: |
variableKindcanonical variable_kind
Alpha restriction
Derived schema source
|
Required Default: none |
QTI variable category. Constraints: Must satisfy variable_kind_ck. Relationship: None. Invalid when: Outside enum set or used to invent a platform-only variable category. Allowed values: variable_kind |
Source: Source class: 1EdTech pass-through Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, Alpha Provenance Requirements, Cut Raw QTI Internals From Public Alpha Example: |
identifiercanonical identifier
Alpha restriction
Derived schema source
|
Required Default: none Key: Unique with artifact_version_id and variable_kind |
QTI variable identifier. Constraints: Required text. Unique with artifact_version_id and variable_kind. Relationship: None. Invalid when: Blank, duplicated within kind/version, rewritten to UUID, or mismatched with processing operands. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, Alpha Provenance Requirements, Cut Raw QTI Internals From Public Alpha Example: |
cardinalitycanonical cardinality
Alpha restriction
Derived schema source
|
Nullable Default: none |
QTI cardinality for the variable value container. Constraints: Nullable only when the source declaration allows absence. When present, use QTI cardinality values such as single, multiple, ordered, or record. Relationship: None. Invalid when: Outside QTI cardinality vocabulary, inconsistent with associated interaction, or inconsistent with JSON value shape. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, Alpha Provenance Requirements, Cut Raw QTI Internals From Public Alpha Example: |
baseTypecanonical base_type
Alpha restriction
Derived schema source
|
Nullable Default: none |
QTI base-type for atomic values when the declaration has one. Constraints: Nullable for record variables or declarations where QTI permits no base-type. Values should be QTI base types such as boolean, directedPair, duration, file, float, identifier, integer, pair, point, string, or uri. Relationship: None. Invalid when: Outside QTI base-type vocabulary, present for record in a way QTI forbids, or inconsistent with correct_response/default_value. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, Alpha Provenance Requirements, Cut Raw QTI Internals From Public Alpha Example: |
defaultValuecanonical default_value
Alpha restriction
Derived schema source
|
Nullable Default: none |
Generated object value for qti-default-value. Constraints: Nullable. JSON shape must match cardinality and base_type. Relationship: None. Invalid when: Shape does not match cardinality/base_type, contains unvalidated extension payload, or is used as candidate response state. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, Alpha Provenance Requirements, Cut Raw QTI Internals From Public Alpha Example: |
correctResponsecanonical correct_response
Alpha restriction
Derived schema source
|
Nullable Default: none |
Generated object value for qti-correct-response. Constraints: Nullable. JSON shape must match cardinality and base_type and preserve mapped identifiers exactly. Relationship: None. Invalid when: Correct response values are coerced, ordered values are stored as unordered, or value type conflicts with base_type. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, Alpha Provenance Requirements, Cut Raw QTI Internals From Public Alpha Example: |
mappingcanonical mapping
Alpha restriction
Derived schema source
|
Nullable Default: none |
Generated mapping, areaMapping, matchTable, or interpolationTable detail. Constraints: Nullable. Must preserve QTI mapping values, bounds, default scores, and interpolation details needed by processing. Relationship: None. Invalid when: Drops default mapping value, loses area coordinates, changes scoring numeric precision, or omits source trace. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, Alpha Provenance Requirements, Cut Raw QTI Internals From Public Alpha Example: |
sourceTracecanonical source_trace
Alpha restriction
Derived schema source
|
Required Default: |
Generated trace to XSD and spec section for the variable declaration. Constraints: Required JSON object and reproducible from the source bundle. Relationship: None. Invalid when: Null, non-object JSON, or not tied to the declaring component. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, Alpha Provenance Requirements, Cut Raw QTI Internals From Public Alpha Example: |
Shared qti.* table
qti.processing_rule - Grading rule
Executable response, outcome, template, and expression rows used by the QTI runtime. Alpha exposes safe grading explanations, not raw processing-rule trees.
Generated with a content version and executed when answers are submitted. Unsupported processing fails closed with a safe problem and trace evidence.
Relationships
- Belongs to one qti.artifact_version.
- References the qti.component backing the rule.
- Self-references parent_processing_rule_id for nested rule/expression trees.
Integrity rules
- rule_scope must satisfy processing_rule_scope_ck.
- processing_rule_execution_idx orders rules by artifact_version_id, rule_scope, and sequence_number.
Invalid examples
- sequence_number does not match object-graph order.
- rule_name not generated from a QTI processing element.
- unregistered custom operator treated as successful execution.
| Alpha / Canonical Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
processingRuleIdcanonical processing_rule_id
Alpha cut
Backstage upstream internal
|
Required Default: none Key: Primary key |
Stable row identifier for one promoted processing rule or expression node. Constraints: Valid UUID and unique primary key. Relationship: None. Invalid when: Not a UUID or reused. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Results And Grading Explanations, Alpha Provenance Requirements Example: |
artifactVersionIdcanonical artifact_version_id
Alpha cut
Backstage upstream internal
|
Required Default: none Key: Foreign key |
Artifact version containing the processing rule. Constraints: Must reference qti.artifact_version(artifact_version_id). Cascades on version delete. Relationship: Belongs to exactly one qti.artifact_version. Invalid when: Missing version or mismatch with component_id artifact_version. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Results And Grading Explanations, Alpha Provenance Requirements Example: |
componentIdcanonical component_id
Alpha cut
Backstage upstream internal
|
Required Default: none Key: Foreign key |
Component node backing this processing rule. Constraints: Must reference qti.component(component_id). Cascades on component delete. Relationship: Belongs to exactly one qti.component. Invalid when: Component is not in the same artifact_version or is not a processing/expression node. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Results And Grading Explanations, Alpha Provenance Requirements Example: |
parentProcessingRuleIdcanonical parent_processing_rule_id
Alpha cut
Backstage upstream internal
|
Nullable Default: none Key: Self foreign key |
Parent processing rule for nested expression and rule trees. Constraints: Nullable for root rules. If present, references qti.processing_rule(processing_rule_id). Cascades on parent delete. Relationship: References zero or one parent qti.processing_rule. Invalid when: Parent is in another artifact_version, creates a cycle, or changes execution semantics. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Results And Grading Explanations, Alpha Provenance Requirements Example: |
ruleScopecanonical rule_scope
Alpha cut
Backstage upstream internal
|
Required Default: none |
Processing scope used for query and execution grouping. Constraints: Must satisfy processing_rule_scope_ck. Relationship: None. Invalid when: Outside enum set or used to claim QTI defines this SQL row scope. Allowed values: processing_rule_scope |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Results And Grading Explanations, Alpha Provenance Requirements Example: |
ruleNamecanonical rule_name
Alpha cut
Backstage upstream internal
|
Required Default: none |
QTI processing rule or expression element/operator name. Constraints: Required text generated from the object graph and bundled XSD model. Relationship: None. Invalid when: Not a QTI processing/expression element, renamed for Alpha, or mismatched with component.element_name. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Results And Grading Explanations, Alpha Provenance Requirements Example: |
sequenceNumbercanonical sequence_number
Alpha cut
Backstage upstream internal
|
Required Default: none |
Order within the parent processing scope. Constraints: Required integer. Must preserve QTI processing order and be stable across rehydration. Relationship: None. Invalid when: Null, order differs from object graph, or ties cause nondeterministic execution. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Results And Grading Explanations, Alpha Provenance Requirements Example: |
operandscanonical operands
Alpha cut
Backstage upstream internal
|
Required Default: |
Generated operand references and literal values for execution. Constraints: Required JSON array. Must preserve variable references, literal values, and expression child references needed by the runtime. Relationship: None. Invalid when: Null, non-array JSON, points to undeclared variables, loses numeric precision, or contains unredacted learner identity. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Results And Grading Explanations, Alpha Provenance Requirements Example: |
sourceTracecanonical source_trace
Alpha cut
Backstage upstream internal
|
Required Default: |
Generated trace to XSD and spec section for this processing rule. Constraints: Required JSON object and reproducible from the source bundle. Relationship: None. Invalid when: Null, non-object JSON, or not tied to the rule_name/component. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Raw QTI Internals From Public Alpha, Results And Grading Explanations, Alpha Provenance Requirements Example: |
Shared qti.* table
qti.delivery_session - Activity
A student's interaction with one immutable content version. Alpha calls it an activity and stores the exact student view snapshot used at start.
Created by startActivity, updated as a student works, and closed or voided by lifecycle rules. Deleting student test data removes activity rows for the scoped studentRef and leaves reusable content intact.
Relationships
- Belongs to one qti.tenant.
- Pins one qti.artifact_version as root_artifact_version_id.
- Parent of qti.attempt.
Integrity rules
- candidate_ref must be opaque tenant-scoped pseudonymous UUID string.
- status must satisfy delivery_session_status_ck.
- delivery_json_snapshot is required and immutable for historical stability.
Invalid examples
- candidate_ref contains a name, email, SIS ID, raw JWT subject, or access token.
- delivery_json_snapshot does not match root_artifact_version_id projection at session start.
- status outside enum set.
| Alpha / Canonical Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
activityIdcanonical delivery_session_id
Alpha rename
Public runtime object
|
Required Default: none Key: Primary key |
Stable session identifier exposed by delivery APIs. Constraints: Valid UUID and unique primary key. Relationship: None. Invalid when: Not a UUID, reused, or guessable outside API authorization. |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
workspaceIdcanonical tenant_id
Alpha rename
Public runtime object
|
Required Default: none Key: Foreign key |
Tenant boundary for the delivery session. Constraints: Must reference qti.tenant(tenant_id). Relationship: Belongs to exactly one qti.tenant. Invalid when: Does not match authenticated tenant claim or root artifact tenant. |
Source: Source class: Platform gap fill Alpha ITDs: Shared QTI Persistence, Alpha Facade, Activity Delivery Language, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
studentRefcanonical candidate_ref
Alpha rename and restriction
Public runtime object
|
Required Default: none |
The Alpha student reference for this activity. It must be an opaque tenant-scoped pseudonymous UUID string, not a student's name, email, SIS ID, JWT subject, phone number, or parent contact detail. Constraints: Required text. Reject direct PII, auth tokens, raw JWT subjects, SIS IDs, contact details, and values that are not scoped to the tenant. Relationship: Indexed with tenant_id for candidate session history and deletion. Invalid when: Contains direct learner or parent PII, can be joined outside the tenant without an identity service, or is reused as a QTI content identifier. |
Source: Source class: Platform gap fill Alpha ITDs: StudentRef Privacy Language, Activity Delivery Language, Alpha Provenance Requirements Example: |
contentVersionIdcanonical root_artifact_version_id
Alpha rename
Public runtime object
|
Required Default: none Key: Foreign key |
Immutable item, test, or section version delivered in this session. Constraints: Must reference qti.artifact_version(artifact_version_id). Relationship: Belongs to exactly one qti.artifact_version. Invalid when: Missing version, version not owned by tenant, or changed after session start. |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, Content Catalog Read Model, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
statuscanonical status
Alpha rename
Public runtime object
|
Required Default: |
Session lifecycle state. Constraints: Must satisfy delivery_session_status_ck. Relationship: None. Invalid when: Outside enum set or inconsistent with attempts, submitted_at, or review workflow. Allowed values: delivery_session_status |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
studentViewSnapshotcanonical delivery_json_snapshot
Alpha rename
Public runtime object
|
Required Default: none |
Snapshot of delivery_json at session start. Constraints: Required JSON object. Must remain stable for the session even if the artifact later receives a new version. Relationship: None. Invalid when: Null, mismatched to root_artifact_version_id at start, mutated after attempts, or contains authoring-only trace without declared lossiness. |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
activityStatecanonical session_state
Alpha rename and restriction
Public runtime object
|
Required Default: |
Runtime state not modeled as QTI variables, such as navigation, item sequencing, resume information, or review flags. Constraints: Required JSON object. Treat as learner-runtime data. Do not store direct PII, raw PNP records, tokens, IP addresses, or user agents. Relationship: None. Invalid when: Null, non-object JSON, auth headers, raw PNP records, direct learner identity, or state that contradicts delivery_json_snapshot. |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
createdAtcanonical created_at
Alpha rename
Public runtime object
|
Required Default: |
Session creation timestamp. Constraints: Required timestamp with time zone. Relationship: None. Invalid when: Null or later than updated_at. |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
updatedAtcanonical updated_at
Alpha rename
Public runtime object
|
Required Default: |
Last session state mutation timestamp. Constraints: Required timestamp with time zone. Must be updated when status or session_state changes. Relationship: None. Invalid when: Null, earlier than created_at, or stale after status/session_state update. |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
Shared qti.* table
qti.attempt - Answer submission
One submitted or in-progress set of student answers plus the resulting QTI response, template, outcome, and grading trace snapshots.
Created when a student starts or submits answers for an activity. Result and grading explanation views are derived from this table without creating a second score table.
Relationships
- Belongs to one qti.delivery_session.
- References the qti.artifact_version attempted.
Integrity rules
- Unique (delivery_session_id, artifact_version_id, attempt_number).
- status must satisfy attempt_status_ck.
- processing_trace must be privacy-redacted.
Invalid examples
- processing_trace includes JWTs, IP addresses, user agents, raw PNP records, or direct learner identity.
- attempt_number duplicates within one session/artifact version.
- outcome_state cannot be reproduced by the trace and runtime profile.
| Alpha / Canonical Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
submissionIdcanonical attempt_id
Alpha rename
Public runtime object
|
Required Default: none Key: Primary key |
Stable identifier for one attempt record. Constraints: Valid UUID and unique primary key. Relationship: None. Invalid when: Not a UUID or reused. |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
activityIdcanonical delivery_session_id
Alpha rename
Public runtime object
|
Required Default: none Key: Foreign key |
Owning delivery session. Constraints: Must reference qti.delivery_session(delivery_session_id). Cascades on session delete. Relationship: Belongs to exactly one qti.delivery_session. Invalid when: Missing session or tenant mismatch through session. |
Source: Source class: Platform gap fill Alpha ITDs: Activity Delivery Language, Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
contentVersionIdcanonical artifact_version_id
Alpha rename
Public runtime object
|
Required Default: none Key: Foreign key |
Immutable item/test artifact version attempted. Constraints: Must reference qti.artifact_version(artifact_version_id). Relationship: Belongs to exactly one qti.artifact_version. Invalid when: Does not belong to the delivery session snapshot or changes after processing. |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Content Catalog Read Model, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
attemptNumbercanonical attempt_number
Alpha rename and extension
Public runtime object
|
Required Default: none Key: Unique with delivery_session_id and artifact_version_id |
Attempt count within a session and artifact version. Constraints: Required integer and unique with delivery_session_id plus artifact_version_id. Should increase for repeated attempts. Relationship: None. Invalid when: Zero or negative by convention, duplicated, or reused after an adaptive attempt changes state. |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
statuscanonical status
Alpha rename and extension
Public runtime object
|
Required Default: |
Attempt lifecycle state. Constraints: Must satisfy attempt_status_ck. Relationship: None. Invalid when: Outside enum set or inconsistent with suspended_at/submitted_at. Allowed values: attempt_status |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
answerscanonical response_state
Alpha rename and restriction
Public runtime object
|
Required Default: |
Candidate response variables at the last processing point. Constraints: Required JSON object. Keys should be QTI response variable identifiers; values must match declaration cardinality/base_type. Treat as learner data. Relationship: None. Invalid when: Null, values inconsistent with qti.variable_declaration, unnecessary learner PII copied from outside the response, or logged without redaction. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Declaration-Checked Answers, StudentRef Privacy Language, Results And Grading Explanations, Alpha Provenance Requirements Example: |
templateStatecanonical template_state
Alpha restriction
Advanced provenance
|
Required Default: |
Template variables used for item cloning and stability. Constraints: Required JSON object. Keys should be QTI template variable identifiers; values must match declarations. Relationship: None. Invalid when: Null, regenerated on read instead of persisted, inconsistent with template processing trace, or logged with learner identity. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
resultscanonical outcome_state
Alpha rename and extension
Public runtime object
|
Required Default: |
Outcome variables after template, response, and outcome processing. Constraints: Required JSON object. Keys should be QTI outcome variable identifiers; values must match declarations and processing results. Relationship: None. Invalid when: Null, cannot be reproduced by processing rules under the runtime profile, or includes unsupported outcomes without diagnostics. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Results And Grading Explanations, Declaration-Checked Answers, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
gradingExplanationcanonical processing_trace
Alpha rename and extension
Public runtime object
|
Required Default: |
Privacy-redacted processing trace used to explain grading. Public Alpha exposes a safe explanation view, not raw tokens, headers, IP addresses, PNP records, or direct identity fields. Constraints: Required JSON array. May include rule names, variable identifiers, before/after values, and diagnostics. Must exclude JWTs, headers, access tokens, IP addresses, user agents, raw PNP records, raw package bytes, and direct learner identity fields. Relationship: None. Invalid when: Null, non-array JSON, nondeterministic, lacks failed-closed diagnostics for unsupported operators, or contains auth/PII data. |
Source: Source class: Platform gap fill Alpha ITDs: Results And Grading Explanations, StudentRef Privacy Language, Declaration-Checked Answers, Alpha Provenance Requirements Example: |
startedAtcanonical started_at
Alpha rename and extension
Public runtime object
|
Required Default: |
Attempt start timestamp. Constraints: Required timestamp with time zone. Relationship: None. Invalid when: Null or after submitted_at. |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
suspendedAtcanonical suspended_at
Alpha rename and extension
Public runtime object
|
Nullable Default: none |
Attempt suspension timestamp, if the attempt was suspended. Constraints: Nullable timestamp with time zone. Should be set when status is suspended. Relationship: None. Invalid when: Set while status never suspended without lifecycle evidence, before started_at, or after submitted_at. |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
submittedAtcanonical submitted_at
Alpha rename and extension
Public runtime object
|
Nullable Default: none |
Attempt submission timestamp, if the attempt was submitted. Constraints: Nullable timestamp with time zone. Should be set when status is submitted or reviewed. Relationship: None. Invalid when: Before started_at, set while status remains active without evidence, or absent for submitted/reviewed attempts. |
Source: Source class: Platform gap fill Alpha ITDs: Declaration-Checked Answers, Results And Grading Explanations, StudentRef Privacy Language, Alpha Provenance Requirements Example: |
Shared qti.* table
qti.conformance_run - QTI trust run
Release evidence used by the read-only Alpha trust status. Alpha users can see whether current QTI evidence passed, failed, is running, or errored; they cannot trigger runs publicly.
Created by 1EdTech/internal release tooling, then summarized by getQtiTrustStatus for schools and app-builder LLMs.
Relationships
- Parent of qti.conformance_assertion.
Integrity rules
- status must satisfy conformance_run_status_ck.
- bundle_hash must identify the offline source bundle used by the run.
Invalid examples
- Run claims passed while child assertions failed.
- bundle_hash omitted or points to live network state.
- summary includes secrets or learner-runtime data.
| Alpha / Canonical Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
conformanceRunIdcanonical conformance_run_id
Alpha extension
Read-only trust source
|
Required Default: none Key: Primary key |
Stable identifier for one conformance run. Constraints: Valid UUID and unique primary key. Relationship: None. Invalid when: Not a UUID or reused. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
profilecanonical profile
Alpha extension
Read-only trust source
|
Required Default: none |
Targeted QTI 3.0 conformance profile or optional feature set. Constraints: Required text. Must be a profile the runner understands. Relationship: None. Invalid when: Unsupported profile, Alpha-only label, or profile not represented by assertions. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
bundleHashcanonical bundle_hash
Alpha extension
Read-only trust source
|
Required Default: none |
Hash of the offline spec bundle used by the run. Constraints: Required text with algorithm prefix and digest. Relationship: None. Invalid when: Missing, live network URL, or not reproducible from the bundle used. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
runnerVersioncanonical runner_version
Alpha extension
Read-only trust source
|
Required Default: none |
Version or identity of the conformance runner. Constraints: Required text. Must be specific enough to reproduce behavior. Relationship: None. Invalid when: Blank, vague, or points to unpinned code. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
startedAtcanonical started_at
Alpha extension
Read-only trust source
|
Required Default: |
Run start timestamp. Constraints: Required timestamp with time zone. Relationship: None. Invalid when: Null or after finished_at. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
finishedAtcanonical finished_at
Alpha extension
Read-only trust source
|
Nullable Default: none |
Run finish timestamp, if complete. Constraints: Nullable timestamp with time zone. Should be set for passed, failed, or error. Relationship: None. Invalid when: Before started_at, absent for completed terminal status without explanation, or set while still running. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
statuscanonical status
Alpha extension
Read-only trust source
|
Required Default: |
Run lifecycle status. Constraints: Must satisfy conformance_run_status_ck. Relationship: None. Invalid when: Outside enum set or inconsistent with child assertion statuses. Allowed values: conformance_run_status |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
summarycanonical summary
Alpha extension
Read-only trust source
|
Required Default: |
Generated coverage and pass/fail summary. Constraints: Required JSON object. Should include counts, profile facts, and links/keys to assertion evidence; must not include secrets or learner-runtime data. Relationship: None. Invalid when: Null, non-object JSON, contradicts assertion rows, or includes raw package bytes/secrets. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
Shared qti.* table
qti.conformance_assertion - QTI trust assertion
Per-assertion evidence behind QTI trust status. Raw assertion rows stay backstage because public Alpha needs a clear trust answer, not release-run internals.
Created by the conformance runner and summarized into read-only trust status. Raw details require the 1EdTech/internal view.
Relationships
- Belongs to one qti.conformance_run.
Integrity rules
- Unique (conformance_run_id, assertion_key).
- status must satisfy conformance_assertion_status_ck.
- details must carry enough diagnostics for failed/error assertions.
Invalid examples
- Duplicate assertion_key in one run.
- failed assertion with empty details.
- spec_ref points to a live-only reference that cannot be reproduced from the bundle.
| Alpha / Canonical Field | Type and Nullability | Meaning and Constraints | Provenance and Example |
|---|---|---|---|
conformanceAssertionIdcanonical conformance_assertion_id
Alpha cut
Backstage upstream internal
|
Required Default: none Key: Primary key |
Stable identifier for one assertion result. Constraints: Valid UUID and unique primary key. Relationship: None. Invalid when: Not a UUID or reused. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
conformanceRunIdcanonical conformance_run_id
Alpha cut
Backstage upstream internal
|
Required Default: none Key: Foreign key |
Owning conformance run. Constraints: Must reference qti.conformance_run(conformance_run_id). Cascades on run delete. Relationship: Belongs to exactly one qti.conformance_run. Invalid when: Missing parent run or status contradicts parent run summary. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
assertionKeycanonical assertion_key
Alpha cut
Backstage upstream internal
|
Required Default: none Key: Unique with conformance_run_id |
Stable key generated by the conformance runner for this assertion. Constraints: Required text and unique within the run. Must be deterministic for the same assertion. Relationship: None. Invalid when: Duplicated in a run, nondeterministic across reruns, or so vague it cannot locate the assertion. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
artifactRefcanonical artifact_ref
Alpha cut
Backstage upstream internal
|
Nullable Default: none |
Example, fixture, or artifact path covered by this assertion. Constraints: Nullable when assertion is feature-level only. If present, should point to a bundled example, generated artifact, or artifact identifier. Relationship: None. Invalid when: Live-only URL, missing fixture, or reference to learner-runtime data. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
specRefcanonical spec_ref
Alpha cut
Backstage upstream internal
|
Nullable Default: none |
Spec section, schema component, or generated trace reference covered by this assertion. Constraints: Nullable when the assertion is implementation-only. If present, must be reproducible from the bundled source or generated traceability. Relationship: None. Invalid when: Points only to live network docs, wrong schema file, or cannot be followed by a future generator. |
Source: Source class: 1EdTech pass-through Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
statuscanonical status
Alpha cut
Backstage upstream internal
|
Required Default: none |
Assertion result status. Constraints: Must satisfy conformance_assertion_status_ck. Relationship: None. Invalid when: Outside enum set, contradicts details, or failed/error without diagnostics. Allowed values: conformance_assertion_status |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
detailscanonical details
Alpha cut
Backstage upstream internal
|
Required Default: |
Assertion diagnostics, canonical hashes, processing outcomes, and failure details. Constraints: Required JSON object. Failed or error assertions must explain enough for reproduction. Must not include secrets, raw JWTs, direct learner PII, or unrelated package bytes. Relationship: None. Invalid when: Null, non-object JSON, missing diagnostics for failure, or contains auth/PII data. |
Source: Source class: Platform gap fill Alpha ITDs: Cut Public Conformance Runner, Read-Only QTI Trust Status, Alpha Provenance Requirements Example: |
Allowed Values
Alpha labels may be friendlier, but stored values remain the approved qti.* values unless a later ITD changes them. Every value below includes behavior, source field, and Alpha provenance.
Assessment package import status
Alpha field: assessmentPackage.importStatus
Canonical source: qti.content_package.import_status
| Stored value | Alpha label | Behavior |
|---|---|---|
importing | checking | The package row has been created and validation or resource extraction is still in progress. Do not deliver artifacts from this package yet. |
imported | ready | Validation, resource extraction, artifact creation, and version projection succeeded. The package can be queried, delivered, and exported. |
rejected | needsFix | Validation, package-closure checks, XSD/Schematron validation, or privacy validation failed. Keep diagnostics in metadata; do not create deliverable sessions from this package. |
superseded | replaced | A later package or version replaces this import for operational use while preserving this row for audit and reproducibility. |
IMS/QTI package resource type
Alpha field: qti.package_resource.resource_type
Canonical source: qti.package_resource.resource_type
| Stored value | Alpha label | Behavior |
|---|---|---|
imsqti_test_xmlv3p0 | imsqti_test_xmlv3p0 | A QTI assessment test XML resource. The primary href should point to a test XML document. |
imsqti_section_xmlv3p0 | imsqti_section_xmlv3p0 | A QTI assessment section XML resource. Use for sections managed independently from a test. |
imsqti_item_xmlv3p0 | imsqti_item_xmlv3p0 | A QTI assessment item XML resource. Use for a candidate-facing item with interactions and response processing. |
imsqti_resprocessing_xmlv3p0 | imsqti_resprocessing_xmlv3p0 | A QTI response-processing XML resource when response processing is represented as a separate package resource. |
imsqti_outcomes_xmlv3p0 | imsqti_outcomes_xmlv3p0 | A QTI outcome-declaration XML resource, often used when outcomes are managed independently. |
imsqti_stimulus_xmlv3p0 | imsqti_stimulus_xmlv3p0 | A QTI assessment stimulus XML resource that items can depend on for shared passage or stimulus content. |
imsqti_fragment_xmlv3p0 | imsqti_fragment_xmlv3p0 | A managed QTI fragment resource used by item, section, or test content. |
imsqti_rptemplate_xmlv3p0 | imsqti_rptemplate_xmlv3p0 | A response-processing template XML resource, including standard or custom templates packaged with items. |
associatedcontent/learning-application-resource | associatedcontent/learning-application-resource | A learning-application asset referenced by QTI content. |
webcontent | webcontent | Generic web content asset, such as image, video, audio, HTML, or other supporting media. |
imsbasiclti_xmlv1p3 | imsbasiclti_xmlv1p3 | An LTI tool resource referenced by packaged content. |
controlfile | controlfile | A manifest control file or package control artifact. |
resourcemetadata/xml | resourcemetadata/xml | Metadata XML associated with a package resource. |
resourceextmetadata/xml | resourceextmetadata/xml | External metadata XML associated with a package resource. |
qtiusagedata/xml | qtiusagedata/xml | A QTI usage-data XML resource carrying item or distractor statistics. |
pls | pls | Pronunciation lexicon resource used by speech or accessibility presentation. |
css2 | css2 | CSS 2 stylesheet resource. |
css3 | css3 | CSS 3 stylesheet resource. |
extension | extension | An extension resource. Preserve and export it, but do not treat it as a known QTI root without validation evidence. |
Alpha content kind
Alpha field: content.kind
Canonical source: qti.artifact.artifact_kind
| Stored value | Alpha label | Behavior |
|---|---|---|
item | question | Logical artifact whose root is a QTI assessment item. |
test | test | Logical artifact whose root is a QTI assessment test. |
section | testSection | Logical artifact whose root is a QTI assessment section. |
stimulus | passage | Logical artifact whose root is a QTI assessment stimulus. |
outcome-declaration | outcomeDefinition | Logical artifact whose root is a standalone QTI outcome declaration. |
response-processing | scoringRule | Logical artifact whose root is standalone QTI response processing or a response-processing template. |
result | resultReport | Logical artifact whose root is a QTI assessment result report. |
usage-data | usageData | Logical artifact whose root is QTI usage data. |
metadata | metadata | Logical artifact for QTI or resource metadata XML. |
manifest-resource | packageResource | Manifest-only resource that must remain addressable even when it is not a QTI root document. |
Generated answer or result declaration kind
Alpha field: answerSchema.kind
Canonical source: qti.variable_declaration.variable_kind
| Stored value | Alpha label | Behavior |
|---|---|---|
response | answer | Candidate response variable declared by QTI and usually bound to an interaction. |
outcome | result | Scoring, feedback, or reporting variable set by default values or processing rules. |
template | template | Template variable used to instantiate or clone a parameterized item. |
context | context | Contextual variable available to template or response processing, including candidate, test, or system context when declared. |
Backstage grading rule scope
Alpha field: gradingExplanation.source.ruleScope
Canonical source: qti.processing_rule.rule_scope
| Stored value | Alpha label | Behavior |
|---|---|---|
response | answerScoring | Rule belongs to response processing and computes outcome variables from candidate responses. |
outcome | resultAggregation | Rule belongs to outcome processing at test or section level. |
template | templateSetup | Rule belongs to template processing and initializes template state before delivery. |
expression | expression | Row represents an expression subtree or operator nested inside response, outcome, or template processing. |
Activity status
Alpha field: activity.status
Canonical source: qti.delivery_session.status
| Stored value | Alpha label | Behavior |
|---|---|---|
created | created | Session exists and has a delivery JSON snapshot but has not yet become the active learner experience. |
active | inProgress | Candidate may interact with delivered content and create or update attempts. |
suspended | paused | Candidate work is paused and may be resumed with the same snapshot and session state. |
submitted | submitted | Candidate has submitted the session; scoring and attempt records are complete enough for review. |
review | review | Session is in review mode. Content and responses may be displayed, but interactions must not change response variables. |
closed | closed | Session is final for normal operations. Future edits to content do not affect it. |
voided | voided | Session is retained as an operational record but should not count toward reporting or outcomes. |
Answer submission status
Alpha field: answerSubmission.status
Canonical source: qti.attempt.status
| Stored value | Alpha label | Behavior |
|---|---|---|
active | inProgress | Candidate can still modify responses for this attempt. |
suspended | paused | Candidate response state is saved for later continuation. |
submitted | submitted | Candidate submitted responses and processing has produced outcome state. |
reviewed | reviewed | Attempt has been reviewed by an authorized person or workflow. |
voided | voided | Attempt is retained for audit but excluded from reporting and outcomes. |
QTI trust status
Alpha field: qtiTrustStatus.lastRunStatus
Canonical source: qti.conformance_run.status
| Stored value | Alpha label | Behavior |
|---|---|---|
running | checking | The conformance runner has started and assertions are not yet complete. |
passed | trusted | All required assertions for the targeted profile passed. |
failed | failed | At least one required assertion failed. |
error | error | The runner could not complete because of tool, environment, or infrastructure failure. |
QTI trust assertion status
Alpha field: qtiTrustStatus.assertions.status
Canonical source: qti.conformance_assertion.status
| Stored value | Alpha label | Behavior |
|---|---|---|
passed | passed | This assertion met the expected result. |
failed | failed | This assertion ran and found behavior that violates the target profile or platform contract. |
skipped | skipped | This assertion was intentionally not run, usually because it is out of profile or unavailable in the current runner. |
error | error | This assertion could not produce a valid pass/fail result because the runner or fixture failed. |
Projection lossiness
Alpha field: studentView.lossiness / editingDraft.lossiness
Canonical source: API projection metadata
| Stored value | Alpha label | Behavior |
|---|---|---|
none | none | The projection must preserve all spec-defined fields needed to reconstruct the generated object graph and canonical XML. |
declared | declared | The projection may omit only explicitly documented authoring-only or diagnostic detail, such as source trace or mixed-content tail detail. |
Cuts and Restrictions
These are deliberate Alpha exclusions, not missing documentation. They remain available through the approved 1EdTech surface or internal release tooling when the audience and authority justify it.
- runConformance as a public mutation
- raw qti.package_file.content_bytes reads
- generic qti.component row reads
- generic qti.variable_declaration row reads
- generic qti.processing_rule row reads
- qti.artifact_version.object_graph reads
- generic qti.conformance_assertion row browsing
Non-goals
- No OneRoster identity, class roster, assignment, or gradebook model is invented in the QTI Alpha architecture.
- No Caliper event stream is invented in the QTI Alpha architecture.
- No new QTI XML semantics, root elements, response-processing behavior, or conformance profile is invented by Alpha.
- No direct learner PII is stored in qti.delivery_session.candidate_ref.