Read Learning Plans through the API
The initial Learning Plans API is read-only. It requires
learning_plans:read and effective API read access for the authenticated
school. If the school later disables Learning Plans, authorized historical
reads remain available as described below.
Operations
Section titled “Operations”GET /learning-planslists plans and acceptsstatusandstudent_idfilters plus snapshot synchronization parameters.GET /learning-plans/{id}returns one plan.GET /learning-plans/{id}/assignmentsreturns its assignment and supersession history and can filter by assignment status.
There are no API v1 operations to create, activate, pause, edit, generate, approve, publish, postpone, replace, or cancel Learning Plans. Use the authenticated school application for those human-controlled actions.
Plan response
Section titled “Plan response”A plan includes:
- student and optional semester identifiers;
- name, period start, and target completion date;
- ascending or descending direction;
- canonical start and destination positions;
- plan state;
- versioned Quran workload dataset identifier;
- currently effective publication policy, automation pause, and policy source;
- workload tracks with type, unit, target, tolerance, next position, and completion time;
- nullable immutable
creation_provenancefor quantity-created plans.
Quantity provenance contains non-sensitive creation mode, requested and actual
quantity/unit, direction, calculation status, progress basis, source endpoint
and rating category, dataset and calculation versions, origin/direction/quantity
override facts, and repeat and bulk-operation
correlation. It deliberately omits the source recitation ID. The field is
null for fixed-range, manual, and historical plans without a provenance row.
Do not infer or fabricate it.
Treat dataset source versions in API provenance as opaque reproduction values, not display copy. Human interfaces should use Waqar’s localized dataset name or edition and must not try to parse the technical source value.
The effective policy can change when school, halqa, or learner configuration changes. Treat it as current response state, not immutable creation metadata.
Assignment response
Section titled “Assignment response”Assignments include due date, lifecycle state, source, safe explanation, publication/start/completion/supersession times, a replacement link when applicable, and ordered canonical Quran segments.
Private staff notes are never returned. The school-server API can include draft and other staff lifecycle states because it is not the parent portal; protect the response accordingly.
Synchronization
Section titled “Synchronization”- List plans using the desired status or student filter.
- Traverse the complete filter-bound snapshot.
- Upsert plan state by
id. - For relevant plans, traverse assignment history and preserve supersession links rather than deleting old items.
- Use
updated_afterin later complete cycles. - Do not combine records across schools or expose staff states to parents.
When Learning Plans is disabled, all three operations preserve historical
read compatibility and return
X-Waqar-Feature-Mode: historical-read-only. The header means no new planning
work can be created or changed; it does not bypass tenant, API rollout, key,
scope, suspension, or quota checks. Keep synchronizing the retained records and
do not delete them locally just because this header appears.
Existing keys do not acquire learning_plans:read automatically; rotate to a
deliberately scoped key.
See pagination and synchronization and the public Learning Plans concepts.