Canonical implementation base: https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/implementation/api Architecture · Data dictionary · Contract JSON

TimeBack Platform · Alpha surface

Results are the durable record of how one student is doing.

Use this API to read and write settled outcomes, MAP scores, Growth X, report cards, transcripts, gate passes, working grade, advancement, the student's four-state knowledge graph, track position, course progress, grade-level progress, next-task answer, awarded XP ledger, and content-effectiveness read models. Results is not an event stream and not a content library: Events feed it, Content describes the blank work, Curriculum defines shared skills and tracks, Analytics supplies evidence, and Results records what was settled for one student.

45 public objects/read models 612 documented fields 39 endpoint contracts No client dedupe, norms tables, term parsing, mastery math, progress joins, next-task ranking, or XP formulas

First call

export RESULTS_BASE_URL="https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/implementation/api"
export RESULTS_TOKEN=$(curl -sS -X POST "$RESULTS_BASE_URL/dev/mint?tenantId=demo" | jq -r .token)

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/map-quadrants?normsSet=2025&growthWindow=fall_to_spring" \
  -H "Authorization: Bearer $RESULTS_TOKEN"
Eventsmoments Contentblank work Resultssettled outcomes Curriculumshared map People & Orgsstudents/cohorts Results owns durable outcomes, alpha.student_kc_state, alpha.student_track_state, next-task answers, XP ledger, MAP report views, and content-effectiveness reads.

Quickstart

Build a working client cold

The implementation base URL is https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/implementation/api, and the driver exposes that value through the RESULTS_BASE_URL environment variable. Demo access uses POST /dev/mint?tenantId=demo; real tenants use operator-minted JWTs in RESULTS_REVIEWER_JWT or the customer credential channel.

1. Mint a demo token

export RESULTS_BASE_URL="https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/implementation/api"
export RESULTS_TOKEN=$(curl -sS -X POST "$RESULTS_BASE_URL/dev/mint?tenantId=demo" | jq -r .token)

2. Read the student's record

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/results?subject=math&asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

3. Regenerate a MAP report

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/growth-over-time?subject=math&normsSet=2025" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

4. Change norms without changing code

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/growth-over-time?subject=math&normsSet=2020" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

5. Read what to do next

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/next-task?studentId=stu_timeback_10017&subject=math&asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

6. Read one transcript answer

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/transcript-results?studentId=stu_timeback_10017&courseId=course_algebra_1&canonicalTermId=term_2025_26_spring" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

7. Read awarded XP

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/xp-ledger" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

8. Ask for source evidence only when needed

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/course-transcripts?studentId=stu_timeback_10017&includeSourceEvidence=true" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

One-student report

My Learning Report endpoint pack

These calls are the complete one-student Results read path for the customer-eval job, with the adjacent MAP calculator reads a GOALS or Learning Report client needs when the user starts from a percentile target. The linked endpoint cards below each include a Stripe-style request table, cURL, example response, response-field table, and data-dictionary plus architecture provenance.

My Learning Report calls
Report partEndpointFields to display
MAP RIT per subjectGET /alpha/results/v1/students/{studentId}/map-scoresRead rit, percentile, norms_set, and test-of-record score identity.
Growth X per growth windowGET /alpha/results/v1/students/{studentId}/growth-windowsRead observed_growth, projected_growth, growth_x, and on_track_for_growth_x_target.
Percentile target conversionGET /alpha/results/v1/map-percentile-translationsRead output_rit or output_percentile under one norms_set without a client norms table.
R90/RIT90 norm pointGET /alpha/results/v1/map-r90-norm-pointsRead the one surface-owned R90 row version; do not keep a copied R90 table.
Mastery state per KCGET /alpha/results/v1/students/{studentId}/kc-stateRead initial_mastery, current_retention, durable_mastery, fluency_state, next_due_at, and evidence_count.
Working gradeGET /alpha/results/v1/students/{studentId}/working-gradeRead working_grade, baseline_effective_grade, sy_start_working_grade, and formula_version.
Report-card entriesGET /alpha/results/v1/students/{studentId}/report-cardRead grade_value, narrative, reporting_period_id, status, begin_date, end_date, and is_time_locatable.
Recent gate passesGET /alpha/results/v1/students/{studentId}/gate-passesRead gate_status, next_eligible_at, attempt_count, and policy_version.
Awarded-XP historyGET /alpha/results/v1/students/{studentId}/xp-ledgerRead awarded_xp, award_reason, result_record_id, content_id, policy, evidence, and reversals.

Read MAP term scores

Full endpoint contract

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/map-scores?subject=math&canonicalTermId=term_2025_26_spring&normsSet=2025" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Read observed vs projected growth

Full endpoint contract

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/growth-windows?subject=math&growthWindow=fall_to_spring&normsSet=2025" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Convert MAP percentile and RIT

Full endpoint contract

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/map-percentile-translations?subject=math&gradeLevel=7.0&termSeason=spring&normsSet=2025&translationDirection=percentile_to_rit&inputPercentile=99" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Read legacy R90 norm-point fixtures

Full endpoint contract

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/map-r90-norm-points?subject=math&gradeLevel=7.0&termSeason=spring&normsSet=2025" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Read a student's knowledge state

Full endpoint contract

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/kc-state?subject=math&asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Read course progress

Full endpoint contract

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/course-progress?subject=math&courseId=course_math_grade_7_main&asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Read grade-level progress

Full endpoint contract

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/grade-level-progress?subject=math&gradeLevel=7&asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Read working grade

Full endpoint contract

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/working-grade?subject=math&asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Read report-card entries

Full endpoint contract

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/report-card?asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Read gate passes

Full endpoint contract

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/gate-passes?subject=math&asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Read awarded XP history

Full endpoint contract

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/xp-ledger" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Authentication

Bearer JWT with tenant and student scope

Every non-demo-mint request sends the Authorization: Bearer <jwt> header; the token carries the tenant boundary and scopes such as results:read, results:write, results:adapter, and optional claim narrowing such as studentIds, guardianOf, schoolSourcedIds, or classSourcedIds claim filters. Tenant routing comes from the token; do not put tenant ids in URLs or headers. Mutable reads and correction responses expose ETag through Access-Control-Expose-Headers, so browser clients can use the same If-Match correction contract as server clients.

Authentication contract
PartRequiredMeaningTrace
AuthorizationYes except demo mintBearer token signed by the platform-wide signing secret.ritd-023-axis-auth-shape
tenant_id / tenantId claimYesAll reads and writes are scoped to this tenant. Row tenant and token tenant must match.ritd-026-axis-tenant-routing
results:readRead endpointsRead result records, mastery state, MAP scores, and report views within caller scope.ritd-023-axis-auth-shape
results:writeWrite endpointsCreate or correct canonical result records.ritd-018-axis-write-granularity
results:adapterImportsRun named source-adapter imports.ritd-003-canonical-result-shape
results:auditEvidence/audit readsRead authorized source evidence such as all MAP sittings or Ed-Fi canonical-record provenance; ordinary reads stay typed and filtered.ritd-028-axis-privacy-retention

Errors

Typed RFC 7807 problems

Failures return the application/problem+json media type; type is stable enough for code, title is stable enough for logs, and fieldErrors points to bad request fields when validation fails.

{
  "type": "https://platform.timeback.com/problems/results/validation_failed",
  "code": "results:validation_failed",
  "title": "Validation failed",
  "status": 400,
  "detail": "normsSet must be one of 2020 or 2025.",
  "fieldErrors": [
    {
      "field": "normsSet",
      "message": "Allowed values: 2020, 2025."
    }
  ],
  "requestId": "req_results_01hx",
  "traceId": "trc_results_01hx"
}
Problem codes
CodeStatusWhen it appears
results:authentication_required401Missing, expired, or malformed Authorization bearer token.
results:authorization_failed403Valid token, but missing scope or outside allowed student/guardian/school claims.
results:validation_failed400A field, query parameter, enum, date, or body value is invalid.
results:unsupported_parameter400Unknown query parameter, unsupported sort, or unsupported filter.
results:not_found404The requested Results row is not visible in the caller's tenant/scope.
results:precondition_required428PATCH requires If-Match; every state-changing write, including corrections, also requires Idempotency-Key.
results:precondition_failed412If-Match did not match the current ETag.
results:idempotency_conflict409Idempotency-Key was reused with a different operation or request body.
results:tenant_mismatch403The request tenant, row tenant, and JWT tenant claim do not match.
results:adapter_rejected422A producer row could not be normalized into the canonical Results shape.
results:rate_limited429Too many requests; back off and retry.
results:server_error500Unexpected platform error. The response includes requestId and traceId.

Pagination and polling

Cursor lists plus modifiedSince

List endpoints use cursor pagination and optional modifiedSince polling. Polling is the eventing model for this surface; webhooks are explicitly deferred. Treat equal modified_at timestamps as cursor-sensitive and keep the returned cursor with the timestamp.

Cursor fields

limit is 1 through 100. cursor is the opaque value returned by the previous list response.

Polling fields

modifiedSince is a UTC timestamp. Responses include modified_at where polling applies.

Envelope

List responses return object=list, data[], nextCursor, hasMore, and provenance links.

