{
  "module": "results",
  "surface": "alpha",
  "deliverable": "customer_website",
  "generatedAt": "2026-06-17T13:21:26.669Z",
  "baseUrl": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/implementation/api",
  "benchmark": "https://docs.stripe.com/api",
  "upstream": {
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary",
    "oneRosterDataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/oneroster/1edtech/data_dictionary/",
    "nweamapDataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/nweamap/1edtech/data_dictionary/",
    "edFiDataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/ed_fi/1edtech/data_dictionary/"
  },
  "endpoints": [
    {
      "id": "mint-demo-token",
      "group": "Start",
      "method": "POST",
      "path": "/dev/mint?tenantId=demo",
      "title": "Mint a demo token",
      "summary": "Create a short-lived JWT for the public demo tenant. This endpoint is intentionally unauthenticated and is restricted to tenantId=demo.",
      "scopes": [
        "none for demo mint"
      ],
      "itds": [
        {
          "id": "ritd-023-axis-auth-shape",
          "title": "API Axis: Auth Shape",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-023-axis-auth-shape"
        },
        {
          "id": "ritd-026-axis-tenant-routing",
          "title": "API Axis: Tenant Routing",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-026-axis-tenant-routing"
        }
      ],
      "request": [
        {
          "name": "tenantId",
          "location": "query",
          "type": "TEXT enum",
          "required": "Required",
          "meaning": "Must be demo.",
          "example": "demo",
          "source": null
        }
      ],
      "query": [],
      "headers": [],
      "responseTable": "json_response",
      "responseFields": [
        "token",
        "tenantId",
        "expiresIn"
      ],
      "response": [
        {
          "name": "token",
          "location": "body",
          "type": "JWT string",
          "required": "Required",
          "meaning": "Bearer token scoped to tenant demo.",
          "example": "eyJhbGciOiJIUzI1NiIs...",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-023-axis-auth-shape"
        },
        {
          "name": "tenantId",
          "location": "body",
          "type": "TEXT",
          "required": "Required",
          "meaning": "The tenant claim in the token.",
          "example": "demo",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-026-axis-tenant-routing"
        },
        {
          "name": "expiresIn",
          "location": "body",
          "type": "INTEGER",
          "required": "Required",
          "meaning": "Seconds until expiration.",
          "example": "3600",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-023-axis-auth-shape"
        }
      ],
      "responseShape": "object"
    },
    {
      "id": "list-result-records",
      "group": "Result Records",
      "method": "GET",
      "path": "/alpha/results/v1/result-records",
      "title": "List settled outcomes",
      "summary": "Return settled Results records the caller is authorized to see, across students or narrowed by query filters.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-003-canonical-result-shape",
          "title": "Canonical Result Shape For Self-Paced And External Outcomes",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-003-canonical-result-shape"
        },
        {
          "id": "ritd-020-axis-query-model",
          "title": "API Axis: Query Model",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-020-axis-query-model"
        },
        {
          "id": "ritd-029-axis-list-endpoints",
          "title": "API Axis: List Endpoints",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-029-axis-list-endpoints"
        }
      ],
      "request": [],
      "query": [
        "studentId",
        "subject",
        "asOfDate",
        "canonicalTermId",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.result_record",
      "responseFields": [
        "result_record_id",
        "student_id",
        "result_kind",
        "subject_id",
        "canonical_term_id",
        "score_percent",
        "outcome_status",
        "modified_at"
      ],
      "response": [
        {
          "name": "result_record_id",
          "location": "body",
          "type": "UUID",
          "required": "Required.",
          "meaning": "Stable Results identifier for this settled outcome.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-result-record-id"
        },
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-student-id"
        },
        {
          "name": "result_kind",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "What kind of durable outcome this row represents.",
          "example": "self_paced",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-result-kind"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-subject-id"
        },
        {
          "name": "canonical_term_id",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable; required when the outcome belongs to a term.",
          "meaning": "Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.",
          "example": "term_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-canonical-term-id"
        },
        {
          "name": "score_percent",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "Normalized percent score used for mastery and report calculations.",
          "example": 93.2,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-score-percent"
        },
        {
          "name": "outcome_status",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Plain status for whether the outcome is submitted, graded, exempt, missing, or voided.",
          "example": "fully_graded",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-outcome-status"
        },
        {
          "name": "modified_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.",
          "example": "2026-06-03T18:55:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-modified-at"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "get-result-record",
      "group": "Result Records",
      "method": "GET",
      "path": "/alpha/results/v1/result-records/{resultRecordId}",
      "title": "Retrieve one settled outcome",
      "summary": "Return one durable outcome with source evidence links and data-dictionary provenance.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-003-canonical-result-shape",
          "title": "Canonical Result Shape For Self-Paced And External Outcomes",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-003-canonical-result-shape"
        },
        {
          "id": "ritd-019-axis-read-shape",
          "title": "API Axis: Read Shape",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-019-axis-read-shape"
        }
      ],
      "request": [
        {
          "name": "resultRecordId",
          "location": "path",
          "type": "UUID",
          "required": "Required",
          "meaning": "The Alpha result_record_id.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
          "source": null
        }
      ],
      "query": [],
      "headers": [],
      "responseTable": "alpha.result_record",
      "responseFields": [
        "result_record_id",
        "student_id",
        "result_kind",
        "score_percent",
        "canonical_response",
        "is_correct",
        "source_adapter_id",
        "modified_at"
      ],
      "response": [
        {
          "name": "result_record_id",
          "location": "body",
          "type": "UUID",
          "required": "Required.",
          "meaning": "Stable Results identifier for this settled outcome.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-result-record-id"
        },
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-student-id"
        },
        {
          "name": "result_kind",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "What kind of durable outcome this row represents.",
          "example": "self_paced",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-result-kind"
        },
        {
          "name": "score_percent",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "Normalized percent score used for mastery and report calculations.",
          "example": 93.2,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-score-percent"
        },
        {
          "name": "canonical_response",
          "location": "body",
          "type": "JSONB",
          "required": "Nullable.",
          "meaning": "QTI EAP5/EAP6 canonical response payload when item-level response evidence exists, plus adapter diagnostics when an accepted raw row is excluded from a derived measure.",
          "example": {
            "RESPONSE": "B"
          },
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-canonical-response"
        },
        {
          "name": "is_correct",
          "location": "body",
          "type": "BOOLEAN",
          "required": "Nullable.",
          "meaning": "Canonical correctness flag for item-level evidence.",
          "example": true,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-is-correct"
        },
        {
          "name": "source_adapter_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Named adapter or scorer that wrote this row.",
          "example": "adapter_qti_platform",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-source-adapter-id"
        },
        {
          "name": "modified_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.",
          "example": "2026-06-03T18:55:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-modified-at"
        }
      ],
      "responseShape": "object"
    },
    {
      "id": "list-student-results",
      "group": "Result Records",
      "method": "GET",
      "path": "/alpha/results/v1/students/{studentId}/results",
      "title": "List a student's outcomes",
      "summary": "Read one student's settled outcomes without joining MAP, OneRoster, QTI, or external producer tables in the client.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-001-results-boundary-alias-map",
          "title": "Results Boundary And Alias Map",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-001-results-boundary-alias-map"
        },
        {
          "id": "ritd-019-axis-read-shape",
          "title": "API Axis: Read Shape",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-019-axis-read-shape"
        }
      ],
      "request": [
        {
          "name": "studentId",
          "location": "path",
          "type": "TEXT",
          "required": "Required",
          "meaning": "TimeBack student id. Never use NWEA StudentID in public Alpha requests.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-api-parameters-studentid"
        }
      ],
      "query": [
        "subject",
        "asOfDate",
        "canonicalTermId",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.result_record",
      "responseFields": [
        "result_record_id",
        "result_kind",
        "subject_id",
        "canonical_term_id",
        "score_percent",
        "outcome_status",
        "mastery_cutoff_met"
      ],
      "response": [
        {
          "name": "result_record_id",
          "location": "body",
          "type": "UUID",
          "required": "Required.",
          "meaning": "Stable Results identifier for this settled outcome.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-result-record-id"
        },
        {
          "name": "result_kind",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "What kind of durable outcome this row represents.",
          "example": "self_paced",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-result-kind"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-subject-id"
        },
        {
          "name": "canonical_term_id",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable; required when the outcome belongs to a term.",
          "meaning": "Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.",
          "example": "term_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-canonical-term-id"
        },
        {
          "name": "score_percent",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "Normalized percent score used for mastery and report calculations.",
          "example": 93.2,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-score-percent"
        },
        {
          "name": "outcome_status",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Plain status for whether the outcome is submitted, graded, exempt, missing, or voided.",
          "example": "fully_graded",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-outcome-status"
        },
        {
          "name": "mastery_cutoff_met",
          "location": "body",
          "type": "BOOLEAN",
          "required": "Nullable.",
          "meaning": "Whether this result met the active mastery cutoff policy when the row was settled.",
          "example": true,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-mastery-cutoff-met"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-student-kc-state",
      "group": "Student Knowledge",
      "method": "GET",
      "path": "/alpha/results/v1/students/{studentId}/kc-state",
      "title": "Read a student's knowledge state",
      "summary": "Return the Results-owned mastery overlay for one student. The client reads mastery state; it does not recompute evidence or decay.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-004-student-knowledge-graph",
          "title": "Student Knowledge Graph Lives In Results",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-004-student-knowledge-graph"
        },
        {
          "id": "ritd-005-policy-config",
          "title": "Policy Numbers Are Results Surface Config",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-005-policy-config"
        }
      ],
      "request": [
        {
          "name": "studentId",
          "location": "path",
          "type": "TEXT",
          "required": "Required",
          "meaning": "TimeBack student id. Never use NWEA StudentID in public Alpha requests.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-api-parameters-studentid"
        }
      ],
      "query": [
        "subject",
        "asOfDate",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.student_kc_state",
      "responseFields": [
        "student_id",
        "kc_id",
        "subject_id",
        "initial_mastery",
        "current_retention",
        "durable_mastery",
        "fluency_state",
        "next_due_at",
        "evidence_count",
        "retention_model_ref",
        "effective_at",
        "is_time_locatable"
      ],
      "response": [
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-kc-state-student-id"
        },
        {
          "name": "kc_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Curriculum KC id for this student overlay row.",
          "example": "kc_linear_equations",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-kc-state-kc-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-kc-state-subject-id"
        },
        {
          "name": "initial_mastery",
          "location": "body",
          "type": "NUMERIC(6,5)",
          "required": "Required.",
          "meaning": "Acquisition-state value after initial learning and acquisition-gate evidence for this KC.",
          "example": 0.94,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-kc-state-initial-mastery"
        },
        {
          "name": "current_retention",
          "location": "body",
          "type": "NUMERIC(6,5)",
          "required": "Required.",
          "meaning": "Current retained-knowledge value after the active retention model and time decay.",
          "example": 0.88,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-kc-state-current-retention"
        },
        {
          "name": "durable_mastery",
          "location": "body",
          "type": "NUMERIC(6,5)",
          "required": "Required.",
          "meaning": "Longer-run mastery belief after repeated evidence and retention checks.",
          "example": 0.81,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-kc-state-durable-mastery"
        },
        {
          "name": "fluency_state",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Accuracy/speed/automaticity state for practice on an already-acquired KC.",
          "example": "building_speed",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-kc-state-fluency-state"
        },
        {
          "name": "next_due_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Nullable.",
          "meaning": "When the surface believes this KC next needs review or practice.",
          "example": "2026-03-28T14:30:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-kc-state-next-due-at"
        },
        {
          "name": "evidence_count",
          "location": "body",
          "type": "INTEGER",
          "required": "Required.",
          "meaning": "Number of evidence rows currently contributing to this state.",
          "example": 8,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-kc-state-evidence-count"
        },
        {
          "name": "retention_model_ref",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Policy/config id for the retention model used.",
          "example": "retention_fire_v2026_01",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-kc-state-retention-model-ref"
        },
        {
          "name": "effective_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "When this materialized state became effective.",
          "example": "2026-03-21T14:31:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-kc-state-effective-at"
        },
        {
          "name": "is_time_locatable",
          "location": "body",
          "type": "BOOLEAN",
          "required": "Required on effective-dated rows.",
          "meaning": "Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads.",
          "example": true,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-kc-state-is-time-locatable"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-student-track-state",
      "group": "Student Knowledge",
      "method": "GET",
      "path": "/alpha/results/v1/students/{studentId}/track-state",
      "title": "Read a student's track state",
      "summary": "Return one student's current position on each Curriculum track. Switching tracks closes the old state row and creates a new one; clients never copy track definitions.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-032-student-track-state",
          "title": "Student Track State Is Results State",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-032-student-track-state"
        },
        {
          "id": "ritd-001-results-boundary-alias-map",
          "title": "Results Boundary And Alias Map",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-001-results-boundary-alias-map"
        }
      ],
      "request": [
        {
          "name": "studentId",
          "location": "path",
          "type": "TEXT",
          "required": "Required",
          "meaning": "TimeBack student id. Never use NWEA StudentID in public Alpha requests.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-api-parameters-studentid"
        }
      ],
      "query": [
        "subject",
        "asOfDate",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.student_track_state",
      "responseFields": [
        "student_id",
        "subject_id",
        "track_id",
        "current_track_level_id",
        "current_segment_id",
        "placement_evidence",
        "status",
        "switched_to_track_id",
        "effective_at",
        "is_time_locatable",
        "modified_at"
      ],
      "response": [
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-track-state-student-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-track-state-subject-id"
        },
        {
          "name": "track_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Curriculum track this state belongs to.",
          "example": "track_common_core_math_k12",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-track-state-track-id"
        },
        {
          "name": "current_track_level_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required for active rows.",
          "meaning": "Curriculum track level where the student currently sits.",
          "example": "track_level_math_7",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-track-state-current-track-level-id"
        },
        {
          "name": "current_segment_id",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable.",
          "meaning": "Current Curriculum track_level_segment inside the track level.",
          "example": "segment_linear_equations",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-track-state-current-segment-id"
        },
        {
          "name": "placement_evidence",
          "location": "body",
          "type": "JSONB",
          "required": "Required.",
          "meaning": "Structured references to diagnostic, MAP, gate, or migration evidence that placed the student here.",
          "example": {
            "source": "grade_level_gate",
            "result_record_id": "018f..."
          },
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-track-state-placement-evidence"
        },
        {
          "name": "status",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Lifecycle state of the student's relationship to this track.",
          "example": "active",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-track-state-status"
        },
        {
          "name": "switched_to_track_id",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable; required when status is switched.",
          "meaning": "Curriculum track the student moved to when this row is closed by a switch.",
          "example": "track_sat_math_600_800",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-track-state-switched-to-track-id"
        },
        {
          "name": "effective_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC timestamp when this track-state version became effective.",
          "example": "2026-03-21T14:31:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-track-state-effective-at"
        },
        {
          "name": "is_time_locatable",
          "location": "body",
          "type": "BOOLEAN",
          "required": "Required on effective-dated rows.",
          "meaning": "Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads.",
          "example": true,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-track-state-is-time-locatable"
        },
        {
          "name": "modified_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.",
          "example": "2026-06-03T18:55:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-track-state-modified-at"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-student-course-progress",
      "group": "Student Knowledge",
      "method": "GET",
      "path": "/alpha/results/v1/students/{studentId}/course-progress",
      "title": "Read course progress",
      "summary": "Return one student's course progress answer with XP remaining before percent complete, policy, and Analytics/Curriculum evidence refs. Apps do not join Analytics, Curriculum, Events, or MAP/RIT/R90 to compute this.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-036-course-grade-progress",
          "title": "Course And Grade Progress Are Results Reads",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-036-course-grade-progress"
        },
        {
          "id": "ritd-019-axis-read-shape",
          "title": "API Axis: Read Shape",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-019-axis-read-shape"
        },
        {
          "id": "ritd-020-axis-query-model",
          "title": "API Axis: Query Model",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-020-axis-query-model"
        }
      ],
      "request": [
        {
          "name": "studentId",
          "location": "path",
          "type": "TEXT",
          "required": "Required",
          "meaning": "TimeBack student id. Never use NWEA StudentID in public Alpha requests.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-api-parameters-studentid"
        }
      ],
      "query": [
        "subject",
        "courseId",
        "asOfDate",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.student_course_progress",
      "responseFields": [
        "student_id",
        "subject_id",
        "course_id",
        "course_title",
        "grade_level",
        "as_of_date",
        "xp_remaining",
        "total_xp",
        "percent_complete",
        "progress_source_kind",
        "evidence_kind",
        "source_analytics_rollup_refs",
        "source_curriculum_refs",
        "policy_ref",
        "null_reason",
        "computed_at"
      ],
      "response": [
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-course-progress-student-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-course-progress-subject-id"
        },
        {
          "name": "course_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Curriculum course id whose progress is being answered.",
          "example": "course_math_grade_7_main",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-course-progress-course-id"
        },
        {
          "name": "course_title",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable display field.",
          "meaning": "Course display title copied only as a display snapshot for this progress answer.",
          "example": "Math Grade 7 Main Sequence",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-course-progress-course-title"
        },
        {
          "name": "grade_level",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "Working grade level associated with this course progress row.",
          "example": 7,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-course-progress-grade-level"
        },
        {
          "name": "as_of_date",
          "location": "body",
          "type": "DATE",
          "required": "Required.",
          "meaning": "Date the progress answer is valid for.",
          "example": "2026-06-03",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-course-progress-as-of-date"
        },
        {
          "name": "xp_remaining",
          "location": "body",
          "type": "NUMERIC(14,3)",
          "required": "Nullable when evidence is missing.",
          "meaning": "Expected XP remaining in this course after applying the selected progress evidence.",
          "example": 120,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-course-progress-xp-remaining"
        },
        {
          "name": "total_xp",
          "location": "body",
          "type": "NUMERIC(14,3)",
          "required": "Nullable when Curriculum denominator evidence is missing.",
          "meaning": "Total expected XP for the course denominator.",
          "example": 400,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-course-progress-total-xp"
        },
        {
          "name": "percent_complete",
          "location": "body",
          "type": "NUMERIC(7,3)",
          "required": "Nullable when progress cannot be answered.",
          "meaning": "Course percent complete shown to apps and reports.",
          "example": 70,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-course-progress-percent-complete"
        },
        {
          "name": "progress_source_kind",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required for populated rows.",
          "meaning": "Which precedence branch produced the progress answer.",
          "example": "app_reported_percent",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-course-progress-progress-source-kind"
        },
        {
          "name": "evidence_kind",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required for populated rows.",
          "meaning": "More specific evidence family behind progress_source_kind.",
          "example": "caliper_course_progress_percent",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-course-progress-evidence-kind"
        },
        {
          "name": "source_analytics_rollup_refs",
          "location": "body",
          "type": "JSONB array",
          "required": "Required; empty only when no Analytics evidence applies.",
          "meaning": "Structured references to Analytics rollup rows used as evidence.",
          "example": [
            "alpha.analytics_completion_rollup:completion_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9"
          ],
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-course-progress-source-analytics-rollup-refs"
        },
        {
          "name": "source_curriculum_refs",
          "location": "body",
          "type": "JSONB array",
          "required": "Required.",
          "meaning": "Structured references to Curriculum course/expected-XP denominator evidence.",
          "example": [
            "alpha.curriculum_course:course_math_grade_7_main"
          ],
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-course-progress-source-curriculum-refs"
        },
        {
          "name": "policy_ref",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Named Results progress policy used for evidence precedence, denominator handling, and percent derivation.",
          "example": "alpha.policy.results.progress.v2026-06-16",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-course-progress-policy-ref"
        },
        {
          "name": "null_reason",
          "location": "body",
          "type": "TEXT enum",
          "required": "Nullable.",
          "meaning": "Why progress fields are null or unknown.",
          "example": "source_missing",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-course-progress-null-reason"
        },
        {
          "name": "computed_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC time Results produced this progress answer.",
          "example": "2026-06-03T18:55:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-course-progress-computed-at"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-student-grade-level-progress",
      "group": "Student Knowledge",
      "method": "GET",
      "path": "/alpha/results/v1/students/{studentId}/grade-level-progress",
      "title": "Read grade-level progress",
      "summary": "Return one student's grade-level remaining XP, main-sequence denominator, percent complete, and calendar pacing. The grade denominator is the main sequence; remediation and hole-filling do not expand it.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-036-course-grade-progress",
          "title": "Course And Grade Progress Are Results Reads",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-036-course-grade-progress"
        },
        {
          "id": "ritd-019-axis-read-shape",
          "title": "API Axis: Read Shape",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-019-axis-read-shape"
        },
        {
          "id": "ritd-020-axis-query-model",
          "title": "API Axis: Query Model",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-020-axis-query-model"
        }
      ],
      "request": [
        {
          "name": "studentId",
          "location": "path",
          "type": "TEXT",
          "required": "Required",
          "meaning": "TimeBack student id. Never use NWEA StudentID in public Alpha requests.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-api-parameters-studentid"
        }
      ],
      "query": [
        "subject",
        "gradeLevel",
        "asOfDate",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.student_grade_level_progress",
      "responseFields": [
        "student_id",
        "subject_id",
        "grade_level",
        "working_grade",
        "as_of_date",
        "active_path_state",
        "grade_level_xp_remaining",
        "main_sequence_total_xp",
        "percent_complete",
        "elapsed_school_year_percent",
        "pacing_status",
        "source_course_progress_refs",
        "source_analytics_rollup_refs",
        "source_calendar_refs",
        "policy_ref",
        "null_reason",
        "computed_at"
      ],
      "response": [
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-grade-level-progress-student-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-grade-level-progress-subject-id"
        },
        {
          "name": "grade_level",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Required.",
          "meaning": "Grade level whose main-sequence progress is being answered.",
          "example": 7,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-grade-level-progress-grade-level"
        },
        {
          "name": "working_grade",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "Working grade input used to identify the active grade path.",
          "example": 7.4,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-grade-level-progress-working-grade"
        },
        {
          "name": "as_of_date",
          "location": "body",
          "type": "DATE",
          "required": "Required.",
          "meaning": "Date the grade-level progress answer is valid for.",
          "example": "2026-06-03",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-grade-level-progress-as-of-date"
        },
        {
          "name": "active_path_state",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Where the student is relative to the grade-level main sequence.",
          "example": "in_main_sequence",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-grade-level-progress-active-path-state"
        },
        {
          "name": "grade_level_xp_remaining",
          "location": "body",
          "type": "NUMERIC(14,3)",
          "required": "Nullable when evidence is missing.",
          "meaning": "Active-path XP remaining for this grade-level answer.",
          "example": 160,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-grade-level-progress-grade-level-xp-remaining"
        },
        {
          "name": "main_sequence_total_xp",
          "location": "body",
          "type": "NUMERIC(14,3)",
          "required": "Nullable when Curriculum denominator evidence is missing.",
          "meaning": "Total expected XP for the grade's main-course sequence.",
          "example": 500,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-grade-level-progress-main-sequence-total-xp"
        },
        {
          "name": "percent_complete",
          "location": "body",
          "type": "NUMERIC(7,3)",
          "required": "Nullable when progress cannot be answered.",
          "meaning": "Grade-level percent complete over the main sequence denominator.",
          "example": 68,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-grade-level-progress-percent-complete"
        },
        {
          "name": "elapsed_school_year_percent",
          "location": "body",
          "type": "NUMERIC(7,3)",
          "required": "Nullable when calendar evidence is missing.",
          "meaning": "Percent of the relevant school-year calendar elapsed as of as_of_date.",
          "example": 82,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-grade-level-progress-elapsed-school-year-percent"
        },
        {
          "name": "pacing_status",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Pace of actual grade-level progress relative to elapsed school-year percent.",
          "example": "behind_pace",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-grade-level-progress-pacing-status"
        },
        {
          "name": "source_course_progress_refs",
          "location": "body",
          "type": "JSONB array",
          "required": "Required.",
          "meaning": "Structured references to course-progress rows aggregated into this grade answer.",
          "example": [
            "alpha.student_course_progress:stu_timeback_10017|math|course_math_grade_7_main|2026-06-03"
          ],
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-grade-level-progress-source-course-progress-refs"
        },
        {
          "name": "source_analytics_rollup_refs",
          "location": "body",
          "type": "JSONB array",
          "required": "Required; empty only when no Analytics evidence applies.",
          "meaning": "Structured references to Analytics rollup rows used by contributing course-progress rows.",
          "example": [
            "alpha.analytics_completion_rollup:completion_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9"
          ],
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-grade-level-progress-source-analytics-rollup-refs"
        },
        {
          "name": "source_calendar_refs",
          "location": "body",
          "type": "JSONB array",
          "required": "Required; empty only when pacing is unknown.",
          "meaning": "Structured references to calendar/enrollment rows used for elapsed_school_year_percent.",
          "example": [
            "alpha.school_calendar:school_north_valley:2026-06-03"
          ],
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-grade-level-progress-source-calendar-refs"
        },
        {
          "name": "policy_ref",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Named Results progress policy used for active-path remaining XP, denominator choice, and pacing thresholds.",
          "example": "alpha.policy.results.progress.v2026-06-16",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-grade-level-progress-policy-ref"
        },
        {
          "name": "null_reason",
          "location": "body",
          "type": "TEXT enum",
          "required": "Nullable.",
          "meaning": "Why progress or pacing fields are null or unknown.",
          "example": "source_missing",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-grade-level-progress-null-reason"
        },
        {
          "name": "computed_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC time Results produced this grade-level progress answer.",
          "example": "2026-06-03T18:55:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-student-grade-level-progress-computed-at"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "get-next-task",
      "group": "Student Knowledge",
      "method": "GET",
      "path": "/alpha/results/v1/next-task",
      "title": "Read what the student should do next",
      "summary": "Return the one surface-owned next-task decision for a student, subject, and date. Apps render the typed task reference; they never rank lessons, reviews, practice, or gate retries themselves.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-034-next-task-selection",
          "title": "Next Task Selection Is One Results Surface Call",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-034-next-task-selection"
        },
        {
          "id": "ritd-004-student-knowledge-graph",
          "title": "Student Knowledge Graph Lives In Results",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-004-student-knowledge-graph"
        },
        {
          "id": "ritd-032-student-track-state",
          "title": "Student Track State Is Results State",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-032-student-track-state"
        }
      ],
      "request": [
        {
          "name": "studentId",
          "location": "query",
          "type": "TEXT",
          "required": "Required",
          "meaning": "TimeBack student id. Never use NWEA StudentID in public Alpha requests.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-api-parameters-studentid"
        }
      ],
      "query": [
        "subject",
        "asOfDate"
      ],
      "headers": [],
      "responseTable": "alpha.next_task",
      "responseFields": [
        "student_id",
        "subject_id",
        "as_of_date",
        "task_type",
        "task_ref_type",
        "task_ref_id",
        "reason",
        "due_at",
        "source_state_refs",
        "policy_version",
        "null_reason",
        "computed_at"
      ],
      "response": [
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-next-task-student-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-next-task-subject-id"
        },
        {
          "name": "as_of_date",
          "location": "body",
          "type": "DATE",
          "required": "Required.",
          "meaning": "Point-in-time date for the next-task decision.",
          "example": "2026-06-05",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-next-task-as-of-date"
        },
        {
          "name": "task_type",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Kind of task the surface selected.",
          "example": "review",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-next-task-task-type"
        },
        {
          "name": "task_ref_type",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required unless task_type is no_task.",
          "meaning": "Type of object the selected task points at.",
          "example": "course_component_member",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-next-task-task-ref-type"
        },
        {
          "name": "task_ref_id",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable; required unless task_type is no_task.",
          "meaning": "Identifier of the task target named by task_ref_type.",
          "example": "member_review_linear_equations",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-next-task-task-ref-id"
        },
        {
          "name": "reason",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Why the surface selected this task.",
          "example": "retention_due",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-next-task-reason"
        },
        {
          "name": "due_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Nullable.",
          "meaning": "When the selected task is due or should be shown.",
          "example": "2026-06-05T15:00:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-next-task-due-at"
        },
        {
          "name": "source_state_refs",
          "location": "body",
          "type": "JSONB",
          "required": "Required.",
          "meaning": "Structured references to KC state, track state, gate pass, and policy rows used for this decision.",
          "example": [
            {
              "type": "student_kc_state",
              "kc_id": "kc_linear_equations",
              "effective_at": "2026-06-05T14:30:00Z"
            }
          ],
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-next-task-source-state-refs"
        },
        {
          "name": "policy_version",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Policy/config version used by next-task selection.",
          "example": "policy_2026_06_03",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-next-task-policy-version"
        },
        {
          "name": "null_reason",
          "location": "body",
          "type": "TEXT enum",
          "required": "Nullable; required when task_type is no_task.",
          "meaning": "Why no task is available or why selection is blocked.",
          "example": "missing_policy_config",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-next-task-null-reason"
        },
        {
          "name": "computed_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC timestamp when the surface produced this answer.",
          "example": "2026-06-05T14:31:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-next-task-computed-at"
        }
      ],
      "responseShape": "object"
    },
    {
      "id": "list-xp-ledger",
      "group": "XP",
      "method": "GET",
      "path": "/alpha/results/v1/students/{studentId}/xp-ledger",
      "title": "Read awarded XP history",
      "summary": "Return append-only XP ledger rows for one student. Results calculates awards, discounts, penalties, and reversals from settled attempts and policy; apps display the ledger.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-033-xp-ledger",
          "title": "XP Ledger Is The Source Of Truth For Awarded XP",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-033-xp-ledger"
        },
        {
          "id": "ritd-005-policy-config",
          "title": "Policy Numbers Are Results Surface Config",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-005-policy-config"
        }
      ],
      "request": [
        {
          "name": "studentId",
          "location": "path",
          "type": "TEXT",
          "required": "Required",
          "meaning": "TimeBack student id. Never use NWEA StudentID in public Alpha requests.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-api-parameters-studentid"
        }
      ],
      "query": [],
      "headers": [],
      "responseTable": "alpha.xp_ledger",
      "responseFields": [
        "xp_award_id",
        "student_id",
        "result_record_id",
        "content_id",
        "expected_xp_ref",
        "awarded_xp",
        "award_reason",
        "calculation_policy_ref",
        "source_evidence_refs",
        "created_at",
        "reversal_of_xp_award_id"
      ],
      "response": [
        {
          "name": "xp_award_id",
          "location": "body",
          "type": "UUID",
          "required": "Required.",
          "meaning": "Stable id for this XP ledger row.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a004001",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-xp-ledger-xp-award-id"
        },
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-xp-ledger-student-id"
        },
        {
          "name": "result_record_id",
          "location": "body",
          "type": "UUID",
          "required": "Nullable; required for attempt-based awards.",
          "meaning": "Settled result that triggered this XP award.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-xp-ledger-result-record-id"
        },
        {
          "name": "content_id",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable.",
          "meaning": "Content item whose expected_xp was used.",
          "example": "content_factoring_gate_v3",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-xp-ledger-content-id"
        },
        {
          "name": "expected_xp_ref",
          "location": "body",
          "type": "JSONB",
          "required": "Required.",
          "meaning": "Structured reference to the Content expected_xp source and version used in the calculation.",
          "example": {
            "content_id": "content_factoring_gate_v3",
            "expected_xp_version": "2026-06-01"
          },
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-xp-ledger-expected-xp-ref"
        },
        {
          "name": "awarded_xp",
          "location": "body",
          "type": "NUMERIC(10,2)",
          "required": "Required.",
          "meaning": "XP amount awarded by this ledger row; may be negative for penalties or reversals.",
          "example": 42.5,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-xp-ledger-awarded-xp"
        },
        {
          "name": "award_reason",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Why this XP row exists.",
          "example": "accuracy_award",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-xp-ledger-award-reason"
        },
        {
          "name": "calculation_policy_ref",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Policy/config version that calculated awarded_xp.",
          "example": "xp_award_formula_v2026_06",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-xp-ledger-calculation-policy-ref"
        },
        {
          "name": "source_evidence_refs",
          "location": "body",
          "type": "JSONB",
          "required": "Required.",
          "meaning": "Structured references to result, content, effort, anti-gaming, or correction evidence.",
          "example": [
            {
              "type": "result_record",
              "id": "018f..."
            },
            {
              "type": "event_summary",
              "id": "evt_sum_..."
            }
          ],
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-xp-ledger-source-evidence-refs"
        },
        {
          "name": "created_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC timestamp when this ledger row was appended.",
          "example": "2026-03-21T14:31:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-xp-ledger-created-at"
        },
        {
          "name": "reversal_of_xp_award_id",
          "location": "body",
          "type": "UUID",
          "required": "Nullable.",
          "meaning": "Prior XP ledger row this row reverses or corrects.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a004000",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-xp-ledger-reversal-of-xp-award-id"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-content-effectiveness",
      "group": "Content Effectiveness",
      "method": "GET",
      "path": "/alpha/results/v1/content-effectiveness",
      "title": "Read content effectiveness",
      "summary": "Return Results-derived effectiveness rollups for Content items. The surface recomputes validated and failed evidence after settled test results; no app increments counters.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-016-content-effectiveness-derived-read",
          "title": "Content Effectiveness Is A Results-Derived Read On Content Items",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-016-content-effectiveness-derived-read"
        }
      ],
      "request": [
        {
          "name": "contentId",
          "location": "query",
          "type": "TEXT",
          "required": "Optional",
          "meaning": "Content item id to narrow the effectiveness rollup.",
          "example": "content_factoring_video",
          "source": null
        },
        {
          "name": "kcId",
          "location": "query",
          "type": "TEXT",
          "required": "Optional",
          "meaning": "Curriculum KC id when the rollup should be KC-specific.",
          "example": "kc_factoring_quadratics",
          "source": null
        }
      ],
      "query": [
        "subject",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.content_effectiveness",
      "responseFields": [
        "content_id",
        "content_version_id",
        "kc_id",
        "subject_id",
        "validated_by_count",
        "failed_by_count",
        "effectiveness_rate",
        "evidence_count",
        "policy_version",
        "source_result_refs",
        "last_recomputed_at"
      ],
      "response": [
        {
          "name": "content_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Content item this effectiveness row describes.",
          "example": "content_factoring_video",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-content-effectiveness-content-id"
        },
        {
          "name": "content_version_id",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable primary key part.",
          "meaning": "Exact Content version when effectiveness is version-specific.",
          "example": "content_factoring_video_v4",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-content-effectiveness-content-version-id"
        },
        {
          "name": "kc_id",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable primary key part.",
          "meaning": "Curriculum KC this effectiveness row concerns.",
          "example": "kc_factoring_quadratics",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-content-effectiveness-kc-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-content-effectiveness-subject-id"
        },
        {
          "name": "validated_by_count",
          "location": "body",
          "type": "INTEGER",
          "required": "Required.",
          "meaning": "Number of settled result evidence rows that validated this content under the active policy.",
          "example": 41,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-content-effectiveness-validated-by-count"
        },
        {
          "name": "failed_by_count",
          "location": "body",
          "type": "INTEGER",
          "required": "Required.",
          "meaning": "Number of settled result evidence rows that counted as failed evidence for this content under the active policy.",
          "example": 9,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-content-effectiveness-failed-by-count"
        },
        {
          "name": "effectiveness_rate",
          "location": "body",
          "type": "NUMERIC(6,5)",
          "required": "Nullable.",
          "meaning": "validated_by_count divided by validated plus failed evidence under policy.",
          "example": 0.82,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-content-effectiveness-effectiveness-rate"
        },
        {
          "name": "evidence_count",
          "location": "body",
          "type": "INTEGER",
          "required": "Required.",
          "meaning": "Total result_content_evidence rows inspected for this rollup.",
          "example": 54,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-content-effectiveness-evidence-count"
        },
        {
          "name": "policy_version",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Policy/config version used to classify content evidence and compute the rate.",
          "example": "content_effectiveness_v2026_06",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-content-effectiveness-policy-version"
        },
        {
          "name": "source_result_refs",
          "location": "body",
          "type": "JSONB",
          "required": "Required.",
          "meaning": "Structured references to the result_content_evidence rows and rollup job that produced this answer.",
          "example": {
            "evidence_set_id": "eff_factoring_v4_2026_06"
          },
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-content-effectiveness-source-result-refs"
        },
        {
          "name": "last_recomputed_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC timestamp when the surface last recomputed this row.",
          "example": "2026-06-05T14:31:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-content-effectiveness-last-recomputed-at"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-academic-records",
      "group": "Academic Records",
      "method": "GET",
      "path": "/alpha/results/v1/academic-records",
      "title": "List academic records",
      "summary": "Return cumulative academic-record rows backed by Ed-Fi StudentAcademicRecord canonical records. The client reads typed view fields; it never parses Ed-Fi payload_json.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-031-edfi-academic-record-transcript",
          "title": "Ed-Fi Academic Record And Transcript Are Results Views",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-031-edfi-academic-record-transcript"
        },
        {
          "id": "ritd-000-alpha-storage-model",
          "title": "Alpha Results Uses Views Plus Extension Tables",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-000-alpha-storage-model"
        },
        {
          "id": "ritd-020-axis-query-model",
          "title": "API Axis: Query Model",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-020-axis-query-model"
        }
      ],
      "request": [],
      "query": [
        "studentId",
        "canonicalTermId",
        "includeSourceEvidence",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.academic_record_view",
      "responseFields": [
        "academic_record_id",
        "student_id",
        "school_sourced_id",
        "canonical_term_id",
        "school_year",
        "session_attempted_credits",
        "session_earned_credits",
        "cumulative_earned_credits",
        "gpa",
        "canonical_state",
        "modified_at"
      ],
      "response": [
        {
          "name": "academic_record_id",
          "location": "body",
          "type": "UUID",
          "required": "Required.",
          "meaning": "Stable Results id for the StudentAcademicRecord view row.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a003101",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-academic-record-view-academic-record-id"
        },
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-academic-record-view-student-id"
        },
        {
          "name": "school_sourced_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Platform3 org/school sourcedId resolved from the Ed-Fi EducationOrganizationReference.",
          "example": "school_north_valley",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-academic-record-view-school-sourced-id"
        },
        {
          "name": "canonical_term_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required for term-scoped rows.",
          "meaning": "Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.",
          "example": "term_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-academic-record-view-canonical-term-id"
        },
        {
          "name": "school_year",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Canonical school year for the academic record.",
          "example": "2025-26",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-academic-record-view-school-year"
        },
        {
          "name": "session_attempted_credits",
          "location": "body",
          "type": "NUMERIC(9,2)",
          "required": "Nullable.",
          "meaning": "Credits attempted during this academic session.",
          "example": 3.5,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-academic-record-view-session-attempted-credits"
        },
        {
          "name": "session_earned_credits",
          "location": "body",
          "type": "NUMERIC(9,2)",
          "required": "Nullable.",
          "meaning": "Credits earned during this academic session.",
          "example": 3.5,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-academic-record-view-session-earned-credits"
        },
        {
          "name": "cumulative_earned_credits",
          "location": "body",
          "type": "NUMERIC(9,2)",
          "required": "Nullable.",
          "meaning": "Total earned credits in the cumulative academic record.",
          "example": 18.5,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-academic-record-view-cumulative-earned-credits"
        },
        {
          "name": "gpa",
          "location": "body",
          "type": "NUMERIC(5,3)",
          "required": "Nullable.",
          "meaning": "Grade point average value from the academic record when the source includes a GPA object.",
          "example": 3.875,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-academic-record-view-gpa"
        },
        {
          "name": "canonical_state",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical state of the source Ed-Fi record.",
          "example": "canonical",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-academic-record-view-canonical-state"
        },
        {
          "name": "modified_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.",
          "example": "2026-06-03T18:55:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-academic-record-view-modified-at"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-course-transcripts",
      "group": "Academic Records",
      "method": "GET",
      "path": "/alpha/results/v1/course-transcripts",
      "title": "List course transcripts",
      "summary": "Return final course performance and credit rows backed by Ed-Fi CourseTranscript canonical records. Course, student, and school ids resolve through platform3 sourcedIds.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-031-edfi-academic-record-transcript",
          "title": "Ed-Fi Academic Record And Transcript Are Results Views",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-031-edfi-academic-record-transcript"
        },
        {
          "id": "ritd-001-results-boundary-alias-map",
          "title": "Results Boundary And Alias Map",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-001-results-boundary-alias-map"
        }
      ],
      "request": [],
      "query": [
        "studentId",
        "courseId",
        "canonicalTermId",
        "includeSourceEvidence",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.course_transcript_view",
      "responseFields": [
        "course_transcript_id",
        "student_id",
        "academic_record_id",
        "course_id",
        "course_title",
        "canonical_term_id",
        "course_attempt_result",
        "attempted_credits",
        "earned_credits",
        "credit_type",
        "final_letter_grade",
        "final_numeric_grade",
        "canonical_state",
        "modified_at"
      ],
      "response": [
        {
          "name": "course_transcript_id",
          "location": "body",
          "type": "UUID",
          "required": "Required.",
          "meaning": "Stable Results id for one CourseTranscript view row.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a003201",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-transcript-view-course-transcript-id"
        },
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-transcript-view-student-id"
        },
        {
          "name": "academic_record_id",
          "location": "body",
          "type": "UUID",
          "required": "Required.",
          "meaning": "Academic record this course transcript belongs to.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a003101",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-transcript-view-academic-record-id"
        },
        {
          "name": "course_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Platform3 course sourcedId for the course recorded on the transcript.",
          "example": "course_algebra_1",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-transcript-view-course-id"
        },
        {
          "name": "course_title",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable.",
          "meaning": "Course title from Ed-Fi when present.",
          "example": "Algebra I",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-transcript-view-course-title"
        },
        {
          "name": "canonical_term_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required for term-scoped rows.",
          "meaning": "Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.",
          "example": "term_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-transcript-view-canonical-term-id"
        },
        {
          "name": "course_attempt_result",
          "location": "body",
          "type": "TEXT descriptor code",
          "required": "Required.",
          "meaning": "Governed Ed-Fi CourseAttemptResultDescriptor value for the student's course attempt.",
          "example": "Pass",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-transcript-view-course-attempt-result"
        },
        {
          "name": "attempted_credits",
          "location": "body",
          "type": "NUMERIC(9,2)",
          "required": "Nullable.",
          "meaning": "Credits the student attempted for this course.",
          "example": 0.5,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-transcript-view-attempted-credits"
        },
        {
          "name": "earned_credits",
          "location": "body",
          "type": "NUMERIC(9,2)",
          "required": "Nullable.",
          "meaning": "Credits the student earned for this course.",
          "example": 0.5,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-transcript-view-earned-credits"
        },
        {
          "name": "credit_type",
          "location": "body",
          "type": "TEXT descriptor code",
          "required": "Nullable.",
          "meaning": "Governed descriptor for the kind/category of course credit when Ed-Fi supplies one.",
          "example": "Academic",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-transcript-view-credit-type"
        },
        {
          "name": "final_letter_grade",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable.",
          "meaning": "Final letter grade submitted for the course.",
          "example": "A-",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-transcript-view-final-letter-grade"
        },
        {
          "name": "final_numeric_grade",
          "location": "body",
          "type": "NUMERIC(9,2)",
          "required": "Nullable.",
          "meaning": "Final numeric grade submitted for the course.",
          "example": 91.5,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-transcript-view-final-numeric-grade"
        },
        {
          "name": "canonical_state",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical state of the source Ed-Fi record.",
          "example": "canonical",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-transcript-view-canonical-state"
        },
        {
          "name": "modified_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.",
          "example": "2026-06-03T18:55:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-transcript-view-modified-at"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-course-grades",
      "group": "Academic Records",
      "method": "GET",
      "path": "/alpha/results/v1/course-grades",
      "title": "List course grades",
      "summary": "Return settled course or grading-period grades backed by Ed-Fi Grade canonical records. Blank gradebook assignments stay outside Results until they become durable grades.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-031-edfi-academic-record-transcript",
          "title": "Ed-Fi Academic Record And Transcript Are Results Views",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-031-edfi-academic-record-transcript"
        },
        {
          "id": "ritd-015-report-card-gates",
          "title": "Report Cards And Gate Passes Are Durable Results",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-015-report-card-gates"
        }
      ],
      "request": [],
      "query": [
        "studentId",
        "courseId",
        "canonicalTermId",
        "includeSourceEvidence",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.course_grade_view",
      "responseFields": [
        "course_grade_id",
        "student_id",
        "section_id",
        "grading_period_id",
        "grade_type",
        "letter_grade",
        "numeric_grade",
        "current_grade_indicator",
        "current_grade_as_of_date",
        "gradebook_entry_id",
        "canonical_state",
        "modified_at"
      ],
      "response": [
        {
          "name": "course_grade_id",
          "location": "body",
          "type": "UUID",
          "required": "Required.",
          "meaning": "Stable Results id for one Ed-Fi Grade view row.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a003301",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-grade-view-course-grade-id"
        },
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-grade-view-student-id"
        },
        {
          "name": "section_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Platform3 section/class sourcedId resolved from StudentSectionAssociationReference.",
          "example": "section_alg1_a",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-grade-view-section-id"
        },
        {
          "name": "grading_period_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Canonical grading period for the grade.",
          "example": "gp_2025_26_q4",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-grade-view-grading-period-id"
        },
        {
          "name": "grade_type",
          "location": "body",
          "type": "TEXT descriptor code",
          "required": "Required.",
          "meaning": "Governed Ed-Fi GradeTypeDescriptor value, such as final or grading period.",
          "example": "Final",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-grade-view-grade-type"
        },
        {
          "name": "letter_grade",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable.",
          "meaning": "Letter grade earned for the course or grading period.",
          "example": "A-",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-grade-view-letter-grade"
        },
        {
          "name": "numeric_grade",
          "location": "body",
          "type": "NUMERIC(9,2)",
          "required": "Nullable.",
          "meaning": "Numeric grade earned for the course or grading period.",
          "example": 91.5,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-grade-view-numeric-grade"
        },
        {
          "name": "current_grade_indicator",
          "location": "body",
          "type": "BOOLEAN",
          "required": "Nullable.",
          "meaning": "Whether this is an interim current grade rather than a final grade.",
          "example": false,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-grade-view-current-grade-indicator"
        },
        {
          "name": "current_grade_as_of_date",
          "location": "body",
          "type": "DATE",
          "required": "Nullable.",
          "meaning": "As-of date for a current/interim grade.",
          "example": "2026-05-30",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-grade-view-current-grade-as-of-date"
        },
        {
          "name": "gradebook_entry_id",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable.",
          "meaning": "Ed-Fi gradebook entry identifier joined as evidence when the grade references one.",
          "example": "edfi_gbe_final_exam",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-grade-view-gradebook-entry-id"
        },
        {
          "name": "canonical_state",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical state of the source Ed-Fi record.",
          "example": "canonical",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-grade-view-canonical-state"
        },
        {
          "name": "modified_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.",
          "example": "2026-06-03T18:55:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-course-grade-view-modified-at"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-transcript-results",
      "group": "Academic Records",
      "method": "GET",
      "path": "/alpha/results/v1/transcript-results",
      "title": "Read transcript answer rows",
      "summary": "Return report-ready transcript answers for questions like final grade and earned credits by student, course, and term. The surface resolves descriptor codes and source precedence.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-031-edfi-academic-record-transcript",
          "title": "Ed-Fi Academic Record And Transcript Are Results Views",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-031-edfi-academic-record-transcript"
        },
        {
          "id": "ritd-017-report-ready-views-skill-pack-gate",
          "title": "Report-Ready Views Replace Skill-Pack Logic",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-017-report-ready-views-skill-pack-gate"
        }
      ],
      "request": [],
      "query": [
        "studentId",
        "courseId",
        "canonicalTermId",
        "includeSourceEvidence",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.transcript_result_view",
      "responseFields": [
        "student_id",
        "course_id",
        "canonical_term_id",
        "transcript_answer_kind",
        "final_grade",
        "final_numeric_grade",
        "earned_credits",
        "attempted_credits",
        "course_attempt_result",
        "answer_precedence",
        "source_evidence",
        "modified_at"
      ],
      "response": [
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-transcript-result-view-student-id"
        },
        {
          "name": "course_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required for course-scoped answers.",
          "meaning": "Platform3 course sourcedId for the transcript answer.",
          "example": "course_algebra_1",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-transcript-result-view-course-id"
        },
        {
          "name": "canonical_term_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required for term-scoped rows.",
          "meaning": "Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.",
          "example": "term_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-transcript-result-view-canonical-term-id"
        },
        {
          "name": "transcript_answer_kind",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Source shape used for this normalized transcript answer.",
          "example": "course_transcript",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-transcript-result-view-transcript-answer-kind"
        },
        {
          "name": "final_grade",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable.",
          "meaning": "Final grade display value for the transcript answer.",
          "example": "A-",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-transcript-result-view-final-grade"
        },
        {
          "name": "final_numeric_grade",
          "location": "body",
          "type": "NUMERIC(9,2)",
          "required": "Nullable.",
          "meaning": "Numeric final grade for the transcript answer when available.",
          "example": 91.5,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-transcript-result-view-final-numeric-grade"
        },
        {
          "name": "earned_credits",
          "location": "body",
          "type": "NUMERIC(9,2)",
          "required": "Nullable.",
          "meaning": "Credits earned for the course/term answer.",
          "example": 0.5,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-transcript-result-view-earned-credits"
        },
        {
          "name": "attempted_credits",
          "location": "body",
          "type": "NUMERIC(9,2)",
          "required": "Nullable.",
          "meaning": "Credits attempted for the course/term answer.",
          "example": 0.5,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-transcript-result-view-attempted-credits"
        },
        {
          "name": "course_attempt_result",
          "location": "body",
          "type": "TEXT descriptor code",
          "required": "Nullable.",
          "meaning": "Governed Ed-Fi attempt-result descriptor selected for the transcript answer.",
          "example": "Pass",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-transcript-result-view-course-attempt-result"
        },
        {
          "name": "answer_precedence",
          "location": "body",
          "type": "INTEGER",
          "required": "Required.",
          "meaning": "Surface-owned precedence used to choose among transcript sources.",
          "example": 10,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-transcript-result-view-answer-precedence"
        },
        {
          "name": "source_evidence",
          "location": "body",
          "type": "JSONB",
          "required": "Returned only when includeSourceEvidence=true and authorized.",
          "meaning": "Structured source evidence: canonical_record ids, descriptor refs, source resource names, and soft-delete evidence.",
          "example": {
            "resource": "CourseTranscript",
            "canonical_record_id": "018f..."
          },
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-transcript-result-view-source-evidence"
        },
        {
          "name": "modified_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.",
          "example": "2026-06-03T18:55:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-transcript-result-view-modified-at"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-map-scores",
      "group": "MAP",
      "method": "GET",
      "path": "/alpha/results/v1/students/{studentId}/map-scores",
      "title": "Read MAP term scores",
      "summary": "Return the term-scoped highest-RIT test-of-record MAP score by default. Use current-map for the GOALS/student-facing current MAP context; use sittingScope=all only for authorized audit views.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-006-map-identity-cohort",
          "title": "MAP Scores Use TimeBack Student Identity And Cohort Fields",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-006-map-identity-cohort"
        },
        {
          "id": "ritd-007-map-test-of-record",
          "title": "MAP Test Of Record Is The Results Default",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-007-map-test-of-record"
        },
        {
          "id": "ritd-010-norms-discipline",
          "title": "Norms And Growth Windows Are Typed Inputs",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-010-norms-discipline"
        }
      ],
      "request": [
        {
          "name": "studentId",
          "location": "path",
          "type": "TEXT",
          "required": "Required",
          "meaning": "TimeBack student id. Never use NWEA StudentID in public Alpha requests.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-api-parameters-studentid"
        }
      ],
      "query": [
        "subject",
        "canonicalTermId",
        "normsSet",
        "sittingScope",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.map_score",
      "responseFields": [
        "map_score_id",
        "student_id",
        "student_email",
        "subject_id",
        "canonical_term_id",
        "norms_set",
        "rit",
        "standard_error",
        "percentile",
        "achievement_quintile",
        "modified_at"
      ],
      "response": [
        {
          "name": "map_score_id",
          "location": "body",
          "type": "UUID",
          "required": "Required.",
          "meaning": "Stable id for this public MAP score row.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a000701",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-score-map-score-id"
        },
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-score-student-id"
        },
        {
          "name": "student_email",
          "location": "body",
          "type": "CITEXT",
          "required": "Nullable joined read field.",
          "meaning": "Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id.",
          "example": "alex.rivera@example.edu",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-score-student-email"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-score-subject-id"
        },
        {
          "name": "canonical_term_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required for term-scoped rows.",
          "meaning": "Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.",
          "example": "term_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-score-canonical-term-id"
        },
        {
          "name": "norms_set",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required for normed MAP rows.",
          "meaning": "NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.",
          "example": "2025",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-score-norms-set"
        },
        {
          "name": "rit",
          "location": "body",
          "type": "INTEGER",
          "required": "Nullable.",
          "meaning": "Selected MAP RIT score.",
          "example": 238,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-score-rit"
        },
        {
          "name": "standard_error",
          "location": "body",
          "type": "NUMERIC(6,2)",
          "required": "Nullable.",
          "meaning": "MAP test standard error.",
          "example": 3.2,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-score-standard-error"
        },
        {
          "name": "percentile",
          "location": "body",
          "type": "INTEGER",
          "required": "Nullable.",
          "meaning": "MAP percentile for the selected norms set.",
          "example": 94,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-score-percentile"
        },
        {
          "name": "achievement_quintile",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable.",
          "meaning": "NWEA achievement quintile when available.",
          "example": "High",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-score-achievement-quintile"
        },
        {
          "name": "modified_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.",
          "example": "2026-06-03T18:55:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-score-modified-at"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-current-map",
      "group": "MAP",
      "method": "GET",
      "path": "/alpha/results/v1/students/{studentId}/current-map",
      "title": "Read GOALS current MAP",
      "summary": "Return the student-facing current MAP context: latest active Growth MAP by test date, with latest active screener/non-growth fallback only when no Growth MAP exists.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-006-map-identity-cohort",
          "title": "MAP Scores Use TimeBack Student Identity And Cohort Fields",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-006-map-identity-cohort"
        },
        {
          "id": "ritd-007-map-test-of-record",
          "title": "MAP Test Of Record Is The Results Default",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-007-map-test-of-record"
        },
        {
          "id": "ritd-010-norms-discipline",
          "title": "Norms And Growth Windows Are Typed Inputs",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-010-norms-discipline"
        }
      ],
      "request": [
        {
          "name": "studentId",
          "location": "path",
          "type": "TEXT",
          "required": "Required",
          "meaning": "TimeBack student id. Never use NWEA StudentID in public Alpha requests.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-api-parameters-studentid"
        }
      ],
      "query": [
        "subject",
        "normsSet",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.map_current_score",
      "responseFields": [
        "map_current_score_id",
        "student_id",
        "student_email",
        "subject_id",
        "canonical_term_id",
        "norms_set",
        "rit",
        "percentile",
        "growth_measure_yn",
        "current_map_reason",
        "test_start_at",
        "policy_ref",
        "modified_at"
      ],
      "response": [
        {
          "name": "map_current_score_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Stable id for this current-MAP view row.",
          "example": "map_10017_math_spring_current_2025",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-current-score-map-current-score-id"
        },
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-current-score-student-id"
        },
        {
          "name": "student_email",
          "location": "body",
          "type": "CITEXT",
          "required": "Nullable joined read field.",
          "meaning": "Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id.",
          "example": "alex.rivera@example.edu",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-current-score-student-email"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-current-score-subject-id"
        },
        {
          "name": "canonical_term_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required for term-scoped rows.",
          "meaning": "Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.",
          "example": "term_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-current-score-canonical-term-id"
        },
        {
          "name": "norms_set",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required for normed MAP rows.",
          "meaning": "NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.",
          "example": "2025",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-current-score-norms-set"
        },
        {
          "name": "rit",
          "location": "body",
          "type": "INTEGER",
          "required": "Nullable.",
          "meaning": "Selected current MAP RIT score.",
          "example": 210,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-current-score-rit"
        },
        {
          "name": "percentile",
          "location": "body",
          "type": "INTEGER",
          "required": "Nullable.",
          "meaning": "MAP percentile for the selected current MAP row and norms set.",
          "example": 74,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-current-score-percentile"
        },
        {
          "name": "growth_measure_yn",
          "location": "body",
          "type": "TEXT enum",
          "required": "Nullable.",
          "meaning": "Whether the selected MAP row is a Growth MAP measurement.",
          "example": "Y",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-current-score-growth-measure-yn"
        },
        {
          "name": "current_map_reason",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Why this row is the current MAP context.",
          "example": "latest_growth",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-current-score-current-map-reason"
        },
        {
          "name": "test_start_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Nullable.",
          "meaning": "Parsed timestamp for the selected current MAP sitting.",
          "example": "2026-05-28T13:00:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-current-score-test-start-at"
        },
        {
          "name": "policy_ref",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Named current-MAP selection policy.",
          "example": "alpha.policy.results.current_map.v2026-06-17.latest-growth-first",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-current-score-policy-ref"
        },
        {
          "name": "modified_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.",
          "example": "2026-06-03T18:55:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-current-score-modified-at"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-map-sittings",
      "group": "MAP",
      "method": "GET",
      "path": "/alpha/results/v1/students/{studentId}/map-sittings",
      "title": "Audit MAP sittings and retakes",
      "summary": "Return MAP sitting audit rows, including retakes and soft-deleted rows when sittingScope=all is authorized.",
      "scopes": [
        "results:read",
        "results:audit"
      ],
      "itds": [
        {
          "id": "ritd-007-map-test-of-record",
          "title": "MAP Test Of Record Is The Results Default",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-007-map-test-of-record"
        },
        {
          "id": "ritd-028-axis-privacy-retention",
          "title": "API Axis: Privacy And Retention",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-028-axis-privacy-retention"
        }
      ],
      "request": [
        {
          "name": "studentId",
          "location": "path",
          "type": "TEXT",
          "required": "Required",
          "meaning": "TimeBack student id. Never use NWEA StudentID in public Alpha requests.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-api-parameters-studentid"
        }
      ],
      "query": [
        "subject",
        "canonicalTermId",
        "normsSet",
        "sittingScope",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.map_sitting",
      "responseFields": [
        "map_sitting_id",
        "student_id",
        "subject_id",
        "canonical_term_id",
        "rit",
        "test_start_at",
        "growth_measure_yn",
        "is_test_of_record",
        "test_of_record_reason",
        "deleted_at",
        "delete_reason"
      ],
      "response": [
        {
          "name": "map_sitting_id",
          "location": "body",
          "type": "UUID",
          "required": "Required.",
          "meaning": "Stable id for one MAP sitting audit row.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a000801",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-sitting-map-sitting-id"
        },
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-sitting-student-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-sitting-subject-id"
        },
        {
          "name": "canonical_term_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required for term-scoped rows.",
          "meaning": "Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.",
          "example": "term_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-sitting-canonical-term-id"
        },
        {
          "name": "rit",
          "location": "body",
          "type": "INTEGER",
          "required": "Nullable.",
          "meaning": "MAP RIT score for this sitting.",
          "example": 238,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-sitting-rit"
        },
        {
          "name": "test_start_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Nullable.",
          "meaning": "Parsed sitting start timestamp.",
          "example": "2026-05-04T14:00:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-sitting-test-start-at"
        },
        {
          "name": "growth_measure_yn",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable.",
          "meaning": "NWEA GrowthMeasureYN flag retained for comparison and audit.",
          "example": "TRUE",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-sitting-growth-measure-yn"
        },
        {
          "name": "is_test_of_record",
          "location": "body",
          "type": "BOOLEAN",
          "required": "Required.",
          "meaning": "Whether this sitting is the selected test_of_record.",
          "example": true,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-sitting-is-test-of-record"
        },
        {
          "name": "test_of_record_reason",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Reason this sitting was selected or excluded.",
          "example": "highest_rit",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-sitting-test-of-record-reason"
        },
        {
          "name": "deleted_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Nullable.",
          "meaning": "Soft-delete timestamp. Null means active; non-null rows stay available for authorized audit reads and are excluded from ordinary current reports.",
          "example": "2026-06-03T18:55:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-sitting-deleted-at"
        },
        {
          "name": "delete_reason",
          "location": "body",
          "type": "TEXT enum",
          "required": "Nullable.",
          "meaning": "Why a sitting was soft-deleted.",
          "example": "retake_superseded",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-sitting-delete-reason"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-map-goal-strands",
      "group": "MAP",
      "method": "GET",
      "path": "/alpha/results/v1/students/{studentId}/map-goal-strands",
      "title": "Read MAP goal strands",
      "summary": "Return one clean row per goal strand instead of requiring the client to unpivot NWEA Goal1..Goal5 columns.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-008-map-goal-strands",
          "title": "MAP Goal Scores Are Clean Strand Rows",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-008-map-goal-strands"
        }
      ],
      "request": [
        {
          "name": "studentId",
          "location": "path",
          "type": "TEXT",
          "required": "Required",
          "meaning": "TimeBack student id. Never use NWEA StudentID in public Alpha requests.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-api-parameters-studentid"
        }
      ],
      "query": [
        "subject",
        "canonicalTermId",
        "normsSet",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.map_goal_strand",
      "responseFields": [
        "student_id",
        "subject_id",
        "canonical_term_id",
        "goal_strand",
        "strand_rit",
        "strand_standard_error",
        "overall_rit",
        "goal_gap"
      ],
      "response": [
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-goal-strand-student-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-goal-strand-subject-id"
        },
        {
          "name": "canonical_term_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required for term-scoped rows.",
          "meaning": "Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.",
          "example": "term_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-goal-strand-canonical-term-id"
        },
        {
          "name": "goal_strand",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Plain strand name from NWEA goal name.",
          "example": "Algebraic Thinking",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-goal-strand-goal-strand"
        },
        {
          "name": "strand_rit",
          "location": "body",
          "type": "INTEGER",
          "required": "Nullable.",
          "meaning": "RIT score for this goal strand.",
          "example": 242,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-goal-strand-strand-rit"
        },
        {
          "name": "strand_standard_error",
          "location": "body",
          "type": "NUMERIC(6,2)",
          "required": "Nullable.",
          "meaning": "Standard error for the strand RIT.",
          "example": 4.1,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-goal-strand-strand-standard-error"
        },
        {
          "name": "overall_rit",
          "location": "body",
          "type": "INTEGER",
          "required": "Nullable.",
          "meaning": "Overall test RIT used to compute goal_gap.",
          "example": 238,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-goal-strand-overall-rit"
        },
        {
          "name": "goal_gap",
          "location": "body",
          "type": "INTEGER",
          "required": "Nullable.",
          "meaning": "Surface-computed strand_rit minus overall_rit.",
          "example": 4,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-goal-strand-goal-gap"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-growth-windows",
      "group": "MAP",
      "method": "GET",
      "path": "/alpha/results/v1/students/{studentId}/growth-windows",
      "title": "Read observed vs projected growth",
      "summary": "Return typed growth-window rows with Growth X and target status. The client never switches over NWEA growth column names.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-009-growth-x-target",
          "title": "Growth X And 2X Target Are First-Class Result Fields",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-009-growth-x-target"
        },
        {
          "id": "ritd-010-norms-discipline",
          "title": "Norms And Growth Windows Are Typed Inputs",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-010-norms-discipline"
        }
      ],
      "request": [
        {
          "name": "studentId",
          "location": "path",
          "type": "TEXT",
          "required": "Required",
          "meaning": "TimeBack student id. Never use NWEA StudentID in public Alpha requests.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-api-parameters-studentid"
        }
      ],
      "query": [
        "subject",
        "canonicalTermId",
        "growthWindow",
        "normsSet",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.map_growth_window",
      "responseFields": [
        "student_id",
        "subject_id",
        "canonical_term_id",
        "growth_window",
        "norms_set",
        "observed_growth",
        "projected_growth",
        "growth_x",
        "growth_x_target",
        "on_track_for_growth_x_target"
      ],
      "response": [
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-growth-window-student-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-growth-window-subject-id"
        },
        {
          "name": "canonical_term_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required for term-scoped rows.",
          "meaning": "Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.",
          "example": "term_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-growth-window-canonical-term-id"
        },
        {
          "name": "growth_window",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Typed growth window.",
          "example": "fall_to_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-growth-window-growth-window"
        },
        {
          "name": "norms_set",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required for normed MAP rows.",
          "meaning": "NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.",
          "example": "2025",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-growth-window-norms-set"
        },
        {
          "name": "observed_growth",
          "location": "body",
          "type": "NUMERIC(6,2)",
          "required": "Nullable.",
          "meaning": "NWEA observed growth for the window.",
          "example": 14,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-growth-window-observed-growth"
        },
        {
          "name": "projected_growth",
          "location": "body",
          "type": "NUMERIC(6,2)",
          "required": "Nullable.",
          "meaning": "NWEA projected growth for the window under norms_set.",
          "example": 7,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-growth-window-projected-growth"
        },
        {
          "name": "growth_x",
          "location": "body",
          "type": "NUMERIC(8,4)",
          "required": "Nullable.",
          "meaning": "Observed growth divided by projected growth.",
          "example": 2,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-growth-window-growth-x"
        },
        {
          "name": "growth_x_target",
          "location": "body",
          "type": "NUMERIC(8,4)",
          "required": "Required.",
          "meaning": "Configured Growth X target for this row.",
          "example": 2,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-growth-window-growth-x-target"
        },
        {
          "name": "on_track_for_growth_x_target",
          "location": "body",
          "type": "BOOLEAN",
          "required": "Nullable.",
          "meaning": "Whether current/projected evidence is on track for target Growth X.",
          "example": true,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-growth-window-on-track-for-growth-x-target"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-map-percentile-translations",
      "group": "MAP",
      "method": "GET",
      "path": "/alpha/results/v1/map-percentile-translations",
      "title": "Convert MAP percentile and RIT",
      "summary": "Return the surface-owned percentile-to-RIT or RIT-to-percentile translation under one subject, grade level, season, and norms set. GOALS and report clients call this instead of shipping an NWEA norms table.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-010-norms-discipline",
          "title": "Norms And Growth Windows Are Typed Inputs",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-010-norms-discipline"
        },
        {
          "id": "ritd-011-rit-effective-grade",
          "title": "RIT50, RIT90, Effective Grade, Minimum RIT, And Predicted RIT Are Surface Outputs",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-011-rit-effective-grade"
        }
      ],
      "request": [],
      "query": [
        "subject",
        "gradeLevel",
        "termSeason",
        "normsSet",
        "translationDirection",
        "inputPercentile",
        "inputRit",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.map_percentile_translation",
      "responseFields": [
        "subject_id",
        "grade_level",
        "term_season",
        "norms_set",
        "translation_direction",
        "input_percentile",
        "input_rit",
        "output_rit",
        "output_percentile",
        "source_point_kind",
        "calculator_version",
        "null_reason"
      ],
      "response": [
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-percentile-translation-subject-id"
        },
        {
          "name": "grade_level",
          "location": "body",
          "type": "NUMERIC(4,1)",
          "required": "Required.",
          "meaning": "Grade level used for the norms translation.",
          "example": 7,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-percentile-translation-grade-level"
        },
        {
          "name": "term_season",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "MAP season used for the norms translation.",
          "example": "spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-percentile-translation-term-season"
        },
        {
          "name": "norms_set",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required for normed MAP rows.",
          "meaning": "NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.",
          "example": "2025",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-percentile-translation-norms-set"
        },
        {
          "name": "translation_direction",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Direction of the requested surface translation.",
          "example": "percentile_to_rit",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-percentile-translation-translation-direction"
        },
        {
          "name": "input_percentile",
          "location": "body",
          "type": "INTEGER",
          "required": "Nullable; required for percentile_to_rit.",
          "meaning": "Requested percentile.",
          "example": 99,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-percentile-translation-input-percentile"
        },
        {
          "name": "input_rit",
          "location": "body",
          "type": "INTEGER",
          "required": "Nullable; required for rit_to_percentile.",
          "meaning": "Requested RIT score.",
          "example": 252,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-percentile-translation-input-rit"
        },
        {
          "name": "output_rit",
          "location": "body",
          "type": "INTEGER",
          "required": "Nullable; required for percentile_to_rit.",
          "meaning": "Surface-returned RIT score for the requested percentile.",
          "example": 252,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-percentile-translation-output-rit"
        },
        {
          "name": "output_percentile",
          "location": "body",
          "type": "INTEGER",
          "required": "Nullable; required for rit_to_percentile.",
          "meaning": "Surface-returned percentile for the requested RIT.",
          "example": 99,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-percentile-translation-output-percentile"
        },
        {
          "name": "source_point_kind",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Whether this translation point is published, interpolated, extrapolated, or policy-derived.",
          "example": "nwea_published",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-percentile-translation-source-point-kind"
        },
        {
          "name": "calculator_version",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Version of the norms/calculator used.",
          "example": "percentile_rit_2026_06",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-percentile-translation-calculator-version"
        },
        {
          "name": "null_reason",
          "location": "body",
          "type": "TEXT enum",
          "required": "Nullable.",
          "meaning": "Why a translation output is null.",
          "example": "missing_policy_config",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-percentile-translation-null-reason"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-map-r90-norm-points",
      "group": "MAP",
      "method": "GET",
      "path": "/alpha/results/v1/map-r90-norm-points",
      "title": "Read legacy R90 norm-point fixtures",
      "summary": "Return legacy Results MAP report fixture rows. Do not use this endpoint as the GOALS RIT-to-grade source; use the skill-seeded NWEAMAP R90 surface directly or through the Analytics mirror.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-011-rit-effective-grade",
          "title": "RIT50, RIT90, Effective Grade, Minimum RIT, And Predicted RIT Are Surface Outputs",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-011-rit-effective-grade"
        },
        {
          "id": "ritd-010-norms-discipline",
          "title": "Norms And Growth Windows Are Typed Inputs",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-010-norms-discipline"
        }
      ],
      "request": [],
      "query": [
        "subject",
        "gradeLevel",
        "termSeason",
        "normsSet",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.map_r90_norm_point",
      "responseFields": [
        "subject_id",
        "grade_level",
        "term_season",
        "norms_set",
        "rit50_grade",
        "rit90_grade",
        "r90_rit",
        "source_point_kind",
        "calculator_version",
        "status"
      ],
      "response": [
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-r90-norm-point-subject-id"
        },
        {
          "name": "grade_level",
          "location": "body",
          "type": "NUMERIC(4,1)",
          "required": "Required.",
          "meaning": "Grade level this R90 row describes.",
          "example": 7,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-r90-norm-point-grade-level"
        },
        {
          "name": "term_season",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "MAP season for this R90 point.",
          "example": "spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-r90-norm-point-term-season"
        },
        {
          "name": "norms_set",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required for normed MAP rows.",
          "meaning": "NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.",
          "example": "2025",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-r90-norm-point-norms-set"
        },
        {
          "name": "rit50_grade",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "RIT50 grade point reproduced from NWEA-published data where available.",
          "example": 7.1,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-r90-norm-point-rit50-grade"
        },
        {
          "name": "rit90_grade",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Required.",
          "meaning": "Legacy Results fixture RIT90/R90 grade point for this subject/grade/season/norms row.",
          "example": 6.4,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-r90-norm-point-rit90-grade"
        },
        {
          "name": "r90_rit",
          "location": "body",
          "type": "INTEGER",
          "required": "Required.",
          "meaning": "RIT value for the legacy R90 fixture point.",
          "example": 231,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-r90-norm-point-r90-rit"
        },
        {
          "name": "source_point_kind",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Provenance class for the R90 point.",
          "example": "alpha_extrapolated",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-r90-norm-point-source-point-kind"
        },
        {
          "name": "calculator_version",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Version of the legacy Results fixture calculator.",
          "example": "rit_calc_2026_06",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-r90-norm-point-calculator-version"
        },
        {
          "name": "status",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Lifecycle state of this R90 row.",
          "example": "active",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-map-r90-norm-point-status"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-working-grade",
      "group": "MAP",
      "method": "GET",
      "path": "/alpha/results/v1/students/{studentId}/working-grade",
      "title": "Read working grade",
      "summary": "Return the surface-owned current grade-equivalent level for a student and subject as of a date.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-014-working-grade-advancement",
          "title": "Working Grade And Advancement Are Surface-Owned Metrics",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-014-working-grade-advancement"
        }
      ],
      "request": [
        {
          "name": "studentId",
          "location": "path",
          "type": "TEXT",
          "required": "Required",
          "meaning": "TimeBack student id. Never use NWEA StudentID in public Alpha requests.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-api-parameters-studentid"
        }
      ],
      "query": [
        "subject",
        "asOfDate",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.working_grade",
      "responseFields": [
        "student_id",
        "subject_id",
        "as_of_date",
        "working_grade",
        "input_kind",
        "baseline_effective_grade",
        "sy_start_working_grade",
        "formula_version",
        "null_reason"
      ],
      "response": [
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-working-grade-student-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-working-grade-subject-id"
        },
        {
          "name": "as_of_date",
          "location": "body",
          "type": "DATE",
          "required": "Required.",
          "meaning": "Point-in-time date for the working-grade answer.",
          "example": "2026-06-03",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-working-grade-as-of-date"
        },
        {
          "name": "working_grade",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "Surface-owned grade-equivalent level as of the date.",
          "example": 7.4,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-working-grade-working-grade"
        },
        {
          "name": "input_kind",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Primary evidence family used to produce the value.",
          "example": "mixed",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-working-grade-input-kind"
        },
        {
          "name": "baseline_effective_grade",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "Baseline MAP effective grade used by advancement.",
          "example": 6.8,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-working-grade-baseline-effective-grade"
        },
        {
          "name": "sy_start_working_grade",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "Working grade at school-year start used by advancement.",
          "example": 7,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-working-grade-sy-start-working-grade"
        },
        {
          "name": "formula_version",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Named formula/config version used.",
          "example": "working_grade_v2026_06",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-working-grade-formula-version"
        },
        {
          "name": "null_reason",
          "location": "body",
          "type": "TEXT enum",
          "required": "Nullable.",
          "meaning": "Why working_grade is null.",
          "example": "not_enough_history",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-working-grade-null-reason"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-advancement",
      "group": "MAP",
      "method": "GET",
      "path": "/alpha/results/v1/students/{studentId}/advancement",
      "title": "Read advancement",
      "summary": "Return alpha.advancement, the surface-owned K-8 growth formula. Dashboards do not implement this formula.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-014-working-grade-advancement",
          "title": "Working Grade And Advancement Are Surface-Owned Metrics",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-014-working-grade-advancement"
        }
      ],
      "request": [
        {
          "name": "studentId",
          "location": "path",
          "type": "TEXT",
          "required": "Required",
          "meaning": "TimeBack student id. Never use NWEA StudentID in public Alpha requests.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-api-parameters-studentid"
        }
      ],
      "query": [
        "subject",
        "asOfDate",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.advancement",
      "responseFields": [
        "student_id",
        "subject_id",
        "as_of_date",
        "current_working_grade",
        "baseline_effective_grade",
        "sy_start_working_grade",
        "advancement_value",
        "formula_version",
        "null_reason"
      ],
      "response": [
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-advancement-student-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-advancement-subject-id"
        },
        {
          "name": "as_of_date",
          "location": "body",
          "type": "DATE",
          "required": "Required.",
          "meaning": "Point-in-time date for advancement.",
          "example": "2026-06-03",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-advancement-as-of-date"
        },
        {
          "name": "current_working_grade",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "Working grade now.",
          "example": 7.4,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-advancement-current-working-grade"
        },
        {
          "name": "baseline_effective_grade",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "Baseline effective grade from MAP.",
          "example": 6.8,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-advancement-baseline-effective-grade"
        },
        {
          "name": "sy_start_working_grade",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "School-year-start working grade.",
          "example": 7,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-advancement-sy-start-working-grade"
        },
        {
          "name": "advancement_value",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "Surface-owned advancement value from the formula.",
          "example": 0.4,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-advancement-advancement-value"
        },
        {
          "name": "formula_version",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Formula/config version used.",
          "example": "advancement_v2026_06",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-advancement-formula-version"
        },
        {
          "name": "null_reason",
          "location": "body",
          "type": "TEXT enum",
          "required": "Nullable.",
          "meaning": "Why advancement_value is null.",
          "example": "not_enough_history",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-advancement-null-reason"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "get-report-card",
      "group": "Reports",
      "method": "GET",
      "path": "/alpha/results/v1/students/{studentId}/report-card",
      "title": "Read report-card entries",
      "summary": "Return durable, effective-dated report-card statements for a student.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-015-report-card-gates",
          "title": "Report Cards And Gate Passes Are Durable Results",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-015-report-card-gates"
        }
      ],
      "request": [
        {
          "name": "studentId",
          "location": "path",
          "type": "TEXT",
          "required": "Required",
          "meaning": "TimeBack student id. Never use NWEA StudentID in public Alpha requests.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-api-parameters-studentid"
        }
      ],
      "query": [
        "subject",
        "asOfDate",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.report_card_entry",
      "responseFields": [
        "report_card_entry_id",
        "student_id",
        "subject_id",
        "reporting_period_id",
        "grade_value",
        "narrative",
        "status",
        "begin_date",
        "end_date",
        "is_time_locatable"
      ],
      "response": [
        {
          "name": "report_card_entry_id",
          "location": "body",
          "type": "UUID",
          "required": "Required.",
          "meaning": "Stable id for this report-card statement.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a000501",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-card-entry-report-card-entry-id"
        },
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-card-entry-student-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-card-entry-subject-id"
        },
        {
          "name": "reporting_period_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Typed reporting period for this statement.",
          "example": "rp_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-card-entry-reporting-period-id"
        },
        {
          "name": "grade_value",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable.",
          "meaning": "Published grade or level shown on the report card.",
          "example": "A-",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-card-entry-grade-value"
        },
        {
          "name": "narrative",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable.",
          "meaning": "Optional teacher/system narrative shown on the report card.",
          "example": "Strong growth in equations; continue fractions practice.",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-card-entry-narrative"
        },
        {
          "name": "status",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Lifecycle state of this report-card entry.",
          "example": "final",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-card-entry-status"
        },
        {
          "name": "begin_date",
          "location": "body",
          "type": "DATE",
          "required": "Nullable.",
          "meaning": "First date this report-card statement is point-in-time valid.",
          "example": "2026-05-30",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-card-entry-begin-date"
        },
        {
          "name": "end_date",
          "location": "body",
          "type": "DATE",
          "required": "Nullable.",
          "meaning": "Last date this statement is valid; null means still active after begin_date.",
          "example": "2026-06-30",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-card-entry-end-date"
        },
        {
          "name": "is_time_locatable",
          "location": "body",
          "type": "BOOLEAN",
          "required": "Required on effective-dated rows.",
          "meaning": "Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads.",
          "example": true,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-card-entry-is-time-locatable"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "list-gate-passes",
      "group": "Reports",
      "method": "GET",
      "path": "/alpha/results/v1/students/{studentId}/gate-passes",
      "title": "Read gate passes",
      "summary": "Return durable pass/fail/cooldown decisions for advancement gates.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-015-report-card-gates",
          "title": "Report Cards And Gate Passes Are Durable Results",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-015-report-card-gates"
        },
        {
          "id": "ritd-005-policy-config",
          "title": "Policy Numbers Are Results Surface Config",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-005-policy-config"
        }
      ],
      "request": [
        {
          "name": "studentId",
          "location": "path",
          "type": "TEXT",
          "required": "Required",
          "meaning": "TimeBack student id. Never use NWEA StudentID in public Alpha requests.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-api-parameters-studentid"
        }
      ],
      "query": [
        "subject",
        "asOfDate",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.gate_pass",
      "responseFields": [
        "gate_pass_id",
        "student_id",
        "gate_content_id",
        "subject_id",
        "gate_status",
        "next_eligible_at",
        "attempt_count",
        "policy_version",
        "is_time_locatable"
      ],
      "response": [
        {
          "name": "gate_pass_id",
          "location": "body",
          "type": "UUID",
          "required": "Required.",
          "meaning": "Stable id for this gate state row.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a000601",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-gate-pass-gate-pass-id"
        },
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-gate-pass-student-id"
        },
        {
          "name": "gate_content_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Content test or gate this pass concerns.",
          "example": "content_alg_1_mastery_gate",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-gate-pass-gate-content-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-gate-pass-subject-id"
        },
        {
          "name": "gate_status",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Current durable gate state for this effective window.",
          "example": "passed",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-gate-pass-gate-status"
        },
        {
          "name": "next_eligible_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Nullable.",
          "meaning": "UTC time a student may retake after cooldown.",
          "example": "2026-03-24T14:30:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-gate-pass-next-eligible-at"
        },
        {
          "name": "attempt_count",
          "location": "body",
          "type": "INTEGER",
          "required": "Required.",
          "meaning": "Number of settled attempts considered for this gate state.",
          "example": 2,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-gate-pass-attempt-count"
        },
        {
          "name": "policy_version",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Policy/config version for cutoff and cooldown rules.",
          "example": "policy_2026_06_03",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-gate-pass-policy-version"
        },
        {
          "name": "is_time_locatable",
          "location": "body",
          "type": "BOOLEAN",
          "required": "Required on effective-dated rows.",
          "meaning": "Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads.",
          "example": true,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-gate-pass-is-time-locatable"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "create-import",
      "group": "Writes",
      "method": "POST",
      "path": "/alpha/results/v1/imports",
      "title": "Import source-shaped production rows",
      "summary": "Accept raw TimeBack Production assessment rows or raw NWEA MAP CDF rows and normalize them server-side into readable Results rows. The caller never pre-computes norms, Growth X, mastery, XP, minutes, dedupe, goal-strand unpivot, or term parsing.",
      "scopes": [
        "results:adapter"
      ],
      "itds": [
        {
          "id": "ritd-003-canonical-result-shape",
          "title": "Canonical Result Shape For Self-Paced And External Outcomes",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-003-canonical-result-shape"
        },
        {
          "id": "ritd-018-axis-write-granularity",
          "title": "API Axis: Write Granularity",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-018-axis-write-granularity"
        },
        {
          "id": "ritd-022-axis-idempotency-model",
          "title": "API Axis: Idempotency Model",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-022-axis-idempotency-model"
        },
        {
          "id": "ritd-025-axis-error-envelope",
          "title": "API Axis: Error Envelope",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-025-axis-error-envelope"
        },
        {
          "id": "ritd-007-map-test-of-record",
          "title": "MAP Test Of Record Is The Results Default",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-007-map-test-of-record"
        },
        {
          "id": "ritd-010-norms-discipline",
          "title": "Norms And Growth Windows Are Typed Inputs",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-010-norms-discipline"
        },
        {
          "id": "ritd-030-axis-report-oracle",
          "title": "API Axis: Report Oracle And Golden Cells",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-030-axis-report-oracle"
        }
      ],
      "request": [
        {
          "name": "source_adapter_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required",
          "meaning": "Named Results adapter that owns normalization and write routing for this producer. Constraints: Must reference an active alpha.source_adapter with adapter authority for the caller.",
          "example": "adapter_timeback_migration",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#raw-ingest-contract"
        },
        {
          "name": "producer_batch_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required",
          "meaning": "Producer's stable batch/export id used with Idempotency-Key and source evidence. Constraints: 1 to 255 visible characters; unique enough with source_adapter_id to identify a producer batch.",
          "example": "timeback-prod-results-2026-06-08T15",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#raw-ingest-contract"
        },
        {
          "name": "sourceShape",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required",
          "meaning": "Names the source-shaped record family in records[]. Constraints: Must be one of the documented raw_import_source_shape values; one import call carries one shape.",
          "example": "timeback_assessment_result",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#raw-ingest-contract"
        },
        {
          "name": "records",
          "location": "body",
          "type": "JSONB array",
          "required": "Required",
          "meaning": "Array of raw producer rows, not pre-normalized canonical Results rows. Constraints: 1 through the endpoint's configured batch limit. Each element must be a JSON object with producer field names preserved, including the producer student identifier exactly as sent by the source.",
          "example": [
            {
              "studentId": "tb-prod-raw-student-981234",
              "assessmentId": "factoring-gate",
              "scorePercent": 92.5
            }
          ],
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#raw-ingest-contract"
        },
        {
          "name": "dry_run",
          "location": "body",
          "type": "BOOLEAN",
          "required": "Optional; defaults to false",
          "meaning": "Validate and normalize without writing rows. Constraints: When true, response status is 200 and materialized ids are empty by design; when false, zero materialized rows is not a success.",
          "example": false,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#raw-ingest-contract"
        }
      ],
      "query": [],
      "headers": [
        {
          "name": "Idempotency-Key",
          "location": "header",
          "type": "opaque string",
          "required": "Required on writes",
          "meaning": "Same key + same method/path/body returns the original result; same key + different body returns results:idempotency_conflict.",
          "example": "timeback-prod-results-2026-06-08T15",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-022-axis-idempotency-model"
        }
      ],
      "responseTable": "raw_ingest_response",
      "responseFields": [
        "import_id",
        "status",
        "accepted_count",
        "materialized",
        "source_evidence_ids",
        "reconciliation_url"
      ],
      "response": [
        {
          "name": "import_id",
          "location": "body",
          "type": "TEXT",
          "required": "Returned on success",
          "meaning": "Stable id for this accepted import or dry run.",
          "example": "import_timeback_prod_results_2026_06_08T15",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#raw-ingest-contract"
        },
        {
          "name": "status",
          "location": "body",
          "type": "TEXT enum",
          "required": "Returned on success",
          "meaning": "Import result state.",
          "example": "accepted",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#raw-ingest-contract"
        },
        {
          "name": "accepted_count",
          "location": "body",
          "type": "INTEGER",
          "required": "Returned on success",
          "meaning": "Number of source rows accepted and materialized when dry_run=false.",
          "example": 1733,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#raw-ingest-contract"
        },
        {
          "name": "materialized",
          "location": "body",
          "type": "JSONB object",
          "required": "Returned on success",
          "meaning": "Counts and ids of readable rows now visible through Results public objects.",
          "example": {
            "result_record": 1733,
            "student_kc_state": 812,
            "xp_ledger": 1590
          },
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#raw-ingest-contract"
        },
        {
          "name": "source_evidence_ids",
          "location": "body",
          "type": "JSONB array",
          "required": "Returned on success",
          "meaning": "Source evidence rows written for audit and reconciliation.",
          "example": [
            "import_timeback_prod_results_2026_06_08T15_1"
          ],
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#raw-ingest-contract"
        },
        {
          "name": "reconciliation_url",
          "location": "body",
          "type": "TEXT URL",
          "required": "Returned on success",
          "meaning": "Typed one-call check for this import. May include studentId for a single-student cutover check.",
          "example": "/alpha/results/v1/reports/closed-loop-reconciliation?studentId=stu_timeback_10017&metricKind=growth_x",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#raw-ingest-contract"
        }
      ],
      "responseShape": "object"
    },
    {
      "id": "get-import",
      "group": "Writes",
      "method": "GET",
      "path": "/alpha/results/v1/imports/{importId}",
      "title": "Inspect an import",
      "summary": "Read import status, adapter evidence, and canonical result ids created by the import.",
      "scopes": [
        "results:adapter"
      ],
      "itds": [
        {
          "id": "ritd-003-canonical-result-shape",
          "title": "Canonical Result Shape For Self-Paced And External Outcomes",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-003-canonical-result-shape"
        }
      ],
      "request": [
        {
          "name": "importId",
          "location": "path",
          "type": "UUID",
          "required": "Required",
          "meaning": "The import id returned by POST /imports.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a000300",
          "source": null
        }
      ],
      "query": [],
      "headers": [],
      "responseTable": "alpha.result_source_evidence",
      "responseFields": [
        "source_evidence_id",
        "source_adapter_id",
        "producer_result_id",
        "raw_payload_hash",
        "canonical_payload_hash",
        "result_record_id",
        "imported_at"
      ],
      "response": [
        {
          "name": "source_evidence_id",
          "location": "body",
          "type": "UUID",
          "required": "Required.",
          "meaning": "Stable id for one source-evidence row.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a000201",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-source-evidence-source-evidence-id"
        },
        {
          "name": "source_adapter_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Adapter that supplied this evidence.",
          "example": "adapter_nwea_map",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-source-evidence-source-adapter-id"
        },
        {
          "name": "producer_result_id",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable.",
          "meaning": "Producer-specific result id, when supplied.",
          "example": "1110000001",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-source-evidence-producer-result-id"
        },
        {
          "name": "raw_payload_hash",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable.",
          "meaning": "Hash of the source payload or row content for idempotency and audit.",
          "example": "sha256:2d3f6b4e8c1a0f9b",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-source-evidence-raw-payload-hash"
        },
        {
          "name": "canonical_payload_hash",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable.",
          "meaning": "Hash of the normalized canonical payload written into Results.",
          "example": "sha256:bd21c73f0e9a",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-source-evidence-canonical-payload-hash"
        },
        {
          "name": "result_record_id",
          "location": "body",
          "type": "UUID",
          "required": "Nullable.",
          "meaning": "Result record this evidence supports; nullable while evidence is quarantined or awaiting reconciliation.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-source-evidence-result-record-id"
        },
        {
          "name": "imported_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC timestamp when the surface accepted this evidence.",
          "example": "2026-06-03T18:55:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-source-evidence-imported-at"
        }
      ],
      "responseShape": "object"
    },
    {
      "id": "create-result-record",
      "group": "Writes",
      "method": "POST",
      "path": "/alpha/results/v1/result-records",
      "title": "Create one settled outcome",
      "summary": "Create a canonical result record. Use this only for trusted scorers and adapter-normalized writes; clients do not bypass source_adapter_id.",
      "scopes": [
        "results:write"
      ],
      "itds": [
        {
          "id": "ritd-003-canonical-result-shape",
          "title": "Canonical Result Shape For Self-Paced And External Outcomes",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-003-canonical-result-shape"
        },
        {
          "id": "ritd-018-axis-write-granularity",
          "title": "API Axis: Write Granularity",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-018-axis-write-granularity"
        },
        {
          "id": "ritd-022-axis-idempotency-model",
          "title": "API Axis: Idempotency Model",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-022-axis-idempotency-model"
        }
      ],
      "request": [],
      "query": [],
      "headers": [
        {
          "name": "Idempotency-Key",
          "location": "header",
          "type": "opaque string",
          "required": "Required on writes",
          "meaning": "Same key + same method/path/body returns the original result; same key + different body returns results:idempotency_conflict.",
          "example": "result-adapter_qti_platform-quiz-42",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-022-axis-idempotency-model"
        }
      ],
      "responseTable": "alpha.result_record",
      "responseFields": [
        "result_record_id",
        "student_id",
        "result_kind",
        "score_percent",
        "source_adapter_id",
        "producer_result_id",
        "modified_at"
      ],
      "response": [
        {
          "name": "result_record_id",
          "location": "body",
          "type": "UUID",
          "required": "Required.",
          "meaning": "Stable Results identifier for this settled outcome.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-result-record-id"
        },
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-student-id"
        },
        {
          "name": "result_kind",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "What kind of durable outcome this row represents.",
          "example": "self_paced",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-result-kind"
        },
        {
          "name": "score_percent",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "Normalized percent score used for mastery and report calculations.",
          "example": 93.2,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-score-percent"
        },
        {
          "name": "source_adapter_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Named adapter or scorer that wrote this row.",
          "example": "adapter_qti_platform",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-source-adapter-id"
        },
        {
          "name": "producer_result_id",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable.",
          "meaning": "External producer's durable id for the source outcome.",
          "example": "cb_2026_ap_calc_7712",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-producer-result-id"
        },
        {
          "name": "modified_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.",
          "example": "2026-06-03T18:55:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-modified-at"
        }
      ],
      "responseShape": "object"
    },
    {
      "id": "patch-result-record",
      "group": "Writes",
      "method": "PATCH",
      "path": "/alpha/results/v1/result-records/{resultRecordId}",
      "title": "Correct a settled outcome",
      "summary": "Patch one result through an ETag-protected and idempotent correction. Audit history remains; corrections never become silent hard deletes. Browser clients can read the returned ETag because responses expose it through Access-Control-Expose-Headers.",
      "scopes": [
        "results:write"
      ],
      "itds": [
        {
          "id": "ritd-021-axis-concurrency-model",
          "title": "API Axis: Concurrency Model",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-021-axis-concurrency-model"
        },
        {
          "id": "ritd-022-axis-idempotency-model",
          "title": "API Axis: Idempotency Model",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-022-axis-idempotency-model"
        },
        {
          "id": "ritd-028-axis-privacy-retention",
          "title": "API Axis: Privacy And Retention",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-028-axis-privacy-retention"
        }
      ],
      "request": [
        {
          "name": "resultRecordId",
          "location": "path",
          "type": "UUID",
          "required": "Required",
          "meaning": "The result to correct.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
          "source": null
        },
        {
          "name": "correction_reason",
          "location": "body",
          "type": "TEXT",
          "required": "Required",
          "meaning": "Human-readable audit reason.",
          "example": "scorer correction",
          "source": null
        },
        {
          "name": "score_percent",
          "location": "body",
          "type": "NUMERIC",
          "required": "Optional",
          "meaning": "Corrected score percentage.",
          "example": "94.0",
          "source": null
        }
      ],
      "query": [],
      "headers": [
        {
          "name": "If-Match",
          "location": "header",
          "type": "ETag",
          "required": "Required",
          "meaning": "ETag from the prior read. Detail reads and correction responses expose ETag to browser callers through Access-Control-Expose-Headers.",
          "example": "\"res-018f4b4e-v2\"",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-021-axis-concurrency-model"
        },
        {
          "name": "Idempotency-Key",
          "location": "header",
          "type": "opaque string",
          "required": "Required on writes",
          "meaning": "Same key + same method/path/body returns the original result; same key + different body returns results:idempotency_conflict.",
          "example": "result-correction-018f4b4e-v3",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-022-axis-idempotency-model"
        }
      ],
      "responseTable": "alpha.result_record",
      "responseFields": [
        "result_record_id",
        "score_percent",
        "superseded_by_result_record_id",
        "modified_at",
        "deleted_at"
      ],
      "response": [
        {
          "name": "result_record_id",
          "location": "body",
          "type": "UUID",
          "required": "Required.",
          "meaning": "Stable Results identifier for this settled outcome.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-result-record-id"
        },
        {
          "name": "score_percent",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "Normalized percent score used for mastery and report calculations.",
          "example": 93.2,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-score-percent"
        },
        {
          "name": "superseded_by_result_record_id",
          "location": "body",
          "type": "UUID",
          "required": "Nullable.",
          "meaning": "Later result row that replaced this row.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a000102",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-superseded-by-result-record-id"
        },
        {
          "name": "modified_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.",
          "example": "2026-06-03T18:55:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-modified-at"
        },
        {
          "name": "deleted_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Nullable.",
          "meaning": "Soft-delete timestamp. Null means active; non-null rows stay available for authorized audit reads and are excluded from ordinary current reports.",
          "example": "2026-06-03T18:55:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-result-record-deleted-at"
        }
      ],
      "responseShape": "object"
    },
    {
      "id": "report-map-quadrants",
      "group": "Report Views",
      "method": "GET",
      "path": "/alpha/results/v1/reports/map-quadrants",
      "title": "MAP quadrants",
      "summary": "Return quadrant rows with Growth X and achievement already computed by the surface.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-017-report-ready-views-skill-pack-gate",
          "title": "Report-Ready Views Replace Skill-Pack Logic",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-017-report-ready-views-skill-pack-gate"
        },
        {
          "id": "ritd-009-growth-x-target",
          "title": "Growth X And 2X Target Are First-Class Result Fields",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-009-growth-x-target"
        }
      ],
      "request": [],
      "query": [
        "subject",
        "canonicalTermId",
        "growthWindow",
        "normsSet",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.report_map_quadrants",
      "responseFields": [
        "student_id",
        "student_email",
        "subject_id",
        "canonical_term_id",
        "growth_window",
        "norms_set",
        "rit",
        "growth_x",
        "quadrant",
        "intervention_flag"
      ],
      "response": [
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-map-quadrants-student-id"
        },
        {
          "name": "student_email",
          "location": "body",
          "type": "CITEXT",
          "required": "Nullable joined read field.",
          "meaning": "Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id.",
          "example": "alex.rivera@example.edu",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-map-quadrants-student-email"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-map-quadrants-subject-id"
        },
        {
          "name": "canonical_term_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required for term-scoped rows.",
          "meaning": "Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.",
          "example": "term_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-map-quadrants-canonical-term-id"
        },
        {
          "name": "growth_window",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Typed growth window used for the Growth X value in this quadrant row.",
          "example": "fall_to_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-map-quadrants-growth-window"
        },
        {
          "name": "norms_set",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required for normed MAP rows.",
          "meaning": "NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.",
          "example": "2025",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-map-quadrants-norms-set"
        },
        {
          "name": "rit",
          "location": "body",
          "type": "INTEGER",
          "required": "Nullable.",
          "meaning": "Selected test-of-record RIT for the report row.",
          "example": 238,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-map-quadrants-rit"
        },
        {
          "name": "growth_x",
          "location": "body",
          "type": "NUMERIC(8,4)",
          "required": "Nullable.",
          "meaning": "Surface-owned Growth X for the selected window.",
          "example": 2,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-map-quadrants-growth-x"
        },
        {
          "name": "quadrant",
          "location": "body",
          "type": "TEXT enum",
          "required": "Nullable.",
          "meaning": "Report quadrant under active threshold policy.",
          "example": "high_growth_high_achievement",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-map-quadrants-quadrant"
        },
        {
          "name": "intervention_flag",
          "location": "body",
          "type": "BOOLEAN",
          "required": "Required.",
          "meaning": "Whether this row meets policy for intervention or celebration workflow.",
          "example": false,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-map-quadrants-intervention-flag"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "report-retake-audit",
      "group": "Report Views",
      "method": "GET",
      "path": "/alpha/results/v1/reports/retake-audit",
      "title": "Retake audit",
      "summary": "Return retake and test-of-record audit rows without asking clients to dedupe MAP sittings.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-007-map-test-of-record",
          "title": "MAP Test Of Record Is The Results Default",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-007-map-test-of-record"
        },
        {
          "id": "ritd-017-report-ready-views-skill-pack-gate",
          "title": "Report-Ready Views Replace Skill-Pack Logic",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-017-report-ready-views-skill-pack-gate"
        }
      ],
      "request": [],
      "query": [
        "subject",
        "canonicalTermId",
        "growthWindow",
        "normsSet",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.report_retake_audit",
      "responseFields": [
        "student_id",
        "subject_id",
        "canonical_term_id",
        "sitting_count",
        "highest_rit_sitting_id",
        "deleted_sitting_count",
        "selection_explanation"
      ],
      "response": [
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-retake-audit-student-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-retake-audit-subject-id"
        },
        {
          "name": "canonical_term_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required for term-scoped rows.",
          "meaning": "Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.",
          "example": "term_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-retake-audit-canonical-term-id"
        },
        {
          "name": "sitting_count",
          "location": "body",
          "type": "INTEGER",
          "required": "Required.",
          "meaning": "Number of all-sittings rows in the group.",
          "example": 3,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-retake-audit-sitting-count"
        },
        {
          "name": "highest_rit_sitting_id",
          "location": "body",
          "type": "UUID",
          "required": "Nullable.",
          "meaning": "MAP sitting selected as test_of_record.",
          "example": "018f4b4e-9c7a-7d3d-8b2f-2f673a000801",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-retake-audit-highest-rit-sitting-id"
        },
        {
          "name": "deleted_sitting_count",
          "location": "body",
          "type": "INTEGER",
          "required": "Required.",
          "meaning": "Number of soft-deleted sittings in the group.",
          "example": 1,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-retake-audit-deleted-sitting-count"
        },
        {
          "name": "selection_explanation",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Plain explanation of why the selected sitting is test_of_record.",
          "example": "Selected highest valid RIT; later lower retake remains audit evidence.",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-retake-audit-selection-explanation"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "report-growth-over-time",
      "group": "Report Views",
      "method": "GET",
      "path": "/alpha/results/v1/reports/growth-over-time",
      "title": "Growth over time",
      "summary": "Return the longitudinal Growth X series ordered by term.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-012-longitudinal-series",
          "title": "Growth Over Time Is A Results-Owned Series",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-012-longitudinal-series"
        },
        {
          "id": "ritd-017-report-ready-views-skill-pack-gate",
          "title": "Report-Ready Views Replace Skill-Pack Logic",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-017-report-ready-views-skill-pack-gate"
        }
      ],
      "request": [],
      "query": [
        "subject",
        "canonicalTermId",
        "growthWindow",
        "normsSet",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.report_growth_over_time",
      "responseFields": [
        "student_id",
        "student_email",
        "subject_id",
        "term_order",
        "canonical_term_id",
        "norms_set",
        "rit",
        "observed_growth",
        "growth_x",
        "timeback_era"
      ],
      "response": [
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-over-time-student-id"
        },
        {
          "name": "student_email",
          "location": "body",
          "type": "CITEXT",
          "required": "Nullable joined read field.",
          "meaning": "Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id.",
          "example": "alex.rivera@example.edu",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-over-time-student-email"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-over-time-subject-id"
        },
        {
          "name": "term_order",
          "location": "body",
          "type": "INTEGER",
          "required": "Required.",
          "meaning": "Surface-owned chronological order.",
          "example": 6,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-over-time-term-order"
        },
        {
          "name": "canonical_term_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required for term-scoped rows.",
          "meaning": "Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.",
          "example": "term_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-over-time-canonical-term-id"
        },
        {
          "name": "norms_set",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required for normed MAP rows.",
          "meaning": "NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.",
          "example": "2025",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-over-time-norms-set"
        },
        {
          "name": "rit",
          "location": "body",
          "type": "INTEGER",
          "required": "Nullable.",
          "meaning": "RIT at this timeline point.",
          "example": 238,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-over-time-rit"
        },
        {
          "name": "observed_growth",
          "location": "body",
          "type": "NUMERIC(6,2)",
          "required": "Nullable.",
          "meaning": "Observed growth for this segment.",
          "example": 14,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-over-time-observed-growth"
        },
        {
          "name": "growth_x",
          "location": "body",
          "type": "NUMERIC(8,4)",
          "required": "Nullable.",
          "meaning": "Growth X for this segment.",
          "example": 2,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-over-time-growth-x"
        },
        {
          "name": "timeback_era",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Pre-TimeBack vs TimeBack classification.",
          "example": "timeback",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-over-time-timeback-era"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "report-norms-isolation",
      "group": "Report Views",
      "method": "GET",
      "path": "/alpha/results/v1/reports/norms-isolation",
      "title": "Norms isolation",
      "summary": "Return the same score under one explicit norms set so clients can compare 2020 and 2025 by changing one parameter.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-010-norms-discipline",
          "title": "Norms And Growth Windows Are Typed Inputs",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-010-norms-discipline"
        },
        {
          "id": "ritd-017-report-ready-views-skill-pack-gate",
          "title": "Report-Ready Views Replace Skill-Pack Logic",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-017-report-ready-views-skill-pack-gate"
        }
      ],
      "request": [],
      "query": [
        "subject",
        "canonicalTermId",
        "growthWindow",
        "normsSet",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.report_norms_isolation",
      "responseFields": [
        "student_id",
        "subject_id",
        "canonical_term_id",
        "norms_set",
        "rit",
        "percentile",
        "effective_grade",
        "growth_x"
      ],
      "response": [
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-norms-isolation-student-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-norms-isolation-subject-id"
        },
        {
          "name": "canonical_term_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required for term-scoped rows.",
          "meaning": "Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.",
          "example": "term_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-norms-isolation-canonical-term-id"
        },
        {
          "name": "norms_set",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required for normed MAP rows.",
          "meaning": "NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.",
          "example": "2025",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-norms-isolation-norms-set"
        },
        {
          "name": "rit",
          "location": "body",
          "type": "INTEGER",
          "required": "Nullable.",
          "meaning": "RIT held constant while norms-dependent fields change.",
          "example": 238,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-norms-isolation-rit"
        },
        {
          "name": "percentile",
          "location": "body",
          "type": "INTEGER",
          "required": "Nullable.",
          "meaning": "Percentile under norms_set.",
          "example": 94,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-norms-isolation-percentile"
        },
        {
          "name": "effective_grade",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "Effective grade under norms_set/calculator config.",
          "example": 6.4,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-norms-isolation-effective-grade"
        },
        {
          "name": "growth_x",
          "location": "body",
          "type": "NUMERIC(8,4)",
          "required": "Nullable.",
          "meaning": "Growth X under norms_set.",
          "example": 2,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-norms-isolation-growth-x"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "report-growth-breakdown",
      "group": "Report Views",
      "method": "GET",
      "path": "/alpha/results/v1/reports/growth-breakdown",
      "title": "Growth breakdown",
      "summary": "Return surface-owned growth components for a student/subject/term/window row.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-009-growth-x-target",
          "title": "Growth X And 2X Target Are First-Class Result Fields",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-009-growth-x-target"
        },
        {
          "id": "ritd-017-report-ready-views-skill-pack-gate",
          "title": "Report-Ready Views Replace Skill-Pack Logic",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-017-report-ready-views-skill-pack-gate"
        }
      ],
      "request": [],
      "query": [
        "subject",
        "canonicalTermId",
        "growthWindow",
        "normsSet",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.report_growth_breakdown",
      "responseFields": [
        "student_id",
        "subject_id",
        "canonical_term_id",
        "growth_window",
        "norms_set",
        "observed_growth",
        "projected_growth",
        "growth_x"
      ],
      "response": [
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-breakdown-student-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-breakdown-subject-id"
        },
        {
          "name": "canonical_term_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required for term-scoped rows.",
          "meaning": "Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.",
          "example": "term_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-breakdown-canonical-term-id"
        },
        {
          "name": "growth_window",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Typed growth window.",
          "example": "fall_to_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-breakdown-growth-window"
        },
        {
          "name": "norms_set",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required for normed MAP rows.",
          "meaning": "NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.",
          "example": "2025",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-breakdown-norms-set"
        },
        {
          "name": "observed_growth",
          "location": "body",
          "type": "NUMERIC(6,2)",
          "required": "Nullable.",
          "meaning": "Observed growth points.",
          "example": 14,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-breakdown-observed-growth"
        },
        {
          "name": "projected_growth",
          "location": "body",
          "type": "NUMERIC(6,2)",
          "required": "Nullable.",
          "meaning": "Projected growth points.",
          "example": 7,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-breakdown-projected-growth"
        },
        {
          "name": "growth_x",
          "location": "body",
          "type": "NUMERIC(8,4)",
          "required": "Nullable.",
          "meaning": "Observed / projected growth.",
          "example": 2,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-growth-breakdown-growth-x"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "report-group-growth-x",
      "group": "Report Views",
      "method": "GET",
      "path": "/alpha/results/v1/reports/group-growth-x",
      "title": "Group Growth X",
      "summary": "Return cohort Growth X by averaging each student's individual Growth X ratio. The client never divides total observed growth by total projected growth.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-017-report-ready-views-skill-pack-gate",
          "title": "Report-Ready Views Replace Skill-Pack Logic",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-017-report-ready-views-skill-pack-gate"
        }
      ],
      "request": [],
      "query": [
        "groupDimension",
        "groupKey",
        "subject",
        "canonicalTermId",
        "growthWindow",
        "normsSet",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.report_group_growth_x",
      "responseFields": [
        "group_dimension",
        "group_key",
        "subject_id",
        "canonical_term_id",
        "norms_set",
        "growth_window",
        "student_count",
        "excluded_student_count",
        "average_growth_x",
        "growth_x_target",
        "students_at_or_above_target_count",
        "policy_version",
        "computed_at"
      ],
      "response": [
        {
          "name": "group_dimension",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Cohort dimension used for the group row.",
          "example": "school_level",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-group-growth-x-group-dimension"
        },
        {
          "name": "group_key",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Value of the selected group_dimension.",
          "example": "MS",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-group-growth-x-group-key"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-group-growth-x-subject-id"
        },
        {
          "name": "canonical_term_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required for term-scoped rows.",
          "meaning": "Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.",
          "example": "term_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-group-growth-x-canonical-term-id"
        },
        {
          "name": "norms_set",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required for normed MAP rows.",
          "meaning": "NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.",
          "example": "2025",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-group-growth-x-norms-set"
        },
        {
          "name": "growth_window",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Typed growth window used for the group Growth X answer.",
          "example": "fall_to_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-group-growth-x-growth-window"
        },
        {
          "name": "student_count",
          "location": "body",
          "type": "INTEGER",
          "required": "Required.",
          "meaning": "Number of students with an eligible individual Growth X ratio in this group.",
          "example": 47,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-group-growth-x-student-count"
        },
        {
          "name": "excluded_student_count",
          "location": "body",
          "type": "INTEGER",
          "required": "Required.",
          "meaning": "Number of otherwise in-scope students excluded because their individual Growth X ratio is null.",
          "example": 3,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-group-growth-x-excluded-student-count"
        },
        {
          "name": "average_growth_x",
          "location": "body",
          "type": "NUMERIC(8,4)",
          "required": "Nullable.",
          "meaning": "Average of each eligible student's individual growth_x ratio.",
          "example": 2.124,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-group-growth-x-average-growth-x"
        },
        {
          "name": "growth_x_target",
          "location": "body",
          "type": "NUMERIC(8,4)",
          "required": "Required.",
          "meaning": "Configured target used to interpret the group answer.",
          "example": 2,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-group-growth-x-growth-x-target"
        },
        {
          "name": "students_at_or_above_target_count",
          "location": "body",
          "type": "INTEGER",
          "required": "Required.",
          "meaning": "Eligible students whose individual Growth X meets or exceeds target.",
          "example": 29,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-group-growth-x-students-at-or-above-target-count"
        },
        {
          "name": "policy_version",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Policy/config version used for group eligibility and target.",
          "example": "growth_x_group_v2026_06",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-group-growth-x-policy-version"
        },
        {
          "name": "computed_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC timestamp when the surface produced this group row.",
          "example": "2026-06-05T14:31:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-group-growth-x-computed-at"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "report-student-progress-animation",
      "group": "Report Views",
      "method": "GET",
      "path": "/alpha/results/v1/reports/student-progress-animation",
      "title": "Student progress animation",
      "summary": "Return animation-ready frame rows. The client renders frames; it does not compute grade movement.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-012-longitudinal-series",
          "title": "Growth Over Time Is A Results-Owned Series",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-012-longitudinal-series"
        },
        {
          "id": "ritd-014-working-grade-advancement",
          "title": "Working Grade And Advancement Are Surface-Owned Metrics",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-014-working-grade-advancement"
        },
        {
          "id": "ritd-017-report-ready-views-skill-pack-gate",
          "title": "Report-Ready Views Replace Skill-Pack Logic",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-017-report-ready-views-skill-pack-gate"
        }
      ],
      "request": [],
      "query": [
        "subject",
        "canonicalTermId",
        "growthWindow",
        "normsSet",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.report_student_progress_animation",
      "responseFields": [
        "student_id",
        "subject_id",
        "frame_index",
        "frame_date",
        "working_grade",
        "effective_grade",
        "growth_x",
        "levels_above_99"
      ],
      "response": [
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-student-progress-animation-student-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-student-progress-animation-subject-id"
        },
        {
          "name": "frame_index",
          "location": "body",
          "type": "INTEGER",
          "required": "Required.",
          "meaning": "Ordered frame number.",
          "example": 12,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-student-progress-animation-frame-index"
        },
        {
          "name": "frame_date",
          "location": "body",
          "type": "DATE",
          "required": "Required.",
          "meaning": "Date represented by the frame.",
          "example": "2026-06-03",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-student-progress-animation-frame-date"
        },
        {
          "name": "working_grade",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "Working grade for this frame.",
          "example": 7.4,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-student-progress-animation-working-grade"
        },
        {
          "name": "effective_grade",
          "location": "body",
          "type": "NUMERIC(5,2)",
          "required": "Nullable.",
          "meaning": "Effective grade for this frame when MAP input exists.",
          "example": 6.4,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-student-progress-animation-effective-grade"
        },
        {
          "name": "growth_x",
          "location": "body",
          "type": "NUMERIC(8,4)",
          "required": "Nullable.",
          "meaning": "Growth X visible at this frame.",
          "example": 2,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-student-progress-animation-growth-x"
        },
        {
          "name": "levels_above_99",
          "location": "body",
          "type": "NUMERIC(6,2)",
          "required": "Nullable.",
          "meaning": "99-level value visible at this frame.",
          "example": 1.6,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-student-progress-animation-levels-above-99"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "report-closed-loop-reconciliation",
      "group": "Report Views",
      "method": "GET",
      "path": "/alpha/results/v1/reports/closed-loop-reconciliation",
      "title": "Closed-loop reconciliation",
      "summary": "Return old-production-vs-Alpha comparison rows for RIT, Growth X, mastery state, and minutes keys.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-003-canonical-result-shape",
          "title": "Canonical Result Shape For Self-Paced And External Outcomes",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-003-canonical-result-shape"
        },
        {
          "id": "ritd-017-report-ready-views-skill-pack-gate",
          "title": "Report-Ready Views Replace Skill-Pack Logic",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-017-report-ready-views-skill-pack-gate"
        }
      ],
      "request": [],
      "query": [
        "studentId",
        "metricKind",
        "subject",
        "canonicalTermId",
        "growthWindow",
        "normsSet",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.report_closed_loop_reconciliation",
      "responseFields": [
        "metric_kind",
        "student_id",
        "subject_id",
        "canonical_term_id",
        "kc_id",
        "activity_date",
        "reconcile_status"
      ],
      "response": [
        {
          "name": "metric_kind",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Metric being reconciled.",
          "example": "growth_x",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-closed-loop-reconciliation-metric-kind"
        },
        {
          "name": "student_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.",
          "example": "stu_timeback_10017",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-closed-loop-reconciliation-student-id"
        },
        {
          "name": "subject_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings.",
          "example": "math",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-closed-loop-reconciliation-subject-id"
        },
        {
          "name": "canonical_term_id",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable; required for MAP/RIT/Growth X rows.",
          "meaning": "Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.",
          "example": "term_2025_26_spring",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-closed-loop-reconciliation-canonical-term-id"
        },
        {
          "name": "kc_id",
          "location": "body",
          "type": "TEXT",
          "required": "Nullable; required for student_kc_state metric.",
          "meaning": "Curriculum KC id for KC-state reconciliation.",
          "example": "kc_linear_equations",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-closed-loop-reconciliation-kc-id"
        },
        {
          "name": "activity_date",
          "location": "body",
          "type": "DATE",
          "required": "Nullable; required for minutes metric.",
          "meaning": "Date for Events minutes reconciliation.",
          "example": "2026-06-03",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-closed-loop-reconciliation-activity-date"
        },
        {
          "name": "reconcile_status",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Whether old and Alpha answers match for this key.",
          "example": "match",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-closed-loop-reconciliation-reconcile-status"
        }
      ],
      "responseShape": "list"
    },
    {
      "id": "report-answer-key",
      "group": "Report Views",
      "method": "GET",
      "path": "/alpha/results/v1/reports/answer-key",
      "title": "Worked example answer key",
      "summary": "Return surface-owned answer keys used by the future skill pack to prove it asks the surface correctly.",
      "scopes": [
        "results:read"
      ],
      "itds": [
        {
          "id": "ritd-030-axis-report-oracle",
          "title": "API Axis: Report Oracle And Golden Cells",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-030-axis-report-oracle"
        },
        {
          "id": "ritd-017-report-ready-views-skill-pack-gate",
          "title": "Report-Ready Views Replace Skill-Pack Logic",
          "href": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture/#ritd-017-report-ready-views-skill-pack-gate"
        }
      ],
      "request": [],
      "query": [
        "subject",
        "canonicalTermId",
        "growthWindow",
        "normsSet",
        "modifiedSince"
      ],
      "headers": [],
      "responseTable": "alpha.report_answer_key",
      "responseFields": [
        "example_id",
        "report_id",
        "norms_set",
        "expected_result_hash",
        "expected_row_count",
        "verified_at"
      ],
      "response": [
        {
          "name": "example_id",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Stable id of the worked example.",
          "example": "map_quadrants_2025_norms_demo",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-answer-key-example-id"
        },
        {
          "name": "report_id",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required.",
          "meaning": "Report view the example exercises.",
          "example": "map_quadrants",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-answer-key-report-id"
        },
        {
          "name": "norms_set",
          "location": "body",
          "type": "TEXT enum",
          "required": "Required for normed MAP rows.",
          "meaning": "NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.",
          "example": "2025",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-answer-key-norms-set"
        },
        {
          "name": "expected_result_hash",
          "location": "body",
          "type": "TEXT",
          "required": "Required.",
          "meaning": "Hash of the canonical response used by skill-pack self-checks.",
          "example": "sha256:bc932e2b",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-answer-key-expected-result-hash"
        },
        {
          "name": "expected_row_count",
          "location": "body",
          "type": "INTEGER",
          "required": "Required.",
          "meaning": "Number of rows the surface should return for the example.",
          "example": 42,
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-answer-key-expected-row-count"
        },
        {
          "name": "verified_at",
          "location": "body",
          "type": "TIMESTAMPTZ",
          "required": "Required.",
          "meaning": "UTC time the surface last verified the answer key.",
          "example": "2026-06-03T18:55:00Z",
          "source": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#field-alpha-report-answer-key-verified-at"
        }
      ],
      "responseShape": "list"
    }
  ],
  "objectCount": 45,
  "fieldCount": 612
}
