Developer sign-in required
The Developer & Integration section is restricted to signed-in developer accounts. Sign in with your AI2N.ai developer credentials to continue.
Data Model
Watch: Data Model walkthrough (placeholder — video not yet recorded)
This page is a starting reference for two of the platform's core resources, Person and Enrollment, along with Tenant, Curriculum, Consent and Audit Event. Every single resource carries a tenant ID and is scoped server-side to the caller's authorized tenant -- a request simply cannot read across tenants, no matter what filters you supply. A Person record carries an ID, tenant ID, role -- student, teacher, parent, school_admin or global_admin -- a status of pending, active or suspended, and creation and update timestamps. An Enrollment ties a person to a course, tracks a server-computed progress percentage from zero to a hundred, and a status of active, completed or withdrawn. There's also Tenant and School records, Curriculum and Learning content with its own review-workflow status field, Consent and Media forms, and Audit Events that capture who did what, to what, and when, with action-specific metadata. This is meant as a reference you'll come back to -- treat the field tables here as the source of truth for what each resource actually contains.
This selector is illustrative — there is no live public API to switch against yet. All requests/responses below use non-production example data.
API version: v1 · Status: Illustrative — pre-release
Two of the platform's core resources, shown here as a starting reference. Every resource carries tenantId and is scoped server-side to the caller's authorized tenant — a request cannot read across tenants regardless of what filters are supplied.
Person
| Field | Type | Notes |
|---|---|---|
id | string | Opaque resource ID, e.g. per_9f2a…. |
tenantId | string | Owning school/tenant. Enforced server-side. |
role | enum | student · teacher · parent · school_admin · global_admin |
status | enum | pending · active · suspended |
createdAt / updatedAt | ISO 8601 | UTC timestamps. |
Enrollment
| Field | Type | Notes |
|---|---|---|
id | string | Opaque resource ID, e.g. enr_7c1d…. |
personId | string | References a Person with role student. |
courseId | string | References the assigned course/curriculum pathway. |
progressPercent | integer | 0–100, server-computed from completed lessons. |
status | enum | active · completed · withdrawn |
Tenant & School
| Field | Type | Notes |
|---|---|---|
id | string | Opaque resource ID. |
name | string | Organization name — unique platform-wide. |
orgType | enum | school · corporate. |
logoObjectKey | string | Reference to the uploaded logo asset, if any. |
createdAt | ISO 8601 | UTC timestamp. |
Curriculum & Learning
| Field | Type | Notes |
|---|---|---|
id | string | Opaque resource ID. |
slug | string | Unique, human-readable identifier. |
title | string | Curriculum page title. |
status | enum | draft · in_review · changes_requested · approved · scheduled · published · archived. |
version | string | Content version marker, distinct from the immutable publication snapshot version (see the Content & Curriculum documentation). |
ownerId / editorId / reviewerId / approverId | string | The accounts involved at each stage of the review workflow. |
Consent & Media
| Field | Type | Notes |
|---|---|---|
id | string | Opaque resource ID. |
title / description / body | string | The consent form's content. |
schoolId | string | The school this form was issued to. |
status | enum | draft · published · archived. |
publishedAt | ISO 8601 | When the form was published, if it has been. |
Audit Event
| Field | Type | Notes |
|---|---|---|
id | string | Opaque resource ID. |
tenantId / schoolId | string | Scope the event was recorded under, where applicable. |
actorUserId / actorRole | string | Who performed the action, and their role at the time. |
action | string | A dotted action name, e.g. feature_assignment.set, user.impersonate_start. |
entityType / entityId | string | What the action was performed on. |
metadata | object | Action-specific extra detail — shape varies by action. |
createdAt | ISO 8601 | UTC timestamp. |
Example response
{
"id": "enr_7c1d9e2a",
"personId": "per_9f2a44b1",
"courseId": "crs_robotics_g6",
"progressPercent": 62,
"status": "active",
"createdAt": "2026-06-01T09:12:00Z",
"updatedAt": "2026-08-20T14:03:00Z"
}