{
  "object": "list",
  "data": [
    {
      "tenant_id": "0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3",
      "student_id": "stu_timeback_10017",
      "subject_id": "math",
      "canonical_term_id": "term_2025_26_spring",
      "norms_set": "2025",
      "growth_window": "fall_to_spring",
      "observed_growth": 14,
      "projected_growth": 7,
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-growth-window",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-growth-window",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}

Migration contract

Import source-shaped TimeBack and NWEA rows

Migration app, source adapters, and operators importing raw TimeBack Production or NWEA MAP rows. This endpoint is the live migration gate: callers send source-shaped production data, and Results does the normalization before any row becomes a public Alpha answer.

Server-side normalization

The caller sends source-shaped records. The Results surface normalizes server-side: student identity, subject aliases, term parsing, NWEA test-of-record, soft-delete handling, norms, Growth X, goal-strand unpivot, mastery state, XP awards, and report-ready rows. If the caller has to compute any of those before import, the surface leaked.

Success means readable rows

For dry_run=false, success means accepted_count > 0 and every accepted source row has materialized readable rows through the documented Results views before the response is returned. A batch that writes evidence but leaves zero public rows is results:adapter_rejected (422), not success. A mastery_gate row with no parseable grade token is accepted but excluded from HMG/working-grade derivation with a diagnostics[].mastery_skipped_reason value; mixed batches must not fail because one such row is non-derivable.

Status codes

A new successful import uses HTTP 202 for accepted work. An idempotent replay of the same accepted import uses HTTP 200 for the replayed answer. Validation failures return the results:validation_failed problem with HTTP 400 for bad fields. Adapter rejections return the results:adapter_rejected problem with HTTP 422 for rejected source rows. A failure never returns HTTP 200.

Single-student cutover check

studentId is a supported TimeBack student-id filter on reconciliation. It narrows old-vs-Alpha rows to one student and must not return results:unsupported_parameter merely because it is present. Example: /alpha/results/v1/reports/closed-loop-reconciliation?studentId=stu_timeback_10017&metricKind=growth_x&subject=math&canonicalTermId=term_2025_26_spring&normsSet=2025

Accepted source shapes
sourceShapeSource rowRequired evidenceMaterializes toRejected when
timeback_assessment_resultRaw TimeBack Production assessment/result row.raw producer student identifier exactly as it appears in the TimeBack reporting row and resolvable through People & Orgs source identity
producer assessment/result id or attempt id
subject or source subject alias covered by the alpha.subject registry
occurred/completed timestamp or source term evidence
score, response, or outcome evidence
alpha.result_record
alpha.result_source_evidence
alpha.result_kc_evidence when KC evidence is present
alpha.student_kc_state recompute when mastery evidence is present
alpha.xp_ledger when award policy applies
The row is already reduced to only canonical Results fields, lacks producer identity, the producer student id is genuinely absent from People & Orgs source identity, or the row would require caller-side mastery/XP math.
nwea_map_assessment_resultRaw NWEA MAP CDF AssessmentResults row with NWEA field names.StudentID or Student_StateID exactly as NWEA sent it and resolvable through People & Orgs source identity
Subject covered by the alpha.subject registry or explicit exclusion/proxy rule
TermName or equivalent term field
TestID or equivalent sitting id
TestRITScore
TestStartDate/TestStartTime or sitting timestamp
NormsReferenceData when normed outputs are requested
alpha.map_sitting
alpha.map_score
alpha.map_current_score
alpha.map_goal_strand
alpha.map_growth_window
alpha.map_normed_result
alpha.map_effective_grade
alpha.map_longitudinal_point
alpha.map_99_level
MAP report-ready views
The row requires caller-side NWEA dedupe, goal-column unpivot, term parsing, norms switching, Growth X calculation, TimeBack identity replacement, or a supersede sweep outside the row's student/subject/term scope.
Import request body
NameInTypeRequiredMeaningExampleSource
source_adapter_idbodyTEXTRequiredNamed 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.adapter_timeback_migrationsource
producer_batch_idbodyTEXTRequiredProducer'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.timeback-prod-results-2026-06-08T15source
sourceShapebodyTEXT enumRequiredNames 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.timeback_assessment_resultsource
recordsbodyJSONB arrayRequiredArray 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.[{"studentId":"tb-prod-raw-student-981234","assessmentId":"factoring-gate","scorePercent":92.5}]source
dry_runbodyBOOLEANOptional; defaults to falseValidate 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.falsesource
Import response body
NameInTypeRequiredMeaningExampleSource
import_idbodyTEXTReturned on successStable id for this accepted import or dry run.import_timeback_prod_results_2026_06_08T15source
statusbodyTEXT enumReturned on successImport result state.acceptedsource
accepted_countbodyINTEGERReturned on successNumber of source rows accepted and materialized when dry_run=false.1733source
materializedbodyJSONB objectReturned on successCounts and ids of readable rows now visible through Results public objects.{"result_record":1733,"student_kc_state":812,"xp_ledger":1590}source
source_evidence_idsbodyJSONB arrayReturned on successSource evidence rows written for audit and reconciliation.["import_timeback_prod_results_2026_06_08T15_1"]source
reconciliation_urlbodyTEXT URLReturned on successTyped one-call check for this import. May include studentId for a single-student cutover check./alpha/results/v1/reports/closed-loop-reconciliation?studentId=stu_timeback_10017&metricKind=growth_xsource

Raw TimeBack import

curl -sS -X POST "$RESULTS_BASE_URL/alpha/results/v1/imports" \
  -H "Authorization: Bearer $RESULTS_TOKEN" \
  -H "Idempotency-Key: timeback-prod-results-2026-06-08T15" \
  -H "Content-Type: application/json" \
  --data '{"source_adapter_id":"adapter_timeback_migration","producer_batch_id":"timeback-prod-results-2026-06-08T15","sourceShape":"timeback_assessment_result","records":[{"studentId":"stu_timeback_10017","assessmentId":"factoring-gate","subject":"Math","scorePercent":92.5,"completedAt":"2026-06-03T18:55:00Z"}]}'

Raw NWEA MAP import

curl -sS -X POST "$RESULTS_BASE_URL/alpha/results/v1/imports" \
  -H "Authorization: Bearer $RESULTS_TOKEN" \
  -H "Idempotency-Key: nwea-map-spring-2026-account-physical" \
  -H "Content-Type: application/json" \
  --data '{"source_adapter_id":"adapter_nwea_map","producer_batch_id":"nwea-cdf-spring-2026","sourceShape":"nwea_map_assessment_result","records":[{"StudentID":"NWEA-812381","Student_StateID":"stu_timeback_10017","Subject":"Mathematics","TermName":"Spring 2025-2026","TestID":"MAP-456","TestRITScore":214,"NormsReferenceData":"2025"}]}'

Workflows

Common jobs

Cold demo read

An LLM or developer starts with no credentials and reads a real report row.

  1. Set RESULTS_BASE_URL to the implementation URL.
  2. POST /dev/mint?tenantId=demo and store the token as RESULTS_TOKEN.
  3. Call /alpha/results/v1/reports/map-quadrants?normsSet=2025&growthWindow=fall_to_spring.
  4. Use links.dataDictionary and links.architecture in the response when a field is unfamiliar.

Build a student outcome feed

Show a teacher the settled outcomes for one student.

  1. Use the TimeBack student id from People & Orgs, not NWEA StudentID.
  2. Call /students/{studentId}/results with asOfDate and subject when needed.
  3. Display result_kind, outcome_status, score_percent, and source evidence.
  4. Poll with modifiedSince plus cursor; webhooks are deferred.

Regenerate a MAP growth report

Produce quadrant, growth-over-time, or norms-isolation reports without client math.

  1. Choose normsSet=2020 or normsSet=2025.
  2. Choose a typed growthWindow such as fall_to_spring.
  3. Call the report-ready endpoint.
  4. For percentile targets, call /map-percentile-translations; for R90/RIT90 details, call /map-r90-norm-points.
  5. For group Growth X, call /reports/group-growth-x; the answer is the average of each student's individual ratio.
  6. Do not ship a norms table, R90 table, dedupe sittings, parse term strings, divide group totals, or switch over NWEA growth columns.

Answer a transcript question

Show the final grade and earned credits for one student, course, and term.

  1. Use studentId and courseId from People & Orgs / OneRoster sourcedIds; do not use local Ed-Fi ids.
  2. Call /alpha/results/v1/transcript-results with studentId, courseId, canonicalTermId, and includeSourceEvidence=false for ordinary display.
  3. Display final_grade, final_numeric_grade, earned_credits, attempted_credits, and course_attempt_result from the response.
  4. Set includeSourceEvidence=true only for an authorized audit view; the surface resolves descriptors and source precedence.

Read mastery state

Show what one student currently knows on the curriculum graph.

  1. Call /students/{studentId}/kc-state with asOfDate.
  2. Use initial_mastery, current_retention, durable_mastery, fluency_state, next_due_at, and evidence_count as surface-owned values.
  3. Link kc_id to Curriculum for shared KC definitions.
  4. Never store mastery fields on the student profile, and never blend the four named states into one client-side score.

Show what to do next

Render a next lesson, review, practice, or gate retry without rebuilding the scheduler.

  1. Call /alpha/results/v1/next-task with studentId, subject, and asOfDate.
  2. Render task_type and the typed task_ref_type/task_ref_id returned by the surface.
  3. Use reason and source_state_refs for explainability.
  4. Do not rank frontier KCs, due reviews, fluency practice, or gate retries in the app.

Track position, progress, XP, and content signal

Show track position, course/grade progress, awarded XP, and whether content is working.

  1. Call /students/{studentId}/track-state to show current_track_level_id and current_segment_id.
  2. Call /students/{studentId}/course-progress for course XP remaining and percent complete.
  3. Call /students/{studentId}/grade-level-progress for active-path grade XP remaining, main-sequence percent complete, and pacing.
  4. Call /students/{studentId}/xp-ledger to display awarded_xp history; do not compute XP from expected_xp in the app.
  5. Call /content-effectiveness for validated_by_count, failed_by_count, and effectiveness_rate.
  6. Treat track state as state, progress as Results read models, XP as a ledger, and effectiveness as a derived read model.

Import source-shaped rows

Let migration or a trusted adapter write raw TimeBack/NWEA rows without leaking platform logic into the caller.

  1. Send POST /imports with Authorization, Idempotency-Key, source_adapter_id, producer_batch_id, sourceShape, records, and optional dry_run.
  2. Use sourceShape=timeback_assessment_result for raw TimeBack Production assessment/result rows, or sourceShape=nwea_map_assessment_result for raw NWEA MAP CDF AssessmentResults rows.
  3. Do not pre-normalize student identity, subject aliases, terms, NWEA test-of-record, norms, Growth X, goal strands, mastery, XP, or report rows.
  4. Treat results:validation_failed as HTTP 400 and results:adapter_rejected as HTTP 422; a successful dry_run=false import must materialize readable Results rows.

Run closed-loop reconciliation

Prove TimeBack Production and the Alpha surface return the same student-lived keys.

  1. Call /reports/closed-loop-reconciliation for the target tenant/date range.
  2. Check RIT and Growth X by (student, subject, term).
  3. Check mastery state by (student, KC).
  4. Check minutes by (student, day). Any missing Alpha row is a surface gap, not app logic to patch.

Endpoint reference

Endpoints

Every endpoint below is implementation-facing. Request and response tables are inline, and every object/table links back to the data dictionary and architecture ITDs.

Start

Start

POST /dev/mint?tenantId=demo

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
Data object
JSON response
Data dictionary
Results dictionary

cURL

curl -sS -X POST "$RESULTS_BASE_URL/dev/mint?tenantId=demo"

Example response

{
  "tenantId": "demo",
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.demo",
  "expiresIn": 3600
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
tenantIdqueryTEXT enumRequiredMust be demo.demo
Response fields
NameInTypeRequiredMeaningExampleSource
tokenbodyJWT stringRequiredBearer token scoped to tenant demo.eyJhbGciOiJIUzI1NiIs...source
tenantIdbodyTEXTRequiredThe tenant claim in the token.demosource
expiresInbodyINTEGERRequiredSeconds until expiration.3600source

Result Records

Result Records

GET /alpha/results/v1/result-records

Return settled Results records the caller is authorized to see, across students or narrowed by query filters.

#
Scopes
results:read
Data dictionary
alpha.result_record

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/result-records?studentId=stu_timeback_10017&subject=math&modifiedSince=2026-06-03T18:55:00Z" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "result_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
      "student_id": "stu_timeback_10017",
      "result_kind": "self_paced",
      "subject_id": "math",
      "canonical_term_id": "term_2025_26_spring",
      "score_percent": 93.2,
      "outcome_status": "fully_graded",
      "modified_at": "2026-06-03T18:55:00Z",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-result-record",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-result-record",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdqueryTEXTRequired on student sub-collection routes.TimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
asOfDatequeryDATEOptional; defaults are endpoint-specific.Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state.2026-06-03source
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
result_record_idbodyUUIDRequired.Stable Results identifier for this settled outcome.018f4b4e-9c7a-7d3d-8b2f-2f673a000101source
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
result_kindbodyTEXT enumRequired.What kind of durable outcome this row represents.self_pacedsource
subject_idbodyTEXT enumRequired.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.mathsource
canonical_term_idbodyTEXTNullable; required when the outcome belongs to a term.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
score_percentbodyNUMERIC(5,2)Nullable.Normalized percent score used for mastery and report calculations.93.2source
outcome_statusbodyTEXT enumRequired.Plain status for whether the outcome is submitted, graded, exempt, missing, or voided.fully_gradedsource
modified_atbodyTIMESTAMPTZRequired.UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.2026-06-03T18:55:00Zsource

Result Records

GET /alpha/results/v1/result-records/{resultRecordId}

Return one durable outcome with source evidence links and data-dictionary provenance.

#
Scopes
results:read
Data dictionary
alpha.result_record

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/result-records/018f4b4e-9c7a-7d3d-8b2f-2f673a000101" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "result_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
  "student_id": "stu_timeback_10017",
  "result_kind": "self_paced",
  "score_percent": 93.2,
  "canonical_response": {
    "RESPONSE": "B"
  },
  "is_correct": true,
  "source_adapter_id": "adapter_qti_platform",
  "modified_at": "2026-06-03T18:55:00Z",
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-result-record",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
resultRecordIdpathUUIDRequiredThe Alpha result_record_id.018f4b4e-9c7a-7d3d-8b2f-2f673a000101
Response fields
NameInTypeRequiredMeaningExampleSource
result_record_idbodyUUIDRequired.Stable Results identifier for this settled outcome.018f4b4e-9c7a-7d3d-8b2f-2f673a000101source
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
result_kindbodyTEXT enumRequired.What kind of durable outcome this row represents.self_pacedsource
score_percentbodyNUMERIC(5,2)Nullable.Normalized percent score used for mastery and report calculations.93.2source
canonical_responsebodyJSONBNullable.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.{"RESPONSE":"B"}source
is_correctbodyBOOLEANNullable.Canonical correctness flag for item-level evidence.truesource
source_adapter_idbodyTEXTRequired.Named adapter or scorer that wrote this row.adapter_qti_platformsource
modified_atbodyTIMESTAMPTZRequired.UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.2026-06-03T18:55:00Zsource

Result Records

GET /alpha/results/v1/students/{studentId}/results

Read one student's settled outcomes without joining MAP, OneRoster, QTI, or external producer tables in the client.

#
Scopes
results:read
Data dictionary
alpha.result_record

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/results?subject=math&asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "result_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
      "result_kind": "self_paced",
      "subject_id": "math",
      "canonical_term_id": "term_2025_26_spring",
      "score_percent": 93.2,
      "outcome_status": "fully_graded",
      "mastery_cutoff_met": true,
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-result-record",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-result-record",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdpathTEXTRequiredTimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
asOfDatequeryDATEOptional; defaults are endpoint-specific.Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state.2026-06-03source
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
result_record_idbodyUUIDRequired.Stable Results identifier for this settled outcome.018f4b4e-9c7a-7d3d-8b2f-2f673a000101source
result_kindbodyTEXT enumRequired.What kind of durable outcome this row represents.self_pacedsource
subject_idbodyTEXT enumRequired.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.mathsource
canonical_term_idbodyTEXTNullable; required when the outcome belongs to a term.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
score_percentbodyNUMERIC(5,2)Nullable.Normalized percent score used for mastery and report calculations.93.2source
outcome_statusbodyTEXT enumRequired.Plain status for whether the outcome is submitted, graded, exempt, missing, or voided.fully_gradedsource
mastery_cutoff_metbodyBOOLEANNullable.Whether this result met the active mastery cutoff policy when the row was settled.truesource

Student Knowledge

Student Knowledge

GET /alpha/results/v1/students/{studentId}/kc-state

Return the Results-owned mastery overlay for one student. The client reads mastery state; it does not recompute evidence or decay.

#
Scopes
results:read
Data dictionary
alpha.student_kc_state

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/kc-state?subject=math&asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "student_id": "stu_timeback_10017",
      "kc_id": "kc_linear_equations",
      "subject_id": "math",
      "initial_mastery": 0.94,
      "current_retention": 0.88,
      "durable_mastery": 0.81,
      "fluency_state": "building_speed",
      "next_due_at": "2026-03-28T14:30:00Z",
      "evidence_count": 8,
      "retention_model_ref": "retention_fire_v2026_01",
      "effective_at": "2026-03-21T14:31:00Z",
      "is_time_locatable": true,
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-student-kc-state",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-student-kc-state",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdpathTEXTRequiredTimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
asOfDatequeryDATEOptional; defaults are endpoint-specific.Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state.2026-06-03source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
kc_idbodyTEXTRequired.Curriculum KC id for this student overlay row.kc_linear_equationssource
subject_idbodyTEXT enumRequired.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.mathsource
initial_masterybodyNUMERIC(6,5)Required.Acquisition-state value after initial learning and acquisition-gate evidence for this KC.0.94source
current_retentionbodyNUMERIC(6,5)Required.Current retained-knowledge value after the active retention model and time decay.0.88source
durable_masterybodyNUMERIC(6,5)Required.Longer-run mastery belief after repeated evidence and retention checks.0.81source
fluency_statebodyTEXT enumRequired.Accuracy/speed/automaticity state for practice on an already-acquired KC.building_speedsource
next_due_atbodyTIMESTAMPTZNullable.When the surface believes this KC next needs review or practice.2026-03-28T14:30:00Zsource
evidence_countbodyINTEGERRequired.Number of evidence rows currently contributing to this state.8source
retention_model_refbodyTEXTRequired.Policy/config id for the retention model used.retention_fire_v2026_01source
effective_atbodyTIMESTAMPTZRequired.When this materialized state became effective.2026-03-21T14:31:00Zsource
is_time_locatablebodyBOOLEANRequired on effective-dated rows.Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads.truesource

Student Knowledge

GET /alpha/results/v1/students/{studentId}/track-state

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

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/track-state?subject=math&asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "student_id": "stu_timeback_10017",
      "subject_id": "math",
      "track_id": "track_common_core_math_k12",
      "current_track_level_id": "track_level_math_7",
      "current_segment_id": "segment_linear_equations",
      "placement_evidence": {
        "source": "grade_level_gate",
        "result_record_id": "018f..."
      },
      "status": "active",
      "switched_to_track_id": "track_sat_math_600_800",
      "effective_at": "2026-03-21T14:31:00Z",
      "is_time_locatable": true,
      "modified_at": "2026-06-03T18:55:00Z",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-student-track-state",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-student-track-state",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdpathTEXTRequiredTimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
asOfDatequeryDATEOptional; defaults are endpoint-specific.Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state.2026-06-03source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
subject_idbodyTEXT enumRequired.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.mathsource
track_idbodyTEXTRequired.Curriculum track this state belongs to.track_common_core_math_k12source
current_track_level_idbodyTEXTRequired for active rows.Curriculum track level where the student currently sits.track_level_math_7source
current_segment_idbodyTEXTNullable.Current Curriculum track_level_segment inside the track level.segment_linear_equationssource
placement_evidencebodyJSONBRequired.Structured references to diagnostic, MAP, gate, or migration evidence that placed the student here.{"source":"grade_level_gate","result_record_id":"018f..."}source
statusbodyTEXT enumRequired.Lifecycle state of the student's relationship to this track.activesource
switched_to_track_idbodyTEXTNullable; required when status is switched.Curriculum track the student moved to when this row is closed by a switch.track_sat_math_600_800source
effective_atbodyTIMESTAMPTZRequired.UTC timestamp when this track-state version became effective.2026-03-21T14:31:00Zsource
is_time_locatablebodyBOOLEANRequired on effective-dated rows.Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads.truesource
modified_atbodyTIMESTAMPTZRequired.UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.2026-06-03T18:55:00Zsource

Student Knowledge

GET /alpha/results/v1/students/{studentId}/course-progress

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

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/course-progress?subject=math&courseId=course_math_grade_7_main&asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "student_id": "stu_timeback_10017",
      "subject_id": "math",
      "course_id": "course_math_grade_7_main",
      "course_title": "Math Grade 7 Main Sequence",
      "grade_level": 7,
      "as_of_date": "2026-06-03",
      "xp_remaining": 120,
      "total_xp": 400,
      "percent_complete": 70,
      "progress_source_kind": "app_reported_percent",
      "evidence_kind": "caliper_course_progress_percent",
      "source_analytics_rollup_refs": [
        "alpha.analytics_completion_rollup:completion_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9"
      ],
      "source_curriculum_refs": [
        "alpha.curriculum_course:course_math_grade_7_main"
      ],
      "policy_ref": "alpha.policy.results.progress.v2026-06-16",
      "null_reason": "source_missing",
      "computed_at": "2026-06-03T18:55:00Z",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-student-course-progress",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-student-course-progress",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdpathTEXTRequiredTimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
courseIdqueryTEXTRequired on course-transcript detail routes; optional filter on transcript lists.Platform3 course sourcedId used for Ed-Fi course transcript answers. It resolves through OneRoster/People & Orgs and never through a local Results course table.course_algebra_1source
asOfDatequeryDATEOptional; defaults are endpoint-specific.Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state.2026-06-03source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
subject_idbodyTEXT enumRequired.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.mathsource
course_idbodyTEXTRequired.Curriculum course id whose progress is being answered.course_math_grade_7_mainsource
course_titlebodyTEXTNullable display field.Course display title copied only as a display snapshot for this progress answer.Math Grade 7 Main Sequencesource
grade_levelbodyNUMERIC(5,2)Nullable.Working grade level associated with this course progress row.7source
as_of_datebodyDATERequired.Date the progress answer is valid for.2026-06-03source
xp_remainingbodyNUMERIC(14,3)Nullable when evidence is missing.Expected XP remaining in this course after applying the selected progress evidence.120source
total_xpbodyNUMERIC(14,3)Nullable when Curriculum denominator evidence is missing.Total expected XP for the course denominator.400source
percent_completebodyNUMERIC(7,3)Nullable when progress cannot be answered.Course percent complete shown to apps and reports.70source
progress_source_kindbodyTEXT enumRequired for populated rows.Which precedence branch produced the progress answer.app_reported_percentsource
evidence_kindbodyTEXT enumRequired for populated rows.More specific evidence family behind progress_source_kind.caliper_course_progress_percentsource
source_analytics_rollup_refsbodyJSONB arrayRequired; empty only when no Analytics evidence applies.Structured references to Analytics rollup rows used as evidence.["alpha.analytics_completion_rollup:completion_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9"]source
source_curriculum_refsbodyJSONB arrayRequired.Structured references to Curriculum course/expected-XP denominator evidence.["alpha.curriculum_course:course_math_grade_7_main"]source
policy_refbodyTEXTRequired.Named Results progress policy used for evidence precedence, denominator handling, and percent derivation.alpha.policy.results.progress.v2026-06-16source
null_reasonbodyTEXT enumNullable.Why progress fields are null or unknown.source_missingsource
computed_atbodyTIMESTAMPTZRequired.UTC time Results produced this progress answer.2026-06-03T18:55:00Zsource

Student Knowledge

GET /alpha/results/v1/students/{studentId}/grade-level-progress

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

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/grade-level-progress?subject=math&gradeLevel=7&asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "student_id": "stu_timeback_10017",
      "subject_id": "math",
      "grade_level": 7,
      "working_grade": 7.4,
      "as_of_date": "2026-06-03",
      "active_path_state": "in_main_sequence",
      "grade_level_xp_remaining": 160,
      "main_sequence_total_xp": 500,
      "percent_complete": 68,
      "elapsed_school_year_percent": 82,
      "pacing_status": "behind_pace",
      "source_course_progress_refs": [
        "alpha.student_course_progress:stu_timeback_10017|math|course_math_grade_7_main|2026-06-03"
      ],
      "source_analytics_rollup_refs": [
        "alpha.analytics_completion_rollup:completion_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9"
      ],
      "source_calendar_refs": [
        "alpha.school_calendar:school_north_valley:2026-06-03"
      ],
      "policy_ref": "alpha.policy.results.progress.v2026-06-16",
      "null_reason": "source_missing",
      "computed_at": "2026-06-03T18:55:00Z",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-student-grade-level-progress",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-student-grade-level-progress",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdpathTEXTRequiredTimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
gradeLevelqueryNUMERIC(4,1)Required on percentile/RIT translation reads and grade-level progress reads; optional on course-progress reads.Typed grade level used for percentile/RIT translation or for Results grade-level progress/pacing reads. It is never inferred from MAP/RIT/R90 grade-band percent.7source
asOfDatequeryDATEOptional; defaults are endpoint-specific.Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state.2026-06-03source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
subject_idbodyTEXT enumRequired.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.mathsource
grade_levelbodyNUMERIC(5,2)Required.Grade level whose main-sequence progress is being answered.7source
working_gradebodyNUMERIC(5,2)Nullable.Working grade input used to identify the active grade path.7.4source
as_of_datebodyDATERequired.Date the grade-level progress answer is valid for.2026-06-03source
active_path_statebodyTEXT enumRequired.Where the student is relative to the grade-level main sequence.in_main_sequencesource
grade_level_xp_remainingbodyNUMERIC(14,3)Nullable when evidence is missing.Active-path XP remaining for this grade-level answer.160source
main_sequence_total_xpbodyNUMERIC(14,3)Nullable when Curriculum denominator evidence is missing.Total expected XP for the grade's main-course sequence.500source
percent_completebodyNUMERIC(7,3)Nullable when progress cannot be answered.Grade-level percent complete over the main sequence denominator.68source
elapsed_school_year_percentbodyNUMERIC(7,3)Nullable when calendar evidence is missing.Percent of the relevant school-year calendar elapsed as of as_of_date.82source
pacing_statusbodyTEXT enumRequired.Pace of actual grade-level progress relative to elapsed school-year percent.behind_pacesource
source_course_progress_refsbodyJSONB arrayRequired.Structured references to course-progress rows aggregated into this grade answer.["alpha.student_course_progress:stu_timeback_10017|math|course_math_grade_7_main|2026-06-03"]source
source_analytics_rollup_refsbodyJSONB arrayRequired; empty only when no Analytics evidence applies.Structured references to Analytics rollup rows used by contributing course-progress rows.["alpha.analytics_completion_rollup:completion_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9"]source
source_calendar_refsbodyJSONB arrayRequired; empty only when pacing is unknown.Structured references to calendar/enrollment rows used for elapsed_school_year_percent.["alpha.school_calendar:school_north_valley:2026-06-03"]source
policy_refbodyTEXTRequired.Named Results progress policy used for active-path remaining XP, denominator choice, and pacing thresholds.alpha.policy.results.progress.v2026-06-16source
null_reasonbodyTEXT enumNullable.Why progress or pacing fields are null or unknown.source_missingsource
computed_atbodyTIMESTAMPTZRequired.UTC time Results produced this grade-level progress answer.2026-06-03T18:55:00Zsource

Student Knowledge

GET /alpha/results/v1/next-task

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
Data object
alpha.next_task
Data dictionary
alpha.next_task

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/next-task?studentId=stu_timeback_10017&subject=math&asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "student_id": "stu_timeback_10017",
  "subject_id": "math",
  "as_of_date": "2026-06-05",
  "task_type": "review",
  "task_ref_type": "course_component_member",
  "task_ref_id": "member_review_linear_equations",
  "reason": "retention_due",
  "due_at": "2026-06-05T15:00:00Z",
  "source_state_refs": [
    {
      "type": "student_kc_state",
      "kc_id": "kc_linear_equations",
      "effective_at": "2026-06-05T14:30:00Z"
    }
  ],
  "policy_version": "policy_2026_06_03",
  "null_reason": "missing_policy_config",
  "computed_at": "2026-06-05T14:31:00Z",
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-next-task",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdqueryTEXTRequiredTimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
asOfDatequeryDATEOptional; defaults are endpoint-specific.Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state.2026-06-03source
Response fields
NameInTypeRequiredMeaningExampleSource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
subject_idbodyTEXT enumRequired.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.mathsource
as_of_datebodyDATERequired.Point-in-time date for the next-task decision.2026-06-05source
task_typebodyTEXT enumRequired.Kind of task the surface selected.reviewsource
task_ref_typebodyTEXT enumRequired unless task_type is no_task.Type of object the selected task points at.course_component_membersource
task_ref_idbodyTEXTNullable; required unless task_type is no_task.Identifier of the task target named by task_ref_type.member_review_linear_equationssource
reasonbodyTEXT enumRequired.Why the surface selected this task.retention_duesource
due_atbodyTIMESTAMPTZNullable.When the selected task is due or should be shown.2026-06-05T15:00:00Zsource
source_state_refsbodyJSONBRequired.Structured references to KC state, track state, gate pass, and policy rows used for this decision.[{"type":"student_kc_state","kc_id":"kc_linear_equations","effective_at":"2026-06-05T14:30:00Z"}]source
policy_versionbodyTEXTRequired.Policy/config version used by next-task selection.policy_2026_06_03source
null_reasonbodyTEXT enumNullable; required when task_type is no_task.Why no task is available or why selection is blocked.missing_policy_configsource
computed_atbodyTIMESTAMPTZRequired.UTC timestamp when the surface produced this answer.2026-06-05T14:31:00Zsource

XP

XP

GET /alpha/results/v1/students/{studentId}/xp-ledger

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
Data object
alpha.xp_ledger
Data dictionary
alpha.xp_ledger

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/xp-ledger" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "xp_award_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
      "student_id": "stu_timeback_10017",
      "result_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
      "content_id": "content_factoring_gate_v3",
      "expected_xp_ref": {
        "content_id": "content_factoring_gate_v3",
        "expected_xp_version": "2026-06-01"
      },
      "awarded_xp": 42.5,
      "award_reason": "accuracy_award",
      "calculation_policy_ref": "xp_award_formula_v2026_06",
      "source_evidence_refs": [
        {
          "type": "result_record",
          "id": "018f..."
        },
        {
          "type": "event_summary",
          "id": "evt_sum_..."
        }
      ],
      "created_at": "2026-03-21T14:31:00Z",
      "reversal_of_xp_award_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a004000",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-xp-ledger",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-xp-ledger",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdpathTEXTRequiredTimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
Response fields
NameInTypeRequiredMeaningExampleSource
xp_award_idbodyUUIDRequired.Stable id for this XP ledger row.018f4b4e-9c7a-7d3d-8b2f-2f673a004001source
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
result_record_idbodyUUIDNullable; required for attempt-based awards.Settled result that triggered this XP award.018f4b4e-9c7a-7d3d-8b2f-2f673a000101source
content_idbodyTEXTNullable.Content item whose expected_xp was used.content_factoring_gate_v3source
expected_xp_refbodyJSONBRequired.Structured reference to the Content expected_xp source and version used in the calculation.{"content_id":"content_factoring_gate_v3","expected_xp_version":"2026-06-01"}source
awarded_xpbodyNUMERIC(10,2)Required.XP amount awarded by this ledger row; may be negative for penalties or reversals.42.5source
award_reasonbodyTEXT enumRequired.Why this XP row exists.accuracy_awardsource
calculation_policy_refbodyTEXTRequired.Policy/config version that calculated awarded_xp.xp_award_formula_v2026_06source
source_evidence_refsbodyJSONBRequired.Structured references to result, content, effort, anti-gaming, or correction evidence.[{"type":"result_record","id":"018f..."},{"type":"event_summary","id":"evt_sum_..."}]source
created_atbodyTIMESTAMPTZRequired.UTC timestamp when this ledger row was appended.2026-03-21T14:31:00Zsource
reversal_of_xp_award_idbodyUUIDNullable.Prior XP ledger row this row reverses or corrects.018f4b4e-9c7a-7d3d-8b2f-2f673a004000source

Content Effectiveness

Content Effectiveness

GET /alpha/results/v1/content-effectiveness

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

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/content-effectiveness?contentId=content_factoring_video&subject=math" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "content_id": "content_factoring_video",
      "content_version_id": "content_factoring_video_v4",
      "kc_id": "kc_factoring_quadratics",
      "subject_id": "math",
      "validated_by_count": 41,
      "failed_by_count": 9,
      "effectiveness_rate": 0.82,
      "evidence_count": 54,
      "policy_version": "content_effectiveness_v2026_06",
      "source_result_refs": {
        "evidence_set_id": "eff_factoring_v4_2026_06"
      },
      "last_recomputed_at": "2026-06-05T14:31:00Z",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-content-effectiveness",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-content-effectiveness",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
contentIdqueryTEXTOptionalContent item id to narrow the effectiveness rollup.content_factoring_video
kcIdqueryTEXTOptionalCurriculum KC id when the rollup should be KC-specific.kc_factoring_quadratics
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
content_idbodyTEXTRequired.Content item this effectiveness row describes.content_factoring_videosource
content_version_idbodyTEXTNullable primary key part.Exact Content version when effectiveness is version-specific.content_factoring_video_v4source
kc_idbodyTEXTNullable primary key part.Curriculum KC this effectiveness row concerns.kc_factoring_quadraticssource
subject_idbodyTEXT enumRequired.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.mathsource
validated_by_countbodyINTEGERRequired.Number of settled result evidence rows that validated this content under the active policy.41source
failed_by_countbodyINTEGERRequired.Number of settled result evidence rows that counted as failed evidence for this content under the active policy.9source
effectiveness_ratebodyNUMERIC(6,5)Nullable.validated_by_count divided by validated plus failed evidence under policy.0.82source
evidence_countbodyINTEGERRequired.Total result_content_evidence rows inspected for this rollup.54source
policy_versionbodyTEXTRequired.Policy/config version used to classify content evidence and compute the rate.content_effectiveness_v2026_06source
source_result_refsbodyJSONBRequired.Structured references to the result_content_evidence rows and rollup job that produced this answer.{"evidence_set_id":"eff_factoring_v4_2026_06"}source
last_recomputed_atbodyTIMESTAMPTZRequired.UTC timestamp when the surface last recomputed this row.2026-06-05T14:31:00Zsource

Academic Records

Academic Records

GET /alpha/results/v1/academic-records

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

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/academic-records?studentId=stu_timeback_10017&canonicalTermId=term_2025_26_spring" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "academic_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
      "student_id": "stu_timeback_10017",
      "school_sourced_id": "school_north_valley",
      "canonical_term_id": "term_2025_26_spring",
      "school_year": "2025-26",
      "session_attempted_credits": 3.5,
      "session_earned_credits": 3.5,
      "cumulative_earned_credits": 18.5,
      "gpa": 3.875,
      "canonical_state": "canonical",
      "modified_at": "2026-06-03T18:55:00Z",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-academic-record-view",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-academic-record-view",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdqueryTEXTRequired on student sub-collection routes.TimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
includeSourceEvidencequeryBOOLEANOptional; defaults to false.When true and authorized, transcript endpoints include source canonical_record ids, descriptor provenance, and soft-delete evidence. It never returns raw payload_json blobs or secrets.falsesource
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
academic_record_idbodyUUIDRequired.Stable Results id for the StudentAcademicRecord view row.018f4b4e-9c7a-7d3d-8b2f-2f673a003101source
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
school_sourced_idbodyTEXTRequired.Platform3 org/school sourcedId resolved from the Ed-Fi EducationOrganizationReference.school_north_valleysource
canonical_term_idbodyTEXTRequired for term-scoped rows.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
school_yearbodyTEXTRequired.Canonical school year for the academic record.2025-26source
session_attempted_creditsbodyNUMERIC(9,2)Nullable.Credits attempted during this academic session.3.5source
session_earned_creditsbodyNUMERIC(9,2)Nullable.Credits earned during this academic session.3.5source
cumulative_earned_creditsbodyNUMERIC(9,2)Nullable.Total earned credits in the cumulative academic record.18.5source
gpabodyNUMERIC(5,3)Nullable.Grade point average value from the academic record when the source includes a GPA object.3.875source
canonical_statebodyTEXT enumRequired.Canonical state of the source Ed-Fi record.canonicalsource
modified_atbodyTIMESTAMPTZRequired.UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.2026-06-03T18:55:00Zsource

Academic Records

GET /alpha/results/v1/course-transcripts

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

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/course-transcripts?studentId=stu_timeback_10017&courseId=course_algebra_1&canonicalTermId=term_2025_26_spring" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "course_transcript_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
      "student_id": "stu_timeback_10017",
      "academic_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a003101",
      "course_id": "course_algebra_1",
      "course_title": "Algebra I",
      "canonical_term_id": "term_2025_26_spring",
      "course_attempt_result": "Pass",
      "attempted_credits": 0.5,
      "earned_credits": 0.5,
      "credit_type": "Academic",
      "final_letter_grade": "A-",
      "final_numeric_grade": 91.5,
      "canonical_state": "canonical",
      "modified_at": "2026-06-03T18:55:00Z",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-course-transcript-view",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-course-transcript-view",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdqueryTEXTRequired on student sub-collection routes.TimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
courseIdqueryTEXTRequired on course-transcript detail routes; optional filter on transcript lists.Platform3 course sourcedId used for Ed-Fi course transcript answers. It resolves through OneRoster/People & Orgs and never through a local Results course table.course_algebra_1source
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
includeSourceEvidencequeryBOOLEANOptional; defaults to false.When true and authorized, transcript endpoints include source canonical_record ids, descriptor provenance, and soft-delete evidence. It never returns raw payload_json blobs or secrets.falsesource
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
course_transcript_idbodyUUIDRequired.Stable Results id for one CourseTranscript view row.018f4b4e-9c7a-7d3d-8b2f-2f673a003201source
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
academic_record_idbodyUUIDRequired.Academic record this course transcript belongs to.018f4b4e-9c7a-7d3d-8b2f-2f673a003101source
course_idbodyTEXTRequired.Platform3 course sourcedId for the course recorded on the transcript.course_algebra_1source
course_titlebodyTEXTNullable.Course title from Ed-Fi when present.Algebra Isource
canonical_term_idbodyTEXTRequired for term-scoped rows.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
course_attempt_resultbodyTEXT descriptor codeRequired.Governed Ed-Fi CourseAttemptResultDescriptor value for the student's course attempt.Passsource
attempted_creditsbodyNUMERIC(9,2)Nullable.Credits the student attempted for this course.0.5source
earned_creditsbodyNUMERIC(9,2)Nullable.Credits the student earned for this course.0.5source
credit_typebodyTEXT descriptor codeNullable.Governed descriptor for the kind/category of course credit when Ed-Fi supplies one.Academicsource
final_letter_gradebodyTEXTNullable.Final letter grade submitted for the course.A-source
final_numeric_gradebodyNUMERIC(9,2)Nullable.Final numeric grade submitted for the course.91.5source
canonical_statebodyTEXT enumRequired.Canonical state of the source Ed-Fi record.canonicalsource
modified_atbodyTIMESTAMPTZRequired.UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.2026-06-03T18:55:00Zsource

Academic Records

GET /alpha/results/v1/course-grades

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

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/course-grades?studentId=stu_timeback_10017&courseId=course_algebra_1&canonicalTermId=term_2025_26_spring" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "course_grade_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
      "student_id": "stu_timeback_10017",
      "section_id": "section_alg1_a",
      "grading_period_id": "gp_2025_26_q4",
      "grade_type": "Final",
      "letter_grade": "A-",
      "numeric_grade": 91.5,
      "current_grade_indicator": false,
      "current_grade_as_of_date": "2026-05-30",
      "gradebook_entry_id": "edfi_gbe_final_exam",
      "canonical_state": "canonical",
      "modified_at": "2026-06-03T18:55:00Z",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-course-grade-view",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-course-grade-view",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdqueryTEXTRequired on student sub-collection routes.TimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
courseIdqueryTEXTRequired on course-transcript detail routes; optional filter on transcript lists.Platform3 course sourcedId used for Ed-Fi course transcript answers. It resolves through OneRoster/People & Orgs and never through a local Results course table.course_algebra_1source
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
includeSourceEvidencequeryBOOLEANOptional; defaults to false.When true and authorized, transcript endpoints include source canonical_record ids, descriptor provenance, and soft-delete evidence. It never returns raw payload_json blobs or secrets.falsesource
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
course_grade_idbodyUUIDRequired.Stable Results id for one Ed-Fi Grade view row.018f4b4e-9c7a-7d3d-8b2f-2f673a003301source
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
section_idbodyTEXTRequired.Platform3 section/class sourcedId resolved from StudentSectionAssociationReference.section_alg1_asource
grading_period_idbodyTEXTRequired.Canonical grading period for the grade.gp_2025_26_q4source
grade_typebodyTEXT descriptor codeRequired.Governed Ed-Fi GradeTypeDescriptor value, such as final or grading period.Finalsource
letter_gradebodyTEXTNullable.Letter grade earned for the course or grading period.A-source
numeric_gradebodyNUMERIC(9,2)Nullable.Numeric grade earned for the course or grading period.91.5source
current_grade_indicatorbodyBOOLEANNullable.Whether this is an interim current grade rather than a final grade.falsesource
current_grade_as_of_datebodyDATENullable.As-of date for a current/interim grade.2026-05-30source
gradebook_entry_idbodyTEXTNullable.Ed-Fi gradebook entry identifier joined as evidence when the grade references one.edfi_gbe_final_examsource
canonical_statebodyTEXT enumRequired.Canonical state of the source Ed-Fi record.canonicalsource
modified_atbodyTIMESTAMPTZRequired.UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.2026-06-03T18:55:00Zsource

Academic Records

GET /alpha/results/v1/transcript-results

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

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/transcript-results?studentId=stu_timeback_10017&courseId=course_algebra_1&canonicalTermId=term_2025_26_spring&includeSourceEvidence=true" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "student_id": "stu_timeback_10017",
      "course_id": "course_algebra_1",
      "canonical_term_id": "term_2025_26_spring",
      "transcript_answer_kind": "course_transcript",
      "final_grade": "A-",
      "final_numeric_grade": 91.5,
      "earned_credits": 0.5,
      "attempted_credits": 0.5,
      "course_attempt_result": "Pass",
      "answer_precedence": 10,
      "source_evidence": {
        "resource": "CourseTranscript",
        "canonical_record_id": "018f..."
      },
      "modified_at": "2026-06-03T18:55:00Z",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-transcript-result-view",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-transcript-result-view",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdqueryTEXTRequired on student sub-collection routes.TimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
courseIdqueryTEXTRequired on course-transcript detail routes; optional filter on transcript lists.Platform3 course sourcedId used for Ed-Fi course transcript answers. It resolves through OneRoster/People & Orgs and never through a local Results course table.course_algebra_1source
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
includeSourceEvidencequeryBOOLEANOptional; defaults to false.When true and authorized, transcript endpoints include source canonical_record ids, descriptor provenance, and soft-delete evidence. It never returns raw payload_json blobs or secrets.falsesource
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
course_idbodyTEXTRequired for course-scoped answers.Platform3 course sourcedId for the transcript answer.course_algebra_1source
canonical_term_idbodyTEXTRequired for term-scoped rows.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
transcript_answer_kindbodyTEXT enumRequired.Source shape used for this normalized transcript answer.course_transcriptsource
final_gradebodyTEXTNullable.Final grade display value for the transcript answer.A-source
final_numeric_gradebodyNUMERIC(9,2)Nullable.Numeric final grade for the transcript answer when available.91.5source
earned_creditsbodyNUMERIC(9,2)Nullable.Credits earned for the course/term answer.0.5source
attempted_creditsbodyNUMERIC(9,2)Nullable.Credits attempted for the course/term answer.0.5source
course_attempt_resultbodyTEXT descriptor codeNullable.Governed Ed-Fi attempt-result descriptor selected for the transcript answer.Passsource
answer_precedencebodyINTEGERRequired.Surface-owned precedence used to choose among transcript sources.10source
source_evidencebodyJSONBReturned only when includeSourceEvidence=true and authorized.Structured source evidence: canonical_record ids, descriptor refs, source resource names, and soft-delete evidence.{"resource":"CourseTranscript","canonical_record_id":"018f..."}source
modified_atbodyTIMESTAMPTZRequired.UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.2026-06-03T18:55:00Zsource

MAP

MAP

GET /alpha/results/v1/students/{studentId}/map-scores

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
Data object
alpha.map_score
Data dictionary
alpha.map_score

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/map-scores?subject=math&canonicalTermId=term_2025_26_spring&normsSet=2025" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "map_score_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000701",
      "student_id": "stu_timeback_10017",
      "student_email": "alex.rivera@example.edu",
      "subject_id": "math",
      "canonical_term_id": "term_2025_26_spring",
      "norms_set": "2025",
      "rit": 238,
      "standard_error": 3.2,
      "percentile": 94,
      "achievement_quintile": "High",
      "modified_at": "2026-06-03T18:55:00Z",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-score",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-score",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdpathTEXTRequiredTimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
normsSetqueryTEXT enumRequired on norm-sensitive report views.Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set.2025source
sittingScopequeryTEXT enumOptional; defaults to test_of_record.Controls whether MAP reads return the selected test of record or all sittings.test_of_recordsource
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
map_score_idbodyUUIDRequired.Stable id for this public MAP score row.018f4b4e-9c7a-7d3d-8b2f-2f673a000701source
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
student_emailbodyCITEXTNullable joined read field.Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id.alex.rivera@example.edusource
subject_idbodyTEXT enumRequired.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.mathsource
canonical_term_idbodyTEXTRequired for term-scoped rows.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
norms_setbodyTEXT enumRequired for normed MAP rows.NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.2025source
ritbodyINTEGERNullable.Selected MAP RIT score.238source
standard_errorbodyNUMERIC(6,2)Nullable.MAP test standard error.3.2source
percentilebodyINTEGERNullable.MAP percentile for the selected norms set.94source
achievement_quintilebodyTEXTNullable.NWEA achievement quintile when available.Highsource
modified_atbodyTIMESTAMPTZRequired.UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.2026-06-03T18:55:00Zsource

MAP

GET /alpha/results/v1/students/{studentId}/current-map

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

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/current-map?subject=math&normsSet=2025" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "map_current_score_id": "map_10017_math_spring_current_2025",
      "student_id": "stu_timeback_10017",
      "student_email": "alex.rivera@example.edu",
      "subject_id": "math",
      "canonical_term_id": "term_2025_26_spring",
      "norms_set": "2025",
      "rit": 210,
      "percentile": 74,
      "growth_measure_yn": "Y",
      "current_map_reason": "latest_growth",
      "test_start_at": "2026-05-28T13:00:00Z",
      "policy_ref": "alpha.policy.results.current_map.v2026-06-17.latest-growth-first",
      "modified_at": "2026-06-03T18:55:00Z",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-current-score",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-current-score",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdpathTEXTRequiredTimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
normsSetqueryTEXT enumRequired on norm-sensitive report views.Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set.2025source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
map_current_score_idbodyTEXTRequired.Stable id for this current-MAP view row.map_10017_math_spring_current_2025source
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
student_emailbodyCITEXTNullable joined read field.Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id.alex.rivera@example.edusource
subject_idbodyTEXT enumRequired.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.mathsource
canonical_term_idbodyTEXTRequired for term-scoped rows.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
norms_setbodyTEXT enumRequired for normed MAP rows.NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.2025source
ritbodyINTEGERNullable.Selected current MAP RIT score.210source
percentilebodyINTEGERNullable.MAP percentile for the selected current MAP row and norms set.74source
growth_measure_ynbodyTEXT enumNullable.Whether the selected MAP row is a Growth MAP measurement.Ysource
current_map_reasonbodyTEXT enumRequired.Why this row is the current MAP context.latest_growthsource
test_start_atbodyTIMESTAMPTZNullable.Parsed timestamp for the selected current MAP sitting.2026-05-28T13:00:00Zsource
policy_refbodyTEXTRequired.Named current-MAP selection policy.alpha.policy.results.current_map.v2026-06-17.latest-growth-firstsource
modified_atbodyTIMESTAMPTZRequired.UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.2026-06-03T18:55:00Zsource

MAP

GET /alpha/results/v1/students/{studentId}/map-sittings

Return MAP sitting audit rows, including retakes and soft-deleted rows when sittingScope=all is authorized.

#
Scopes
results:read results:audit
Data dictionary
alpha.map_sitting

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/map-sittings?subject=math&sittingScope=all" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "map_sitting_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
      "student_id": "stu_timeback_10017",
      "subject_id": "math",
      "canonical_term_id": "term_2025_26_spring",
      "rit": 238,
      "test_start_at": "2026-05-04T14:00:00Z",
      "growth_measure_yn": "TRUE",
      "is_test_of_record": true,
      "test_of_record_reason": "highest_rit",
      "deleted_at": "2026-06-03T18:55:00Z",
      "delete_reason": "retake_superseded",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-sitting",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-sitting",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdpathTEXTRequiredTimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
normsSetqueryTEXT enumRequired on norm-sensitive report views.Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set.2025source
sittingScopequeryTEXT enumOptional; defaults to test_of_record.Controls whether MAP reads return the selected test of record or all sittings.test_of_recordsource
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
map_sitting_idbodyUUIDRequired.Stable id for one MAP sitting audit row.018f4b4e-9c7a-7d3d-8b2f-2f673a000801source
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
subject_idbodyTEXT enumRequired.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.mathsource
canonical_term_idbodyTEXTRequired for term-scoped rows.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
ritbodyINTEGERNullable.MAP RIT score for this sitting.238source
test_start_atbodyTIMESTAMPTZNullable.Parsed sitting start timestamp.2026-05-04T14:00:00Zsource
growth_measure_ynbodyTEXTNullable.NWEA GrowthMeasureYN flag retained for comparison and audit.TRUEsource
is_test_of_recordbodyBOOLEANRequired.Whether this sitting is the selected test_of_record.truesource
test_of_record_reasonbodyTEXT enumRequired.Reason this sitting was selected or excluded.highest_ritsource
deleted_atbodyTIMESTAMPTZNullable.Soft-delete timestamp. Null means active; non-null rows stay available for authorized audit reads and are excluded from ordinary current reports.2026-06-03T18:55:00Zsource
delete_reasonbodyTEXT enumNullable.Why a sitting was soft-deleted.retake_supersededsource

MAP

GET /alpha/results/v1/students/{studentId}/map-goal-strands

Return one clean row per goal strand instead of requiring the client to unpivot NWEA Goal1..Goal5 columns.

#
Scopes
results:read
Data dictionary
alpha.map_goal_strand

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/map-goal-strands?subject=reading&normsSet=2025" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "student_id": "stu_timeback_10017",
      "subject_id": "math",
      "canonical_term_id": "term_2025_26_spring",
      "goal_strand": "Algebraic Thinking",
      "strand_rit": 242,
      "strand_standard_error": 4.1,
      "overall_rit": 238,
      "goal_gap": 4,
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-goal-strand",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-goal-strand",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdpathTEXTRequiredTimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
normsSetqueryTEXT enumRequired on norm-sensitive report views.Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set.2025source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
subject_idbodyTEXT enumRequired.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.mathsource
canonical_term_idbodyTEXTRequired for term-scoped rows.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
goal_strandbodyTEXTRequired.Plain strand name from NWEA goal name.Algebraic Thinkingsource
strand_ritbodyINTEGERNullable.RIT score for this goal strand.242source
strand_standard_errorbodyNUMERIC(6,2)Nullable.Standard error for the strand RIT.4.1source
overall_ritbodyINTEGERNullable.Overall test RIT used to compute goal_gap.238source
goal_gapbodyINTEGERNullable.Surface-computed strand_rit minus overall_rit.4source

MAP

GET /alpha/results/v1/students/{studentId}/growth-windows

Return typed growth-window rows with Growth X and target status. The client never switches over NWEA growth column names.

#
Scopes
results:read

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/growth-windows?subject=math&growthWindow=fall_to_spring&normsSet=2025" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "student_id": "stu_timeback_10017",
      "subject_id": "math",
      "canonical_term_id": "term_2025_26_spring",
      "growth_window": "fall_to_spring",
      "norms_set": "2025",
      "observed_growth": 14,
      "projected_growth": 7,
      "growth_x": 2,
      "growth_x_target": 2,
      "on_track_for_growth_x_target": true,
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-growth-window",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-growth-window",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdpathTEXTRequiredTimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
growthWindowqueryTEXT enumRequired on growth-window reads when not implied by term pair.Typed growth window. Clients never switch over NWEA growth-column names.fall_to_springsource
normsSetqueryTEXT enumRequired on norm-sensitive report views.Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set.2025source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
subject_idbodyTEXT enumRequired.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.mathsource
canonical_term_idbodyTEXTRequired for term-scoped rows.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
growth_windowbodyTEXT enumRequired.Typed growth window.fall_to_springsource
norms_setbodyTEXT enumRequired for normed MAP rows.NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.2025source
observed_growthbodyNUMERIC(6,2)Nullable.NWEA observed growth for the window.14source
projected_growthbodyNUMERIC(6,2)Nullable.NWEA projected growth for the window under norms_set.7source
growth_xbodyNUMERIC(8,4)Nullable.Observed growth divided by projected growth.2source
growth_x_targetbodyNUMERIC(8,4)Required.Configured Growth X target for this row.2source
on_track_for_growth_x_targetbodyBOOLEANNullable.Whether current/projected evidence is on track for target Growth X.truesource

MAP

GET /alpha/results/v1/map-percentile-translations

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

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/map-percentile-translations?subject=math&gradeLevel=7.0&termSeason=spring&normsSet=2025&translationDirection=percentile_to_rit&inputPercentile=99" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "subject_id": "math",
      "grade_level": 7,
      "term_season": "spring",
      "norms_set": "2025",
      "translation_direction": "percentile_to_rit",
      "input_percentile": 99,
      "input_rit": 252,
      "output_rit": 252,
      "output_percentile": 99,
      "source_point_kind": "nwea_published",
      "calculator_version": "percentile_rit_2026_06",
      "null_reason": "missing_policy_config",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-percentile-translation",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-percentile-translation",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
gradeLevelqueryNUMERIC(4,1)Required on percentile/RIT translation reads and grade-level progress reads; optional on course-progress reads.Typed grade level used for percentile/RIT translation or for Results grade-level progress/pacing reads. It is never inferred from MAP/RIT/R90 grade-band percent.7source
termSeasonqueryTEXT enumRequired on percentile/RIT translation reads.MAP season used for percentile <-> RIT translation; clients do not parse this from term strings.springsource
normsSetqueryTEXT enumRequired on norm-sensitive report views.Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set.2025source
translationDirectionqueryTEXT enumRequired on percentile/RIT translation reads.Chooses percentile_to_rit or rit_to_percentile so one endpoint can serve both GOALS conversions.percentile_to_ritsource
inputPercentilequeryINTEGERRequired only when translationDirection=percentile_to_rit.Percentile to translate to RIT using the surface norms calculator.99source
inputRitqueryINTEGERRequired only when translationDirection=rit_to_percentile.RIT score to translate to percentile using the surface norms calculator.252source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
subject_idbodyTEXT enumRequired.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.mathsource
grade_levelbodyNUMERIC(4,1)Required.Grade level used for the norms translation.7source
term_seasonbodyTEXT enumRequired.MAP season used for the norms translation.springsource
norms_setbodyTEXT enumRequired for normed MAP rows.NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.2025source
translation_directionbodyTEXT enumRequired.Direction of the requested surface translation.percentile_to_ritsource
input_percentilebodyINTEGERNullable; required for percentile_to_rit.Requested percentile.99source
input_ritbodyINTEGERNullable; required for rit_to_percentile.Requested RIT score.252source
output_ritbodyINTEGERNullable; required for percentile_to_rit.Surface-returned RIT score for the requested percentile.252source
output_percentilebodyINTEGERNullable; required for rit_to_percentile.Surface-returned percentile for the requested RIT.99source
source_point_kindbodyTEXT enumRequired.Whether this translation point is published, interpolated, extrapolated, or policy-derived.nwea_publishedsource
calculator_versionbodyTEXTRequired.Version of the norms/calculator used.percentile_rit_2026_06source
null_reasonbodyTEXT enumNullable.Why a translation output is null.missing_policy_configsource

MAP

GET /alpha/results/v1/map-r90-norm-points

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

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/map-r90-norm-points?subject=math&gradeLevel=7.0&termSeason=spring&normsSet=2025" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "subject_id": "math",
      "grade_level": 7,
      "term_season": "spring",
      "norms_set": "2025",
      "rit50_grade": 7.1,
      "rit90_grade": 6.4,
      "r90_rit": 231,
      "source_point_kind": "alpha_extrapolated",
      "calculator_version": "rit_calc_2026_06",
      "status": "active",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-r90-norm-point",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-r90-norm-point",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
gradeLevelqueryNUMERIC(4,1)Required on percentile/RIT translation reads and grade-level progress reads; optional on course-progress reads.Typed grade level used for percentile/RIT translation or for Results grade-level progress/pacing reads. It is never inferred from MAP/RIT/R90 grade-band percent.7source
termSeasonqueryTEXT enumRequired on percentile/RIT translation reads.MAP season used for percentile <-> RIT translation; clients do not parse this from term strings.springsource
normsSetqueryTEXT enumRequired on norm-sensitive report views.Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set.2025source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
subject_idbodyTEXT enumRequired.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.mathsource
grade_levelbodyNUMERIC(4,1)Required.Grade level this R90 row describes.7source
term_seasonbodyTEXT enumRequired.MAP season for this R90 point.springsource
norms_setbodyTEXT enumRequired for normed MAP rows.NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.2025source
rit50_gradebodyNUMERIC(5,2)Nullable.RIT50 grade point reproduced from NWEA-published data where available.7.1source
rit90_gradebodyNUMERIC(5,2)Required.Legacy Results fixture RIT90/R90 grade point for this subject/grade/season/norms row.6.4source
r90_ritbodyINTEGERRequired.RIT value for the legacy R90 fixture point.231source
source_point_kindbodyTEXT enumRequired.Provenance class for the R90 point.alpha_extrapolatedsource
calculator_versionbodyTEXTRequired.Version of the legacy Results fixture calculator.rit_calc_2026_06source
statusbodyTEXT enumRequired.Lifecycle state of this R90 row.activesource

MAP

GET /alpha/results/v1/students/{studentId}/working-grade

Return the surface-owned current grade-equivalent level for a student and subject as of a date.

#
Scopes
results:read
Data dictionary
alpha.working_grade

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/working-grade?subject=math&asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "student_id": "stu_timeback_10017",
      "subject_id": "math",
      "as_of_date": "2026-06-03",
      "working_grade": 7.4,
      "input_kind": "mixed",
      "baseline_effective_grade": 6.8,
      "sy_start_working_grade": 7,
      "formula_version": "working_grade_v2026_06",
      "null_reason": "not_enough_history",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-working-grade",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-working-grade",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdpathTEXTRequiredTimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
asOfDatequeryDATEOptional; defaults are endpoint-specific.Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state.2026-06-03source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
subject_idbodyTEXT enumRequired.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.mathsource
as_of_datebodyDATERequired.Point-in-time date for the working-grade answer.2026-06-03source
working_gradebodyNUMERIC(5,2)Nullable.Surface-owned grade-equivalent level as of the date.7.4source
input_kindbodyTEXT enumRequired.Primary evidence family used to produce the value.mixedsource
baseline_effective_gradebodyNUMERIC(5,2)Nullable.Baseline MAP effective grade used by advancement.6.8source
sy_start_working_gradebodyNUMERIC(5,2)Nullable.Working grade at school-year start used by advancement.7source
formula_versionbodyTEXTRequired.Named formula/config version used.working_grade_v2026_06source
null_reasonbodyTEXT enumNullable.Why working_grade is null.not_enough_historysource

MAP

GET /alpha/results/v1/students/{studentId}/advancement

Return alpha.advancement, the surface-owned K-8 growth formula. Dashboards do not implement this formula.

#
Scopes
results:read
Data dictionary
alpha.advancement

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/advancement?subject=math&asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "student_id": "stu_timeback_10017",
      "subject_id": "math",
      "as_of_date": "2026-06-03",
      "current_working_grade": 7.4,
      "baseline_effective_grade": 6.8,
      "sy_start_working_grade": 7,
      "advancement_value": 0.4,
      "formula_version": "advancement_v2026_06",
      "null_reason": "not_enough_history",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-advancement",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-advancement",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdpathTEXTRequiredTimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
asOfDatequeryDATEOptional; defaults are endpoint-specific.Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state.2026-06-03source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
subject_idbodyTEXT enumRequired.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.mathsource
as_of_datebodyDATERequired.Point-in-time date for advancement.2026-06-03source
current_working_gradebodyNUMERIC(5,2)Nullable.Working grade now.7.4source
baseline_effective_gradebodyNUMERIC(5,2)Nullable.Baseline effective grade from MAP.6.8source
sy_start_working_gradebodyNUMERIC(5,2)Nullable.School-year-start working grade.7source
advancement_valuebodyNUMERIC(5,2)Nullable.Surface-owned advancement value from the formula.0.4source
formula_versionbodyTEXTRequired.Formula/config version used.advancement_v2026_06source
null_reasonbodyTEXT enumNullable.Why advancement_value is null.not_enough_historysource

Reports

Reports

GET /alpha/results/v1/students/{studentId}/report-card

Return durable, effective-dated report-card statements for a student.

#
Scopes
results:read

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/report-card?asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "report_card_entry_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
      "student_id": "stu_timeback_10017",
      "subject_id": "math",
      "reporting_period_id": "rp_2025_26_spring",
      "grade_value": "A-",
      "narrative": "Strong growth in equations; continue fractions practice.",
      "status": "final",
      "begin_date": "2026-05-30",
      "end_date": "2026-06-30",
      "is_time_locatable": true,
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-card-entry",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-card-entry",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdpathTEXTRequiredTimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
asOfDatequeryDATEOptional; defaults are endpoint-specific.Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state.2026-06-03source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
report_card_entry_idbodyUUIDRequired.Stable id for this report-card statement.018f4b4e-9c7a-7d3d-8b2f-2f673a000501source
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
subject_idbodyTEXT enumRequired.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.mathsource
reporting_period_idbodyTEXTRequired.Typed reporting period for this statement.rp_2025_26_springsource
grade_valuebodyTEXTNullable.Published grade or level shown on the report card.A-source
narrativebodyTEXTNullable.Optional teacher/system narrative shown on the report card.Strong growth in equations; continue fractions practice.source
statusbodyTEXT enumRequired.Lifecycle state of this report-card entry.finalsource
begin_datebodyDATENullable.First date this report-card statement is point-in-time valid.2026-05-30source
end_datebodyDATENullable.Last date this statement is valid; null means still active after begin_date.2026-06-30source
is_time_locatablebodyBOOLEANRequired on effective-dated rows.Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads.truesource

Reports

GET /alpha/results/v1/students/{studentId}/gate-passes

Return durable pass/fail/cooldown decisions for advancement gates.

#
Scopes
results:read
Data object
alpha.gate_pass
Data dictionary
alpha.gate_pass

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/gate-passes?subject=math&asOfDate=2026-06-03" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "gate_pass_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
      "student_id": "stu_timeback_10017",
      "gate_content_id": "content_alg_1_mastery_gate",
      "subject_id": "math",
      "gate_status": "passed",
      "next_eligible_at": "2026-03-24T14:30:00Z",
      "attempt_count": 2,
      "policy_version": "policy_2026_06_03",
      "is_time_locatable": true,
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-gate-pass",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-gate-pass",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdpathTEXTRequiredTimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
asOfDatequeryDATEOptional; defaults are endpoint-specific.Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state.2026-06-03source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
gate_pass_idbodyUUIDRequired.Stable id for this gate state row.018f4b4e-9c7a-7d3d-8b2f-2f673a000601source
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
gate_content_idbodyTEXTRequired.Content test or gate this pass concerns.content_alg_1_mastery_gatesource
subject_idbodyTEXT enumRequired.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.mathsource
gate_statusbodyTEXT enumRequired.Current durable gate state for this effective window.passedsource
next_eligible_atbodyTIMESTAMPTZNullable.UTC time a student may retake after cooldown.2026-03-24T14:30:00Zsource
attempt_countbodyINTEGERRequired.Number of settled attempts considered for this gate state.2source
policy_versionbodyTEXTRequired.Policy/config version for cutoff and cooldown rules.policy_2026_06_03source
is_time_locatablebodyBOOLEANRequired on effective-dated rows.Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads.truesource

Writes

Writes

POST /alpha/results/v1/imports

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
Data object
JSON response
Data dictionary
Results dictionary

cURL

curl -sS -X POST "$RESULTS_BASE_URL/alpha/results/v1/imports" \
  -H "Authorization: Bearer $RESULTS_TOKEN" \
  -H "Idempotency-Key: timeback-prod-results-2026-06-08T15" \
  -H "Content-Type: application/json" \
  --data '{"source_adapter_id":"adapter_timeback_migration","producer_batch_id":"timeback-prod-results-2026-06-08T15","sourceShape":"timeback_assessment_result","records":[{"studentId":"stu_timeback_10017","assessmentId":"factoring-gate","scorePercent":92.5}]}'

Example response

{
  "import_id": "import_timeback_prod_results_2026_06_08T15",
  "status": "accepted",
  "accepted_count": 1733,
  "materialized": {
    "result_record": 1733,
    "student_kc_state": 812,
    "xp_ledger": 1590
  },
  "source_evidence_ids": [
    "import_timeback_prod_results_2026_06_08T15_1"
  ],
  "reconciliation_url": "/alpha/results/v1/reports/closed-loop-reconciliation?studentId=stu_timeback_10017&metricKind=growth_x"
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
source_adapter_idbodyTEXTRequiredNamed 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.adapter_timeback_migrationsource
producer_batch_idbodyTEXTRequiredProducer'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.timeback-prod-results-2026-06-08T15source
sourceShapebodyTEXT enumRequiredNames 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.timeback_assessment_resultsource
recordsbodyJSONB arrayRequiredArray 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.[{"studentId":"tb-prod-raw-student-981234","assessmentId":"factoring-gate","scorePercent":92.5}]source
dry_runbodyBOOLEANOptional; defaults to falseValidate 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.falsesource
Idempotency-Keyheaderopaque stringRequired on writesSame key + same method/path/body returns the original result; same key + different body returns results:idempotency_conflict.timeback-prod-results-2026-06-08T15source
Response fields
NameInTypeRequiredMeaningExampleSource
import_idbodyTEXTReturned on successStable id for this accepted import or dry run.import_timeback_prod_results_2026_06_08T15source
statusbodyTEXT enumReturned on successImport result state.acceptedsource
accepted_countbodyINTEGERReturned on successNumber of source rows accepted and materialized when dry_run=false.1733source
materializedbodyJSONB objectReturned on successCounts and ids of readable rows now visible through Results public objects.{"result_record":1733,"student_kc_state":812,"xp_ledger":1590}source
source_evidence_idsbodyJSONB arrayReturned on successSource evidence rows written for audit and reconciliation.["import_timeback_prod_results_2026_06_08T15_1"]source
reconciliation_urlbodyTEXT URLReturned on successTyped one-call check for this import. May include studentId for a single-student cutover check./alpha/results/v1/reports/closed-loop-reconciliation?studentId=stu_timeback_10017&metricKind=growth_xsource

Writes

GET /alpha/results/v1/imports/{importId}

Read import status, adapter evidence, and canonical result ids created by the import.

#
Scopes
results:adapter

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/imports/018f4b4e-9c7a-7d3d-8b2f-2f673a000300" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "source_evidence_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
  "source_adapter_id": "adapter_nwea_map",
  "producer_result_id": "1110000001",
  "raw_payload_hash": "sha256:2d3f6b4e8c1a0f9b",
  "canonical_payload_hash": "sha256:bd21c73f0e9a",
  "result_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
  "imported_at": "2026-06-03T18:55:00Z",
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-result-source-evidence",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
importIdpathUUIDRequiredThe import id returned by POST /imports.018f4b4e-9c7a-7d3d-8b2f-2f673a000300
Response fields
NameInTypeRequiredMeaningExampleSource
source_evidence_idbodyUUIDRequired.Stable id for one source-evidence row.018f4b4e-9c7a-7d3d-8b2f-2f673a000201source
source_adapter_idbodyTEXTRequired.Adapter that supplied this evidence.adapter_nwea_mapsource
producer_result_idbodyTEXTNullable.Producer-specific result id, when supplied.1110000001source
raw_payload_hashbodyTEXTNullable.Hash of the source payload or row content for idempotency and audit.sha256:2d3f6b4e8c1a0f9bsource
canonical_payload_hashbodyTEXTNullable.Hash of the normalized canonical payload written into Results.sha256:bd21c73f0e9asource
result_record_idbodyUUIDNullable.Result record this evidence supports; nullable while evidence is quarantined or awaiting reconciliation.018f4b4e-9c7a-7d3d-8b2f-2f673a000101source
imported_atbodyTIMESTAMPTZRequired.UTC timestamp when the surface accepted this evidence.2026-06-03T18:55:00Zsource

Writes

POST /alpha/results/v1/result-records

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
Data dictionary
alpha.result_record

cURL

curl -sS -X POST "$RESULTS_BASE_URL/alpha/results/v1/result-records" \
  -H "Authorization: Bearer $RESULTS_TOKEN" \
  -H "Idempotency-Key: result-adapter_qti_platform-quiz-42" \
  -H "Content-Type: application/json" \
  --data '{"student_id":"stu_timeback_10017","result_kind":"self_paced","subject_id":"math","score_percent":93.2,"source_adapter_id":"adapter_qti_platform","producer_result_id":"quiz-42"}'

Example response

{
  "result_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
  "student_id": "stu_timeback_10017",
  "result_kind": "self_paced",
  "score_percent": 93.2,
  "source_adapter_id": "adapter_qti_platform",
  "producer_result_id": "cb_2026_ap_calc_7712",
  "modified_at": "2026-06-03T18:55:00Z",
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-result-record",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
Idempotency-Keyheaderopaque stringRequired on writesSame key + same method/path/body returns the original result; same key + different body returns results:idempotency_conflict.result-adapter_qti_platform-quiz-42source
Request body fields
NameInTypeRequiredMeaningExampleSource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
result_kindbodyTEXT enumRequired.What kind of durable outcome this row represents.self_pacedsource
subject_idbodyTEXT enumRequired.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.mathsource
canonical_term_idbodyTEXTNullable; required when the outcome belongs to a term.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
score_percentbodyNUMERIC(5,2)Nullable.Normalized percent score used for mastery and report calculations.93.2source
source_adapter_idbodyTEXTRequired.Named adapter or scorer that wrote this row.adapter_qti_platformsource
producer_result_idbodyTEXTNullable.External producer's durable id for the source outcome.cb_2026_ap_calc_7712source
canonical_responsebodyJSONBNullable.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.{"RESPONSE":"B"}source
is_correctbodyBOOLEANNullable.Canonical correctness flag for item-level evidence.truesource
Response fields
NameInTypeRequiredMeaningExampleSource
result_record_idbodyUUIDRequired.Stable Results identifier for this settled outcome.018f4b4e-9c7a-7d3d-8b2f-2f673a000101source
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
result_kindbodyTEXT enumRequired.What kind of durable outcome this row represents.self_pacedsource
score_percentbodyNUMERIC(5,2)Nullable.Normalized percent score used for mastery and report calculations.93.2source
source_adapter_idbodyTEXTRequired.Named adapter or scorer that wrote this row.adapter_qti_platformsource
producer_result_idbodyTEXTNullable.External producer's durable id for the source outcome.cb_2026_ap_calc_7712source
modified_atbodyTIMESTAMPTZRequired.UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.2026-06-03T18:55:00Zsource

Writes

PATCH /alpha/results/v1/result-records/{resultRecordId}

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
Data dictionary
alpha.result_record

cURL

curl -sS -X PATCH "$RESULTS_BASE_URL/alpha/results/v1/result-records/018f4b4e-9c7a-7d3d-8b2f-2f673a000101" \
  -H "Authorization: Bearer $RESULTS_TOKEN" \
  -H 'If-Match: "res-018f4b4e-v2"' \
  -H "Idempotency-Key: result-correction-018f4b4e-v3" \
  -H "Content-Type: application/json" \
  --data '{"correction_reason":"scorer correction","score_percent":94.0}'

Example response

{
  "result_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
  "score_percent": 93.2,
  "superseded_by_result_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000102",
  "modified_at": "2026-06-03T18:55:00Z",
  "deleted_at": "2026-06-03T18:55:00Z",
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-result-record",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
resultRecordIdpathUUIDRequiredThe result to correct.018f4b4e-9c7a-7d3d-8b2f-2f673a000101
correction_reasonbodyTEXTRequiredHuman-readable audit reason.scorer correction
score_percentbodyNUMERICOptionalCorrected score percentage.94.0
If-MatchheaderETagRequiredETag from the prior read. Detail reads and correction responses expose ETag to browser callers through Access-Control-Expose-Headers."res-018f4b4e-v2"source
Idempotency-Keyheaderopaque stringRequired on writesSame key + same method/path/body returns the original result; same key + different body returns results:idempotency_conflict.result-correction-018f4b4e-v3source
Response fields
NameInTypeRequiredMeaningExampleSource
result_record_idbodyUUIDRequired.Stable Results identifier for this settled outcome.018f4b4e-9c7a-7d3d-8b2f-2f673a000101source
score_percentbodyNUMERIC(5,2)Nullable.Normalized percent score used for mastery and report calculations.93.2source
superseded_by_result_record_idbodyUUIDNullable.Later result row that replaced this row.018f4b4e-9c7a-7d3d-8b2f-2f673a000102source
modified_atbodyTIMESTAMPTZRequired.UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.2026-06-03T18:55:00Zsource
deleted_atbodyTIMESTAMPTZNullable.Soft-delete timestamp. Null means active; non-null rows stay available for authorized audit reads and are excluded from ordinary current reports.2026-06-03T18:55:00Zsource

Report Views

Report Views

GET /alpha/results/v1/reports/map-quadrants

Return quadrant rows with Growth X and achievement already computed by the surface.

#
Scopes
results:read

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/map-quadrants?subject=math&normsSet=2025&growthWindow=fall_to_spring" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "student_id": "stu_timeback_10017",
      "student_email": "alex.rivera@example.edu",
      "subject_id": "math",
      "canonical_term_id": "term_2025_26_spring",
      "growth_window": "fall_to_spring",
      "norms_set": "2025",
      "rit": 238,
      "growth_x": 2,
      "quadrant": "high_growth_high_achievement",
      "intervention_flag": false,
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-map-quadrants",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-map-quadrants",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
growthWindowqueryTEXT enumRequired on growth-window reads when not implied by term pair.Typed growth window. Clients never switch over NWEA growth-column names.fall_to_springsource
normsSetqueryTEXT enumRequired on norm-sensitive report views.Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set.2025source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
student_emailbodyCITEXTNullable joined read field.Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id.alex.rivera@example.edusource
subject_idbodyTEXT enumRequired.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.mathsource
canonical_term_idbodyTEXTRequired for term-scoped rows.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
growth_windowbodyTEXT enumRequired.Typed growth window used for the Growth X value in this quadrant row.fall_to_springsource
norms_setbodyTEXT enumRequired for normed MAP rows.NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.2025source
ritbodyINTEGERNullable.Selected test-of-record RIT for the report row.238source
growth_xbodyNUMERIC(8,4)Nullable.Surface-owned Growth X for the selected window.2source
quadrantbodyTEXT enumNullable.Report quadrant under active threshold policy.high_growth_high_achievementsource
intervention_flagbodyBOOLEANRequired.Whether this row meets policy for intervention or celebration workflow.falsesource

Report Views

GET /alpha/results/v1/reports/retake-audit

Return retake and test-of-record audit rows without asking clients to dedupe MAP sittings.

#
Scopes
results:read

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/retake-audit?subject=math&normsSet=2025&growthWindow=fall_to_spring" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "student_id": "stu_timeback_10017",
      "subject_id": "math",
      "canonical_term_id": "term_2025_26_spring",
      "sitting_count": 3,
      "highest_rit_sitting_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000801",
      "deleted_sitting_count": 1,
      "selection_explanation": "Selected highest valid RIT; later lower retake remains audit evidence.",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-retake-audit",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-retake-audit",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
growthWindowqueryTEXT enumRequired on growth-window reads when not implied by term pair.Typed growth window. Clients never switch over NWEA growth-column names.fall_to_springsource
normsSetqueryTEXT enumRequired on norm-sensitive report views.Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set.2025source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
subject_idbodyTEXT enumRequired.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.mathsource
canonical_term_idbodyTEXTRequired for term-scoped rows.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
sitting_countbodyINTEGERRequired.Number of all-sittings rows in the group.3source
highest_rit_sitting_idbodyUUIDNullable.MAP sitting selected as test_of_record.018f4b4e-9c7a-7d3d-8b2f-2f673a000801source
deleted_sitting_countbodyINTEGERRequired.Number of soft-deleted sittings in the group.1source
selection_explanationbodyTEXTRequired.Plain explanation of why the selected sitting is test_of_record.Selected highest valid RIT; later lower retake remains audit evidence.source

Report Views

GET /alpha/results/v1/reports/growth-over-time

Return the longitudinal Growth X series ordered by term.

#
Scopes
results:read

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/growth-over-time?subject=math&normsSet=2025&growthWindow=fall_to_spring" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "student_id": "stu_timeback_10017",
      "student_email": "alex.rivera@example.edu",
      "subject_id": "math",
      "term_order": 6,
      "canonical_term_id": "term_2025_26_spring",
      "norms_set": "2025",
      "rit": 238,
      "observed_growth": 14,
      "growth_x": 2,
      "timeback_era": "timeback",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-growth-over-time",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-growth-over-time",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
growthWindowqueryTEXT enumRequired on growth-window reads when not implied by term pair.Typed growth window. Clients never switch over NWEA growth-column names.fall_to_springsource
normsSetqueryTEXT enumRequired on norm-sensitive report views.Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set.2025source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
student_emailbodyCITEXTNullable joined read field.Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id.alex.rivera@example.edusource
subject_idbodyTEXT enumRequired.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.mathsource
term_orderbodyINTEGERRequired.Surface-owned chronological order.6source
canonical_term_idbodyTEXTRequired for term-scoped rows.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
norms_setbodyTEXT enumRequired for normed MAP rows.NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.2025source
ritbodyINTEGERNullable.RIT at this timeline point.238source
observed_growthbodyNUMERIC(6,2)Nullable.Observed growth for this segment.14source
growth_xbodyNUMERIC(8,4)Nullable.Growth X for this segment.2source
timeback_erabodyTEXT enumRequired.Pre-TimeBack vs TimeBack classification.timebacksource

Report Views

GET /alpha/results/v1/reports/norms-isolation

Return the same score under one explicit norms set so clients can compare 2020 and 2025 by changing one parameter.

#
Scopes
results:read

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/norms-isolation?subject=math&normsSet=2025&growthWindow=fall_to_spring" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "student_id": "stu_timeback_10017",
      "subject_id": "math",
      "canonical_term_id": "term_2025_26_spring",
      "norms_set": "2025",
      "rit": 238,
      "percentile": 94,
      "effective_grade": 6.4,
      "growth_x": 2,
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-norms-isolation",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-norms-isolation",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
growthWindowqueryTEXT enumRequired on growth-window reads when not implied by term pair.Typed growth window. Clients never switch over NWEA growth-column names.fall_to_springsource
normsSetqueryTEXT enumRequired on norm-sensitive report views.Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set.2025source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
subject_idbodyTEXT enumRequired.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.mathsource
canonical_term_idbodyTEXTRequired for term-scoped rows.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
norms_setbodyTEXT enumRequired for normed MAP rows.NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.2025source
ritbodyINTEGERNullable.RIT held constant while norms-dependent fields change.238source
percentilebodyINTEGERNullable.Percentile under norms_set.94source
effective_gradebodyNUMERIC(5,2)Nullable.Effective grade under norms_set/calculator config.6.4source
growth_xbodyNUMERIC(8,4)Nullable.Growth X under norms_set.2source

Report Views

GET /alpha/results/v1/reports/growth-breakdown

Return surface-owned growth components for a student/subject/term/window row.

#
Scopes
results:read

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/growth-breakdown?subject=math&normsSet=2025&growthWindow=fall_to_spring" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "student_id": "stu_timeback_10017",
      "subject_id": "math",
      "canonical_term_id": "term_2025_26_spring",
      "growth_window": "fall_to_spring",
      "norms_set": "2025",
      "observed_growth": 14,
      "projected_growth": 7,
      "growth_x": 2,
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-growth-breakdown",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-growth-breakdown",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
growthWindowqueryTEXT enumRequired on growth-window reads when not implied by term pair.Typed growth window. Clients never switch over NWEA growth-column names.fall_to_springsource
normsSetqueryTEXT enumRequired on norm-sensitive report views.Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set.2025source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
subject_idbodyTEXT enumRequired.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.mathsource
canonical_term_idbodyTEXTRequired for term-scoped rows.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
growth_windowbodyTEXT enumRequired.Typed growth window.fall_to_springsource
norms_setbodyTEXT enumRequired for normed MAP rows.NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.2025source
observed_growthbodyNUMERIC(6,2)Nullable.Observed growth points.14source
projected_growthbodyNUMERIC(6,2)Nullable.Projected growth points.7source
growth_xbodyNUMERIC(8,4)Nullable.Observed / projected growth.2source

Report Views

GET /alpha/results/v1/reports/group-growth-x

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

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/group-growth-x?groupDimension=school_level&groupKey=MS&subject=math&canonicalTermId=term_2025_26_spring&growthWindow=fall_to_spring&normsSet=2025" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "group_dimension": "school_level",
      "group_key": "MS",
      "subject_id": "math",
      "canonical_term_id": "term_2025_26_spring",
      "norms_set": "2025",
      "growth_window": "fall_to_spring",
      "student_count": 47,
      "excluded_student_count": 3,
      "average_growth_x": 2.124,
      "growth_x_target": 2,
      "students_at_or_above_target_count": 29,
      "policy_version": "growth_x_group_v2026_06",
      "computed_at": "2026-06-05T14:31:00Z",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-group-growth-x",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-group-growth-x",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
groupDimensionqueryTEXT enumRequired on group Growth X report reads.Cohort dimension used by alpha.report_group_growth_x.school_levelsource
groupKeyqueryTEXTRequired on group Growth X report reads.Value of the selected groupDimension, such as MS for school_level or 1-2_years for tenure_bucket.MSsource
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
growthWindowqueryTEXT enumRequired on growth-window reads when not implied by term pair.Typed growth window. Clients never switch over NWEA growth-column names.fall_to_springsource
normsSetqueryTEXT enumRequired on norm-sensitive report views.Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set.2025source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
group_dimensionbodyTEXT enumRequired.Cohort dimension used for the group row.school_levelsource
group_keybodyTEXTRequired.Value of the selected group_dimension.MSsource
subject_idbodyTEXT enumRequired.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.mathsource
canonical_term_idbodyTEXTRequired for term-scoped rows.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
norms_setbodyTEXT enumRequired for normed MAP rows.NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.2025source
growth_windowbodyTEXT enumRequired.Typed growth window used for the group Growth X answer.fall_to_springsource
student_countbodyINTEGERRequired.Number of students with an eligible individual Growth X ratio in this group.47source
excluded_student_countbodyINTEGERRequired.Number of otherwise in-scope students excluded because their individual Growth X ratio is null.3source
average_growth_xbodyNUMERIC(8,4)Nullable.Average of each eligible student's individual growth_x ratio.2.124source
growth_x_targetbodyNUMERIC(8,4)Required.Configured target used to interpret the group answer.2source
students_at_or_above_target_countbodyINTEGERRequired.Eligible students whose individual Growth X meets or exceeds target.29source
policy_versionbodyTEXTRequired.Policy/config version used for group eligibility and target.growth_x_group_v2026_06source
computed_atbodyTIMESTAMPTZRequired.UTC timestamp when the surface produced this group row.2026-06-05T14:31:00Zsource

Report Views

GET /alpha/results/v1/reports/student-progress-animation

Return animation-ready frame rows. The client renders frames; it does not compute grade movement.

#
Scopes
results:read

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/student-progress-animation?subject=math&normsSet=2025&growthWindow=fall_to_spring" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "student_id": "stu_timeback_10017",
      "subject_id": "math",
      "frame_index": 12,
      "frame_date": "2026-06-03",
      "working_grade": 7.4,
      "effective_grade": 6.4,
      "growth_x": 2,
      "levels_above_99": 1.6,
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-student-progress-animation",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-student-progress-animation",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
growthWindowqueryTEXT enumRequired on growth-window reads when not implied by term pair.Typed growth window. Clients never switch over NWEA growth-column names.fall_to_springsource
normsSetqueryTEXT enumRequired on norm-sensitive report views.Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set.2025source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
subject_idbodyTEXT enumRequired.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.mathsource
frame_indexbodyINTEGERRequired.Ordered frame number.12source
frame_datebodyDATERequired.Date represented by the frame.2026-06-03source
working_gradebodyNUMERIC(5,2)Nullable.Working grade for this frame.7.4source
effective_gradebodyNUMERIC(5,2)Nullable.Effective grade for this frame when MAP input exists.6.4source
growth_xbodyNUMERIC(8,4)Nullable.Growth X visible at this frame.2source
levels_above_99bodyNUMERIC(6,2)Nullable.99-level value visible at this frame.1.6source

Report Views

GET /alpha/results/v1/reports/closed-loop-reconciliation

Return old-production-vs-Alpha comparison rows for RIT, Growth X, mastery state, and minutes keys.

#
Scopes
results:read

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/closed-loop-reconciliation?studentId=stu_timeback_10017&metricKind=growth_x&subject=math&canonicalTermId=term_2025_26_spring&normsSet=2025" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "metric_kind": "growth_x",
      "student_id": "stu_timeback_10017",
      "subject_id": "math",
      "canonical_term_id": "term_2025_26_spring",
      "kc_id": "kc_linear_equations",
      "activity_date": "2026-06-03",
      "reconcile_status": "match",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-closed-loop-reconciliation",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-closed-loop-reconciliation",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
studentIdqueryTEXTRequired on student sub-collection routes.TimeBack student id. Never use NWEA StudentID in public Alpha requests.stu_timeback_10017source
metricKindqueryTEXT enumOptional filter on closed-loop reconciliation.Typed reconciliation metric. Use this instead of separate report-specific endpoints for RIT, Growth X, HMG, KC state, or minutes cutover checks.growth_xsource
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
growthWindowqueryTEXT enumRequired on growth-window reads when not implied by term pair.Typed growth window. Clients never switch over NWEA growth-column names.fall_to_springsource
normsSetqueryTEXT enumRequired on norm-sensitive report views.Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set.2025source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
metric_kindbodyTEXT enumRequired.Metric being reconciled.growth_xsource
student_idbodyTEXTRequired.TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.stu_timeback_10017source
subject_idbodyTEXT enumRequired.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.mathsource
canonical_term_idbodyTEXTNullable; required for MAP/RIT/Growth X rows.Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.term_2025_26_springsource
kc_idbodyTEXTNullable; required for student_kc_state metric.Curriculum KC id for KC-state reconciliation.kc_linear_equationssource
activity_datebodyDATENullable; required for minutes metric.Date for Events minutes reconciliation.2026-06-03source
reconcile_statusbodyTEXT enumRequired.Whether old and Alpha answers match for this key.matchsource

Report Views

GET /alpha/results/v1/reports/answer-key

Return surface-owned answer keys used by the future skill pack to prove it asks the surface correctly.

#
Scopes
results:read

cURL

curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/answer-key?subject=math&normsSet=2025&growthWindow=fall_to_spring" \
  -H "Authorization: Bearer $RESULTS_TOKEN"

Example response

{
  "object": "list",
  "data": [
    {
      "example_id": "map_quadrants_2025_norms_demo",
      "report_id": "map_quadrants",
      "norms_set": "2025",
      "expected_result_hash": "sha256:bc932e2b",
      "expected_row_count": 42,
      "verified_at": "2026-06-03T18:55:00Z",
      "links": {
        "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-answer-key",
        "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
      }
    }
  ],
  "nextCursor": null,
  "hasMore": false,
  "links": {
    "dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-answer-key",
    "architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
    "customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
  }
}
Request parameters and headers
NameInTypeRequiredMeaningExampleSource
subjectqueryTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.mathsource
canonicalTermIdqueryTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.term_2025_26_springsource
growthWindowqueryTEXT enumRequired on growth-window reads when not implied by term pair.Typed growth window. Clients never switch over NWEA growth-column names.fall_to_springsource
normsSetqueryTEXT enumRequired on norm-sensitive report views.Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set.2025source
modifiedSincequeryTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.2026-06-03T18:55:00Zsource
Response fields
NameInTypeRequiredMeaningExampleSource
example_idbodyTEXTRequired.Stable id of the worked example.map_quadrants_2025_norms_demosource
report_idbodyTEXT enumRequired.Report view the example exercises.map_quadrantssource
norms_setbodyTEXT enumRequired for normed MAP rows.NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.2025source
expected_result_hashbodyTEXTRequired.Hash of the canonical response used by skill-pack self-checks.sha256:bc932e2bsource
expected_row_countbodyINTEGERRequired.Number of rows the surface should return for the example.42source
verified_atbodyTIMESTAMPTZRequired.UTC time the surface last verified the answer key.2026-06-03T18:55:00Zsource

Object reference

Data objects and report read models

This section mirrors the data dictionary at API-doc depth. It gives implementers enough type, key, lifecycle, field, and provenance detail to build a client without leaving this page, while the data dictionary remains the authoritative field reference.

alpha.result_record Settled outcome

One durable, settled statement about how a specific student did on a work item, test, gate, or external assessment.

Data dictionary
Kind
Public UNION view
Primary key
(tenant_id, result_record_id)
Change
RENAME + EXTEND

Lifecycle. Created by a OneRoster import, platform scorer, QTI scorer, MAP adapter, or external producer adapter. Updated only through versioned writes; superseded or deleted rows remain audit evidence.

Relationships. Belongs to one student. May belong to one gradebook item. May point to one Content item or test family. Has many KC evidence rows and source evidence rows.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
result_record_idUUID
Required.
PostgreSQL UUID.
Stable Results identifier for this settled outcome.
Constraints: Unique within tenant. Generated by the surface or deterministically mapped during migration.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000101RENAME + EXTEND
ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
student_emailCITEXT
Nullable joined read field.
Case-insensitive text within documented constraints.
Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id.
Constraints: Nullable because not every authorized read returns email. Case-insensitive email format when present. Must never be used as the sole reconciliation key.
No closed enumalex.rivera@example.eduRENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
source_sourced_idTEXT
Nullable.
Text within documented constraints.
Original OneRoster results.sourcedId when this row aliases a section gradebook result.
Constraints: 1 to 255 printable characters when present. Required only for OneRoster pass-through rows.
No closed enumresult-alex-unit-1-quizRENAME + EXTEND
ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary
result_kindTEXT enum
Required.
One documented enum value.
What kind of durable outcome this row represents.
Constraints: Must be one documented value. Public POST /alpha/results/v1/result-records accepts only self_paced, external_assessment, learning_app_outcome, legacy_assessment, and question_result. Adapter-owned kinds map, mastery_gate, mastery_visibility, and gradebook are written only through POST /alpha/results/v1/imports. Determines which relationship fields are required.
self_paced - Public via POST /alpha/results/v1/result-records: a platform-native or QTI-backed self-paced outcome outside a traditional section.
external_assessment - Public via POST /alpha/results/v1/result-records: a non-MAP external assessment outcome normalized by a trusted scorer.
learning_app_outcome - Public via POST /alpha/results/v1/result-records: a durable scored outcome from a registered learning application.
legacy_assessment - Public via POST /alpha/results/v1/result-records: a settled legacy assessment outcome that is not MAP and not a mastery gate.
question_result - Public via POST /alpha/results/v1/result-records: an item-level result carrying question response/correctness evidence.
map - Adapter-owned via POST /alpha/results/v1/imports: a MAP score normalized from source-shaped NWEA rows.
mastery_gate - Adapter-owned via POST /alpha/results/v1/imports: a mastery-gate test/check result that can feed gate pass, HMG, working grade, and track-state derivation.
mastery_visibility - Adapter-owned via POST /alpha/results/v1/imports: a raw TimeBack mastery-visibility row used as fallback student-knowledge evidence, not HMG when actual gate tests exist.
gradebook - Adapter-owned via POST /alpha/results/v1/imports: a section gradebook result normalized from OneRoster/legacy source-shaped data.
self_pacedRENAME + EXTEND
ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary
outcome_statusTEXT enum
Required.
One documented enum value.
Plain status for whether the outcome is submitted, graded, exempt, missing, or voided.
Constraints: Must be one documented value. OneRoster scoreStatus values are folded here for gradebook outcomes.
not_submitted - Expected work has not been submitted.
submitted - Work was submitted but may not be fully graded.
partially_graded - Some scoring exists but the outcome is not final.
fully_graded - The outcome is settled enough for reports and mastery evidence.
exempt - The student is exempt and the row should not count as missing or failed.
missing - The source has explicitly marked expected work missing.
voided - The row is retained for audit but excluded from normal reports.
fully_gradedRENAME + EXTEND
ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary
source_kindTEXT enum
Required.
One documented enum value.
Source family that produced the outcome.
Constraints: Must be one documented source kind. External producers also require source_adapter_id.
oneroster - OneRoster gradebook import or API write.
qti - QTI-backed platform scorer or self-paced assessment.
nwea - NWEA MAP ingest or real-time result observation.
college_board - College Board or AP Classroom adapter.
barrons - Barron's adapter.
princeton_review - Princeton Review adapter.
platform_native - A TimeBack-native scorer or migration repair adapter.
qtiRENAME + EXTEND
ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary
gradebook_item_idTEXT
Nullable; required for gradebook results.
Text within documented constraints.
Plain Alpha id for the gradebook item this outcome answers.
Constraints: When result_kind is gradebook, must reference alpha.gradebook_item. May be null for MAP, self-paced, or external outcomes that do not belong to a section gradebook item.
No closed enumgb_unit_1_quizRENAME
ritd-002-gradebook-result-boundary
content_idTEXT
Nullable.
Text within documented constraints.
Content item, test, question, or lesson the outcome came from when the result is content-backed.
Constraints: Must reference Content when present. Do not use this for report-card rows without content evidence.
No closed enumcontent_factoring_gate_v3RESTRICT
ritd-016-content-effectiveness-derived-read
test_family_idTEXT
Nullable.
Text within documented constraints.
Stable family id for external or platform tests whose versions change over time.
Constraints: Required for external assessment adapters when a platform test family exists. Must not be parsed from a producer display name.
No closed enumap_calc_ab_practiceRENAME + EXTEND
ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
canonical_term_idTEXT
Nullable; required when the outcome belongs to a term.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
occurred_onDATE
Required.
ISO 8601 calendar date.
Calendar date the outcome became true for the student.
Constraints: Use ISO 8601 date. Must not be derived from a display term when a typed timestamp exists.
No closed enum2026-03-21RENAME + EXTEND
ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary
scoreNUMERIC
Nullable.
Decimal number within documented constraints.
Numeric score in the effective score scale, when the source has one.
Constraints: Must fit the effective score scale. When present for gradebook outcomes, effective_score_scale_id is required.
No closed enum47RENAME + EXTEND
ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary
score_percentNUMERIC(5,2)
Nullable.
0.00 through 100.00
Normalized percent score used for mastery and report calculations.
Constraints: 0 through 100 inclusive. Policy converts to pass/mastery through alpha.policy.* values.
No closed enum93.20RENAME + EXTEND
ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary
text_scoreTEXT
Nullable.
Text within documented constraints.
Non-numeric score value, such as a rubric or letter value.
Constraints: 0 to 255 visible characters. Must align to the effective score scale when one is present.
No closed enumARENAME + EXTEND
ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary
effective_score_scale_idTEXT
Nullable; required when score/text_score needs a scale.
Text within documented constraints.
The exact score scale chosen for this result before persistence.
Constraints: Must resolve to exactly one same-tenant score scale. Ambiguous or missing scale resolution rejects the write.
No closed enumscale_percent_0_100RENAME + RESTRICT
ritd-002-gradebook-result-boundary
mastery_cutoff_metBOOLEAN
Nullable.
true or false.
Whether this result met the active mastery cutoff policy when the row was settled.
Constraints: Null when no mastery policy applies. Computed by the surface using alpha.policy.mastery_cutoff, not client math.
No closed enumtrueEXTEND + RESTRICT
ritd-005-policy-config
canonical_responseJSONB
Nullable.
JSON value matching documented schema.
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.
Constraints: Must be JSON object or array allowed by the QTI answer schema. Required for QTI-backed item evidence. For raw mastery-gate rows with no parseable grade token, import_diagnostics.mastery_skipped_reason explains that the row was accepted but excluded from mastery ledger, HMG, working grade, and track state.
No closed enum{"RESPONSE":"B"}RENAME + EXTEND
ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary
is_correctBOOLEAN
Nullable.
true or false.
Canonical correctness flag for item-level evidence.
Constraints: Null when the result is not item-level or correctness is not applicable. Must be set when a QTI adapter emits canonical_response for a dichotomous item.
No closed enumtrueRENAME + EXTEND
ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary
source_adapter_idTEXT
Required.
Text within documented constraints.
Named adapter or scorer that wrote this row.
Constraints: Must reference alpha.source_adapter. Direct free-form external producer rows are invalid.
No closed enumadapter_qti_platformRENAME + EXTEND
ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary
producer_result_idTEXT
Nullable.
Text within documented constraints.
External producer's durable id for the source outcome.
Constraints: Required for external producers that supply ids. Not globally unique without source_adapter_id and tenant_id.
No closed enumcb_2026_ap_calc_7712RENAME + EXTEND
ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary
superseded_by_result_record_idUUID
Nullable.
PostgreSQL UUID.
Later result row that replaced this row.
Constraints: Must reference alpha.result_record in the same tenant when present. Used for corrections and migration reconciliation.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000102RENAME + EXTEND
ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary
modified_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.
Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-020-axis-query-model
deleted_atTIMESTAMPTZ
Nullable.
UTC timestamp.
Soft-delete timestamp. Null means active; non-null rows stay available for authorized audit reads and are excluded from ordinary current reports.
Constraints: Never hard-delete audit-significant Results rows. Non-null values must be UTC. Legal erasure flows are separate privacy workflows.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-028-axis-privacy-retention ritd-000-alpha-storage-model

alpha.gradebook_item Assignment or gradebook column

The assignment, activity, assessment, or gradebook column that can produce one or more result records.

Data dictionary
Kind
SQL view
Primary key
(tenant_id, gradebook_item_id)
Change
RENAME

Lifecycle. Created from OneRoster lineItems or Alpha authoring. Result records point here; the item is not the student's attempt and is not a report-card rollup.

Relationships. Can have many result records. Can have one default score scale binding. References a section/class, category, academic session, and school when backed by OneRoster.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
gradebook_item_idTEXT
Required.
Text within documented constraints.
Plain Alpha id for the gradebook item; aliases OneRoster lineItems.sourcedId.
Constraints: 1 to 255 printable characters. Unique within tenant.
No closed enumgb_unit_1_quizRENAME
ritd-002-gradebook-result-boundary
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
source_sourced_idTEXT
Nullable.
Text within documented constraints.
Original OneRoster lineItems.sourcedId when the item came from OneRoster.
Constraints: 1 to 255 printable characters when present. Must stay stable across OneRoster imports.
No closed enumlineitem-unit-1-quizRENAME
ritd-002-gradebook-result-boundary
titleTEXT
Required.
Text within documented constraints.
Teacher-readable title of the gradebook item.
Constraints: 1 to 255 visible characters. Must not contain credentials or private comments.
No closed enumUnit 1 algebra readiness quizRENAME
ritd-002-gradebook-result-boundary
descriptionTEXT
Nullable.
Text within documented constraints.
Short explanation of the gradebook item for teachers, students, or reports.
Constraints: 0 to 1000 visible characters. Must not be the only place a typed relationship or policy lives.
No closed enumChecks readiness for linear-equation work.RENAME
ritd-002-gradebook-result-boundary
assign_dateDATE
Required for OneRoster-backed items.
ISO 8601 calendar date.
Date the item was assigned.
Constraints: ISO 8601 date. Required for OneRoster lineItems.
No closed enum2026-08-15RENAME
ritd-002-gradebook-result-boundary
due_dateDATE
Required for OneRoster-backed items.
ISO 8601 calendar date.
Date work is due.
Constraints: ISO 8601 date. Must be on or after assign_date when both are present.
No closed enum2026-08-22RENAME
ritd-002-gradebook-result-boundary
class_idTEXT
Nullable.
Text within documented constraints.
Class/section that owns this item when the item is section-backed.
Constraints: Must reference People & Orgs class in the same tenant when present.
No closed enumclass-algebra-1-aRENAME
ritd-002-gradebook-result-boundary
category_idTEXT
Nullable.
Text within documented constraints.
Gradebook category such as quiz, homework, or test.
Constraints: Must reference a governed gradebook category when present.
No closed enumquizRENAME
ritd-002-gradebook-result-boundary
academic_session_idTEXT
Required for section gradebook items.
Text within documented constraints.
Academic session/term for this item.
Constraints: Must reference the canonical academic session. Clients use canonical_term_id on reports, not display names.
No closed enumterm_2025_26_fallRENAME
ritd-002-gradebook-result-boundary
school_idTEXT
Required for section gradebook items.
Text within documented constraints.
School org that owns the item.
Constraints: Must reference People & Orgs school org in the same tenant.
No closed enumschool_north_valleyRENAME
ritd-002-gradebook-result-boundary
result_value_minNUMERIC
Nullable.
Decimal number within documented constraints.
Lowest numeric score allowed for result records on this item.
Constraints: Must be <= result_value_max when both are present.
No closed enum0RENAME
ritd-002-gradebook-result-boundary
result_value_maxNUMERIC
Nullable.
Decimal number within documented constraints.
Highest numeric score allowed for result records on this item.
Constraints: Must be >= result_value_min when both are present.
No closed enum100RENAME
ritd-002-gradebook-result-boundary
default_score_scale_idTEXT
Nullable.
Text within documented constraints.
Default score scale attached to the item when no result-specific scale overrides it.
Constraints: Must reference alpha.score_scale when present. Exactly one effective scale is required before a scored result persists.
No closed enumscale_percent_0_100RENAME + RESTRICT
ritd-002-gradebook-result-boundary
modified_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.
Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-020-axis-query-model

alpha.score_scale How a score is interpreted

The explicit score interpretation used by gradebook items and result records so score math is validated before persistence.

Data dictionary
Kind
SQL view
Primary key
(tenant_id, score_scale_id)
Change
RENAME + RESTRICT

Lifecycle. Created from OneRoster scoreScales and score-scale join rows or Alpha authoring. Resolved at write time for scored result rows.

Relationships. Can be bound to gradebook items. Can be bound directly to result records. Can scope to org, course, or class.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
score_scale_idTEXT
Required.
Text within documented constraints.
Plain Alpha id for a score scale; aliases OneRoster scoreScales.sourcedId.
Constraints: 1 to 255 printable characters. Unique within tenant.
No closed enumscale_percent_0_100RENAME + RESTRICT
ritd-002-gradebook-result-boundary
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
titleTEXT
Required.
Text within documented constraints.
Human-readable score scale name.
Constraints: 1 to 255 visible characters.
No closed enumPercent 0 to 100RENAME + RESTRICT
ritd-002-gradebook-result-boundary
scale_typeTEXT enum
Required.
One documented enum value.
Plain score-scale type used by validation and display.
Constraints: Must be one documented value. Open OneRoster type strings fold to this governed set at write time.
percentage - A numeric percent scale.
points - A numeric point scale.
letter - A letter-grade mapping.
rubric - A rubric-level mapping.
pass_fail - A binary pass/fail mapping.
percentageRENAME + RESTRICT
ritd-002-gradebook-result-boundary
min_valueNUMERIC
Nullable.
Decimal number within documented constraints.
Lowest numeric score accepted by this scale.
Constraints: Required for percentage and points scales. Must be <= max_value.
No closed enum0RENAME + RESTRICT
ritd-002-gradebook-result-boundary
max_valueNUMERIC
Nullable.
Decimal number within documented constraints.
Highest numeric score accepted by this scale.
Constraints: Required for percentage and points scales. Must be >= min_value.
No closed enum100RENAME + RESTRICT
ritd-002-gradebook-result-boundary
value_mapJSONB
Required.
JSON value matching documented schema.
Structured mapping of labels, ranges, or source values to interpreted values.
Constraints: Must be a JSON object or array matching scale_type. Generated from OneRoster score_scale_value before Alpha reads.
No closed enum{"A":{"min":90,"max":100},"B":{"min":80,"max":89.99}}RENAME + RESTRICT
ritd-002-gradebook-result-boundary
scope_kindTEXT enum
Required.
One documented enum value.
Where this scale may apply.
Constraints: Must be one documented value. Scope ids must match the scope kind.
org - Scale applies to an organization.
course - Scale applies to a course.
class - Scale applies to a class.
gradebook_item - Scale applies to a gradebook item.
result_record - Scale applies only to one result record.
gradebook_itemRENAME + RESTRICT
ritd-002-gradebook-result-boundary
scope_idTEXT
Required.
Text within documented constraints.
Id of the org, course, class, gradebook item, or result record named by scope_kind.
Constraints: Must reference the same tenant object named by scope_kind.
No closed enumgb_unit_1_quizRENAME + RESTRICT
ritd-002-gradebook-result-boundary
activeBOOLEAN
Required.
true or false.
Whether this scale can be selected for new scored result writes.
Constraints: False scales remain visible for historical rows but cannot be used for new writes.
No closed enumtrueRENAME + RESTRICT
ritd-002-gradebook-result-boundary
modified_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.
Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-020-axis-query-model

alpha.source_adapter Named result producer

Registry of trusted scorers, importers, and migration adapters allowed to write canonical Results rows.

Data dictionary
Kind
Extension table
Primary key
(tenant_id, source_adapter_id)
Change
EXTEND

Lifecycle. Created by operators or implementation migrations before producer writes. Deactivated adapters cannot create new result records but remain referenced by history.

Relationships. Writes many result records. Has many result source evidence rows.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
source_adapter_idTEXT
Required.
Text within documented constraints.
Stable id for the named producer adapter.
Constraints: Unique within tenant. Use lowercase ASCII letters, digits, and underscores.
No closed enumadapter_nwea_mapEXTEND
ritd-003-canonical-result-shape ritd-000-alpha-storage-model
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
adapter_kindTEXT enum
Required.
One documented enum value.
Type of scorer, import adapter, or migration producer.
Constraints: Must be one documented value.
platform_scorer - Trusted platform scorer that writes canonical Results rows directly.
qti_scorer - QTI scorer that emits EAP5/EAP6 canonical response evidence.
nwea_map - NWEA MAP adapter using the NWEAMap surface contract.
college_board - College Board or AP Classroom result adapter.
barrons - Barron's result adapter.
princeton_review - Princeton Review result adapter.
migration - One-time migration adapter used for closed-loop reconciliation.
nwea_mapEXTEND
ritd-003-canonical-result-shape ritd-000-alpha-storage-model
display_nameTEXT
Required.
Text within documented constraints.
Human-readable adapter name shown in support and provenance views.
Constraints: 1 to 160 visible characters. Must not contain secrets.
No closed enumNWEA MAP adapterEXTEND
ritd-003-canonical-result-shape ritd-000-alpha-storage-model
writes_canonical_responseBOOLEAN
Required.
true or false.
Whether this adapter can write QTI canonical_response evidence.
Constraints: True adapters must satisfy the QTI EAP5/EAP6 response contract.
No closed enumfalseEXTEND
ritd-003-canonical-result-shape ritd-000-alpha-storage-model
activeBOOLEAN
Required.
true or false.
Whether new writes through this adapter are accepted.
Constraints: False rejects new writes but does not invalidate existing history.
No closed enumtrueEXTEND
ritd-003-canonical-result-shape ritd-000-alpha-storage-model
last_success_atTIMESTAMPTZ
Nullable.
UTC timestamp.
Most recent successful write or import by this adapter.
Constraints: UTC timestamp when present. Used for operator health, not student reporting.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-003-canonical-result-shape ritd-000-alpha-storage-model
modified_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.
Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-020-axis-query-model

alpha.result_source_evidence Where a result came from

Immutable evidence that lets migration, audit, and reconciliation trace each public result back to its producer row or payload.

Data dictionary
Kind
Extension table
Primary key
(tenant_id, source_evidence_id)
Change
EXTEND

Lifecycle. Written with or before a result_record. Never updated except to add supersession or soft-delete evidence.

Relationships. May belong to one result record. Belongs to one source adapter.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
source_evidence_idUUID
Required.
PostgreSQL UUID.
Stable id for one source-evidence row.
Constraints: Unique within tenant.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000201EXTEND
ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
result_record_idUUID
Nullable.
PostgreSQL UUID.
Result record this evidence supports; nullable while evidence is quarantined or awaiting reconciliation.
Constraints: Must reference alpha.result_record when present.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000101EXTEND
ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model
source_adapter_idTEXT
Required.
Text within documented constraints.
Adapter that supplied this evidence.
Constraints: Must reference alpha.source_adapter.
No closed enumadapter_nwea_mapEXTEND
ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model
producer_result_idTEXT
Nullable.
Text within documented constraints.
Producer-specific result id, when supplied.
Constraints: Not globally unique without tenant and adapter. 0 to 255 visible characters.
No closed enum1110000001EXTEND
ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model
upstream_tableTEXT
Required.
Text within documented constraints.
Approved upstream table, view, or producer collection this evidence came from.
Constraints: Must be a known upstream source such as oneroster.results or nweamap.assessment_result_projection.
No closed enumnweamap.assessment_result_projectionEXTEND
ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model
upstream_keyJSONB
Required.
JSON value matching documented schema.
Structured key values needed to find the source row again.
Constraints: Must be a JSON object. Relationships are represented as typed fields, not free-text tags.
No closed enum{"projection_id":"018f...","test_id":"1110000001"}EXTEND
ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model
raw_payload_hashTEXT
Nullable.
Text within documented constraints.
Hash of the source payload or row content for idempotency and audit.
Constraints: Use sha256-prefixed digest. Do not store raw secrets or credentials.
No closed enumsha256:2d3f6b4e8c1a0f9bEXTEND
ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model
canonical_payload_hashTEXT
Nullable.
Text within documented constraints.
Hash of the normalized canonical payload written into Results.
Constraints: Use sha256-prefixed digest. Changes when canonicalization changes.
No closed enumsha256:bd21c73f0e9aEXTEND
ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model
imported_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when the surface accepted this evidence.
Constraints: Must be UTC.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model

alpha.result_kc_evidence How one result affects one skill

Per-result link to a Curriculum KC with the score evidence used to update the student's knowledge state.

Data dictionary
Kind
SQL view
Primary key
(tenant_id, result_kc_evidence_id)
Change
RENAME + EXTEND

Lifecycle. Written by the surface when a result is settled and a scorer or adapter can map it to one or more curriculum KCs.

Relationships. Belongs to one result record. References one Curriculum KC. Feeds zero or one current student_kc_state update.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
result_kc_evidence_idUUID
Required.
PostgreSQL UUID.
Stable id for this result-to-KC evidence row.
Constraints: Unique within tenant.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000301EXTEND
ritd-004-student-knowledge-graph
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
result_record_idUUID
Required.
PostgreSQL UUID.
Result record that produced the KC evidence.
Constraints: Must reference alpha.result_record.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000101EXTEND
ritd-004-student-knowledge-graph
kc_idTEXT
Required.
Text within documented constraints.
Curriculum knowledge-component id this evidence applies to.
Constraints: Must reference Curriculum KC id. Must not be a tag or free text.
No closed enumkc_linear_equationsEXTEND
ritd-004-student-knowledge-graph
evidence_kindTEXT enum
Required.
One documented enum value.
Direction and shape of evidence this result gives for the KC.
Constraints: Must be one documented value.
correct - The result gives positive evidence for the KC.
incorrect - The result gives negative evidence for the KC.
partial - The result gives mixed or partial-credit evidence.
manual - An authorized human or migration workflow supplied the evidence.
external - A named external producer supplied normalized evidence.
correctEXTEND
ritd-004-student-knowledge-graph
score_percentNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
Percent score contribution for this KC only.
Constraints: 0 through 100 inclusive when present.
No closed enum100.00EXTEND
ritd-004-student-knowledge-graph
confidence_deltaNUMERIC(6,5)
Nullable.
Decimal number within documented constraints.
Surface-computed movement applied to confidence for this KC.
Constraints: -1 through 1. Computed by Results policy, never client math.
No closed enum0.12500EXTEND
ritd-004-student-knowledge-graph
evidence_weightNUMERIC(8,4)
Required.
Decimal number within documented constraints.
Relative weight this evidence carries in mastery calculations.
Constraints: Must be >= 0. Default comes from alpha.policy.* config.
No closed enum1.0000EXTEND + RESTRICT
ritd-005-policy-config
evidence_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when this evidence became true.
Constraints: Must be UTC. Usually copied from the result's occurred timestamp.
No closed enum2026-03-21T14:30:00ZEXTEND
ritd-004-student-knowledge-graph

alpha.result_content_evidence How a result evaluates content

Input evidence stream for alpha.content_effectiveness. Results stores the evidence link here and recomputes counters/rates in the content_effectiveness read model.

Data dictionary
Kind
Extension table
Primary key
(tenant_id, result_content_evidence_id)
Change
EXTEND + RESTRICT

Lifecycle. Written after a settled result references content the student used. Results reads this evidence and recomputes alpha.content_effectiveness after relevant result changes.

Relationships. Belongs to one result record. References one Content item and optionally one KC.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
result_content_evidence_idUUID
Required.
PostgreSQL UUID.
Stable id for this result-to-content evidence row.
Constraints: Unique within tenant.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000401RESTRICT
ritd-016-content-effectiveness-derived-read
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
result_record_idUUID
Required.
PostgreSQL UUID.
Result record that evaluates or references the content.
Constraints: Must reference alpha.result_record.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000101RESTRICT
ritd-016-content-effectiveness-derived-read
content_idTEXT
Required.
Text within documented constraints.
Content item the student used before or during the result.
Constraints: Must reference Content module. Real foreign-key relationship, never tag.
No closed enumcontent_factoring_videoRESTRICT
ritd-016-content-effectiveness-derived-read
content_version_idTEXT
Nullable.
Text within documented constraints.
Exact content version used when version evidence exists.
Constraints: Must reference Content version when present.
No closed enumcontent_factoring_video_v4RESTRICT
ritd-016-content-effectiveness-derived-read
kc_idTEXT
Nullable.
Text within documented constraints.
Curriculum KC this content evidence concerns.
Constraints: Must reference Curriculum KC when present.
No closed enumkc_factoring_quadraticsRESTRICT
ritd-016-content-effectiveness-derived-read
validation_outcomeTEXT enum
Required.
One documented enum value.
Whether the result is positive, negative, neutral, or non-applicable evidence for content effectiveness.
Constraints: Must be one documented value.
validated - The result is positive evidence that the content helped this student succeed.
failed - The result is negative evidence for this content/KC pairing.
neutral - The result is connected to the content but should not move effectiveness.
not_applicable - The content link is audit evidence only.
validatedRESTRICT
ritd-016-content-effectiveness-derived-read
evidence_weightNUMERIC(8,4)
Required.
Decimal number within documented constraints.
Weight Content should use when rolling this evidence up.
Constraints: Must be >= 0. Policy/config owned by the surface.
No closed enum1.0000EXTEND + RESTRICT
ritd-005-policy-config
used_content_atTIMESTAMPTZ
Nullable.
UTC timestamp.
Time the student interacted with the content when known from Events.
Constraints: UTC timestamp when present. Results does not store raw Events; it stores the durable evidence link.
No closed enum2026-03-21T14:12:00ZRESTRICT
ritd-016-content-effectiveness-derived-read

alpha.student_kc_state A student's current state on one skill

The per-student overlay on the shared curriculum graph: four named states for one student and one KC, plus due dates and evidence pointers.

Data dictionary
Kind
Extension table
Primary key
(tenant_id, student_id, kc_id, effective_at)
Change
EXTEND

Lifecycle. Materialized by the Results surface after result evidence changes or retention policy runs. Historical point-in-time reads use effective dates.

Relationships. Belongs to one student. References one Curriculum KC. References result evidence rows.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
kc_idTEXT
Required.
Text within documented constraints.
Curriculum KC id for this student overlay row.
Constraints: Must reference Curriculum KC. Not a tag.
No closed enumkc_linear_equationsEXTEND
ritd-004-student-knowledge-graph
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
initial_masteryNUMERIC(6,5)
Required.
0.00000 through 1.00000
Acquisition-state value after initial learning and acquisition-gate evidence for this KC.
Constraints: 0 through 1 inclusive. Must be stored separately from retention, durable mastery, and fluency. Consumers must not recompute this from raw evidence.
No closed enum0.94000EXTEND
ritd-004-student-knowledge-graph
current_retentionNUMERIC(6,5)
Required.
0.00000 through 1.00000
Current retained-knowledge value after the active retention model and time decay.
Constraints: 0 through 1 inclusive. This is the field review scheduling reads. Consumers see next_due_at rather than retention-model internals.
No closed enum0.88000EXTEND
ritd-004-student-knowledge-graph
durable_masteryNUMERIC(6,5)
Required.
0.00000 through 1.00000
Longer-run mastery belief after repeated evidence and retention checks.
Constraints: 0 through 1 inclusive. Must stay separate from current_retention so a recently refreshed KC and a durable KC do not collapse to one label.
No closed enum0.81000EXTEND
ritd-004-student-knowledge-graph
fluency_stateTEXT enum
Required.
One documented enum value.
Accuracy/speed/automaticity state for practice on an already-acquired KC.
Constraints: Must be one documented value. Practice and fluency never gate initial acquisition.
not_practiced - The student has not yet completed enough fluency practice for this KC.
building_accuracy - The student is practicing for reliable correctness before speed matters.
building_speed - The student is accurate enough and is now building automaticity.
fluent - The student meets the configured accuracy and speed threshold.
decayed - Earlier fluency evidence has decayed under the active retention policy.
blocked - The fluency state cannot update because evidence or policy config is missing.
building_speedEXTEND
ritd-004-student-knowledge-graph
next_due_atTIMESTAMPTZ
Nullable.
UTC timestamp.
When the surface believes this KC next needs review or practice.
Constraints: UTC timestamp when present. Null when no due task exists or null_reason explains why next task selection cannot use this row. Apps render due dates; they do not run the retention model.
No closed enum2026-03-28T14:30:00ZEXTEND
ritd-004-student-knowledge-graph
evidence_countINTEGER
Required.
Integer within documented constraints.
Number of evidence rows currently contributing to this state.
Constraints: Must be >= 0.
No closed enum8EXTEND
ritd-004-student-knowledge-graph
last_evidence_atTIMESTAMPTZ
Nullable.
UTC timestamp.
Most recent evidence timestamp feeding this state.
Constraints: UTC when present. Null only when evidence_count is 0.
No closed enum2026-03-21T14:30:00ZEXTEND
ritd-004-student-knowledge-graph
retention_model_refTEXT
Required.
Text within documented constraints.
Policy/config id for the retention model used.
Constraints: Must reference active or historical alpha.policy_config. No client retention or decay math.
No closed enumretention_fire_v2026_01EXTEND + RESTRICT
ritd-005-policy-config
policy_versionTEXT
Required.
Text within documented constraints.
Config version used for mastery and decay calculations.
Constraints: Must be stable and traceable to alpha.policy_config.
No closed enumpolicy_2026_06_03EXTEND + RESTRICT
ritd-005-policy-config
source_result_refsJSONB
Required.
JSON value matching documented schema.
Structured references to result and KC-evidence rows supporting the state.
Constraints: Must be a JSON array of typed references. Must not include raw event payloads, content bodies, or copied source score columns.
No closed enum[{"type":"result_kc_evidence","id":"018f..."}]EXTEND
ritd-004-student-knowledge-graph
effective_atTIMESTAMPTZ
Required.
UTC timestamp.
When this materialized state became effective.
Constraints: UTC timestamp. Part of point-in-time history.
No closed enum2026-03-21T14:31:00ZEXTEND
ritd-004-student-knowledge-graph
begin_dateDATE
Nullable.
ISO 8601 calendar date.
First date this state is locatable for point-in-time reads.
Constraints: Null means excluded from point-in-time reads.
No closed enum2026-03-21EXTEND
ritd-004-student-knowledge-graph
end_dateDATE
Nullable.
ISO 8601 calendar date.
Last date this state is active; null means still active after begin_date.
Constraints: Must be null or >= begin_date.
No closed enum2026-05-01EXTEND
ritd-004-student-knowledge-graph
is_time_locatableBOOLEAN
Required on effective-dated rows.
true or false.
Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads.
Constraints: begin_date NULL means false and the row is excluded from point-in-time computation. end_date NULL means active after begin_date. Both null means false.
No closed enumtrueRESTRICT
ritd-015-report-card-gates

alpha.student_track_state A student's position on a learning track

One student's current position on one Curriculum track, including current level, current segment, placement evidence, switch history, and effective dates.

Data dictionary
Kind
Extension table
Primary key
(tenant_id, student_id, track_id)
Change
EXTEND

Lifecycle. Created when a student is placed on a track. Advancing updates the state for that track; switching closes the old row with status switched and creates a new row for the new track.

Relationships. Belongs to one student. References one Curriculum track. References current Curriculum track_level and track_level_segment rows. May point to the track the student switched to.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
track_idTEXT
Required.
Text within documented constraints.
Curriculum track this state belongs to.
Constraints: Must reference Curriculum track. Primary key part with tenant_id and student_id. Track definition is referenced, never copied.
No closed enumtrack_common_core_math_k12EXTEND
ritd-032-student-track-state
current_track_level_idTEXT
Required for active rows.
Text within documented constraints.
Curriculum track level where the student currently sits.
Constraints: Must reference a level that belongs to track_id. Null only when status is completed, exited, or blocked with missing placement.
No closed enumtrack_level_math_7EXTEND
ritd-032-student-track-state
current_segment_idTEXT
Nullable.
Text within documented constraints.
Current Curriculum track_level_segment inside the track level.
Constraints: Must reference a segment under current_track_level_id when present. Null is allowed before segment placement or after completion.
No closed enumsegment_linear_equationsEXTEND
ritd-032-student-track-state
placement_evidenceJSONB
Required.
JSON value matching documented schema.
Structured references to diagnostic, MAP, gate, or migration evidence that placed the student here.
Constraints: Must be a JSON array/object of typed references. Must not copy MAP RIT, gate score, or transcript payload values; those stay in source rows.
No closed enum{"source":"grade_level_gate","result_record_id":"018f..."}EXTEND
ritd-032-student-track-state
statusTEXT enum
Required.
One documented enum value.
Lifecycle state of the student's relationship to this track.
Constraints: Must be one documented value. Only active rows drive current progress visualizations.
active - The student is currently placed on this track.
completed - The student has completed the track under the active exit policy.
paused - The student remains on the track but active work is temporarily paused.
switched - The student switched away from this track; switched_to_track_id points at the new track.
exited - The student left the track without switching to another tracked path.
blocked - The surface cannot place or advance the student because required evidence or policy config is missing.
activeEXTEND
ritd-032-student-track-state
switched_to_track_idTEXT
Nullable; required when status is switched.
Text within documented constraints.
Curriculum track the student moved to when this row is closed by a switch.
Constraints: Must reference Curriculum track when present. Must be null unless status is switched.
No closed enumtrack_sat_math_600_800EXTEND
ritd-032-student-track-state
effective_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when this track-state version became effective.
Constraints: Used for audit ordering and replay. Must be UTC.
No closed enum2026-03-21T14:31:00ZEXTEND
ritd-032-student-track-state
source_evidence_refsJSONB
Required.
JSON value matching documented schema.
Structured references to Results, MAP, gate, or transcript rows supporting this state.
Constraints: Must be a JSON array of typed references. Must not include raw event payloads or copied Curriculum definitions.
No closed enum[{"type":"map_score","id":"018f..."},{"type":"gate_pass","id":"018f..."}]EXTEND
ritd-032-student-track-state
begin_dateDATE
Nullable.
ISO 8601 calendar date.
First date this track state is point-in-time valid.
Constraints: Null means excluded from point-in-time reads.
No closed enum2026-03-21EXTEND
ritd-032-student-track-state
end_dateDATE
Nullable.
ISO 8601 calendar date.
Last date this track state is valid; null means still active after begin_date.
Constraints: Must be null or >= begin_date.
No closed enum2026-06-30EXTEND
ritd-032-student-track-state
is_time_locatableBOOLEAN
Required on effective-dated rows.
true or false.
Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads.
Constraints: begin_date NULL means false and the row is excluded from point-in-time computation. end_date NULL means active after begin_date. Both null means false.
No closed enumtrueRESTRICT
ritd-015-report-card-gates
modified_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.
Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-020-axis-query-model

alpha.next_task What the student should do next

One surface-owned scheduling answer for a student: a typed task reference plus why it was selected. Apps render this answer; they never choose it.

Data dictionary
Kind
Derived read
Primary key
(tenant_id, student_id, subject_id, as_of_date, policy_version)
Change
DERIVED READ

Lifecycle. Computed on read, or served from an optional surface cache invalidated by state, gate, Curriculum, or Policy changes.

Relationships. Belongs to one student. Reads KC state, track state, gate state, Curriculum candidate tasks, and Policy. Returns a typed reference to a course_component_member, Content item, external_course task, or no task.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
as_of_dateDATE
Required.
ISO 8601 calendar date.
Point-in-time date for the next-task decision.
Constraints: ISO 8601 date. Current reads are still explicit asOfDate decisions.
No closed enum2026-06-05RESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
task_typeTEXT enum
Required.
One documented enum value.
Kind of task the surface selected.
Constraints: Must be one documented value. Apps render the type; they do not reinterpret it.
new_lesson - Start a lesson on the current frontier KC.
review - Review the most-due retained KC.
practice - Practice a fluency or automaticity target.
gate_retry - Retry a mastery gate after remediation or cooldown.
remediation - Complete assigned remediation before a gate retry.
external_course_task - Work in a referenced external course under its evidence contract.
no_task - No task is available under the current policy and state.
reviewDERIVED READ
ritd-034-next-task-selection
task_ref_typeTEXT enum
Required unless task_type is no_task.
One documented enum value.
Type of object the selected task points at.
Constraints: Allowed values: course_component_member, course_component, content, external_course, gate, none. Must match task_ref_id shape.
course_component_member - A Curriculum member row that pairs target and renderer.
course_component - A Curriculum component such as a lesson, review, or practice node.
content - A Content item or test to render.
external_course - An external course task governed by an evidence contract.
gate - A mastery gate retry or equivalent form.
none - No task reference because task_type is no_task.
course_component_memberDERIVED READ
ritd-034-next-task-selection
task_ref_idTEXT
Nullable; required unless task_type is no_task.
Text within documented constraints.
Identifier of the task target named by task_ref_type.
Constraints: Must reference the same tenant object named by task_ref_type. Null only when task_type is no_task.
No closed enummember_review_linear_equationsDERIVED READ
ritd-034-next-task-selection
reasonTEXT enum
Required.
One documented enum value.
Why the surface selected this task.
Constraints: Must be one documented value. Reason is returned so apps can explain the assignment without recalculating it.
frontier_ready - Prerequisites are ready and the next frontier KC can be taught.
retention_due - current_retention has a due review before it decays further.
fluency_due - fluency_state needs practice before the KC is considered automatic.
gate_failed_never_learned - A failed gate classified misses as never learned.
gate_failed_forgot - A failed gate classified misses as forgot.
gate_failed_careless - A failed gate classified misses as careless.
cooldown_complete - A prior gate cooldown ended and retry is allowed.
blocked_missing_policy - Policy/config required to choose a task is missing.
blocked_missing_state - Student state required to choose a task is missing.
retention_dueDERIVED READ
ritd-034-next-task-selection
due_atTIMESTAMPTZ
Nullable.
UTC timestamp.
When the selected task is due or should be shown.
Constraints: UTC timestamp when present. Usually comes from student_kc_state.next_due_at or gate cooldown policy.
No closed enum2026-06-05T15:00:00ZDERIVED READ
ritd-034-next-task-selection
source_state_refsJSONB
Required.
JSON value matching documented schema.
Structured references to KC state, track state, gate pass, and policy rows used for this decision.
Constraints: Must be a JSON array of typed references. Must not contain raw mastery formulas, Curriculum definitions, or event payloads.
No closed enum[{"type":"student_kc_state","kc_id":"kc_linear_equations","effective_at":"2026-06-05T14:30:00Z"}]DERIVED READ
ritd-034-next-task-selection
policy_versionTEXT
Required.
Text within documented constraints.
Policy/config version used by next-task selection.
Constraints: Must reference active or historical alpha.policy_config. Changing policy creates a new answer version.
No closed enumpolicy_2026_06_03EXTEND + RESTRICT
ritd-005-policy-config
null_reasonTEXT enum
Nullable; required when task_type is no_task.
One documented enum value.
Why no task is available or why selection is blocked.
Constraints: Must be one documented value when present. Missing state/policy is a surface gap to reconcile, not an app fallback.
not_enough_history - Required prior-term or baseline input does not exist yet.
no_projected_growth - NWEA did not publish projected growth for the requested window.
no_valid_rit - The sitting has no valid RIT for calculation.
missing_policy_config - The surface lacks active policy/config for this calculation.
not_applicable - The field does not apply to this row by design.
missing_policy_configDERIVED READ
ritd-034-next-task-selection
computed_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when the surface produced this answer.
Constraints: Used for cache freshness and audit. Must be UTC.
No closed enum2026-06-05T14:31:00ZDERIVED READ
ritd-034-next-task-selection

alpha.xp_ledger Awarded XP history

Append-only source of truth for awarded XP. A row records one award, discount, penalty, or reversal with policy and evidence references.

Data dictionary
Kind
Immutable extension ledger
Primary key
(tenant_id, xp_award_id)
Change
EXTEND

Lifecycle. Written only by the Results surface after a settled attempt or correction. Corrections append reversal rows instead of updating or deleting prior awards.

Relationships. Belongs to one student. May reference one result_record. May reference one Content item and expected_xp source. May reverse one prior xp_ledger row.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
xp_award_idUUID
Required.
PostgreSQL UUID.
Stable id for this XP ledger row.
Constraints: Unique within tenant. Rows are append-only.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a004001EXTEND
ritd-033-xp-ledger
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
result_record_idUUID
Nullable; required for attempt-based awards.
PostgreSQL UUID.
Settled result that triggered this XP award.
Constraints: Must reference alpha.result_record when present. Required for accuracy, repeat-discount, and gaming-penalty awards tied to an attempt.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000101EXTEND
ritd-033-xp-ledger
content_idTEXT
Nullable.
Text within documented constraints.
Content item whose expected_xp was used.
Constraints: Must reference Content when present. Does not copy Content title/body/kind.
No closed enumcontent_factoring_gate_v3EXTEND
ritd-033-xp-ledger
expected_xp_refJSONB
Required.
JSON value matching documented schema.
Structured reference to the Content expected_xp source and version used in the calculation.
Constraints: Must be a JSON object of typed references. Must not copy a full Content row.
No closed enum{"content_id":"content_factoring_gate_v3","expected_xp_version":"2026-06-01"}EXTEND
ritd-033-xp-ledger
awarded_xpNUMERIC(10,2)
Required.
Decimal number within documented constraints.
XP amount awarded by this ledger row; may be negative for penalties or reversals.
Constraints: May be negative. Must be computed by Results under calculation_policy_ref. Do not sum deleted or draft rows because ledger rows are never draft/deleted.
No closed enum42.50EXTEND
ritd-033-xp-ledger
award_reasonTEXT enum
Required.
One documented enum value.
Why this XP row exists.
Constraints: Must be one documented value. Reason determines required evidence fields.
accuracy_award - Awarded from a verifying attempt's accuracy against expected_xp.
effort_award - Awarded from effort signals that are bound to a verifying attempt.
verified_passive_activity - Awarded for passive activity only after a verifying attempt.
repeat_attempt_discount - Award adjusted downward by the repeat-attempt policy.
gaming_penalty - Negative award from cheating or gaming evidence.
correction_reversal - Reversal row for a prior award correction.
accuracy_awardEXTEND
ritd-033-xp-ledger
calculation_policy_refTEXT
Required.
Text within documented constraints.
Policy/config version that calculated awarded_xp.
Constraints: Must reference alpha.policy_config. Consumers must not re-run the formula.
No closed enumxp_award_formula_v2026_06EXTEND + RESTRICT
ritd-005-policy-config
source_evidence_refsJSONB
Required.
JSON value matching documented schema.
Structured references to result, content, effort, anti-gaming, or correction evidence.
Constraints: Must be a JSON array of typed references. Must not contain raw event payloads or copied Content expected_xp values beyond expected_xp_ref.
No closed enum[{"type":"result_record","id":"018f..."},{"type":"event_summary","id":"evt_sum_..."}]EXTEND
ritd-033-xp-ledger
created_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when this ledger row was appended.
Constraints: Must be UTC. Never update this timestamp after insertion.
No closed enum2026-03-21T14:31:00ZEXTEND
ritd-033-xp-ledger
reversal_of_xp_award_idUUID
Nullable.
PostgreSQL UUID.
Prior XP ledger row this row reverses or corrects.
Constraints: Must reference alpha.xp_ledger when present. Required when award_reason is correction_reversal.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a004000EXTEND
ritd-033-xp-ledger

alpha.content_effectiveness How well content helps students

Derived Results-owned rollup for one Content item: validated count, failed count, effectiveness rate, and provenance. Consumers read it; no app maintains counters.

Data dictionary
Kind
Derived extension read model
Primary key
(tenant_id, content_id, content_version_id, kc_id, policy_version)
Change
EXTEND

Lifecycle. Recomputed by the Results surface after a settled test result references content the student used. Historical answers retain policy/version provenance.

Relationships. References one Content item and optional Content version. May be scoped to one Curriculum KC. Reads many result_content_evidence rows.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
content_idTEXT
Required.
Text within documented constraints.
Content item this effectiveness row describes.
Constraints: Must reference Content. Primary key part. Do not copy Content title/body/kind into Results.
No closed enumcontent_factoring_videoEXTEND
ritd-016-content-effectiveness-derived-read
content_version_idTEXT
Nullable primary key part.
Text within documented constraints.
Exact Content version when effectiveness is version-specific.
Constraints: Must reference Content version when present. Null means policy intentionally rolls up across versions.
No closed enumcontent_factoring_video_v4EXTEND
ritd-016-content-effectiveness-derived-read
kc_idTEXT
Nullable primary key part.
Text within documented constraints.
Curriculum KC this effectiveness row concerns.
Constraints: Must reference Curriculum KC when present. Null means content-level rollup across its scoped KCs by policy.
No closed enumkc_factoring_quadraticsEXTEND
ritd-016-content-effectiveness-derived-read
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
validated_by_countINTEGER
Required.
Integer within documented constraints.
Number of settled result evidence rows that validated this content under the active policy.
Constraints: Must be >= 0. Surface recomputed; apps never increment.
No closed enum41EXTEND
ritd-016-content-effectiveness-derived-read
failed_by_countINTEGER
Required.
Integer within documented constraints.
Number of settled result evidence rows that counted as failed evidence for this content under the active policy.
Constraints: Must be >= 0. Surface recomputed; apps never increment.
No closed enum9EXTEND
ritd-016-content-effectiveness-derived-read
effectiveness_rateNUMERIC(6,5)
Nullable.
0.00000 through 1.00000
validated_by_count divided by validated plus failed evidence under policy.
Constraints: 0 through 1 inclusive when present. Null when there is no counted evidence. Consumers must not recompute the rate.
No closed enum0.82000EXTEND
ritd-016-content-effectiveness-derived-read
evidence_countINTEGER
Required.
Integer within documented constraints.
Total result_content_evidence rows inspected for this rollup.
Constraints: Must be >= validated_by_count + failed_by_count. Neutral and not_applicable evidence may make this larger.
No closed enum54EXTEND
ritd-016-content-effectiveness-derived-read
policy_versionTEXT
Required.
Text within documented constraints.
Policy/config version used to classify content evidence and compute the rate.
Constraints: Must reference alpha.policy_config. Primary key part.
No closed enumcontent_effectiveness_v2026_06EXTEND + RESTRICT
ritd-005-policy-config
source_result_refsJSONB
Required.
JSON value matching documented schema.
Structured references to the result_content_evidence rows and rollup job that produced this answer.
Constraints: Must be a JSON array/object of typed references. Must not include raw answer payloads or Content bodies.
No closed enum{"evidence_set_id":"eff_factoring_v4_2026_06"}EXTEND
ritd-016-content-effectiveness-derived-read
last_recomputed_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when the surface last recomputed this row.
Constraints: Must be UTC. Used for freshness checks.
No closed enum2026-06-05T14:31:00ZEXTEND
ritd-016-content-effectiveness-derived-read

alpha.policy_config Named policy value or formula

Named thresholds, formulas, windows, and config lists the Results surface reads so consumers never hardcode policy numbers.

Data dictionary
Kind
Extension table
Primary key
(tenant_id, policy_name, config_version)
Change
EXTEND + RESTRICT

Lifecycle. Created as draft, activated for an effective window, then superseded or deprecated. Historical rows stay available for reproducibility.

Relationships. Referenced by result, mastery, MAP calculator, report-card, and advancement outputs.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
policy_nameTEXT enum
Required.
One documented enum value.
Canonical policy key read by the Results surface.
Constraints: Must be one documented policy name or an accepted future policy through architecture update.
alpha.policy.mastery_cutoff - Cutoff for mastery decisions, displayed as >=90% when value is 89.5.
alpha.policy.stuck_attempt_threshold - Attempt count threshold for stuck-student detection.
alpha.policy.gate_retake_cooldown - Cooldown window before retaking a failed mastery gate.
alpha.policy.proxy_subject_rules - Rules mapping source subjects such as Vocab, Writing, and FastMath.
alpha.policy.growth_x_target - Default Growth X target, currently 2.0.
alpha.policy.school_year_boundaries - School-year boundaries for term and TimeBack-era calculations.
alpha.policy.school_levels - Locked WL/LL/L1/L2/MS/HS school-level registry used by every report that filters by level.
alpha.policy.tenure_buckets - Locked tenure bucket definitions read from admission_date; reports never hardcode band edges.
alpha.policy.rit_calculator - RIT50/RIT90/effective-grade and 99-level calculator config.
alpha.policy.percentile_rit_translation - Percentile <-> RIT translation config over NWEA published norms; no app-side norms table.
alpha.policy.r90_table - Legacy Results R90 fixture policy; GOALS grade2RIT/R90 uses NWEAMAP/Analytics.
alpha.policy.retention_model - Retention model used for student_kc_state.current_retention and next_due_at.
alpha.policy.next_task_selection - Task-selection priority and blocked/null-reason policy.
alpha.policy.xp_award_formula - Awarded-XP formula, repeat-attempt discount, effort weights, and penalty rules.
alpha.policy.content_effectiveness - Evidence classification and effectiveness-rate policy for content rollups.
alpha.policy.growth_x_targetEXTEND + RESTRICT
ritd-005-policy-config
config_versionTEXT
Required.
Text within documented constraints.
Stable version string for this policy value.
Constraints: Unique with tenant_id and policy_name. Use ISO date or semantic version.
No closed enum2026-06-03EXTEND + RESTRICT
ritd-005-policy-config
schema_nameTEXT
Required.
Text within documented constraints.
Schema used to validate value_json.
Constraints: Must be a known policy schema. Changing schema requires a new config_version.
No closed enumgrowth_x_target_configEXTEND + RESTRICT
ritd-005-policy-config
value_jsonJSONB
Required.
JSON value matching documented schema.
Structured policy value or formula inputs.
Constraints: Must validate against schema_name. Must not contain secrets or free-text business rules.
No closed enum{"target":2.0}EXTEND + RESTRICT
ritd-005-policy-config
statusTEXT enum
Required.
One documented enum value.
Lifecycle state of this config row.
Constraints: Must be one documented value.
draft - Config is being prepared and is not used by surface computations.
active - Config is the current value read by the surface for its effective window.
superseded - Config has been replaced but remains available for historical answers.
deprecated - Config should not be used for new calculations and remains only for audit.
activeEXTEND + RESTRICT
ritd-005-policy-config
begin_dateDATE
Nullable.
ISO 8601 calendar date.
First date this config can be used.
Constraints: Null configs are not time-locatable and cannot drive point-in-time calculations.
No closed enum2026-06-03EXTEND + RESTRICT
ritd-005-policy-config
end_dateDATE
Nullable.
ISO 8601 calendar date.
Last date this config can be used; null means active after begin_date.
Constraints: Must be null or >= begin_date.
No closed enum2027-06-30EXTEND + RESTRICT
ritd-005-policy-config
is_time_locatableBOOLEAN
Required on effective-dated rows.
true or false.
Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads.
Constraints: begin_date NULL means false and the row is excluded from point-in-time computation. end_date NULL means active after begin_date. Both null means false.
No closed enumtrueRESTRICT
ritd-015-report-card-gates
ownerTEXT
Required.
Text within documented constraints.
Role accountable for the config value.
Constraints: 1 to 160 visible characters. Must be a role or team, not a secret.
No closed enumacademics-policyEXTEND + RESTRICT
ritd-005-policy-config

alpha.academic_record_view Cumulative academic record

Plain Results view of Ed-Fi StudentAcademicRecord: one student's cumulative or term academic achievement, credits, GPA evidence, diplomas, honors, and report-card references.

Data dictionary
Kind
SQL view
Primary key
(tenant_id, academic_record_id)
Change
RENAME + RESTRICT

Lifecycle. Produced by the Ed-Fi 1EdTech base after canonical ack. Results reads only canonical records, excludes drafts, and excludes soft-deleted rows unless audit scope is explicit.

Relationships. Belongs to one TimeBack student. References one education organization/school and one canonical term. Can have many course transcript rows.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
academic_record_idUUID
Required.
PostgreSQL UUID.
Stable Results id for the StudentAcademicRecord view row.
Constraints: Unique within tenant. Derived from the Ed-Fi canonical_record id and resource kind.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a003101RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
student_sourced_idTEXT
Required.
Text within documented constraints.
Platform3 OneRoster student sourcedId resolved from the Ed-Fi StudentReference.
Constraints: Must join to the same tenant People & Orgs student. Do not expose an Ed-Fi-only local student key as the Alpha student id.
No closed enumstu_timeback_10017RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-001-results-boundary-alias-map
school_sourced_idTEXT
Required.
Text within documented constraints.
Platform3 org/school sourcedId resolved from the Ed-Fi EducationOrganizationReference.
Constraints: Must join to a same-tenant People & Orgs org. District/school meaning comes from the org tree, not Results storage.
No closed enumschool_north_valleyRENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-001-results-boundary-alias-map
canonical_term_idTEXT
Required for term-scoped rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
school_yearTEXT
Required.
Text within documented constraints.
Canonical school year for the academic record.
Constraints: Format YYYY-YY. Resolved from Ed-Fi SchoolYearTypeReference before the view is public.
No closed enum2025-26RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
term_descriptorTEXT descriptor code
Required.
Text within documented constraints.
Ed-Fi TermDescriptor code for the source academic record, resolved beside canonical_term_id.
Constraints: Must resolve through edfi.descriptor_code by tenant_id, descriptor_type, namespace, code_value, and effective-date window. No local Results descriptor table or free-text fallback is allowed.
No closed enumSpring SemesterRESTRICT
ritd-031-edfi-academic-record-transcript
session_attempted_creditsNUMERIC(9,2)
Nullable.
Decimal number within documented constraints.
Credits attempted during this academic session.
Constraints: 0 or greater when present. Extracted as a typed number from payload_json, not client JSON parsing.
No closed enum3.50RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
session_earned_creditsNUMERIC(9,2)
Nullable.
Decimal number within documented constraints.
Credits earned during this academic session.
Constraints: 0 or greater when present. Must not exceed attempted credits unless the source record explicitly allows transfer/extra-credit context.
No closed enum3.50RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
cumulative_attempted_creditsNUMERIC(9,2)
Nullable.
Decimal number within documented constraints.
Total attempted credits in the cumulative academic record.
Constraints: 0 or greater when present. Extracted from Ed-Fi credit object value.
No closed enum20.00RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
cumulative_earned_creditsNUMERIC(9,2)
Nullable.
Decimal number within documented constraints.
Total earned credits in the cumulative academic record.
Constraints: 0 or greater when present. Used by transcript rollups when course-level rows are unavailable.
No closed enum18.50RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
gpaNUMERIC(5,3)
Nullable.
Decimal number within documented constraints.
Grade point average value from the academic record when the source includes a GPA object.
Constraints: 0 through the tenant's configured GPA scale when present. Descriptor and GPA type provenance remains in source_evidence when multiple GPA objects exist.
No closed enum3.875RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
class_rankINTEGER
Nullable.
Integer within documented constraints.
Class-rank value from Ed-Fi ClassRanking when present.
Constraints: Must be >= 1 when present. Null when no rank exists or the source suppresses it.
No closed enum12RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
projected_graduation_dateDATE
Nullable.
ISO 8601 calendar date.
Projected graduation date from the academic record.
Constraints: ISO 8601 date. May be a month/year projection represented as a canonical date by Ed-Fi source policy.
No closed enum2028-06-01RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
source_canonical_record_idUUID
Required.
PostgreSQL UUID.
Ed-Fi canonical_record row id backing this Alpha view row.
Constraints: Must reference edfi.canonical_record. Used only for audit and raw/API convergence.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a003001RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
canonical_stateTEXT enum
Required.
One documented enum value.
Canonical state of the source Ed-Fi record.
Constraints: Ordinary reads include canonical only. Superseded/deleted states require audit or point-in-time scope.
canonical - The Ed-Fi base accepted the record and it is eligible for Results reads.
superseded - A later canonical record replaced this row; ordinary current reads exclude it unless point-in-time or audit scope asks for it.
deleted - The canonical row is soft-deleted and ordinary reads exclude it.
canonicalRENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
deleted_atTIMESTAMPTZ
Nullable.
UTC timestamp.
Soft-delete timestamp. Null means active; non-null rows stay available for authorized audit reads and are excluded from ordinary current reports.
Constraints: Never hard-delete audit-significant Results rows. Non-null values must be UTC. Legal erasure flows are separate privacy workflows.
No closed enum2026-06-03T18:55:00ZRENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
modified_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.
Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-020-axis-query-model

alpha.course_transcript_view Final course result and credits

Plain Results view of Ed-Fi CourseTranscript: final course grade, attempt result, attempted credits, earned credits, credit descriptors, repeat code, and source academic-record link.

Data dictionary
Kind
SQL view
Primary key
(tenant_id, course_transcript_id)
Change
RENAME + RESTRICT

Lifecycle. Created only after the Ed-Fi base accepts a canonical CourseTranscript record. Corrections route to the Ed-Fi 1EdTech surface; Results exposes the typed view.

Relationships. Belongs to one academic record and one student. References one course and optionally sections/teachers through platform3 sourcedIds. Feeds transcript_result_view.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
course_transcript_idUUID
Required.
PostgreSQL UUID.
Stable Results id for one CourseTranscript view row.
Constraints: Unique within tenant. Derived from the source canonical_record id and record kind.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a003201RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
academic_record_idUUID
Required.
PostgreSQL UUID.
Academic record this course transcript belongs to.
Constraints: Must reference alpha.academic_record_view in the same tenant.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a003101RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
course_idTEXT
Required.
Text within documented constraints.
Platform3 course sourcedId for the course recorded on the transcript.
Constraints: Must resolve through OneRoster/People & Orgs course views. Do not use a local Ed-Fi course key in public Alpha filters.
No closed enumcourse_algebra_1RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-001-results-boundary-alias-map
course_titleTEXT
Nullable.
Text within documented constraints.
Course title from Ed-Fi when present.
Constraints: 0 to 120 characters. Display-only; do not parse for subject, grade, or course id.
No closed enumAlgebra IRENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
canonical_term_idTEXT
Required for term-scoped rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
school_yearTEXT
Required.
Text within documented constraints.
Canonical school year inherited from the linked academic record.
Constraints: Format YYYY-YY. Must match the linked academic_record_view row.
No closed enum2025-26RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
course_attempt_resultTEXT descriptor code
Required.
Text within documented constraints.
Governed Ed-Fi CourseAttemptResultDescriptor value for the student's course attempt.
Constraints: Must resolve through edfi.descriptor_code by tenant_id, descriptor_type, namespace, code_value, and effective-date window. No local Results descriptor table or free-text fallback is allowed.
No closed enumPassRESTRICT
ritd-031-edfi-academic-record-transcript
attempted_creditsNUMERIC(9,2)
Nullable.
Decimal number within documented constraints.
Credits the student attempted for this course.
Constraints: 0 or greater when present. Extracted from Ed-Fi AttemptedCredits object.
No closed enum0.50RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
earned_creditsNUMERIC(9,2)
Nullable.
Decimal number within documented constraints.
Credits the student earned for this course.
Constraints: 0 or greater when present. This is the credit field used by transcript_result_view for final course answers.
No closed enum0.50RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
credit_typeTEXT descriptor code
Nullable.
Text within documented constraints.
Governed descriptor for the kind/category of course credit when Ed-Fi supplies one.
Constraints: Must resolve through edfi.descriptor_code by tenant_id, descriptor_type, namespace, code_value, and effective-date window. No local Results descriptor table or free-text fallback is allowed.
No closed enumAcademicRESTRICT
ritd-031-edfi-academic-record-transcript
method_credit_earnedTEXT descriptor code
Nullable.
Text within documented constraints.
Governed descriptor for how the credits were earned.
Constraints: Must resolve through edfi.descriptor_code by tenant_id, descriptor_type, namespace, code_value, and effective-date window. No local Results descriptor table or free-text fallback is allowed.
No closed enumClassroomRESTRICT
ritd-031-edfi-academic-record-transcript
final_letter_gradeTEXT
Nullable.
Text within documented constraints.
Final letter grade submitted for the course.
Constraints: 0 to 20 characters. Do not infer pass/fail from this text; use course_attempt_result when deciding attempt result.
No closed enumA-RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
final_numeric_gradeNUMERIC(9,2)
Nullable.
Decimal number within documented constraints.
Final numeric grade submitted for the course.
Constraints: Numeric precision 9, scale 2. Null when the transcript uses letter grade only.
No closed enum91.50RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
course_repeat_codeTEXT descriptor code
Nullable.
Text within documented constraints.
Governed descriptor for how a repeated course counts in GPA/credit calculations.
Constraints: Must resolve through edfi.descriptor_code by tenant_id, descriptor_type, namespace, code_value, and effective-date window. No local Results descriptor table or free-text fallback is allowed.
No closed enumRepeat countedRESTRICT
ritd-031-edfi-academic-record-transcript
source_canonical_record_idUUID
Required.
PostgreSQL UUID.
Ed-Fi canonical_record row id backing this course transcript view row.
Constraints: Must reference edfi.canonical_record. Used for source evidence and raw/API convergence.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a003002RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
canonical_stateTEXT enum
Required.
One documented enum value.
Canonical state of the source Ed-Fi record.
Constraints: Ordinary reads include canonical only. Deleted/superseded states require audit scope.
canonical - The Ed-Fi base accepted the record and it is eligible for Results reads.
superseded - A later canonical record replaced this row; ordinary current reads exclude it unless point-in-time or audit scope asks for it.
deleted - The canonical row is soft-deleted and ordinary reads exclude it.
canonicalRENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
deleted_atTIMESTAMPTZ
Nullable.
UTC timestamp.
Soft-delete timestamp. Null means active; non-null rows stay available for authorized audit reads and are excluded from ordinary current reports.
Constraints: Never hard-delete audit-significant Results rows. Non-null values must be UTC. Legal erasure flows are separate privacy workflows.
No closed enum2026-06-03T18:55:00ZRENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
modified_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.
Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-020-axis-query-model

alpha.course_grade_view Settled course or grading-period grade

Plain Results view of Ed-Fi Grade records that are durable academic facts: letter/numeric grade, grade type, current-grade indicator, grading-period reference, and gradebook-entry evidence.

Data dictionary
Kind
SQL view
Primary key
(tenant_id, course_grade_id)
Change
RENAME + RESTRICT

Lifecycle. Exposed after the Ed-Fi base accepts the Grade as canonical. Draft UI-recovery grades and attendance/discipline records are outside Results.

Relationships. Belongs to one student-section association and grading period. May reference one gradebook entry as source evidence. Can feed transcript_result_view.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
course_grade_idUUID
Required.
PostgreSQL UUID.
Stable Results id for one Ed-Fi Grade view row.
Constraints: Unique within tenant. Derived from the source canonical_record id and record kind.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a003301RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
section_idTEXT
Required.
Text within documented constraints.
Platform3 section/class sourcedId resolved from StudentSectionAssociationReference.
Constraints: Must reference a same-tenant People & Orgs section. Do not duplicate section facts into Results.
No closed enumsection_alg1_aRENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-001-results-boundary-alias-map
grading_period_idTEXT
Required.
Text within documented constraints.
Canonical grading period for the grade.
Constraints: Must reference People & Orgs academic period. Must not be parsed from an Ed-Fi descriptor label.
No closed enumgp_2025_26_q4RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-001-results-boundary-alias-map
grade_typeTEXT descriptor code
Required.
Text within documented constraints.
Governed Ed-Fi GradeTypeDescriptor value, such as final or grading period.
Constraints: Must resolve through edfi.descriptor_code by tenant_id, descriptor_type, namespace, code_value, and effective-date window. No local Results descriptor table or free-text fallback is allowed.
No closed enumFinalRESTRICT
ritd-031-edfi-academic-record-transcript
letter_gradeTEXT
Nullable.
Text within documented constraints.
Letter grade earned for the course or grading period.
Constraints: 0 to 20 characters. Use grade_type and current_grade_indicator to understand lifecycle.
No closed enumA-RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
numeric_gradeNUMERIC(9,2)
Nullable.
Decimal number within documented constraints.
Numeric grade earned for the course or grading period.
Constraints: Numeric precision 9, scale 2. Null when the source uses only a letter grade or performance conversion.
No closed enum91.50RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
current_grade_indicatorBOOLEAN
Nullable.
true or false.
Whether this is an interim current grade rather than a final grade.
Constraints: True means interim/current for the grading period. Final transcript answers prefer final grades/course transcripts when available.
No closed enumfalseRENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
current_grade_as_of_dateDATE
Nullable.
ISO 8601 calendar date.
As-of date for a current/interim grade.
Constraints: ISO 8601 date. Required by policy when current_grade_indicator is true and source supplies it.
No closed enum2026-05-30RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
gradebook_entry_idTEXT
Nullable.
Text within documented constraints.
Ed-Fi gradebook entry identifier joined as evidence when the grade references one.
Constraints: Must not be confused with alpha.gradebook_item unless mapped through platform3 sourcedIds. Used as source evidence, not a blank instrument home.
No closed enumedfi_gbe_final_examRENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
diagnostic_statementTEXT
Nullable.
Text within documented constraints.
Teacher/source diagnostic note attached to the grade.
Constraints: 0 to 1024 characters. Display/audit text only; do not parse for grade or pass/fail logic.
No closed enumConsistent evidence across final unit assessments.RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
source_canonical_record_idUUID
Required.
PostgreSQL UUID.
Ed-Fi canonical_record row id backing this course grade view row.
Constraints: Must reference edfi.canonical_record.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a003003RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
canonical_stateTEXT enum
Required.
One documented enum value.
Canonical state of the source Ed-Fi record.
Constraints: Ordinary reads include canonical only. Deleted/superseded states require audit scope.
canonical - The Ed-Fi base accepted the record and it is eligible for Results reads.
superseded - A later canonical record replaced this row; ordinary current reads exclude it unless point-in-time or audit scope asks for it.
deleted - The canonical row is soft-deleted and ordinary reads exclude it.
canonicalRENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
deleted_atTIMESTAMPTZ
Nullable.
UTC timestamp.
Soft-delete timestamp. Null means active; non-null rows stay available for authorized audit reads and are excluded from ordinary current reports.
Constraints: Never hard-delete audit-significant Results rows. Non-null values must be UTC. Legal erasure flows are separate privacy workflows.
No closed enum2026-06-03T18:55:00ZRENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
modified_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.
Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-020-axis-query-model

alpha.transcript_result_view One transcript answer row

Report-ready Results row for questions such as: what final grade and earned credits does this student have for this course in this term?

Data dictionary
Kind
Report-ready read view
Primary key
(tenant_id, student_id, course_id, canonical_term_id, transcript_answer_kind, source_record_id)
Change
RENAME + RESTRICT

Lifecycle. Read-only view generated after academic-record/course-transcript/course-grade views are available. It normalizes the answer but stores no copied Ed-Fi payload fields.

Relationships. Belongs to one student. Usually references one course transcript and academic record. May fall back to a course grade when CourseTranscript is absent.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
course_idTEXT
Required for course-scoped answers.
Text within documented constraints.
Platform3 course sourcedId for the transcript answer.
Constraints: Must resolve through OneRoster/People & Orgs. Nullable only for academic-record-only summary rows.
No closed enumcourse_algebra_1RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-001-results-boundary-alias-map
canonical_term_idTEXT
Required for term-scoped rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
transcript_answer_kindTEXT enum
Required.
One documented enum value.
Source shape used for this normalized transcript answer.
Constraints: Must be one documented value. Determines which source id field is populated.
academic_record - Summary row from StudentAcademicRecord.
course_transcript - Course-level final grade and credit row from CourseTranscript.
course_grade - Grading-period or final grade row from Grade.
transcript_rollup - Report-ready normalized answer row over academic record, course transcript, and grade views.
course_transcriptRENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
source_record_idUUID
Required.
PostgreSQL UUID.
Source Alpha transcript view row id used for this answer.
Constraints: Must reference academic_record_id, course_transcript_id, or course_grade_id according to transcript_answer_kind.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a003201RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
academic_record_idUUID
Nullable.
PostgreSQL UUID.
Academic record linked to this transcript answer.
Constraints: Must reference alpha.academic_record_view when present.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a003101RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
course_transcript_idUUID
Nullable.
PostgreSQL UUID.
Course transcript row selected for the answer.
Constraints: Must reference alpha.course_transcript_view when present. Preferred source for final grade and credits.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a003201RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
course_grade_idUUID
Nullable.
PostgreSQL UUID.
Course grade row used when transcript policy selects or falls back to Ed-Fi Grade.
Constraints: Must reference alpha.course_grade_view when present.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a003301RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
final_gradeTEXT
Nullable.
Text within documented constraints.
Final grade display value for the transcript answer.
Constraints: Usually final_letter_grade; may be numeric text when only numeric grade exists. Do not parse this field for course attempt result.
No closed enumA-RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
final_numeric_gradeNUMERIC(9,2)
Nullable.
Decimal number within documented constraints.
Numeric final grade for the transcript answer when available.
Constraints: Numeric precision 9, scale 2.
No closed enum91.50RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
earned_creditsNUMERIC(9,2)
Nullable.
Decimal number within documented constraints.
Credits earned for the course/term answer.
Constraints: 0 or greater when present. Read from CourseTranscript earned_credits or academic record summary by policy.
No closed enum0.50RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
attempted_creditsNUMERIC(9,2)
Nullable.
Decimal number within documented constraints.
Credits attempted for the course/term answer.
Constraints: 0 or greater when present.
No closed enum0.50RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
course_attempt_resultTEXT descriptor code
Nullable.
Text within documented constraints.
Governed Ed-Fi attempt-result descriptor selected for the transcript answer.
Constraints: Must resolve through edfi.descriptor_code by tenant_id, descriptor_type, namespace, code_value, and effective-date window. No local Results descriptor table or free-text fallback is allowed.
No closed enumPassRESTRICT
ritd-031-edfi-academic-record-transcript
answer_precedenceINTEGER
Required.
Integer within documented constraints.
Surface-owned precedence used to choose among transcript sources.
Constraints: Lower numbers win. Policy is documented by the Results surface; clients do not choose by inspecting raw Ed-Fi payloads.
No closed enum10EXTEND + RESTRICT
ritd-005-policy-config
source_evidenceJSONB
Returned only when includeSourceEvidence=true and authorized.
JSON value matching documented schema.
Structured source evidence: canonical_record ids, descriptor refs, source resource names, and soft-delete evidence.
Constraints: Must be a JSON object or array of typed references. Must not include raw payload_json blobs or secrets.
No closed enum{"resource":"CourseTranscript","canonical_record_id":"018f..."}RENAME + RESTRICT
ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
modified_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.
Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-020-axis-query-model

alpha.report_card_entry Durable report-card statement

Settled report-card statement for one student, subject, course, section, or reporting period.

Data dictionary
Kind
Extension table
Primary key
(tenant_id, report_card_entry_id)
Change
EXTEND

Lifecycle. Created when report-card rollups settle. Superseded entries remain available through point-in-time reads.

Relationships. Belongs to one student. May reference result records, working grade, MAP score, or gate pass evidence.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
report_card_entry_idUUID
Required.
PostgreSQL UUID.
Stable id for this report-card statement.
Constraints: Unique within tenant.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000501EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
course_idTEXT
Nullable.
Text within documented constraints.
Course this entry concerns when it is course-scoped.
Constraints: Must reference People & Orgs/Curriculum course when present.
No closed enumcourse_algebra_1EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
section_idTEXT
Nullable.
Text within documented constraints.
Class or section this entry concerns when section-scoped.
Constraints: Must reference People & Orgs class/section when present.
No closed enumclass-algebra-1-aEXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
reporting_period_idTEXT
Required.
Text within documented constraints.
Typed reporting period for this statement.
Constraints: Must reference canonical academic session/period.
No closed enumrp_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
grade_valueTEXT
Nullable.
Text within documented constraints.
Published grade or level shown on the report card.
Constraints: 0 to 64 visible characters. Must align with grade_scale_id when present.
No closed enumA-EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
narrativeTEXT
Nullable.
Text within documented constraints.
Optional teacher/system narrative shown on the report card.
Constraints: 0 to 4000 visible characters. Must not be the only source of typed status.
No closed enumStrong growth in equations; continue fractions practice.EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
statusTEXT enum
Required.
One documented enum value.
Lifecycle state of this report-card entry.
Constraints: Must be one documented value.
draft - Visible only to authorized staff and not final for the reporting period.
final - Published durable report-card statement.
superseded - Replaced by a later effective-dated report-card entry.
voided - Retained for audit but excluded from current report-card reads.
finalEXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
evidence_linksJSONB
Required.
JSON value matching documented schema.
Structured links to result, MAP, mastery, or gate evidence used for this statement.
Constraints: Must be a JSON array of typed references. No raw source payloads.
No closed enum[{"type":"result_record","id":"018f..."}]EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
policy_versionTEXT
Required.
Text within documented constraints.
Policy/config version used to calculate this statement.
Constraints: Must reference alpha.policy_config rows used by the rollup.
No closed enumpolicy_2026_06_03EXTEND + RESTRICT
ritd-005-policy-config
begin_dateDATE
Nullable.
ISO 8601 calendar date.
First date this report-card statement is point-in-time valid.
Constraints: Null means excluded from point-in-time reads.
No closed enum2026-05-30EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
end_dateDATE
Nullable.
ISO 8601 calendar date.
Last date this statement is valid; null means still active after begin_date.
Constraints: Must be null or >= begin_date.
No closed enum2026-06-30EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
is_time_locatableBOOLEAN
Required on effective-dated rows.
true or false.
Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads.
Constraints: begin_date NULL means false and the row is excluded from point-in-time computation. end_date NULL means active after begin_date. Both null means false.
No closed enumtrueRESTRICT
ritd-015-report-card-gates

alpha.gate_pass Durable mastery-gate permission

Durable pass, fail, cooldown, or retry permission for an advancement or mastery gate.

Data dictionary
Kind
Extension table
Primary key
(tenant_id, gate_pass_id)
Change
EXTEND

Lifecycle. Created after a gate result settles. Updated by new attempts or cooldown policy; historical rows remain point-in-time evidence.

Relationships. Belongs to one student. References one gate content/test and one result record when available.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
gate_pass_idUUID
Required.
PostgreSQL UUID.
Stable id for this gate state row.
Constraints: Unique within tenant.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000601EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
gate_content_idTEXT
Required.
Text within documented constraints.
Content test or gate this pass concerns.
Constraints: Must reference Content. Content owns blank gate/test metadata.
No closed enumcontent_alg_1_mastery_gateEXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
result_record_idUUID
Nullable.
PostgreSQL UUID.
Most recent result record deciding this gate state.
Constraints: Must reference alpha.result_record when present.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000101EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
gate_statusTEXT enum
Required.
One documented enum value.
Current durable gate state for this effective window.
Constraints: Must be one documented value.
passed - The student currently has permission or credit for the gate.
failed - The latest settled gate outcome did not pass.
cooldown - The student failed and must wait until next_eligible_at before retaking.
retry_allowed - The student may retake the gate now.
blocked - The gate cannot be decided because required policy or evidence is missing.
passedEXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
passed_atTIMESTAMPTZ
Nullable.
UTC timestamp.
UTC timestamp when the student passed the gate.
Constraints: Required when gate_status is passed. Null otherwise.
No closed enum2026-03-21T14:30:00ZEXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
next_eligible_atTIMESTAMPTZ
Nullable.
UTC timestamp.
UTC time a student may retake after cooldown.
Constraints: Required when gate_status is cooldown. Computed from alpha.policy.gate_retake_cooldown.
No closed enum2026-03-24T14:30:00ZEXTEND + RESTRICT
ritd-005-policy-config
attempt_countINTEGER
Required.
Integer within documented constraints.
Number of settled attempts considered for this gate state.
Constraints: Must be >= 0. Stuck-attempt policy reads this value.
No closed enum2EXTEND + RESTRICT
ritd-005-policy-config
policy_versionTEXT
Required.
Text within documented constraints.
Policy/config version for cutoff and cooldown rules.
Constraints: Must reference alpha.policy_config.
No closed enumpolicy_2026_06_03EXTEND + RESTRICT
ritd-005-policy-config
begin_dateDATE
Nullable.
ISO 8601 calendar date.
First date this gate state is point-in-time valid.
Constraints: Null means excluded from point-in-time reads.
No closed enum2026-03-21EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
end_dateDATE
Nullable.
ISO 8601 calendar date.
Last date this gate state is valid; null means still active after begin_date.
Constraints: Must be null or >= begin_date.
No closed enum2026-04-01EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
is_time_locatableBOOLEAN
Required on effective-dated rows.
true or false.
Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads.
Constraints: begin_date NULL means false and the row is excluded from point-in-time computation. end_date NULL means active after begin_date. Both null means false.
No closed enumtrueRESTRICT
ritd-015-report-card-gates

alpha.mastery_ledger Immutable mastery-test history

Immutable history of actual mastery-test results used to derive highest mastered grade and working grade at any as-of date.

Data dictionary
Kind
Immutable extension ledger
Primary key
(tenant_id, mastery_ledger_id)
Change
EXTEND

Lifecycle. Appended when a mastery-gate result settles. Corrections append superseding ledger rows; historical rows remain queryable by asOfDate. Summary tables and course placements never overwrite this ledger.

Relationships. Belongs to one student. References one settled result_record. References one gate Content item and one Curriculum track level/grade. References the policy config used for the mastery cutoff.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
mastery_ledger_idUUID
Required.
PostgreSQL UUID.
Stable id for this immutable mastery-test ledger row.
Constraints: Unique within tenant. Generated by the surface or deterministic migration mapping.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a005001EXTEND
ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
result_record_idUUID
Required.
PostgreSQL UUID.
Settled result record for the mastery-gate attempt.
Constraints: Must reference alpha.result_record. The referenced result must be a mastery_gate or equivalent gate result.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000101EXTEND
ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config
gate_content_idTEXT
Required.
Text within documented constraints.
Content test or test_bank gate this attempt answered.
Constraints: Must reference Content. Do not infer a gate from a display title.
No closed enumcontent_math_g7_exit_bankEXTEND
ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config
track_idTEXT
Required.
Text within documented constraints.
Curriculum track whose level/grade the gate certifies.
Constraints: Must reference Curriculum track. Track definitions stay in Curriculum.
No closed enumtrack_common_core_math_k12EXTEND
ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config
track_level_idTEXT
Required.
Text within documented constraints.
Curriculum track level or grade certified by the gate.
Constraints: Must reference a level that belongs to track_id. Used to compare mastered grades within a subject.
No closed enumtrack_level_math_7EXTEND
ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config
grade_levelNUMERIC(5,2)
Required.
Decimal number within documented constraints.
Numeric grade level certified by this gate attempt.
Constraints: Must be comparable within subject and track. Comes from Curriculum track-level registry, not a parsed gate name.
No closed enum7.00EXTEND
ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config
score_percentNUMERIC(5,2)
Required.
0.00 through 100.00
Percent score earned on the mastery-gate attempt.
Constraints: 0 through 100 inclusive. Compared with alpha.policy.mastery_cutoff by the surface.
No closed enum92.50EXTEND
ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config
mastery_cutoff_policy_refTEXT
Required.
Text within documented constraints.
Policy config row that supplies the cutoff for this gate decision.
Constraints: Must reference alpha.policy_config where policy_name=alpha.policy.mastery_cutoff. Do not store or read a client-local cutoff.
No closed enumalpha.policy.mastery_cutoff:2026-06-03EXTEND + RESTRICT
ritd-005-policy-config
passed_mastery_gateBOOLEAN
Required.
true or false.
Whether score_percent met the policy cutoff for this gate attempt.
Constraints: True iff score_percent >= the resolved cutoff for mastery_cutoff_policy_ref. False rows remain history but do not raise HMG.
No closed enumtrueEXTEND
ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config
attempted_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when the mastery-test attempt was completed.
Constraints: Must be UTC. Used for ordering attempts on the same gate.
No closed enum2026-03-21T14:30:00ZEXTEND
ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config
effective_dateDATE
Required.
ISO 8601 calendar date.
First date this ledger row can affect HMG and working-grade as-of reads.
Constraints: ISO 8601 date. Must not be null because HMG is point-in-time.
No closed enum2026-03-21EXTEND
ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config
superseded_by_mastery_ledger_idUUID
Nullable.
PostgreSQL UUID.
Later correction row that supersedes this ledger row.
Constraints: Must reference alpha.mastery_ledger in the same tenant when present. Ordinary as-of reads exclude rows superseded on or before the requested date.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a005002EXTEND
ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config
source_evidence_refsJSONB
Required.
JSON value matching documented schema.
Structured references to result, gate, test_bank/form, scorer, and migration evidence.
Constraints: Must be a JSON array of typed references. Must not include raw answer payloads or copied Curriculum definitions.
No closed enum[{"type":"result_record","id":"018f..."},{"type":"policy_config","id":"alpha.policy.mastery_cutoff:2026-06-03"}]EXTEND
ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config
modified_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.
Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-020-axis-query-model

alpha.highest_mastered_grade Highest mastered grade as of a date

Point-in-time answer for the highest grade a student has mastered in one subject as of any date.

Data dictionary
Kind
Derived extension read model
Primary key
(tenant_id, student_id, subject_id, as_of_date, policy_version)
Change
DERIVED READ

Lifecycle. Computed from alpha.mastery_ledger for the requested asOfDate. If no actual mastery-test result exists, the surface may use a summary-table or course-placement fallback and must label that fallback. When tests and summaries disagree, tests win.

Relationships. Belongs to one student. Reads mastery_ledger rows for actual test evidence. May reference fallback summary/course-placement evidence only when no qualifying test result exists.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
as_of_dateDATE
Required.
ISO 8601 calendar date.
Point-in-time date for the HMG answer.
Constraints: ISO 8601 date. Current reads are still represented as as-of reads.
No closed enum2026-06-05DERIVED READ
ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config
highest_mastered_gradeNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
Highest grade level mastered as of the date.
Constraints: Null only when null_reason is present. Derived from actual mastery-test results before any fallback is considered.
No closed enum7.00DERIVED READ
ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config
evidence_sourceTEXT enum
Required.
One documented enum value.
Which evidence family produced the HMG answer.
Constraints: Must be one documented value. mastery_test_results wins over summary_table_fallback and course_placement_fallback.
mastery_test_results - Actual mastery-gate test results exist as of the requested date and are the authoritative source.
summary_table_fallback - No actual mastery-test result exists as of the requested date, so the surface used a legacy summary table only as fallback evidence.
course_placement_fallback - No actual mastery-test result or usable summary row exists as of the requested date, so the surface used course placement only as fallback evidence.
none - No usable actual or fallback evidence exists as of the requested date.
mastery_test_resultsDERIVED READ
ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config
mastery_cutoff_policy_refTEXT
Required.
Text within documented constraints.
Policy config used to decide which mastery-test rows count as passing.
Constraints: Must reference alpha.policy_config where policy_name=alpha.policy.mastery_cutoff. The common 89.5 value is read from policy; it is not embedded in consumer SQL.
No closed enumalpha.policy.mastery_cutoff:2026-06-03EXTEND + RESTRICT
ritd-005-policy-config
source_mastery_ledger_idsJSONB array
Required.
JSON value matching documented schema.
Ledger row ids that support the returned grade.
Constraints: Empty only when evidence_source is summary_table_fallback, course_placement_fallback, or none. Must be a JSON array of ids, not raw payloads.
No closed enum["018f4b4e-9c7a-7d3d-8b2f-2f673a005001"]DERIVED READ
ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config
fallback_source_refsJSONB
Required.
JSON value matching documented schema.
Structured references to summary-table or course-placement fallback evidence.
Constraints: Empty array when evidence_source is mastery_test_results. Fallback refs are audit evidence only and never override mastery_ledger rows.
No closed enum[]DERIVED READ
ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config
policy_versionTEXT
Required.
Text within documented constraints.
Policy/config version for the HMG resolver.
Constraints: Must reference alpha.policy_config. Changing policy produces a new answer version.
No closed enumhmg_resolver_v2026_06EXTEND + RESTRICT
ritd-005-policy-config
null_reasonTEXT enum
Nullable.
One documented enum value.
Why highest_mastered_grade is null.
Constraints: Required when highest_mastered_grade is null.
not_enough_history - Required prior-term or baseline input does not exist yet.
no_projected_growth - NWEA did not publish projected growth for the requested window.
no_valid_rit - The sitting has no valid RIT for calculation.
missing_policy_config - The surface lacks active policy/config for this calculation.
not_applicable - The field does not apply to this row by design.
not_enough_historyEXTEND + RESTRICT
ritd-005-policy-config
computed_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when the surface produced this HMG answer.
Constraints: Must be UTC. Used for freshness and report-answer audit.
No closed enum2026-06-05T14:31:00ZDERIVED READ
ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config

alpha.working_grade Current grade-equivalent level

Surface-owned grade-equivalent level for one student and subject as of a date.

Data dictionary
Kind
Derived extension read model
Primary key
(tenant_id, student_id, subject_id, as_of_date, formula_version)
Change
EXTEND

Lifecycle. Recomputed when mastery-test ledger rows, MAP effective grade, mastery state, report-card evidence, fallback evidence, or policy inputs change. Actual mastery-test results are authoritative; summary tables and course placements are fallback evidence only.

Relationships. Belongs to one student. References MAP effective-grade and mastery evidence where available.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
as_of_dateDATE
Required.
ISO 8601 calendar date.
Point-in-time date for the working-grade answer.
Constraints: ISO 8601 date. Current reads are still asOfDate reads.
No closed enum2026-06-03RESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
working_gradeNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
Surface-owned grade-equivalent level as of the date.
Constraints: May be null only when null_reason is present. Do not recompute in clients. Must honor the actual-test-before-fallback evidence priority.
No closed enum7.40EXTEND
ritd-011-rit-effective-grade
highest_mastered_gradeNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
Highest mastered grade input used by the working-grade resolver.
Constraints: Read from alpha.highest_mastered_grade for the same student, subject, and as_of_date. May be null only when HMG has no evidence.
No closed enum7.00DERIVED READ
ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config
input_kindTEXT enum
Required.
One documented enum value.
Primary evidence family used to produce the value.
Constraints: Must be one documented value. mastery_test_results wins over summary_table_fallback and course_placement_fallback when present.
mastery_test_results - Actual mastery-test results drove the grade/level answer; this source wins over summaries and placements.
map_effective_grade - MAP effective-grade output drove the value where policy allows MAP-based placement.
student_kc_state - Four-state KC state drove the value.
report_card - Report-card evidence drove the value.
teacher_override - Authorized human override drove the value.
summary_table_fallback - Legacy summary table was used only because no qualifying mastery-test result existed.
course_placement_fallback - Course placement was used only because no qualifying mastery-test result or summary row existed.
mixed - Multiple evidence families contributed, with actual mastery-test results taking precedence when present.
mixedEXTEND
ritd-011-rit-effective-grade
baseline_effective_gradeNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
Baseline MAP effective grade used by advancement.
Constraints: May be null before a MAP baseline exists.
No closed enum6.80EXTEND
ritd-011-rit-effective-grade
sy_start_working_gradeNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
Working grade at school-year start used by advancement.
Constraints: May be null before school-year-start state exists.
No closed enum7.00EXTEND
ritd-014-working-grade-advancement
evidence_priorityTEXT
Required.
Text within documented constraints.
Plain explanation of which evidence won and why.
Constraints: Must say actual mastery-test results win when they exist. Must name fallback use when evidence_source is summary_table_fallback or course_placement_fallback. Must name the HMG+1 tiebreak when it resolves an enrollment disagreement.
No closed enummastery_test_results_won_over_summaryDERIVED READ
ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config
source_evidence_refsJSONB
Required.
JSON value matching documented schema.
Structured references to HMG, mastery ledger, MAP, report-card, or fallback evidence used.
Constraints: Must be a JSON array of typed references. Must not include raw source payloads.
No closed enum[{"type":"highest_mastered_grade","student_id":"stu_timeback_10017","as_of_date":"2026-06-05"}]DERIVED READ
ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config
formula_versionTEXT
Required.
Text within documented constraints.
Named formula/config version used.
Constraints: Must reference alpha.policy_config.
No closed enumworking_grade_v2026_06EXTEND + RESTRICT
ritd-005-policy-config
null_reasonTEXT enum
Nullable.
One documented enum value.
Why working_grade is null.
Constraints: Required when working_grade is null.
not_enough_history - Required prior-term or baseline input does not exist yet.
no_projected_growth - NWEA did not publish projected growth for the requested window.
no_valid_rit - The sitting has no valid RIT for calculation.
missing_policy_config - The surface lacks active policy/config for this calculation.
not_applicable - The field does not apply to this row by design.
not_enough_historyEXTEND + RESTRICT
ritd-005-policy-config

alpha.advancement Growth since baseline

Surface-owned K-8 growth metric: max(0, currentWorkingGrade - max(baselineEffectiveGrade, syStartWorkingGrade)).

Data dictionary
Kind
Derived extension read model
Primary key
(tenant_id, student_id, subject_id, as_of_date)
Change
EXTEND

Lifecycle. Read model recalculated from working_grade and baseline inputs for the requested asOfDate.

Relationships. Belongs to one student. Reads working_grade and MAP effective-grade inputs.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
as_of_dateDATE
Required.
ISO 8601 calendar date.
Point-in-time date for advancement.
Constraints: ISO 8601 date.
No closed enum2026-06-03RESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
current_working_gradeNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
Working grade now.
Constraints: May be null only with null_reason.
No closed enum7.40EXTEND
ritd-014-working-grade-advancement
baseline_effective_gradeNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
Baseline effective grade from MAP.
Constraints: May be null before baseline exists.
No closed enum6.80EXTEND
ritd-014-working-grade-advancement
sy_start_working_gradeNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
School-year-start working grade.
Constraints: May be null before start state exists.
No closed enum7.00EXTEND
ritd-014-working-grade-advancement
advancement_valueNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
Surface-owned advancement value from the formula.
Constraints: Must be >= 0 when present. Must equal max(0, current - max(baseline, sy_start)).
No closed enum0.40EXTEND
ritd-014-working-grade-advancement
formula_versionTEXT
Required.
Text within documented constraints.
Formula/config version used.
Constraints: Must reference alpha.policy_config.
No closed enumadvancement_v2026_06EXTEND + RESTRICT
ritd-005-policy-config
null_reasonTEXT enum
Nullable.
One documented enum value.
Why advancement_value is null.
Constraints: Required when advancement_value is null.
not_enough_history - Required prior-term or baseline input does not exist yet.
no_projected_growth - NWEA did not publish projected growth for the requested window.
no_valid_rit - The sitting has no valid RIT for calculation.
missing_policy_config - The surface lacks active policy/config for this calculation.
not_applicable - The field does not apply to this row by design.
not_enough_historyEXTEND + RESTRICT
ritd-005-policy-config

alpha.student_course_progress Course progress and remaining XP

Student-facing answer for how much of one course is complete, how much XP remains, and which evidence source produced the answer.

Data dictionary
Kind
Derived extension read model
Primary key
(tenant_id, student_id, subject_id, course_id, as_of_date)
Change
EXTEND

Lifecycle. Materialized by Results when app-reported Caliper progress, Analytics XP/completion rollups, Curriculum expected-XP refs, or relevant student state changes. Missing evidence returns null fields with null_reason instead of a client-side formula.

Relationships. Belongs to one student. References one Curriculum course by course_id. References Analytics rollup evidence by source_analytics_rollup_refs. References Curriculum denominator evidence by source_curriculum_refs.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
course_idTEXT
Required.
Text within documented constraints.
Curriculum course id whose progress is being answered.
Constraints: Must reference the course in Curriculum. The course tree and components stay in Curriculum. Used as a typed filter on the course-progress endpoint.
No closed enumcourse_math_grade_7_mainEXTEND
ritd-036-course-grade-progress
course_titleTEXT
Nullable display field.
Text within documented constraints.
Course display title copied only as a display snapshot for this progress answer.
Constraints: May be null when not authorized or unavailable. Not a join key; course_id is the relationship. Must not be used to infer subject or grade.
No closed enumMath Grade 7 Main SequenceEXTEND
ritd-036-course-grade-progress
grade_levelNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
Working grade level associated with this course progress row.
Constraints: May be null for ungraded courses. Comes from Curriculum/track metadata, not MAP/RIT/R90. Used to aggregate grade-level progress.
No closed enum7.00EXTEND
ritd-036-course-grade-progress
as_of_dateDATE
Required.
ISO 8601 calendar date.
Date the progress answer is valid for.
Constraints: ISO 8601 date. Current progress reads are represented as as-of reads. Used with student_id, subject_id, and course_id as the answer key.
No closed enum2026-06-03EXTEND
ritd-036-course-grade-progress
xp_remainingNUMERIC(14,3)
Nullable when evidence is missing.
Decimal number within documented constraints.
Expected XP remaining in this course after applying the selected progress evidence.
Constraints: Must be nonnegative when present. This is the canonical work-left answer; it is not allowed to override direct app-reported percent_complete. Null requires null_reason.
No closed enum120.000EXTEND
ritd-036-course-grade-progress
total_xpNUMERIC(14,3)
Nullable when Curriculum denominator evidence is missing.
Decimal number within documented constraints.
Total expected XP for the course denominator.
Constraints: Must be positive when present. Comes from Curriculum expected-XP refs. Must not double-count container and leaf expected_xp.
No closed enum400.000EXTEND
ritd-036-course-grade-progress
percent_completeNUMERIC(7,3)
Nullable when progress cannot be answered.
0.000 through 100.000
Course percent complete shown to apps and reports.
Constraints: 0 through 100 inclusive when present. Direct app percent is rendered as reported within policy bounds. When XP-shaped evidence wins, percent_complete = 100 * (1 - xp_remaining / total_xp).
No closed enum70.000EXTEND
ritd-036-course-grade-progress
progress_source_kindTEXT enum
Required for populated rows.
One documented enum value.
Which precedence branch produced the progress answer.
Constraints: Must be one documented value. app_reported_percent wins over xp_remaining and completed_xp_estimate. unknown is allowed only with null_reason.
app_reported_percent - The delivering app reported percent complete directly.
xp_remaining - The source supplied remaining XP and Curriculum supplied total XP.
completed_xp_estimate - Results estimated completion from completed XP when stronger evidence was missing.
unknown - Required evidence is missing; null_reason explains the gap.
app_reported_percentEXTEND
ritd-036-course-grade-progress
evidence_kindTEXT enum
Required for populated rows.
One documented enum value.
More specific evidence family behind progress_source_kind.
Constraints: Must name the source family instead of leaving clients to inspect refs. Examples include Caliper course progress percent or Analytics XP remaining rollup. unknown is allowed only with null_reason.
caliper_course_progress_percent - Events preserved an app-reported course progress percent.
analytics_xp_remaining_rollup - Analytics supplied XP remaining evidence.
analytics_completed_xp_rollup - Analytics supplied completed XP evidence used as a fallback estimate.
unknown - No acceptable evidence is available.
caliper_course_progress_percentEXTEND
ritd-036-course-grade-progress
source_analytics_rollup_refsJSONB array
Required; empty only when no Analytics evidence applies.
JSON value matching documented schema.
Structured references to Analytics rollup rows used as evidence.
Constraints: Must be a JSON array. Refs only; do not copy Analytics rows. Must stay empty rather than inventing evidence.
No closed enum["alpha.analytics_completion_rollup:completion_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9"]EXTEND
ritd-036-course-grade-progress
source_curriculum_refsJSONB array
Required.
JSON value matching documented schema.
Structured references to Curriculum course/expected-XP denominator evidence.
Constraints: Must be a JSON array. Refs only; do not copy Curriculum trees. Required even when no direct Analytics evidence applies.
No closed enum["alpha.curriculum_course:course_math_grade_7_main"]EXTEND
ritd-036-course-grade-progress
policy_refTEXT
Required.
Text within documented constraints.
Named Results progress policy used for evidence precedence, denominator handling, and percent derivation.
Constraints: Must reference a versioned alpha.policy.* progress policy. Changing the policy changes computed_at/versioned answer behavior. Consumers do not embed this logic.
No closed enumalpha.policy.results.progress.v2026-06-16EXTEND + RESTRICT
ritd-005-policy-config
null_reasonTEXT enum
Nullable.
One documented enum value.
Why progress fields are null or unknown.
Constraints: Required when xp_remaining, total_xp, or percent_complete is unavailable. Must be none/null for a complete answer. Consumers surface the gap instead of filling locally.
not_enough_history - Required prior-term or baseline input does not exist yet.
no_projected_growth - NWEA did not publish projected growth for the requested window.
no_valid_rit - The sitting has no valid RIT for calculation.
missing_policy_config - The surface lacks active policy/config for this calculation.
not_applicable - The field does not apply to this row by design.
source_missingEXTEND
ritd-036-course-grade-progress
computed_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC time Results produced this progress answer.
Constraints: Must be UTC. Used for freshness and evidence audits. Does not replace as_of_date.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-036-course-grade-progress

alpha.student_grade_level_progress Grade-level progress and pacing

Student-facing answer for grade-level work remaining, percent complete across the main sequence, and pace versus the school calendar.

Data dictionary
Kind
Derived extension read model
Primary key
(tenant_id, student_id, subject_id, grade_level, as_of_date)
Change
EXTEND

Lifecycle. Materialized by Results from course progress answers and active-path state. Recomputed when course progress, working grade, track state, Curriculum main-course totals, or calendar elapsed-year evidence changes.

Relationships. Belongs to one student. Aggregates student_course_progress rows for main courses. References Analytics evidence rows and calendar refs through source arrays. Reads Curriculum main-sequence expected-XP structure by reference.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
grade_levelNUMERIC(5,2)
Required.
Decimal number within documented constraints.
Grade level whose main-sequence progress is being answered.
Constraints: Must be a comparable numeric grade value. Comes from Curriculum/track metadata, not MAP/RIT/R90. Part of the primary key.
No closed enum7.00EXTEND
ritd-036-course-grade-progress
working_gradeNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
Working grade input used to identify the active grade path.
Constraints: May be null only when null_reason explains missing state. Read from Results working_grade. Not the same as age_grade or highest_mastered_grade.
No closed enum7.40EXTEND
ritd-036-course-grade-progress
as_of_dateDATE
Required.
ISO 8601 calendar date.
Date the grade-level progress answer is valid for.
Constraints: ISO 8601 date. Current progress reads are represented as as-of reads. Part of the primary key.
No closed enum2026-06-03EXTEND
ritd-036-course-grade-progress
active_path_stateTEXT enum
Required.
One documented enum value.
Where the student is relative to the grade-level main sequence.
Constraints: Must be one documented value. Determines which XP remains in grade_level_xp_remaining. finished requires grade_level_xp_remaining=0 when denominator exists.
not_started - The student has not started the grade's main sequence; remaining XP equals the main-sequence total.
in_main_sequence - The student is in the main sequence; remaining XP is current main-course remaining plus later main-course XP.
in_hole_filling - The student is temporarily in hole-filling/remediation; remaining XP is the active hole-filling remaining work.
finished - The grade-level main sequence is finished; remaining XP is zero.
unknown - Required state is missing; null_reason explains the gap.
in_main_sequenceEXTEND
ritd-036-course-grade-progress
grade_level_xp_remainingNUMERIC(14,3)
Nullable when evidence is missing.
Decimal number within documented constraints.
Active-path XP remaining for this grade-level answer.
Constraints: Must be nonnegative when present. not_started equals main_sequence_total_xp. finished equals zero. in_main_sequence equals current main-course remaining plus later main-course expected XP. in_hole_filling equals active hole-filling remaining.
No closed enum160.000EXTEND
ritd-036-course-grade-progress
main_sequence_total_xpNUMERIC(14,3)
Nullable when Curriculum denominator evidence is missing.
Decimal number within documented constraints.
Total expected XP for the grade's main-course sequence.
Constraints: Must be positive when present. This is always the denominator for grade percent_complete. Hole-filling/remediation/catalog courses do not expand this denominator.
No closed enum500.000EXTEND
ritd-036-course-grade-progress
percent_completeNUMERIC(7,3)
Nullable when progress cannot be answered.
0.000 through 100.000
Grade-level percent complete over the main sequence denominator.
Constraints: 0 through 100 inclusive when present. Aggregates direct main-course percent_complete evidence when available. Falls back to 100 * (1 - grade_level_xp_remaining / main_sequence_total_xp) when direct course percent is absent and XP-shaped evidence is available. Consumers render this field instead of recomputing it.
No closed enum68.000EXTEND
ritd-036-course-grade-progress
elapsed_school_year_percentNUMERIC(7,3)
Nullable when calendar evidence is missing.
0.000 through 100.000
Percent of the relevant school-year calendar elapsed as of as_of_date.
Constraints: 0 through 100 inclusive when present. Comes from People & Orgs calendar/enrollment context. Used only for pacing comparison.
No closed enum82.000EXTEND
ritd-036-course-grade-progress
pacing_statusTEXT enum
Required.
One documented enum value.
Pace of actual grade-level progress relative to elapsed school-year percent.
Constraints: Must be one documented value. Computed under policy_ref thresholds. unknown is used when progress or calendar evidence is missing.
behind_pace - percent_complete is below the elapsed-calendar threshold under policy.
on_pace - percent_complete is within the policy band for elapsed school year.
ahead_of_pace - percent_complete is above the elapsed-calendar threshold under policy.
unknown - Progress or calendar evidence is missing.
behind_paceEXTEND
ritd-036-course-grade-progress
source_course_progress_refsJSONB array
Required.
JSON value matching documented schema.
Structured references to course-progress rows aggregated into this grade answer.
Constraints: Must be a JSON array. Refs only; do not copy course-progress rows. Required for populated grade progress.
No closed enum["alpha.student_course_progress:stu_timeback_10017|math|course_math_grade_7_main|2026-06-03"]EXTEND
ritd-036-course-grade-progress
source_analytics_rollup_refsJSONB array
Required; empty only when no Analytics evidence applies.
JSON value matching documented schema.
Structured references to Analytics rollup rows used by contributing course-progress rows.
Constraints: Must be a JSON array. Refs only; do not copy Analytics rows. Useful for authorized audits and convergence checks.
No closed enum["alpha.analytics_completion_rollup:completion_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9"]EXTEND
ritd-036-course-grade-progress
source_calendar_refsJSONB array
Required; empty only when pacing is unknown.
JSON value matching documented schema.
Structured references to calendar/enrollment rows used for elapsed_school_year_percent.
Constraints: Must be a JSON array. Refs only; do not copy calendar tables. Empty array requires pacing_status=unknown or null_reason.
No closed enum["alpha.school_calendar:school_north_valley:2026-06-03"]EXTEND
ritd-036-course-grade-progress
policy_refTEXT
Required.
Text within documented constraints.
Named Results progress policy used for active-path remaining XP, denominator choice, and pacing thresholds.
Constraints: Must reference a versioned alpha.policy.* progress policy. Consumers do not embed this logic. Changing policy can produce a new computed answer.
No closed enumalpha.policy.results.progress.v2026-06-16EXTEND + RESTRICT
ritd-005-policy-config
null_reasonTEXT enum
Nullable.
One documented enum value.
Why progress or pacing fields are null or unknown.
Constraints: Required when grade_level_xp_remaining, main_sequence_total_xp, percent_complete, or pacing evidence is unavailable. Consumers surface the gap instead of filling locally. none/null means the answer is populated.
not_enough_history - Required prior-term or baseline input does not exist yet.
no_projected_growth - NWEA did not publish projected growth for the requested window.
no_valid_rit - The sitting has no valid RIT for calculation.
missing_policy_config - The surface lacks active policy/config for this calculation.
not_applicable - The field does not apply to this row by design.
source_missingEXTEND
ritd-036-course-grade-progress
computed_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC time Results produced this grade-level progress answer.
Constraints: Must be UTC. Used for freshness and evidence audits. Does not replace as_of_date.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-036-course-grade-progress

alpha.map_score MAP term test-of-record score

Plain term-scoped MAP result keyed by TimeBack student, subject, canonical term, and norms set. Defaults to the NWEAMap highest-RIT test_of_record for report/test-of-record workflows.

Data dictionary
Kind
Public view + extension storage
Primary key
(tenant_id, student_id, subject_id, canonical_term_id, norms_set)
Change
CUT + RENAME + EXTEND

Lifecycle. Updated by NWEAMap projection after CDF import or real-time result observation. One row per student/subject/term/norms set for ordinary reads.

Relationships. Belongs to one student. References one NWEAMap assessment_result_projection row as source evidence.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
map_score_idUUID
Required.
PostgreSQL UUID.
Stable id for this public MAP score row.
Constraints: Unique within tenant.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000701CUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
student_emailCITEXT
Nullable joined read field.
Case-insensitive text within documented constraints.
Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id.
Constraints: Nullable because not every authorized read returns email. Case-insensitive email format when present. Must never be used as the sole reconciliation key.
No closed enumalex.rivera@example.eduRENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
canonical_term_idTEXT
Required for term-scoped rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
term_seasonTEXT enum
Required.
One documented enum value.
Canonical term season derived at write time.
Constraints: Must be one documented value. Never parse from TermName at read time.
fall - Fall term.
winter - Winter term.
spring - Spring term.
summer - Summer term.
springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
school_yearTEXT
Required.
Text within documented constraints.
Canonical school year for the MAP score.
Constraints: Format YYYY-YY. Set by term resolver, not regex in consumers.
No closed enum2025-26RESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
nwea_account_idTEXT
Required.
Text within documented constraints.
NWEA district/account id read through the People & Orgs district org boundary.
Constraints: Must come from parent org alpha.org.nwea_district_id. Results must not create another NWEA account source of truth.
No closed enumNWEA-ALPHA-PHYSICALCUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
brandTEXT
Required joined read field.
Text within documented constraints.
Brand cohort tag joined from People & Orgs for reports.
Constraints: Locked registry tag at nwea_account grain. Do not duplicate as Results-owned source of truth.
No closed enumAlphaRENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
modalityTEXT enum
Required joined read field.
One documented enum value.
Physical or virtual NWEA account boundary.
Constraints: Must be physical or virtual. No hybrid value.
physical - Student belongs to the physical-school NWEA account boundary.
virtual - Student belongs to the virtual-school NWEA account boundary.
physicalRENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
school_levelTEXT enum
Nullable joined read field.
One documented enum value.
Locked school-level tag joined from People & Orgs for reports.
Constraints: Allowed values are WL, LL, L1, L2, MS, HS. Governed People & Orgs value. Not a Results-owned tag. Every report filtering by school level uses this field and value set instead of inventing another list.
WL - Wonder Level, the governed Alpha school-level tag used for early learners.
LL - Lower Level, the governed Alpha school-level tag used for lower elementary reporting.
L1 - Level 1, the governed Alpha school-level tag used for the first Alpha level band.
L2 - Level 2, the governed Alpha school-level tag used for the second Alpha level band.
MS - Middle School, the governed Alpha school-level tag.
HS - High School, the governed Alpha school-level tag.
MSRENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
age_gradeTEXT
Nullable joined read field.
Text within documented constraints.
Age-grade cohort dimension joined for reports.
Constraints: Governed People & Orgs value. Not parsed from MAP test name.
No closed enumgrade_6RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
tenure_bucketTEXT
Nullable joined read field.
Text within documented constraints.
Student tenure bucket computed from admission_date and alpha.policy.tenure_buckets.
Constraints: Must be computed by the surface. No dashboard hardcoding of band edges.
No closed enum1-2_yearsEXTEND + RESTRICT
ritd-005-policy-config
norms_setTEXT enum
Required for normed MAP rows.
One documented enum value.
NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.
Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables.
2020 - Use NWEA 2020 norms for achievement and growth comparisons.
2025 - Use NWEA 2025 norms for achievement and growth comparisons.
2025RESTRICT
ritd-010-norms-discipline
ritINTEGER
Nullable.
Integer within documented constraints.
Selected MAP RIT score.
Constraints: 100 through 350 when present. Selected by NWEAMap highest-RIT test_of_record rule.
No closed enum238CUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
standard_errorNUMERIC(6,2)
Nullable.
Decimal number within documented constraints.
MAP test standard error.
Constraints: Non-negative when present.
No closed enum3.20CUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
percentileINTEGER
Nullable.
Integer within documented constraints.
MAP percentile for the selected norms set.
Constraints: 0 through 99 when present. Ceiling students use alpha.map_99_level for additional signal.
No closed enum94RESTRICT
ritd-010-norms-discipline
achievement_quintileTEXT
Nullable.
Text within documented constraints.
NWEA achievement quintile when available.
Constraints: Preserve exported value within NWEA constraints. Not a substitute for Growth X or effective grade.
No closed enumHighCUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
test_start_atTIMESTAMPTZ
Nullable.
UTC timestamp.
Parsed timestamp for the selected sitting.
Constraints: UTC when parseable. Raw date/time stays in source evidence when parsing fails.
No closed enum2026-05-04T14:00:00ZCUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
source_projection_idUUID
Required.
PostgreSQL UUID.
NWEAMap assessment_result_projection row that produced this public score.
Constraints: Must reference NWEAMap projection evidence.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000001CUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
modified_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.
Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-020-axis-query-model

alpha.map_current_score GOALS current MAP score

Student-facing current MAP context for GOALS and similar apps: latest active Growth MAP by test date, with latest active screener/non-growth fallback only when no Growth MAP exists.

Data dictionary
Kind
SQL view
Primary key
(tenant_id, student_id, subject_id, norms_set)
Change
CUT + RENAME + EXTEND

Lifecycle. View refreshed by the same NWEAMap import/projection facts as map_score. Selection policy is latest-growth-first and versioned in policy_ref.

Relationships. Belongs to one student. References one NWEAMap assessment_result_projection row as source evidence. Does not replace alpha.map_score's per-term highest-RIT test_of_record report row.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
map_current_score_idTEXT
Required.
Text within documented constraints.
Stable id for this current-MAP view row.
Constraints: Unique within tenant. Includes the selected source row and norms set.
No closed enummap_10017_math_spring_current_2025CUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
student_emailCITEXT
Nullable joined read field.
Case-insensitive text within documented constraints.
Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id.
Constraints: Nullable because not every authorized read returns email. Case-insensitive email format when present. Must never be used as the sole reconciliation key.
No closed enumalex.rivera@example.eduRENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
canonical_term_idTEXT
Required for term-scoped rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
term_seasonTEXT enum
Required.
One documented enum value.
Canonical term season for the selected current MAP row.
Constraints: Must be one documented value. Resolved at import/projection time.
fall - Fall term.
winter - Winter term.
spring - Spring term.
summer - Summer term.
springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
school_yearTEXT
Required.
Text within documented constraints.
Canonical school year for the selected current MAP row.
Constraints: Format YYYY-YY or the tenant's canonical school-year format. Set by term resolver, not regex in consumers.
No closed enum2025-26RESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
nwea_account_idTEXT
Required.
Text within documented constraints.
NWEA district/account id read through the People & Orgs district org boundary.
Constraints: Must come from parent org alpha.org.nwea_district_id. Results must not create another NWEA account source of truth.
No closed enumNWEA-ALPHA-PHYSICALCUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
brandTEXT
Required joined read field.
Text within documented constraints.
Brand cohort tag joined from People & Orgs for reports.
Constraints: Locked registry tag at nwea_account grain. Do not duplicate as Results-owned source of truth.
No closed enumAlphaRENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
modalityTEXT enum
Required joined read field.
One documented enum value.
Physical or virtual NWEA account boundary.
Constraints: Must be physical or virtual. No hybrid value.
physical - Student belongs to the physical-school NWEA account boundary.
virtual - Student belongs to the virtual-school NWEA account boundary.
physicalRENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
levelTEXT
Nullable joined read field.
Text within documented constraints.
School-level/cohort label joined from People & Orgs for GOALS context.
Constraints: Governed People & Orgs value. Not a Results-owned tag.
No closed enummiddleRENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
age_gradeTEXT
Nullable joined read field.
Text within documented constraints.
Age-grade cohort dimension joined for context.
Constraints: Governed People & Orgs value. Not parsed from MAP test name.
No closed enum06RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
tenure_bucketTEXT
Nullable joined read field.
Text within documented constraints.
Student tenure bucket computed from admission_date and alpha.policy.tenure_buckets.
Constraints: Must be computed by the surface. No dashboard hardcoding of band edges.
No closed enum1-2EXTEND + RESTRICT
ritd-005-policy-config
norms_setTEXT enum
Required for normed MAP rows.
One documented enum value.
NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.
Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables.
2020 - Use NWEA 2020 norms for achievement and growth comparisons.
2025 - Use NWEA 2025 norms for achievement and growth comparisons.
2025RESTRICT
ritd-010-norms-discipline
ritINTEGER
Nullable.
Integer within documented constraints.
Selected current MAP RIT score.
Constraints: 100 through 350 when present. Selected by latest-growth-first policy, not highest-RIT test_of_record.
No closed enum210CUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
standard_errorNUMERIC(6,2)
Nullable.
Decimal number within documented constraints.
MAP test standard error for the selected row.
Constraints: Non-negative when present.
No closed enum3.20CUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
percentileINTEGER
Nullable.
Integer within documented constraints.
MAP percentile for the selected current MAP row and norms set.
Constraints: 0 through 99 when present. Norms set is explicit on the row.
No closed enum74RESTRICT
ritd-010-norms-discipline
achievement_quintileTEXT
Nullable.
Text within documented constraints.
NWEA achievement quintile when available.
Constraints: Preserve exported value within NWEA constraints.
No closed enumHighCUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
growth_measure_ynTEXT enum
Nullable.
One documented enum value.
Whether the selected MAP row is a Growth MAP measurement.
Constraints: Y rows win over non-Y rows. N or null is allowed only as screener/non-growth fallback when no active Growth MAP exists.
Y - Growth MAP row; preferred for current MAP.
N - Non-growth or screener row; fallback only.
YCUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
current_map_reasonTEXT enum
Required.
One documented enum value.
Why this row is the current MAP context.
Constraints: Must be one documented value. latest_growth wins over latest_screener_fallback.
latest_growth - Selected because it is the latest active Growth MAP row.
latest_screener_fallback - Selected because no active Growth MAP row exists, so the latest active non-growth/screener row is used.
latest_growthEXTEND + RESTRICT
ritd-005-policy-config
test_idTEXT
Nullable.
Text within documented constraints.
Source test id for the selected current MAP row.
Constraints: Audit/context field only. Do not parse it for subject, grade, or current-map selection.
No closed enumnwea_math_6plusCUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
test_start_atTIMESTAMPTZ
Nullable.
UTC timestamp.
Parsed timestamp for the selected current MAP sitting.
Constraints: UTC when parseable. Used by the surface policy to pick the latest row.
No closed enum2026-05-28T13:00:00ZCUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
source_projection_idTEXT
Required.
Text within documented constraints.
NWEAMap assessment_result_projection row that produced this current MAP context.
Constraints: Must reference NWEAMap projection evidence.
No closed enumprojection_map_10017_math_springCUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
policy_refTEXT
Required.
Text within documented constraints.
Named current-MAP selection policy.
Constraints: Must equal a versioned latest-growth-first policy. Changing this policy creates a new documented selection rule.
No closed enumalpha.policy.results.current_map.v2026-06-17.latest-growth-firstEXTEND + RESTRICT
ritd-005-policy-config
modified_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.
Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-020-axis-query-model

alpha.map_sitting Audit view of one MAP sitting

Authorized audit view of all MAP sittings, including retakes and soft-deleted rows. Ordinary consumers use map_score.

Data dictionary
Kind
SQL view
Primary key
(tenant_id, map_sitting_id)
Change
RENAME + RESTRICT

Lifecycle. Created by NWEAMap import/projection. Soft-deleted when later exports stop sending a row; never hard-deleted in normal retention.

Relationships. Belongs to one student. References raw NWEAMap row evidence.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
map_sitting_idUUID
Required.
PostgreSQL UUID.
Stable id for one MAP sitting audit row.
Constraints: Unique within tenant.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000801RENAME + RESTRICT
ritd-007-map-test-of-record ritd-028-axis-privacy-retention
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
canonical_term_idTEXT
Required for term-scoped rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
test_idTEXT
Required.
Text within documented constraints.
NWEA TestID for this sitting.
Constraints: Required for deterministic tie-break and audit.
No closed enum1110000001RENAME + RESTRICT
ritd-007-map-test-of-record ritd-028-axis-privacy-retention
test_start_atTIMESTAMPTZ
Nullable.
UTC timestamp.
Parsed sitting start timestamp.
Constraints: UTC when parseable.
No closed enum2026-05-04T14:00:00ZRENAME + RESTRICT
ritd-007-map-test-of-record ritd-028-axis-privacy-retention
ritINTEGER
Nullable.
Integer within documented constraints.
MAP RIT score for this sitting.
Constraints: Eligible for test_of_record only when numeric 100 through 350.
No closed enum238RENAME + RESTRICT
ritd-007-map-test-of-record ritd-028-axis-privacy-retention
percentileINTEGER
Nullable.
Integer within documented constraints.
MAP percentile for this sitting.
Constraints: 0 through 99 when present.
No closed enum94RENAME + RESTRICT
ritd-007-map-test-of-record ritd-028-axis-privacy-retention
growth_measure_ynTEXT
Nullable.
Text within documented constraints.
NWEA GrowthMeasureYN flag retained for comparison and audit.
Constraints: Preserve TRUE/FALSE/blank. Does not override highest-RIT test_of_record.
No closed enumTRUERENAME + RESTRICT
ritd-007-map-test-of-record ritd-028-axis-privacy-retention
is_test_of_recordBOOLEAN
Required.
true or false.
Whether this sitting is the selected test_of_record.
Constraints: At most one true row per tenant/account/student/subject/term. False when deleted or invalid RIT.
No closed enumtrueRENAME + RESTRICT
ritd-007-map-test-of-record ritd-028-axis-privacy-retention
test_of_record_reasonTEXT enum
Required.
One documented enum value.
Reason this sitting was selected or excluded.
Constraints: Must be one documented value.
highest_rit - Selected because it has the highest valid RIT in the student/subject/term group.
latest_start_time_tiebreak - Selected after a RIT tie by later test start time.
test_id_tiebreak - Selected after a start-time tie by deterministic TestID ordering.
ineligible_invalid_rit - Excluded because RIT is missing, nonnumeric, or outside 100 through 350.
ineligible_deleted - Excluded because the sitting is soft-deleted.
highest_ritRENAME + RESTRICT
ritd-007-map-test-of-record ritd-028-axis-privacy-retention
source_evidenceJSONB
Required for audit reads.
JSON value matching documented schema.
Structured NWEA source references and selected raw values for authorized audit.
Constraints: Must not include secrets. Raw NWEA fields not in public Alpha remain here or in the NWEAMap 1EdTech surface.
No closed enum{"raw_table":"nweamap.raw_assessment_results","row_id":"018f..."}RENAME + RESTRICT
ritd-007-map-test-of-record ritd-028-axis-privacy-retention
deleted_atTIMESTAMPTZ
Nullable.
UTC timestamp.
Soft-delete timestamp. Null means active; non-null rows stay available for authorized audit reads and are excluded from ordinary current reports.
Constraints: Never hard-delete audit-significant Results rows. Non-null values must be UTC. Legal erasure flows are separate privacy workflows.
No closed enum2026-06-03T18:55:00ZRENAME + RESTRICT
ritd-007-map-test-of-record ritd-028-axis-privacy-retention
delete_reasonTEXT enum
Nullable.
One documented enum value.
Why a sitting was soft-deleted.
Constraints: Required when deleted_at is non-null when inferable.
missing_from_replacement_export - A later authoritative export stopped sending the row.
retake_superseded - Import evidence indicates the row was replaced by a retake.
invalidated_or_suppressed_by_nwea - Import evidence indicates NWEA invalidated or suppressed the sitting.
unknown - The row disappeared but the surface cannot infer the specific reason.
retake_supersededRENAME + RESTRICT
ritd-007-map-test-of-record ritd-028-axis-privacy-retention
modified_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling.
Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-020-axis-query-model

alpha.map_goal_strand Sub-topic MAP score

One row per student, subject, term, and goal strand with strand RIT, standard error, range, adjective, and goal_gap.

Data dictionary
Kind
SQL view
Primary key
(tenant_id, student_id, subject_id, canonical_term_id, norms_set, goal_strand)
Change
RENAME + RESTRICT + EXTEND

Lifecycle. Generated from the selected MAP score/projection when goal slots are present.

Relationships. Belongs to one student and one MAP score.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
map_goal_strand_idUUID
Required.
PostgreSQL UUID.
Stable id for this goal-strand row.
Constraints: Unique within tenant.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000901RENAME + RESTRICT + EXTEND
ritd-008-map-goal-strands ritd-000-alpha-storage-model
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
canonical_term_idTEXT
Required for term-scoped rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
norms_setTEXT enum
Required for normed MAP rows.
One documented enum value.
NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.
Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables.
2020 - Use NWEA 2020 norms for achievement and growth comparisons.
2025 - Use NWEA 2025 norms for achievement and growth comparisons.
2025RESTRICT
ritd-010-norms-discipline
goal_slotINTEGER
Required.
1 through 5
Original NWEA goal slot number represented by this row.
Constraints: 1 through 5 inclusive for public Alpha. 6 through 8 remain audit-only until architecture changes.
No closed enum1RENAME + RESTRICT + EXTEND
ritd-008-map-goal-strands ritd-000-alpha-storage-model
goal_strandTEXT
Required.
Text within documented constraints.
Plain strand name from NWEA goal name.
Constraints: 1 to 255 visible characters. Do not parse it for subject or grade.
No closed enumAlgebraic ThinkingRENAME + RESTRICT + EXTEND
ritd-008-map-goal-strands ritd-000-alpha-storage-model
strand_ritINTEGER
Nullable.
Integer within documented constraints.
RIT score for this goal strand.
Constraints: 100 through 350 when present.
No closed enum242RENAME + RESTRICT + EXTEND
ritd-008-map-goal-strands ritd-000-alpha-storage-model
strand_standard_errorNUMERIC(6,2)
Nullable.
Decimal number within documented constraints.
Standard error for the strand RIT.
Constraints: Non-negative when present.
No closed enum4.10RENAME + RESTRICT + EXTEND
ritd-008-map-goal-strands ritd-000-alpha-storage-model
strand_rangeTEXT
Nullable.
Text within documented constraints.
NWEA range text for this strand.
Constraints: Preserve NWEA text. Do not parse for calculations.
No closed enum238-246RENAME + RESTRICT + EXTEND
ritd-008-map-goal-strands ritd-000-alpha-storage-model
strand_adjectiveTEXT
Nullable.
Text within documented constraints.
NWEA adjective describing strand performance.
Constraints: Preserve exported value; do not use as numeric score.
No closed enumHighRENAME + RESTRICT + EXTEND
ritd-008-map-goal-strands ritd-000-alpha-storage-model
overall_ritINTEGER
Nullable.
Integer within documented constraints.
Overall test RIT used to compute goal_gap.
Constraints: Must equal selected MAP score rit for the same row.
No closed enum238RENAME + RESTRICT + EXTEND
ritd-008-map-goal-strands ritd-000-alpha-storage-model
goal_gapINTEGER
Nullable.
Integer within documented constraints.
Surface-computed strand_rit minus overall_rit.
Constraints: Computed by Results. Null when either input is null.
No closed enum4RENAME + RESTRICT + EXTEND
ritd-008-map-goal-strands ritd-000-alpha-storage-model

alpha.map_growth_window Observed vs projected growth

One typed growth-window row carrying observed growth, projected/typical growth, Growth X, 2X target, and target flags.

Data dictionary
Kind
Public view + extension storage
Primary key
(tenant_id, student_id, subject_id, canonical_term_id, growth_window, norms_set)
Change
EXTEND

Lifecycle. Generated whenever MAP scores and NWEA growth fields are available for a term/window/norms set.

Relationships. Belongs to one student. Usually references current and prior MAP score rows.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
canonical_term_idTEXT
Required for term-scoped rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
norms_setTEXT enum
Required for normed MAP rows.
One documented enum value.
NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.
Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables.
2020 - Use NWEA 2020 norms for achievement and growth comparisons.
2025 - Use NWEA 2025 norms for achievement and growth comparisons.
2025RESTRICT
ritd-010-norms-discipline
growth_windowTEXT enum
Required.
One documented enum value.
Typed growth window.
Constraints: Must be one documented value. Not derived by client column switching.
fall_to_fall - Growth measured from Fall to next Fall.
fall_to_winter - Growth measured from Fall to Winter.
fall_to_spring - Growth measured from Fall to Spring.
winter_to_winter - Growth measured from Winter to next Winter.
winter_to_spring - Growth measured from Winter to Spring.
spring_to_spring - Growth measured from Spring to next Spring.
fall_to_springEXTEND
ritd-009-growth-x-target
observed_growthNUMERIC(6,2)
Nullable.
Decimal number within documented constraints.
NWEA observed growth for the window.
Constraints: May be null when no prior/future score exists.
No closed enum14.00EXTEND
ritd-009-growth-x-target
projected_growthNUMERIC(6,2)
Nullable.
Decimal number within documented constraints.
NWEA projected growth for the window under norms_set.
Constraints: Must not mix 2020 and 2025 norms. May be null if NWEA does not publish the projection.
No closed enum7.00EXTEND
ritd-009-growth-x-target
typical_growthNUMERIC(6,2)
Nullable.
Decimal number within documented constraints.
Typical growth value for the window and norms set.
Constraints: Must carry norms_set. May be null when not published.
No closed enum7.00RESTRICT
ritd-010-norms-discipline
growth_xNUMERIC(8,4)
Nullable.
Decimal number within documented constraints.
Observed growth divided by projected growth.
Constraints: Computed by Results. Null when projected_growth is null or zero.
No closed enum2.0000EXTEND
ritd-009-growth-x-target
growth_x_targetNUMERIC(8,4)
Required.
Decimal number within documented constraints.
Configured Growth X target for this row.
Constraints: Default comes from alpha.policy.growth_x_target, currently 2.0. Policy changes require config version change.
No closed enum2.0000EXTEND + RESTRICT
ritd-005-policy-config
on_track_for_growth_x_targetBOOLEAN
Nullable.
true or false.
Whether current/projected evidence is on track for target Growth X.
Constraints: Computed by Results. Null when required inputs are missing.
No closed enumtrueEXTEND
ritd-009-growth-x-target
projected_gapNUMERIC(6,2)
Nullable.
Decimal number within documented constraints.
Projected growth points above or below the Growth X target.
Constraints: Computed by Results. Positive means above target.
No closed enum0.00EXTEND
ritd-009-growth-x-target
null_reasonTEXT enum
Nullable.
One documented enum value.
Why growth_x or target fields are null.
Constraints: Required when growth_x is null.
not_enough_history - Required prior-term or baseline input does not exist yet.
no_projected_growth - NWEA did not publish projected growth for the requested window.
no_valid_rit - The sitting has no valid RIT for calculation.
missing_policy_config - The surface lacks active policy/config for this calculation.
not_applicable - The field does not apply to this row by design.
no_projected_growthRESTRICT
ritd-010-norms-discipline

alpha.map_normed_result MAP score under one norms set

One MAP observation or calculator output bound to exactly one norms set so reports can flip 2020/2025 safely.

Data dictionary
Kind
SQL view
Primary key
(tenant_id, map_score_id, norms_set)
Change
RESTRICT

Lifecycle. Generated with MAP score/calculator outputs; never mixes norms inside a row.

Relationships. Belongs to one map_score.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
map_score_idUUID
Required.
PostgreSQL UUID.
MAP score this normed output belongs to.
Constraints: Must reference alpha.map_score.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000701RESTRICT
ritd-010-norms-discipline
norms_setTEXT enum
Required for normed MAP rows.
One documented enum value.
NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.
Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables.
2020 - Use NWEA 2020 norms for achievement and growth comparisons.
2025 - Use NWEA 2025 norms for achievement and growth comparisons.
2025RESTRICT
ritd-010-norms-discipline
percentileINTEGER
Nullable.
Integer within documented constraints.
Percentile under this norms set.
Constraints: 0 through 99 when present.
No closed enum94RESTRICT
ritd-010-norms-discipline
achievement_quintileTEXT
Nullable.
Text within documented constraints.
Achievement quintile under this norms set.
Constraints: Preserve NWEA value when supplied. Do not use for 99-level calculation.
No closed enumHighRESTRICT
ritd-010-norms-discipline
norms_sourceTEXT
Required.
Text within documented constraints.
Source family for this normed output.
Constraints: Must state whether the value came from NWEA export or Alpha calculator.
No closed enumnwea_cdfRESTRICT
ritd-010-norms-discipline
calculator_versionTEXT
Nullable.
Text within documented constraints.
Calculator version when the value is computed by Alpha.
Constraints: Required for Alpha-calculated outputs.
No closed enumnorms_calc_2026_06EXTEND + RESTRICT
ritd-005-policy-config

alpha.map_percentile_translation Convert between MAP percentile and RIT

Surface-owned translation from percentile to RIT, or RIT to percentile, under one subject, grade, term season, and norms set. GOALS and report apps call this read model instead of carrying NWEA norms tables.

Data dictionary
Kind
Derived read model
Primary key
(tenant_id, subject_id, grade_level, term_season, norms_set, translation_direction, input_percentile, input_rit, calculator_version)
Change
EXTEND

Lifecycle. Generated from the active published-norms version and calculator_version. Recomputed when norms_set or calculator config changes; historical rows remain reproducible by version.

Relationships. Reads the single surface norms/calculator registry. Can be joined to MAP score and GOALS inputs by subject_id, grade_level, term_season, and norms_set.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
grade_levelNUMERIC(4,1)
Required.
Decimal number within documented constraints.
Grade level used for the norms translation.
Constraints: 0.0 through 12.9 when present. Must be the grade level expected by the active norms table/config.
No closed enum7.0EXTEND
ritd-010-norms-discipline ritd-011-rit-effective-grade
term_seasonTEXT enum
Required.
One documented enum value.
MAP season used for the norms translation.
Constraints: Must be fall, winter, spring, or summer. Resolved by the surface, not by app parsing.
fall - Fall MAP season.
winter - Winter MAP season.
spring - Spring MAP season.
summer - Summer MAP season.
springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
norms_setTEXT enum
Required for normed MAP rows.
One documented enum value.
NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.
Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables.
2020 - Use NWEA 2020 norms for achievement and growth comparisons.
2025 - Use NWEA 2025 norms for achievement and growth comparisons.
2025RESTRICT
ritd-010-norms-discipline
translation_directionTEXT enum
Required.
One documented enum value.
Direction of the requested surface translation.
Constraints: Must be one documented value. Determines which input/output fields are required.
percentile_to_rit - Input is a percentile; the surface returns the corresponding RIT under the selected norms set.
rit_to_percentile - Input is a RIT score; the surface returns the corresponding percentile under the selected norms set.
percentile_to_ritEXTEND
ritd-010-norms-discipline ritd-011-rit-effective-grade
input_percentileINTEGER
Nullable; required for percentile_to_rit.
Integer within documented constraints.
Requested percentile.
Constraints: 1 through 99. Must be null when translation_direction is rit_to_percentile.
No closed enum99EXTEND
ritd-010-norms-discipline ritd-011-rit-effective-grade
input_ritINTEGER
Nullable; required for rit_to_percentile.
Integer within documented constraints.
Requested RIT score.
Constraints: 100 through 350. Must be null when translation_direction is percentile_to_rit.
No closed enum252EXTEND
ritd-010-norms-discipline ritd-011-rit-effective-grade
output_ritINTEGER
Nullable; required for percentile_to_rit.
Integer within documented constraints.
Surface-returned RIT score for the requested percentile.
Constraints: 100 through 350. Computed by the surface from NWEA published norms and documented interpolation/extrapolation rules.
No closed enum252EXTEND
ritd-010-norms-discipline ritd-011-rit-effective-grade
output_percentileINTEGER
Nullable; required for rit_to_percentile.
Integer within documented constraints.
Surface-returned percentile for the requested RIT.
Constraints: 1 through 99. 99 remains a ceiling; use alpha.map_99_level for above-ceiling growth.
No closed enum99EXTEND
ritd-010-norms-discipline ritd-011-rit-effective-grade
source_point_kindTEXT enum
Required.
One documented enum value.
Whether this translation point is published, interpolated, extrapolated, or policy-derived.
Constraints: Must be one documented value. NWEA-published points are preserved exactly.
nwea_published - The point is directly reproduced from NWEA-published data.
interpolated - The point is interpolated between published NWEA points.
alpha_extrapolated - The point is an Alpha extrapolation, such as RIT90 or 99-level thresholds.
policy_derived - The point is derived from named alpha.policy.* configuration.
nwea_publishedEXTEND
ritd-010-norms-discipline ritd-011-rit-effective-grade
calculator_versionTEXT
Required.
Text within documented constraints.
Version of the norms/calculator used.
Constraints: Must reference alpha.policy_config. Changing the norms/calculator creates a new answer version.
No closed enumpercentile_rit_2026_06EXTEND + RESTRICT
ritd-005-policy-config
null_reasonTEXT enum
Nullable.
One documented enum value.
Why a translation output is null.
Constraints: Required when output_rit or output_percentile is null.
not_enough_history - Required prior-term or baseline input does not exist yet.
no_projected_growth - NWEA did not publish projected growth for the requested window.
no_valid_rit - The sitting has no valid RIT for calculation.
missing_policy_config - The surface lacks active policy/config for this calculation.
not_applicable - The field does not apply to this row by design.
missing_policy_configEXTEND + RESTRICT
ritd-005-policy-config

alpha.map_r90_norm_point Legacy Results R90 fixture row

A legacy Results report fixture used for Results MAP report compatibility. It is not the GOALS grade2RIT/R90 source; GOALS RIT->grade uses the skill-seeded NWEAMAP master directly or through the Analytics mirror. Consumers never keep a local copy.

Data dictionary
Kind
Stored config/read table
Primary key
(tenant_id, subject_id, grade_level, term_season, norms_set, calculator_version)
Change
EXTEND

Lifecycle. Kept for Results report compatibility while the R90 master lives in NWEAMAP. Superseded fixture versions remain readable only for historical Results answers.

Relationships. Legacy Results report fixtures may be read beside alpha.map_percentile_translation; GOALS grade2RIT/R90 relationships point to NWEAMAP or the Analytics mirror instead.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
grade_levelNUMERIC(4,1)
Required.
Decimal number within documented constraints.
Grade level this R90 row describes.
Constraints: 0.0 through 12.9 when present.
No closed enum7.0EXTEND
ritd-011-rit-effective-grade ritd-010-norms-discipline
term_seasonTEXT enum
Required.
One documented enum value.
MAP season for this R90 point.
Constraints: Must be fall, winter, spring, or summer.
fall - Fall MAP season.
winter - Winter MAP season.
spring - Spring MAP season.
summer - Summer MAP season.
springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
norms_setTEXT enum
Required for normed MAP rows.
One documented enum value.
NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.
Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables.
2020 - Use NWEA 2020 norms for achievement and growth comparisons.
2025 - Use NWEA 2025 norms for achievement and growth comparisons.
2025RESTRICT
ritd-010-norms-discipline
rit50_gradeNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
RIT50 grade point reproduced from NWEA-published data where available.
Constraints: NWEA-published points are preserved exactly. Interpolation must carry source_point_kind.
No closed enum7.10EXTEND
ritd-011-rit-effective-grade
rit90_gradeNUMERIC(5,2)
Required.
Decimal number within documented constraints.
Legacy Results fixture RIT90/R90 grade point for this subject/grade/season/norms row.
Constraints: This is Alpha extrapolation unless source_point_kind says nwea_published. Do not use as the GOALS grade2RIT/R90 oracle; use NWEAMAP/Analytics.
No closed enum6.40EXTEND
ritd-011-rit-effective-grade ritd-010-norms-discipline
r90_ritINTEGER
Required.
Integer within documented constraints.
RIT value for the legacy R90 fixture point.
Constraints: 100 through 350. GOALS RIT->grade must come from the skill-seeded NWEAMAP master or Analytics mirror.
No closed enum231EXTEND
ritd-011-rit-effective-grade ritd-010-norms-discipline
source_point_kindTEXT enum
Required.
One documented enum value.
Provenance class for the R90 point.
Constraints: Must be one documented value. Usually alpha_extrapolated for R90.
nwea_published - The point is directly reproduced from NWEA-published data.
interpolated - The point is interpolated between published NWEA points.
alpha_extrapolated - The point is an Alpha extrapolation, such as RIT90 or 99-level thresholds.
policy_derived - The point is derived from named alpha.policy.* configuration.
alpha_extrapolatedEXTEND
ritd-011-rit-effective-grade ritd-010-norms-discipline
calculator_versionTEXT
Required.
Text within documented constraints.
Version of the legacy Results fixture calculator.
Constraints: Must reference alpha.policy_config. Not an owner/version marker for the NWEAMAP grade2RIT/R90 master.
No closed enumrit_calc_2026_06EXTEND + RESTRICT
ritd-005-policy-config
statusTEXT enum
Required.
One documented enum value.
Lifecycle state of this R90 row.
Constraints: Only active rows drive current calculators.
draft - Config is being prepared and is not used by surface computations.
active - Config is the current value read by the surface for its effective window.
superseded - Config has been replaced but remains available for historical answers.
deprecated - Config should not be used for new calculations and remains only for audit.
activeEXTEND + RESTRICT
ritd-005-policy-config

alpha.map_effective_grade RIT to grade interpretation

RIT50 grade, RIT90 grade, effective grade, Alpha minimum RIT, and predicted RIT with provenance for published vs interpolated/extrapolated points.

Data dictionary
Kind
Public view + extension storage
Primary key
(tenant_id, student_id, subject_id, canonical_term_id, norms_set, calculator_version)
Change
EXTEND

Lifecycle. Generated for MAP score rows when calculator config is active.

Relationships. Belongs to one MAP score and one student.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
canonical_term_idTEXT
Required for term-scoped rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
norms_setTEXT enum
Required for normed MAP rows.
One documented enum value.
NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.
Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables.
2020 - Use NWEA 2020 norms for achievement and growth comparisons.
2025 - Use NWEA 2025 norms for achievement and growth comparisons.
2025RESTRICT
ritd-010-norms-discipline
ritINTEGER
Required.
Integer within documented constraints.
MAP RIT input for the calculator.
Constraints: 100 through 350.
No closed enum238EXTEND
ritd-011-rit-effective-grade
rit50_gradeNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
Grade level where students at this RIT get about 50 percent correct, grounded in NWEA-published data where available.
Constraints: May be interpolated only where NWEA has no direct point.
No closed enum7.10EXTEND
ritd-011-rit-effective-grade
rit90_gradeNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
Alpha extrapolated grade level for about 90 percent correctness.
Constraints: This is not NWEA-published. Must carry source_point_kind alpha_extrapolated when extrapolated.
No closed enum6.40EXTEND
ritd-011-rit-effective-grade
effective_gradeNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
Lowest grade a student can master and still move MAP growth under Alpha policy.
Constraints: Computed by Results calculator. May be null only with null_reason.
No closed enum6.40EXTEND
ritd-011-rit-effective-grade
alpha_minimum_ritINTEGER
Nullable.
Integer within documented constraints.
Minimum RIT Alpha expects for the effective grade target.
Constraints: Alpha extrapolation/config output. Must carry calculator_version.
No closed enum231EXTEND
ritd-011-rit-effective-grade
alpha_predicted_ritINTEGER
Nullable.
Integer within documented constraints.
Predicted future RIT under Alpha growth assumptions.
Constraints: Computed by Results. Must not be computed in skill packs.
No closed enum252EXTEND
ritd-011-rit-effective-grade
source_point_kindTEXT enum
Required.
One documented enum value.
Whether the calculator point is published, interpolated, extrapolated, or policy-derived.
Constraints: Must be one documented value.
nwea_published - The point is directly reproduced from NWEA-published data.
interpolated - The point is interpolated between published NWEA points.
alpha_extrapolated - The point is an Alpha extrapolation, such as RIT90 or 99-level thresholds.
policy_derived - The point is derived from named alpha.policy.* configuration.
alpha_extrapolatedEXTEND
ritd-011-rit-effective-grade
calculator_versionTEXT
Required.
Text within documented constraints.
Version of the RIT calculator used.
Constraints: Must reference alpha.policy_config.
No closed enumrit_calc_2026_06EXTEND + RESTRICT
ritd-005-policy-config
null_reasonTEXT enum
Nullable.
One documented enum value.
Why a calculator output is null.
Constraints: Required when effective_grade is null.
not_enough_history - Required prior-term or baseline input does not exist yet.
no_projected_growth - NWEA did not publish projected growth for the requested window.
no_valid_rit - The sitting has no valid RIT for calculation.
missing_policy_config - The surface lacks active policy/config for this calculation.
not_applicable - The field does not apply to this row by design.
missing_policy_configEXTEND + RESTRICT
ritd-005-policy-config

alpha.map_longitudinal_point One point in the student's MAP timeline

Ordered per-student, per-subject time series point with RIT, observed vs typical growth, Growth X, norms set, and TimeBack-era flag.

Data dictionary
Kind
Read model
Primary key
(tenant_id, student_id, subject_id, term_order, norms_set)
Change
EXTEND

Lifecycle. Generated across MAP terms for growth-over-time reports.

Relationships. Belongs to one student. References one map_score per point when present.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
canonical_term_idTEXT
Required for term-scoped rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
norms_setTEXT enum
Required for normed MAP rows.
One documented enum value.
NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.
Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables.
2020 - Use NWEA 2020 norms for achievement and growth comparisons.
2025 - Use NWEA 2025 norms for achievement and growth comparisons.
2025RESTRICT
ritd-010-norms-discipline
term_orderINTEGER
Required.
Integer within documented constraints.
Surface-owned chronological order for this student's subject timeline.
Constraints: Must be >= 1. Never parse term strings in clients.
No closed enum6RESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
ritINTEGER
Nullable.
Integer within documented constraints.
Selected MAP RIT at this point.
Constraints: 100 through 350 when present.
No closed enum238CUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
observed_growthNUMERIC(6,2)
Nullable.
Decimal number within documented constraints.
Observed growth since the prior comparable point/window.
Constraints: Computed by Results or copied from NWEA where applicable.
No closed enum14.00EXTEND
ritd-009-growth-x-target
typical_growthNUMERIC(6,2)
Nullable.
Decimal number within documented constraints.
Typical growth under norms_set.
Constraints: Must not mix norms sets.
No closed enum7.00RESTRICT
ritd-010-norms-discipline
growth_xNUMERIC(8,4)
Nullable.
Decimal number within documented constraints.
Growth X for this timeline segment.
Constraints: Computed by Results. Null with documented null_reason.
No closed enum2.0000EXTEND
ritd-009-growth-x-target
timeback_eraTEXT enum
Required.
One documented enum value.
Whether this point is before or during TimeBack era.
Constraints: Computed by alpha.policy.school_year_boundaries. Default split: 2025-26 and later is timeback.
pre_timeback - School year is 2024-25 or earlier under current policy.
timeback - School year is 2025-26 or later under current policy.
timebackEXTEND + RESTRICT
ritd-005-policy-config
previous_map_score_idUUID
Nullable.
PostgreSQL UUID.
Prior MAP score used for observed growth.
Constraints: Must reference alpha.map_score when present.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000650EXTEND
ritd-009-growth-x-target
null_reasonTEXT enum
Nullable.
One documented enum value.
Why growth fields are null.
Constraints: Required when growth_x is null.
not_enough_history - Required prior-term or baseline input does not exist yet.
no_projected_growth - NWEA did not publish projected growth for the requested window.
no_valid_rit - The sitting has no valid RIT for calculation.
missing_policy_config - The surface lacks active policy/config for this calculation.
not_applicable - The field does not apply to this row by design.
not_enough_historyRESTRICT
ritd-010-norms-discipline

alpha.map_99_level Growth beyond the percentile ceiling

Counts how many grade levels above the 99th-percentile threshold a student's RIT sits, so ceiling growth remains visible.

Data dictionary
Kind
Public view + extension storage
Primary key
(tenant_id, student_id, subject_id, canonical_term_id, norms_set)
Change
EXTEND

Lifecycle. Generated for normed MAP scores with percentile/RIT inputs and active 99-level threshold config.

Relationships. Belongs to one MAP score.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
canonical_term_idTEXT
Required for term-scoped rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
norms_setTEXT enum
Required for normed MAP rows.
One documented enum value.
NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.
Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables.
2020 - Use NWEA 2020 norms for achievement and growth comparisons.
2025 - Use NWEA 2025 norms for achievement and growth comparisons.
2025RESTRICT
ritd-010-norms-discipline
percentileINTEGER
Required.
Integer within documented constraints.
NWEA percentile for the selected score.
Constraints: Usually 99 for rows where levels_above_99 is positive. 0 through 99.
No closed enum99RESTRICT
ritd-010-norms-discipline
ritINTEGER
Required.
Integer within documented constraints.
MAP RIT score.
Constraints: 100 through 350.
No closed enum268CUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
threshold_99_ritINTEGER
Required.
Integer within documented constraints.
RIT threshold for 99th percentile under this subject/grade/norms set.
Constraints: Must come from published/interpolated/extrapolated threshold config. Must carry threshold_source_kind.
No closed enum252EXTEND
ritd-011-rit-effective-grade
levels_above_99NUMERIC(6,2)
Required.
Decimal number within documented constraints.
Grade levels above the 99th percentile threshold.
Constraints: Computed by Results. 0 when RIT is at or below threshold.
No closed enum1.60EXTEND
ritd-011-rit-effective-grade
threshold_source_kindTEXT enum
Required.
One documented enum value.
Provenance class for the threshold point.
Constraints: Must be one documented value.
nwea_published - The point is directly reproduced from NWEA-published data.
interpolated - The point is interpolated between published NWEA points.
alpha_extrapolated - The point is an Alpha extrapolation, such as RIT90 or 99-level thresholds.
policy_derived - The point is derived from named alpha.policy.* configuration.
alpha_extrapolatedEXTEND
ritd-011-rit-effective-grade
calculator_versionTEXT
Required.
Text within documented constraints.
Calculator/config version used for threshold and levels.
Constraints: Must reference alpha.policy_config.
No closed enumrit_calc_2026_06EXTEND + RESTRICT
ritd-005-policy-config

alpha.report_map_quadrants Quadrant row

Classifies one student/subject/term into a growth x achievement quadrant without client calculations.

Data dictionary
Kind
Report-ready read view
Primary key
(tenant_id, student_id, subject_id, canonical_term_id, growth_window, norms_set)
Change
EXTEND

Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.

Relationships. Reads from Results-owned source objects and authorized joined cohort fields.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
student_emailCITEXT
Nullable joined read field.
Case-insensitive text within documented constraints.
Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id.
Constraints: Nullable because not every authorized read returns email. Case-insensitive email format when present. Must never be used as the sole reconciliation key.
No closed enumalex.rivera@example.eduRENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
canonical_term_idTEXT
Required for term-scoped rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
norms_setTEXT enum
Required for normed MAP rows.
One documented enum value.
NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.
Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables.
2020 - Use NWEA 2020 norms for achievement and growth comparisons.
2025 - Use NWEA 2025 norms for achievement and growth comparisons.
2025RESTRICT
ritd-010-norms-discipline
growth_windowTEXT enum
Required.
One documented enum value.
Typed growth window used for the Growth X value in this quadrant row.
Constraints: Must be one documented value. Endpoint defaults may choose the school report window, but the row still carries the resolved window.
fall_to_fall - Growth measured from Fall to next Fall.
fall_to_winter - Growth measured from Fall to Winter.
fall_to_spring - Growth measured from Fall to Spring.
winter_to_winter - Growth measured from Winter to next Winter.
winter_to_spring - Growth measured from Winter to Spring.
spring_to_spring - Growth measured from Spring to next Spring.
fall_to_springEXTEND
ritd-009-growth-x-target
ritINTEGER
Nullable.
Integer within documented constraints.
Selected test-of-record RIT for the report row.
Constraints: Read from alpha.map_score.
No closed enum238EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
growth_xNUMERIC(8,4)
Nullable.
Decimal number within documented constraints.
Surface-owned Growth X for the selected window.
Constraints: Read from alpha.map_growth_window. No client calculation.
No closed enum2.0000EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
quadrantTEXT enum
Nullable.
One documented enum value.
Report quadrant under active threshold policy.
Constraints: Must be one documented value when inputs exist.
high_growth_high_achievement - Growth X and achievement are both at or above the configured report threshold.
high_growth_low_achievement - Growth X is high while achievement is below the configured threshold.
low_growth_high_achievement - Achievement is high while Growth X is below the configured threshold.
low_growth_low_achievement - Both Growth X and achievement are below the configured thresholds.
high_growth_high_achievementEXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
intervention_flagBOOLEAN
Required.
true or false.
Whether this row meets policy for intervention or celebration workflow.
Constraints: Computed by Results report policy.
No closed enumfalseEXTEND + RESTRICT
ritd-005-policy-config

alpha.report_retake_audit Retake history row

Summarizes sittings, soft deletes, and selected highest-RIT test of record for one student/subject/term.

Data dictionary
Kind
Report-ready read view
Primary key
(tenant_id, student_id, subject_id, canonical_term_id)
Change
EXTEND

Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.

Relationships. Reads from Results-owned source objects and authorized joined cohort fields.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
canonical_term_idTEXT
Required for term-scoped rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
sitting_countINTEGER
Required.
Integer within documented constraints.
Number of all-sittings rows in the group.
Constraints: Must be >= 0. Computed by the surface.
No closed enum3EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
highest_rit_sitting_idUUID
Nullable.
PostgreSQL UUID.
MAP sitting selected as test_of_record.
Constraints: References alpha.map_sitting when present.
No closed enum018f4b4e-9c7a-7d3d-8b2f-2f673a000801RENAME + RESTRICT
ritd-007-map-test-of-record ritd-028-axis-privacy-retention
deleted_sitting_countINTEGER
Required.
Integer within documented constraints.
Number of soft-deleted sittings in the group.
Constraints: Must be >= 0.
No closed enum1RENAME + RESTRICT
ritd-007-map-test-of-record ritd-028-axis-privacy-retention
selection_explanationTEXT
Required.
Text within documented constraints.
Plain explanation of why the selected sitting is test_of_record.
Constraints: Must mention highest-RIT rule or null reason. Do not expose client dedupe instructions.
No closed enumSelected highest valid RIT; later lower retake remains audit evidence.RENAME + RESTRICT
ritd-007-map-test-of-record ritd-028-axis-privacy-retention

alpha.report_growth_over_time Timeline row

Report-ready ordered growth timeline; same facts as map_longitudinal_point with cohort fields added.

Data dictionary
Kind
Report-ready read view
Primary key
(tenant_id, student_id, subject_id, term_order, norms_set)
Change
EXTEND

Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.

Relationships. Reads from Results-owned source objects and authorized joined cohort fields.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
student_emailCITEXT
Nullable joined read field.
Case-insensitive text within documented constraints.
Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id.
Constraints: Nullable because not every authorized read returns email. Case-insensitive email format when present. Must never be used as the sole reconciliation key.
No closed enumalex.rivera@example.eduRENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
norms_setTEXT enum
Required for normed MAP rows.
One documented enum value.
NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.
Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables.
2020 - Use NWEA 2020 norms for achievement and growth comparisons.
2025 - Use NWEA 2025 norms for achievement and growth comparisons.
2025RESTRICT
ritd-010-norms-discipline
term_orderINTEGER
Required.
Integer within documented constraints.
Surface-owned chronological order.
Constraints: Must be >= 1.
No closed enum6RESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
canonical_term_idTEXT
Required for term-scoped rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
ritINTEGER
Nullable.
Integer within documented constraints.
RIT at this timeline point.
Constraints: Read from alpha.map_longitudinal_point.
No closed enum238EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
observed_growthNUMERIC(6,2)
Nullable.
Decimal number within documented constraints.
Observed growth for this segment.
Constraints: Computed by Results.
No closed enum14.00EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
growth_xNUMERIC(8,4)
Nullable.
Decimal number within documented constraints.
Growth X for this segment.
Constraints: Computed by Results.
No closed enum2.0000EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
timeback_eraTEXT enum
Required.
One documented enum value.
Pre-TimeBack vs TimeBack classification.
Constraints: Computed by policy.
pre_timeback - School year is 2024-25 or earlier under current policy.
timeback - School year is 2025-26 or later under current policy.
timebackEXTEND + RESTRICT
ritd-005-policy-config

alpha.report_norms_isolation Same score under one norms set

Lets reports regenerate under 2020 or 2025 norms by changing normsSet, with no local norms tables.

Data dictionary
Kind
Report-ready read view
Primary key
(tenant_id, student_id, subject_id, canonical_term_id, norms_set)
Change
EXTEND

Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.

Relationships. Reads from Results-owned source objects and authorized joined cohort fields.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
canonical_term_idTEXT
Required for term-scoped rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
norms_setTEXT enum
Required for normed MAP rows.
One documented enum value.
NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.
Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables.
2020 - Use NWEA 2020 norms for achievement and growth comparisons.
2025 - Use NWEA 2025 norms for achievement and growth comparisons.
2025RESTRICT
ritd-010-norms-discipline
ritINTEGER
Nullable.
Integer within documented constraints.
RIT held constant while norms-dependent fields change.
Constraints: Read from alpha.map_score.
No closed enum238CUT + RENAME + EXTEND
ritd-006-map-identity-cohort ritd-007-map-test-of-record
percentileINTEGER
Nullable.
Integer within documented constraints.
Percentile under norms_set.
Constraints: 0 through 99 when present.
No closed enum94RESTRICT
ritd-010-norms-discipline
effective_gradeNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
Effective grade under norms_set/calculator config.
Constraints: Read from alpha.map_effective_grade.
No closed enum6.40EXTEND
ritd-011-rit-effective-grade
growth_xNUMERIC(8,4)
Nullable.
Decimal number within documented constraints.
Growth X under norms_set.
Constraints: Read from alpha.map_growth_window.
No closed enum2.0000EXTEND
ritd-009-growth-x-target

alpha.report_growth_breakdown Growth component row

Breaks Growth X into observed, projected, typical, target, and gap fields by typed growth window.

Data dictionary
Kind
Report-ready read view
Primary key
(tenant_id, student_id, subject_id, canonical_term_id, growth_window, norms_set)
Change
EXTEND

Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.

Relationships. Reads from Results-owned source objects and authorized joined cohort fields.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
canonical_term_idTEXT
Required for term-scoped rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
norms_setTEXT enum
Required for normed MAP rows.
One documented enum value.
NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.
Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables.
2020 - Use NWEA 2020 norms for achievement and growth comparisons.
2025 - Use NWEA 2025 norms for achievement and growth comparisons.
2025RESTRICT
ritd-010-norms-discipline
growth_windowTEXT enum
Required.
One documented enum value.
Typed growth window.
Constraints: Must be one documented value.
fall_to_fall - Growth measured from Fall to next Fall.
fall_to_winter - Growth measured from Fall to Winter.
fall_to_spring - Growth measured from Fall to Spring.
winter_to_winter - Growth measured from Winter to next Winter.
winter_to_spring - Growth measured from Winter to Spring.
spring_to_spring - Growth measured from Spring to next Spring.
fall_to_springEXTEND
ritd-009-growth-x-target
observed_growthNUMERIC(6,2)
Nullable.
Decimal number within documented constraints.
Observed growth points.
Constraints: Read from alpha.map_growth_window.
No closed enum14.00EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
projected_growthNUMERIC(6,2)
Nullable.
Decimal number within documented constraints.
Projected growth points.
Constraints: Read from alpha.map_growth_window.
No closed enum7.00EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
growth_xNUMERIC(8,4)
Nullable.
Decimal number within documented constraints.
Observed / projected growth.
Constraints: Computed by Results.
No closed enum2.0000EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
target_gapNUMERIC(6,2)
Nullable.
Decimal number within documented constraints.
Difference from configured Growth X target.
Constraints: Computed by Results.
No closed enum0.00EXTEND + RESTRICT
ritd-005-policy-config

alpha.report_group_growth_x Cohort Growth X row

Returns the Growth X answer for a cohort by averaging each student's individual Growth X ratio at the documented group grain. It explicitly does not divide total observed growth by total projected growth.

Data dictionary
Kind
Report-ready read view
Primary key
(tenant_id, group_dimension, group_key, subject_id, canonical_term_id, growth_window, norms_set)
Change
EXTEND

Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.

Relationships. Reads from Results-owned source objects and authorized joined cohort fields.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
group_dimensionTEXT enum
Required.
One documented enum value.
Cohort dimension used for the group row.
Constraints: Must be one documented value. School-level and tenure filters use locked registries.
school_level - Group by the locked WL/LL/L1/L2/MS/HS school-level tag from People & Orgs.
tenure_bucket - Group by the locked tenure bucket computed by the surface from admission_date and alpha.policy.tenure_buckets.
brand - Group by the locked brand tag at the NWEA-account boundary.
modality - Group by physical or virtual modality at the NWEA-account boundary.
school - Group by the enrolled school sourcedId through People & Orgs.
cohort - Group by an authorized named cohort returned by People & Orgs.
school_levelEXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
group_keyTEXT
Required.
Text within documented constraints.
Value of the selected group_dimension.
Constraints: For school_level, must be WL, LL, L1, L2, MS, or HS. For tenure_bucket, must be one alpha.policy.tenure_buckets value. For brand/modality/school/cohort, must come from People & Orgs authorized joins.
No closed enumMSRENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
canonical_term_idTEXT
Required for term-scoped rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
norms_setTEXT enum
Required for normed MAP rows.
One documented enum value.
NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.
Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables.
2020 - Use NWEA 2020 norms for achievement and growth comparisons.
2025 - Use NWEA 2025 norms for achievement and growth comparisons.
2025RESTRICT
ritd-010-norms-discipline
growth_windowTEXT enum
Required.
One documented enum value.
Typed growth window used for the group Growth X answer.
Constraints: Must be one documented value.
fall_to_fall - Growth measured from Fall to next Fall.
fall_to_winter - Growth measured from Fall to Winter.
fall_to_spring - Growth measured from Fall to Spring.
winter_to_winter - Growth measured from Winter to next Winter.
winter_to_spring - Growth measured from Winter to Spring.
spring_to_spring - Growth measured from Spring to next Spring.
fall_to_springEXTEND
ritd-009-growth-x-target
student_countINTEGER
Required.
Integer within documented constraints.
Number of students with an eligible individual Growth X ratio in this group.
Constraints: Must be >= 0. Students with null individual growth_x are excluded and counted in excluded_student_count.
No closed enum47EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
excluded_student_countINTEGER
Required.
Integer within documented constraints.
Number of otherwise in-scope students excluded because their individual Growth X ratio is null.
Constraints: Must be >= 0. Null reasons remain on alpha.map_growth_window rows.
No closed enum3EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
average_growth_xNUMERIC(8,4)
Nullable.
Decimal number within documented constraints.
Average of each eligible student's individual growth_x ratio.
Constraints: Computed by Results as avg(alpha.map_growth_window.growth_x). Never compute as sum(observed_growth) / sum(projected_growth). Null when student_count is 0.
No closed enum2.1240EXTEND
ritd-009-growth-x-target
growth_x_targetNUMERIC(8,4)
Required.
Decimal number within documented constraints.
Configured target used to interpret the group answer.
Constraints: Default is alpha.policy.growth_x_target. Policy version must be recorded.
No closed enum2.0000EXTEND + RESTRICT
ritd-005-policy-config
students_at_or_above_target_countINTEGER
Required.
Integer within documented constraints.
Eligible students whose individual Growth X meets or exceeds target.
Constraints: Must be >= 0. Computed from individual ratios, not total growth sums.
No closed enum29EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
policy_versionTEXT
Required.
Text within documented constraints.
Policy/config version used for group eligibility and target.
Constraints: Must reference alpha.policy_config.
No closed enumgrowth_x_group_v2026_06EXTEND + RESTRICT
ritd-005-policy-config
computed_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC timestamp when the surface produced this group row.
Constraints: Must be UTC.
No closed enum2026-06-05T14:31:00ZEXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle

alpha.report_student_progress_animation Animation frame row

Report-ready frames for student_progress_animation without local 99-level, Growth X, or effective-grade math.

Data dictionary
Kind
Report-ready read view
Primary key
(tenant_id, student_id, subject_id, frame_index)
Change
EXTEND

Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.

Relationships. Reads from Results-owned source objects and authorized joined cohort fields.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
frame_indexINTEGER
Required.
Integer within documented constraints.
Ordered frame number.
Constraints: Must be >= 0.
No closed enum12EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
frame_dateDATE
Required.
ISO 8601 calendar date.
Date represented by the frame.
Constraints: ISO 8601 date.
No closed enum2026-06-03RESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
working_gradeNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
Working grade for this frame.
Constraints: Read from alpha.working_grade.
No closed enum7.40EXTEND
ritd-014-working-grade-advancement
effective_gradeNUMERIC(5,2)
Nullable.
Decimal number within documented constraints.
Effective grade for this frame when MAP input exists.
Constraints: Read from alpha.map_effective_grade.
No closed enum6.40EXTEND
ritd-011-rit-effective-grade
growth_xNUMERIC(8,4)
Nullable.
Decimal number within documented constraints.
Growth X visible at this frame.
Constraints: Read from alpha.map_growth_window.
No closed enum2.0000EXTEND
ritd-009-growth-x-target
levels_above_99NUMERIC(6,2)
Nullable.
Decimal number within documented constraints.
99-level value visible at this frame.
Constraints: Read from alpha.map_99_level.
No closed enum1.60EXTEND
ritd-011-rit-effective-grade

alpha.report_closed_loop_reconciliation Old-vs-Alpha comparison row

Compares TimeBack Production old answers and Alpha surface answers for RIT, Growth X, HMG, mastery, and minutes reconciliation keys. Migration uses studentId as the typed single-student filter for one-student cutover checks; raw NWEA StudentID is not accepted here.

Data dictionary
Kind
Report-ready read view
Primary key
(tenant_id, metric_kind, student_id, subject_id, canonical_term_id, kc_id, activity_date, import_id)
Change
EXTEND

Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.

Relationships. Reads from Results-owned source objects and authorized joined cohort fields.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
student_idTEXT
Required.
Text within documented constraints.
TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity.
Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field.
No closed enumstu_timeback_10017RENAME
ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subject_idTEXT enum
Required.
One documented enum value.
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.
Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects.
math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathRESTRICT
ritd-005-policy-config ritd-010-norms-discipline
canonical_term_idTEXT
Nullable; required for MAP/RIT/Growth X rows.
Text within documented constraints.
Typed academic term id. This is the term field clients use instead of parsing NWEA TermName.
Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows.
No closed enumterm_2025_26_springRESTRICT
ritd-010-norms-discipline ritd-020-axis-query-model
import_idTEXT
Nullable.
Text within documented constraints.
Import id whose materialized rows are being reconciled, when the comparison follows a raw-ingest batch.
Constraints: When present, must reference source evidence written by POST /alpha/results/v1/imports. Used for migration cutover evidence, not as the student key.
No closed enumimport_timeback_prod_results_2026_06_08T15EXTEND
ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model
source_shapeTEXT enum
Nullable; required when import_id is present.
One documented enum value.
Source-shaped producer family used by the import being reconciled.
Constraints: Must be one documented raw_import_source_shape value when present. Do not infer source shape from producer_batch_id text.
timeback_assessment_result - Raw TimeBack Production assessment/result row. The caller sends the source row as-is; Results resolves student, subject, term, content/test family, score evidence, KC evidence, mastery, XP, and report rows server-side.
nwea_map_assessment_result - Raw NWEA MAP Growth CDF AssessmentResults row. The caller sends NWEA field names such as StudentID, TermName, Subject, TestID, TestRITScore, NormsReferenceData, and GoalN fields; Results routes through the NWEAMap base contract and materializes public MAP reads server-side.
timeback_assessment_resultEXTEND
ritd-003-canonical-result-shape ritd-000-alpha-storage-model
metric_kindTEXT enum
Required.
One documented enum value.
Metric being reconciled.
Constraints: Must be one documented value.
rit - RIT per student/subject/term.
growth_x - Growth X per student/subject/term.
highest_mastered_grade - Highest mastered grade per student/subject/as-of date.
student_kc_state - Four-state KC state per student/KC.
minutes - Minutes per student/day, read from Events surface.
growth_xEXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
kc_idTEXT
Nullable; required for student_kc_state metric.
Text within documented constraints.
Curriculum KC id for KC-state reconciliation.
Constraints: Must reference Curriculum KC when metric_kind is student_kc_state.
No closed enumkc_linear_equationsEXTEND
ritd-004-student-knowledge-graph
activity_dateDATE
Nullable; required for minutes metric.
ISO 8601 calendar date.
Date for Events minutes reconciliation.
Constraints: Minutes belong to Events, but reconciliation reports show the comparison key.
No closed enum2026-06-03EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
old_valueTEXT
Nullable.
Text within documented constraints.
Value returned by old TimeBack Production for this key.
Constraints: Stored as text for cross-metric comparison display. Do not use as canonical Results value.
No closed enum2.0000EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
alpha_valueTEXT
Nullable.
Text within documented constraints.
Value returned by the Alpha surface for this key.
Constraints: Stored as text for comparison display. Canonical value remains in the source Alpha object.
No closed enum2.0000EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
reconcile_statusTEXT enum
Required.
One documented enum value.
Whether old and Alpha answers match for this key.
Constraints: Must be one documented value.
match - Old production and Alpha surface answers are identical for the reconciliation key.
mismatch - Both sides returned values but they differ.
missing_old - The Alpha surface has a value that old production did not return.
missing_alpha - Old production has a value the Alpha surface did not return.
not_applicable - The metric is not expected for this key.
matchEXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
mismatch_detailTEXT
Nullable.
Text within documented constraints.
Human-readable explanation when values differ.
Constraints: Required when reconcile_status is mismatch. Should name the earliest source artifact or adapter evidence if known.
No closed enumOld value used local dedupe; Alpha used highest-RIT test_of_record.EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle

alpha.report_answer_key Surface-owned worked example answer

Golden rows and hashes used by the skill pack to prove it asks the surface correctly without carrying logic.

Data dictionary
Kind
Report-ready read view
Primary key
(tenant_id, example_id, report_id, norms_set)
Change
EXTEND

Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.

Relationships. Reads from Results-owned source objects and authorized joined cohort fields.

Fields
FieldTypeMeaningAllowed valuesExampleProvenance
tenant_idUUID
Required.
PostgreSQL UUID.
Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim.
Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim.
No closed enum0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3PASS-THROUGH
ritd-026-axis-tenant-routing
example_idTEXT
Required.
Text within documented constraints.
Stable id of the worked example.
Constraints: Unique within tenant and report_id.
No closed enummap_quadrants_2025_norms_demoEXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
report_idTEXT enum
Required.
One documented enum value.
Report view the example exercises.
Constraints: Must be one documented report view.
map_quadrants - MAP quadrants report.
retake_audit - MAP retake audit report.
growth_over_time - Growth-over-time report.
norms_isolation - Norms-isolation variant.
growth_breakdown - Growth breakdown report.
group_growth_x - Group Growth X report using average of student ratios.
closed_loop_reconciliation - Closed-loop reconciliation report.
map_quadrantsEXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
norms_setTEXT enum
Required for normed MAP rows.
One documented enum value.
NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms.
Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables.
2020 - Use NWEA 2020 norms for achievement and growth comparisons.
2025 - Use NWEA 2025 norms for achievement and growth comparisons.
2025RESTRICT
ritd-010-norms-discipline
request_paramsJSONB
Required.
JSON value matching documented schema.
Exact surface request parameters for the worked example.
Constraints: Must be a JSON object. May include endpoint path and query parameters but no credentials.
No closed enum{"normsSet":"2025","subject":"math"}EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
expected_row_countINTEGER
Required.
Integer within documented constraints.
Number of rows the surface should return for the example.
Constraints: Must be >= 0.
No closed enum42EXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
expected_result_hashTEXT
Required.
Text within documented constraints.
Hash of the canonical response used by skill-pack self-checks.
Constraints: Use sha256-prefixed digest. Hash the platform answer, not local computed output.
No closed enumsha256:bc932e2bEXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
verified_atTIMESTAMPTZ
Required.
UTC timestamp.
UTC time the surface last verified the answer key.
Constraints: Must be UTC.
No closed enum2026-06-03T18:55:00ZEXTEND
ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle

Parameters

Shared request parameters

These are typed API inputs. Do not parse terms, subjects, NWEA fields, or report windows in a client.

API parameters
NameTypeRequiredMeaningAllowed valuesExampleTrace
studentIdTEXTRequired on student sub-collection routes.TimeBack student id. Never use NWEA StudentID in public Alpha requests.No closed enumstu_timeback_10017ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
subjectTEXT enumOptional filter unless endpoint requires subject.Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject.math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.
reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.
language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.
science - Canonical science subject. MAP-measured.
vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.
mathritd-005-policy-config ritd-010-norms-discipline
asOfDateDATEOptional; defaults are endpoint-specific.Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state.No closed enum2026-06-03ritd-020-axis-query-model ritd-015-report-card-gates
canonicalTermIdTEXTOptional filter.Typed term id used instead of parsing NWEA TermName.No closed enumterm_2025_26_springritd-010-norms-discipline ritd-020-axis-query-model
normsSetTEXT enumRequired on norm-sensitive report views.Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set.2020 - Use NWEA 2020 norms for achievement and growth comparisons.
2025 - Use NWEA 2025 norms for achievement and growth comparisons.
2025ritd-010-norms-discipline
growthWindowTEXT enumRequired on growth-window reads when not implied by term pair.Typed growth window. Clients never switch over NWEA growth-column names.fall_to_fall - Growth measured from Fall to next Fall.
fall_to_winter - Growth measured from Fall to Winter.
fall_to_spring - Growth measured from Fall to Spring.
winter_to_winter - Growth measured from Winter to next Winter.
winter_to_spring - Growth measured from Winter to Spring.
spring_to_spring - Growth measured from Spring to next Spring.
fall_to_springritd-009-growth-x-target
gradeLevelNUMERIC(4,1)Required on percentile/RIT translation reads and grade-level progress reads; optional on course-progress reads.Typed grade level used for percentile/RIT translation or for Results grade-level progress/pacing reads. It is never inferred from MAP/RIT/R90 grade-band percent.No closed enum7.0ritd-036-course-grade-progress
termSeasonTEXT enumRequired on percentile/RIT translation reads.MAP season used for percentile <-> RIT translation; clients do not parse this from term strings.fall - Fall MAP season.
winter - Winter MAP season.
spring - Spring MAP season.
summer - Summer MAP season.
springritd-010-norms-discipline ritd-020-axis-query-model
translationDirectionTEXT enumRequired on percentile/RIT translation reads.Chooses percentile_to_rit or rit_to_percentile so one endpoint can serve both GOALS conversions.percentile_to_rit - Input is a percentile; the surface returns the corresponding RIT under the selected norms set.
rit_to_percentile - Input is a RIT score; the surface returns the corresponding percentile under the selected norms set.
percentile_to_ritritd-010-norms-discipline ritd-011-rit-effective-grade
inputPercentileINTEGERRequired only when translationDirection=percentile_to_rit.Percentile to translate to RIT using the surface norms calculator.No closed enum99ritd-010-norms-discipline ritd-011-rit-effective-grade
inputRitINTEGERRequired only when translationDirection=rit_to_percentile.RIT score to translate to percentile using the surface norms calculator.No closed enum252ritd-010-norms-discipline ritd-011-rit-effective-grade
groupDimensionTEXT enumRequired on group Growth X report reads.Cohort dimension used by alpha.report_group_growth_x.school_level - Group by the locked WL/LL/L1/L2/MS/HS school-level tag from People & Orgs.
tenure_bucket - Group by the locked tenure bucket computed by the surface from admission_date and alpha.policy.tenure_buckets.
brand - Group by the locked brand tag at the NWEA-account boundary.
modality - Group by physical or virtual modality at the NWEA-account boundary.
school - Group by the enrolled school sourcedId through People & Orgs.
cohort - Group by an authorized named cohort returned by People & Orgs.
school_levelritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
groupKeyTEXTRequired on group Growth X report reads.Value of the selected groupDimension, such as MS for school_level or 1-2_years for tenure_bucket.No closed enumMSritd-006-map-identity-cohort ritd-001-results-boundary-alias-map
sittingScopeTEXT enumOptional; defaults to test_of_record.Controls whether MAP reads return the selected test of record or all sittings.test_of_record - Return the selected highest-RIT current row only.
all - Return raw audit sittings including retakes and soft-deleted rows when authorized.
test_of_recordritd-007-map-test-of-record ritd-028-axis-privacy-retention
courseIdTEXTRequired on course-transcript detail routes; optional filter on transcript lists.Platform3 course sourcedId used for Ed-Fi course transcript answers. It resolves through OneRoster/People & Orgs and never through a local Results course table.No closed enumcourse_algebra_1ritd-031-edfi-academic-record-transcript ritd-001-results-boundary-alias-map
includeSourceEvidenceBOOLEANOptional; defaults to false.When true and authorized, transcript endpoints include source canonical_record ids, descriptor provenance, and soft-delete evidence. It never returns raw payload_json blobs or secrets.No closed enumfalseritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model
metricKindTEXT enumOptional filter on closed-loop reconciliation.Typed reconciliation metric. Use this instead of separate report-specific endpoints for RIT, Growth X, HMG, KC state, or minutes cutover checks.rit - RIT per student, subject, and term.
growth_x - Growth X per student, subject, term, growth window, and norms set.
highest_mastered_grade - Highest mastered grade per student, subject, and as-of date.
student_kc_state - Four-state KC state per student and KC.
minutes - Minutes per student and activity date, sourced from Events but reconciled in the report row.
growth_xritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle
sourceShapeTEXT enumRequired in raw import request bodies.Names the producer row shape carried in records[]. It tells Results which server-side adapter to run; it is not a request to pre-normalize rows in the caller.timeback_assessment_result - Raw TimeBack Production assessment/result row. The caller sends the source row as-is; Results resolves student, subject, term, content/test family, score evidence, KC evidence, mastery, XP, and report rows server-side.
nwea_map_assessment_result - Raw NWEA MAP Growth CDF AssessmentResults row. The caller sends NWEA field names such as StudentID, TermName, Subject, TestID, TestRITScore, NormsReferenceData, and GoalN fields; Results routes through the NWEAMap base contract and materializes public MAP reads server-side.
nwea_map_assessment_resultritd-003-canonical-result-shape ritd-000-alpha-storage-model
modifiedSinceTIMESTAMPTZOptional polling filter.Returns rows changed after this UTC timestamp.No closed enum2026-06-03T18:55:00Zritd-020-axis-query-model

Skill-pack leak guard

Do not make the client do platform work

The Results surface exists so a thin skill pack can produce real reports by calling the platform. A client must not carry norms tables, sitting dedupe, growth-window switches, term parsing, mastery/decay math, next-task ranking, track copying, XP formulas, progress joins, transcript descriptors/precedence, Ed-Fi parsing, content-effectiveness counters, or school-day/minutes logic. If a client needs any item below, the surface leaked and the fix belongs upstream.

No norms tables

Use normsSet=2020 or normsSet=2025. The surface owns NWEA norms isolation.

No sitting dedupe

Use current-map for GOALS/student-facing current MAP, map-scores for term test-of-record reports, and map-sittings with sittingScope=all for audit rows.

No growth-window switches

Use typed growthWindow values and report endpoints; do not switch over NWEA growth column names.

No term-string parsing

Use canonicalTermId, term_season, school_year, and asOfDate fields.

No mastery/decay math

Read alpha.student_kc_state, including initial_mastery, current_retention, durable_mastery, fluency_state, and next_due_at.

No next-task ranking

Call /alpha/results/v1/next-task. Apps render the typed task ref; they do not choose lessons, reviews, practice, or gate retries.

No track copying

Read alpha.student_track_state. Curriculum owns track definitions; Results owns one student's position and switch history.

No XP formula

Read alpha.xp_ledger. Results writes append-only awards, discounts, penalties, and reversals from policy and settled attempts.

No progress joins

Read course-progress and grade-level-progress. Do not join Analytics completion-rollups, Curriculum course trees, Events evidence, calendars, or MAP/RIT/R90 to compute remaining XP, percent complete, active-path state, or pacing.

No advancement formula

Read alpha.advancement; the surface owns the K-8 growth formula.

No transcript descriptors/precedence logic

Read course_attempt_result, credit_type, grade_type, answer_precedence, and source_evidence from the Results transcript views; the surface resolves descriptors and chooses among StudentAcademicRecord, CourseTranscript, and Grade rows.

No Ed-Fi parsing

Use typed academic-record, course-transcript, course-grade, and transcript-result fields instead of payload_json extraction in the client.

No copied Ed-Fi fields

Academic-record and transcript objects are SQL views over edfi.canonical_record; Alpha clients and migrations must not create copied result tables.

No content-effectiveness counters

Read alpha.content_effectiveness. Results recomputes validated_by_count, failed_by_count, and effectiveness_rate from settled result evidence.

No school-day/minutes calendar logic

Use the report-ready reconciliation and policy-backed reads. Minutes are keyed by Events at (student, day), and Results only exposes the comparison answer.

No secrets in records

Credential existence belongs to alpha.app_credential and vault references, not Results rows.

Provenance

Generated from approved artifacts

Module-placement checks

  • Mastery is not on the student record. alpha.student_kc_state lives in Results. People & Orgs can link to it but cannot store mastery fields.
  • Curriculum graph is not student knowledge graph. Curriculum owns alpha.curriculum_graph. Results owns the per-student overlay with mastery, confidence, decay, and evidence pointers.
  • Event is not result. Events feed Results. A launch, answer, hint, attendance occurrence, discipline incident, or video-scrub event becomes result evidence only after a surface-owned scorer, Ed-Fi academic-record view, or adapter settles it.
  • Content is not attempt. Content holds blank lessons, questions, articles, tests, videos, expected_xp, and item metadata. Results holds answers, scores, outcome records, XP ledger entries, MAP scores, report card lines, and gate passes.
  • Track definitions are not track state. Curriculum owns track, track_level, track_level_segment, course, and course_component definitions. Results owns alpha.student_track_state for one student's current track position and switch history.
  • Next-task selection is not app logic. Results owns the one-call next-task decision. Apps render typed task refs; they never choose the frontier lesson, most-due review, fluency practice, or gate retry themselves.
  • Progress is not a client join. Course and grade-level progress must be read from Results progress endpoints. Analytics, Curriculum, Events, and People & Orgs may supply evidence, but consumers do not rebuild the progress formula.
Alias map
Alpha namePlain nameChangeSourceMeaningITD
alpha.result_recordResult recordRENAME + EXTENDoneroster.results for section gradebook outcomes; alpha.result_record_extension for non-section Alpha outcomesSettled score/status for one student on one work item or test.ritd-003-canonical-result-shape
alpha.gradebook_itemGradebook itemRENAMEoneroster.line_itemsThe assignment, activity, assessment, or gradebook column that can produce a result.ritd-002-gradebook-result-boundary
alpha.score_scaleScore scaleRENAME + RESTRICToneroster.score_scales, oneroster.line_item_score_scales, oneroster.result_score_scalesHow a score is interpreted for a gradebook item or result; ambiguity is rejected before persistence.ritd-002-gradebook-result-boundary
alpha.result_kc_evidenceResult skill evidenceRENAME + EXTENDoneroster.result_learning_objective_ids plus alpha.result_kc_evidence_extensionPer-result links to curriculum KCs with score evidence.ritd-004-student-knowledge-graph
alpha.report_card_entryReport card entryEXTENDalpha.report_card_entry keyed to student/result/gradebook/MAP evidence FKsSettled, effective-dated report-card statement for one student, subject, course, or section.ritd-015-report-card-gates
alpha.gate_passGate passEXTENDalpha.gate_pass keyed to result_record/content test FKsDurable pass, fail, cooldown, or retry permission for an advancement gate.ritd-015-report-card-gates
alpha.student_kc_stateStudent knowledge stateEXTENDalpha.student_kc_state keyed to OneRoster student FK and Curriculum KC FKPer-student overlay on the shared curriculum graph with initial_mastery, current_retention, durable_mastery, fluency_state, next_due_at, and evidence refs.ritd-004-student-knowledge-graph
alpha.student_track_stateStudent track stateEXTENDalpha.student_track_state keyed to OneRoster student FK and Curriculum track/track_level/segment FKsOne row per student and track: current level, current segment, placement evidence, status, and switched_to_track_id.ritd-032-student-track-state
alpha.student_course_progressStudent course progressEXTENDalpha.student_course_progress keyed to student/subject/course/asOfDateOne course progress answer with xp_remaining, total_xp, percent_complete, evidence kind, and source refs.ritd-036-course-grade-progress
alpha.student_grade_level_progressStudent grade-level progressEXTENDalpha.student_grade_level_progress keyed to student/subject/grade/asOfDateOne grade-level progress and pacing answer using active-path XP remaining over the main-sequence total XP denominator.ritd-036-course-grade-progress
alpha.next_taskNext taskDERIVED READRead computed from student_kc_state, student_track_state, gate_pass, Curriculum frontier/course members, and PolicyOne surface call returning a typed task ref: new lesson, review, practice, gate retry, or no task.ritd-034-next-task-selection
alpha.xp_ledgerXP ledgerEXTENDalpha.xp_ledger keyed to result_record/content/attempt evidence FKsThe source of truth for awarded XP per attempt, including negative awards for gaming or cheating signals.ritd-033-xp-ledger
alpha.content_effectivenessContent effectivenessEXTENDalpha.content_effectiveness keyed to Content item FK and result evidence FKsValidated-by count, failed-by count, and effectiveness rate for a Content item after scored result evidence.ritd-016-content-effectiveness-derived-read
alpha.working_gradeWorking gradeEXTENDalpha.working_grade keyed to student/subject/asOfDate and source evidence FKsCurrent surface-owned grade-equivalent level for a student and subject as of a date.ritd-014-working-grade-advancement
alpha.advancementAdvancementEXTENDalpha.advancement keyed to working_grade/MAP evidence FKsmax(0, currentWorkingGrade - max(baselineEffectiveGrade, syStartWorkingGrade)).ritd-014-working-grade-advancement
alpha.map_scoreMAP scoreCUT + RENAME + EXTENDnweamap.assessment_result_projection plus Alpha MAP extension sidecarsPlain current MAP result keyed by TimeBack student, subject, and term.ritd-006-map-identity-cohort
alpha.map_sittingMAP sittingRENAME + RESTRICTnweamap.assessment_result_projection/raw_assessment_results with sittingScope=allAudit view of all MAP sittings including retakes and soft-deleted rows when authorized.ritd-007-map-test-of-record
alpha.map_goal_strandMAP goal strandRENAME + RESTRICT + EXTENDview-unpivot of NWEA Goal1Name..Goal8Adjective fields from nweamap.raw_assessment_resultsOne row per student, subject, term, and goal strand with strand_rit, standard_error, and goal_gap.ritd-008-map-goal-strands
alpha.map_growth_windowMAP growth windowEXTENDalpha.map_growth_extension keyed to nweamap.assessment_result_projectionOne typed growth-window row with observed growth, projected growth, Growth X, target, and norms set.ritd-009-growth-x-target
alpha.map_normed_resultNormed MAP resultRESTRICTnweamap.assessment_result_projection NormsReferenceData plus typed Alpha norms parameterMAP result/calculator output bound to exactly one norms set, currently 2020 or 2025.ritd-010-norms-discipline
alpha.map_effective_gradeEffective gradeEXTENDalpha.map_effective_grade_extension keyed to NWEAMap projection and calculator configRIT50 grade, RIT90 grade, effective grade, Alpha minimum RIT, and Alpha predicted RIT.ritd-011-rit-effective-grade
alpha.map_longitudinal_pointMAP growth pointEXTENDalpha.map_longitudinal_extension keyed to NWEAMap projection rows across termsOrdered per-student, per-subject time series point with TimeBack-era flag.ritd-012-longitudinal-series
alpha.map_99_level99-levelEXTENDalpha.map_99_level_extension keyed to NWEAMap projection and threshold configHow many grade levels above the 99th-percentile threshold a student's RIT sits.ritd-013-ninety-nine-levels
alpha.academic_record_viewAcademic recordRENAME + RESTRICTedfi.canonical_record where resource_name/record_kind = StudentAcademicRecordCumulative academic achievement for one student: term, school year, school, GPA/class-rank fields, attempted credits, earned credits, diplomas, honors, and report-card references.ritd-031-edfi-academic-record-transcript
alpha.course_transcript_viewCourse transcriptRENAME + RESTRICTedfi.canonical_record where resource_name/record_kind = CourseTranscript, joined to StudentAcademicRecord referencesFinal course performance for one student in a term or school year: course, attempt result, final letter/numeric grade, attempted credits, earned credits, credit type/category, repeat code, and transcript evidence.ritd-031-edfi-academic-record-transcript
alpha.course_grade_viewCourse gradeRENAME + RESTRICTedfi.canonical_record where resource_name/record_kind = Grade, with GradebookEntry references when presentA settled course/grading-period grade that belongs in Results only after it is a durable academic record, not while it is merely an event or blank assignment.ritd-031-edfi-academic-record-transcript
alpha.transcript_result_viewTranscript resultRENAME + RESTRICTUnion/read view over alpha.academic_record_view, alpha.course_transcript_view, and alpha.course_grade_viewOne report-ready row for questions like a student's final grade and earned credits for a course in a term.ritd-031-edfi-academic-record-transcript
alpha.result_source_evidenceResult source evidenceEXTENDalpha.result_source_evidence keyed to adapter/import/audit FKsImmutable adapter/import/source references that let migration reconcile old DB and Alpha surface answers.ritd-003-canonical-result-shape
alpha.map_percentile_translationPercentile/RIT translationEXTENDNWEA published norms plus Alpha calculator configConverts percentile to RIT or RIT to percentile under one subject, grade, season, and norms set.ritd-010-norms-discipline
alpha.map_r90_norm_pointR90 norm pointEXTENDAlpha R90/RIT90 extrapolation over NWEA-published RIT50 normsThe one R90 table used by effective grade, GOALS, and related MAP calculators; no local copies.ritd-011-rit-effective-grade
alpha.report_group_growth_xGroup Growth X reportEXTENDResults report-ready view over per-student alpha.map_growth_window.growth_x rowsCohort Growth X answer for school level, tenure, brand, modality, school, or cohort groupings.ritd-017-report-ready-views-skill-pack-gate
alpha.map_percentile_translationPercentile/RIT translationEXTENDNWEA published norms plus Alpha calculator configConverts percentile to RIT or RIT to percentile under one subject, grade, season, and norms set.ritd-010-norms-discipline
alpha.map_r90_norm_pointR90 norm pointEXTENDAlpha R90/RIT90 extrapolation over NWEA-published RIT50 normsLegacy R90 fixture row for Results report compatibility. GOALS grade2RIT/R90 uses the skill-seeded NWEAMAP master directly or through Analytics.ritd-011-rit-effective-grade
alpha.report_group_growth_xGroup Growth X reportEXTENDResults report-ready view over per-student alpha.map_growth_window.growth_x rowsCohort Growth X answer for school level, tenure, brand, modality, school, or cohort groupings.ritd-017-report-ready-views-skill-pack-gate
Cross-cutting rules applied
#RuleResults application
1Tag registry vs. real columnResults uses real columns for every relationship, join key, sort key, computed input, uniqueness key, and not-null fact: student_id, content_id, kc_id, track_id, current_track_level_id, current_segment_id, subject, term_id, school_year, result_kind, source_adapter_id, xp_award_id, content_effectiveness_id, course_id, transcript_record_id, academic_record_id, credit_type, and outcome_status. If the column is sourced from OneRoster, NWEAMap, or Ed-Fi it is a view column; if Alpha creates it, it is an extension column. Ed-Fi descriptors resolve through edfi.descriptor_code, never a local Results tag table.
2Point-in-time defaultReport cards, transcripts, course grades, student_track_state, working grade, gate pass state, student_kc_state, XP awards, content effectiveness, and MAP term facts are read by asOfDate. begin_date NULL means the row has no locatable start and is excluded from point-in-time computation; end_date NULL means active for any asOfDate on or after begin_date; both NULL means excluded; is_time_locatable is exposed on effective-dated Results rows. Current reads are asOfDate reads, not a separate current-only shortcut.
3Typed field, no read-time parsingsubject, canonical_term_id, term_season, school_year, result_kind, source_kind, test_type, growth_window, norms_set, initial_mastery, current_retention, durable_mastery, fluency_state, next_task_type, track_status, gate_status, xp_award_reason, course_attempt_result, grade_type, credit_type, and transcript_term are typed fields with alias folds or descriptor resolution at write/view time. Consumers never parse test names, NWEA TermName, Ed-Fi descriptor labels, URLs, or free comments.
4Policy numbers are configmastery cutoff, retention model, stuck-attempt threshold, gate retake cooldown, proxy-subject rules, XP award formula, repeat-attempt discount, effort signal weighting, Growth X target, RIT calculator coefficients, 99-level thresholds, school-year boundaries, progress XP-remaining precedence, pacing thresholds, rewards, and mastery decay are alpha.policy.* config read by the surface.
5Event, result, gradebook are not collapsedEvents records moments; Results records settled outcomes and scores; gradebook/report-card rows are rollups that may reference results. Results never stores launch, view, hint, or scrub moments as results.
6Two graphs, two homesCurriculum owns the shared curriculum graph. Results owns alpha.student_kc_state, the per-student overlay over that graph, with four named states on one row: initial_mastery, current_retention, durable_mastery, and fluency_state. Mastery is never a field on the student record and the shared map is never copied into Results.
7NWEA account boundaryResults reads the NWEA account through the stock OneRoster org tree: type=district means Brand x Modality and carries alpha.org.nwea_district_id. Results does not create a second NWEA account source of truth.
8Secrets are not fields or tagsResults rows may record that a third-party producer generated an outcome, but credentials stay in alpha.app_credential and secret vault references. No result, MAP score, or adapter row stores a credential value.
9Tenure bands are configIf Results filters or groups outcome reports by tenure, it reads alpha.policy.tenure_buckets and student admission_date from People & Orgs instead of hardcoding band edges.
10Content effectiveness is derived from ResultsResults is the system of record for outcome evidence and recomputes alpha.content_effectiveness after each scored result that references the content the student used. The read is keyed to Content items and carries validated_by_count, failed_by_count, and effectiveness_rate. Apps never increment counters and Results never copies Content title/body/kind fields.
11External results enter through named adaptersCollege Board, AP Classroom, Barron's, Princeton Review, NWEA, Ed-Fi student academic record imports, and platform-native producers enter through named adapters that write either the proper 1EdTech base surface or Alpha extension storage at the boundary, including the QTI EAP5/EAP6 canonical response plus isCorrect when item-level response evidence exists. App code never half-maps producer results or transcript rows.
12Test type is typed on test objectResults reads test_type and is_mastery_gate from Content/QTI objects through references to the content/test version in force when the result settled. It never infers them from display names and never stores copied Content/QTI source fields in Alpha extension tables.
13XP ledger is immutable historyAwarded XP lives in alpha.xp_ledger as a ledger, not as mutable state or event rows. It is computed by the Results surface per attempt from Content expected_xp, accuracy, effort signals, repeat-attempt discount, passive-activity verification, and cheating/gaming penalties. Gates, events, engines, and apps never write canonical XP awards.
14Course and grade progress are Results readsResults exposes alpha.student_course_progress and alpha.student_grade_level_progress as the student-facing answers for course progress, grade-level progress, remaining XP, and pacing. Analytics completion/XP rollups, Curriculum main-course expected-XP structure, Events Caliper progress evidence, and People & Orgs calendar/enrollment facts are inputs. Clients call Results and never join those modules to compute progress.
15Locked vocabularystudent_kc_state and student_track_state are state; alpha.xp_ledger is a ledger; working grade, advancement, course progress, and content effectiveness are measures; report-ready reads are views; GOALS hours-to-target-date is a prediction. Results does not use projection except for event-sourcing internals.