List Pupils
pupil_listPupils to act on, as the dashboard's pupil tabs list them: "watch" (dropped half a grade or more, a grade or more below target, or well behind their class on a skill), "thriving", "below" (below target), "drop" (biggest drop, steepest first) or "all". Each pupil comes with their latest grade, the change since their previous assessment, their target and the reason they are listed. Narrow with the same filters as results_get. Paged: pass next_offset as offset for the next page. Each pupil's link comes from pupil_get. Read-only.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| list | No | Which pupils, matching the dashboard's pupil tabs. "watch" (default): dropped half a grade or more, a grade or more below target, or well behind their class on a skill. "thriving": climbed, at or above target, or strongest in their year on a skill. "below": a grade or more below target. "drop": everyone who dropped, steepest first. "all": every pupil, weakest first. | watch |
| limit | No | Most pupils to return in one page. | |
| scope | No | "department" (default) is the widest view the caller may see: the whole school for a school admin, their department for a head of department. Anyone else is given their own marking, and the answer says so. "mine" is always the caller's own marking. | department |
| offset | No | Pupils to skip, for the next page: pass next_offset from the previous answer. | |
| filters | No | The dashboard's full filter builder, for anything the single arguments above cannot say. Every condition must hold (AND); the values inside one condition are alternatives (OR). Combines with the arguments above. Properties: "subject" (e.g. "english"), "class" (class_id), "teacher" (teacher_id from results_get's teachers: the teacher whose marking it is), "assessmentPoint" (assessment point id), "yearGroup" (e.g. "11"), "pupil" (a name or part of one). Operators: "is" and "is_not" take one value; "is_one_of" and "is_none_of" take a list. "pupil" instead takes "is", "contains" or "does_not_contain", with one value. Example, every Year 11 class except one, marked by one teacher: [{"property":"yearGroup","operator":"is","values":["11"]},{"property":"class","operator":"is_not","values":["<class_id>"]},{"property":"teacher","operator":"is","values":["<teacher_id>"]}]. A value matching nothing the caller can see is ignored and listed in filters_dropped. | |
| subject | No | Narrow to one subject. | |
| class_id | No | Narrow to one class. Ids come from results_get. | |
| year_group | No | Narrow to one year group, exactly as results_get returns it in cohorts[].year_group: usually its number, "11" for Year 11. | |
| academic_year_id | No | An academic year id (from results_get), or "all" for every year including marking filed under no assessment. Omit for the current year. | |
| assessment_point_id | No | Narrow to one assessment point (a school's data drop, e.g. 'Y11 Mock 1'). Ids come from results_get. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| list | Yes | ||
| scope | Yes | ||
| total | Yes | Pupils on this list, across every page. | |
| offset | Yes | ||
| pupils | Yes | ||
| heading | Yes | ||
| scope_note | Yes | ||
| next_offset | Yes | Pass as offset for the next page; null on the last page. | |
| empty_reason | Yes | Why the list is empty, when it is. | |
| dashboard_url | Yes | ||
| filters_applied | Yes | ||
| filters_dropped | Yes | Filters that matched nothing the caller can see and were NOT applied. | |
| too_many_to_list | Yes | Cohorts with too many pupils to list (over 60, as on the dashboard). Ask again per class with class_id to see them. |