Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/vruizz22/innova-backend-serverless/llms.txt

Use this file to discover all available pages before exploring further.

The Parent API provides a COPPA-compliant view of a child’s academic progress. Parents see mastery summaries and soft alerts, but no raw attempt keystroke data or PII beyond what parental consent covers. Raw pKnown floating-point values are intentionally replaced with qualitative bands (low, mid, high) so that parents receive accessible, context-free summaries aligned with privacy obligations. The service is also aligned with Chile’s Law 21.180 on data protection for minors in educational platforms.
All endpoints in this section require a PARENT role JWT. Requests authenticated with TEACHER, STUDENT, or ADMIN tokens will be rejected with 403 Forbidden.

Access to a student’s data through the Parent API requires a confirmed ParentLink record. A ParentLink is created when:
  1. A parent registers and provides the student’s enrollment code (or is invited by a teacher).
  2. The parent completes the consent flow in the client app — this is also the gate for any photo-upload features covered by COPPA and Law 21.180.
  3. The confirmedAt timestamp on the ParentLink is set to a non-null value.
Until confirmedAt is populated, the link is pending and the student will not appear in GET /parent/children or be accessible via GET /parent/children/:studentId.
Parents can only access students listed in their confirmed ParentLink records. Attempting to view a student who is not linked — or whose link is still pending — returns 403 Forbidden. This check is enforced server-side on every request and cannot be bypassed by guessing student UUIDs.

Endpoints

GET /parent/children

List all confirmed children linked to the authenticated parent. Authentication: JWT (PARENT role required)
curl https://api.example.com/parent/children \
  -H "Authorization: Bearer <parent-token>"
studentId
string
UUID of the student.
displayName
string
Student display name (first name only, or a pseudonym — never a full legal name via this endpoint).
relationship
string
The declared relationship recorded on the ParentLink (e.g. mother, father, guardian).
Example response:
[
  {
    "studentId": "student-uuid-1",
    "displayName": "Sofía",
    "relationship": "mother"
  },
  {
    "studentId": "student-uuid-2",
    "displayName": "Mateo",
    "relationship": "mother"
  }
]

GET /parent/children/:studentId

Get a full summary for one confirmed child. The response includes:
  • Mastery bands per curriculum unit — qualitative progress across all topics, grouped by unit.
  • Recent guides — the last 8 published guides from the child’s active courses, with completion progress.
  • Soft alerts — the 5 most recent unresolved TeacherAlert records, stripped of any raw diagnostic numbers.
Authentication: JWT (PARENT role required)
studentId
string
required
UUID of the student. Must be a confirmed child of the authenticated parent — enforced by ParentLink check.
curl https://api.example.com/parent/children/student-uuid-here \
  -H "Authorization: Bearer <parent-token>"
Example response:
{
  "student": {
    "id": "student-uuid",
    "displayName": "Sofía"
  },
  "units": [
    {
      "unitId": "unit-uuid-1",
      "code": "subtraction_borrow",
      "name": "Resta con préstamo",
      "band": "high"
    },
    {
      "unitId": "unit-uuid-2",
      "code": "fractions_basic",
      "name": "Fracciones básicas",
      "band": "mid"
    }
  ],
  "recentGuides": [
    {
      "id": "guide-uuid",
      "title": "Taller 3",
      "status": "PUBLISHED",
      "dueAt": "2024-01-20T23:59:00.000Z",
      "gradedQuestions": 8,
      "totalQuestions": 10
    }
  ],
  "alerts": [
    {
      "id": "alert-uuid",
      "severity": "MED",
      "alertType": "STUCK_STUDENT",
      "createdAt": "2024-01-15T10:00:00.000Z"
    }
  ]
}
student
object
{ id, displayName } — minimal student identity.
units
array
Array of unit mastery summaries. Each object contains:
  • unitId (string): unit UUID
  • code (string): unit short code
  • name (string): unit display name
  • band (string): low (pKnown < 0.40), mid (0.40–0.69), or high (≥ 0.70)
recentGuides
array
Up to 8 most recently published guides across the child’s active courses. Each entry contains:
  • id (string): guide UUID
  • title (string): guide title
  • status (string): always PUBLISHED in this list
  • dueAt (string | null): due date ISO 8601, or null
  • gradedQuestions (number): number of APPROVED questions with at least one GRADED submission
  • totalQuestions (number): total APPROVED questions in the guide
alerts
array
Up to 5 most recent unresolved alerts for the student. Each entry contains:
  • id (string): alert UUID
  • severity (string): LOW, MED, or HIGH
  • alertType (string): type code (e.g. LOW_MASTERY)
  • createdAt (string): ISO 8601 timestamp
Note: raw payload data (e.g. exact pKnown values) is not included here — only the type and severity are exposed.
Mastery bands are computed as the mean pKnown across all topics in a unit. If a student has no mastery record for a topic, the topic’s BKT prior (bktPL0) is used as the default. This means a unit with no attempts will show the prior-based band rather than low.

Build docs developers (and LLMs) love