changedOutput schema / properties / pupil / anyOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "assessments": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "grade": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "grade_exact": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "description": "The grade with its fraction, cut (not rounded) to one decimal: 3.6 is a 3+. The change between assessments is read from these, so two papers can share a grade and a percentage and still differ by a few tenths when their boundaries differ."
- },
- "label": {
- "description": "The assessment as the dashboard names it.",
- "type": "string"
- },
- "paper_title": {
- "type": "string"
- },
- "percent": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "label",
- "paper_title",
- "percent",
- "grade",
- "grade_exact"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "change": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "class_code": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "dashboard_url": {
- "type": "string"
- },
- "grade_change": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- },
- "latest_grade": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "latest_percent": {
- "type": "number"
- },
- "name": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "other_subjects": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "percent_change": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- },
- "pupil_id": {
- "type": "string"
- },
- "skills": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "code": {
- "type": "string"
- },
- "group_percent": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "description": "Their class (or teacher's group) on the same skill, for comparison."
- },
- "pupil_percent": {
- "type": "number"
- }
- },
- "required": [
- "code",
- "pupil_percent",
- "group_percent"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "subject": {
- "type": "string"
- },
- "subject_label": {
- "type": "string"
- },
- "target": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "teacher": {
- "type": "string"
- },
- "year_group": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "pupil_id",
- "name",
- "subject",
- "subject_label",
- "other_subjects",
- "class_code",
- "year_group",
- "teacher",
- "latest_grade",
- "latest_percent",
- "change",
- "grade_change",
- "percent_change",
- "target",
- "assessments",
- "skills",
- "dashboard_url"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "properties": {
+ "assessments": {
+ "description": "Every assessment in this subject that they or their group sat, across all years, in the order sat. percent null = they did not sit it.",
+ "items": {
+ "properties": {
+ "academic_year": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The school year it counts towards, e.g. \"2026/27\"; null for a paper filed under no assessment point."
+ },
+ "date": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "When it was sat (YYYY-MM-DD), where the paper is dated."
+ },
+ "grade": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "grade_exact": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The grade with its fraction, cut (not rounded) to one decimal: 3.6 is a 3+. The change between assessments is read from these, so two papers can share a grade and a percentage and still differ by a few tenths when their boundaries differ."
+ },
+ "label": {
+ "description": "The assessment as the dashboard names it.",
+ "type": "string"
+ },
+ "paper_title": {
+ "type": "string"
+ },
+ "percent": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "label",
+ "paper_title",
+ "percent",
+ "grade",
+ "grade_exact",
+ "date",
+ "academic_year"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "change": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "class_code": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "classes": {
+ "description": "Every class they are or were on, newest year first, from the class lists rather than the marking — so a subject with no marking yet still appears. Only classes the caller may see: their department's for a head of department, every class for a school admin.",
+ "items": {
+ "properties": {
+ "academic_year": {
+ "type": "string"
+ },
+ "class_code": {
+ "type": "string"
+ },
+ "class_id": {
+ "type": "string"
+ },
+ "current": {
+ "description": "On this class today.",
+ "type": "boolean"
+ },
+ "subject": {
+ "type": "string"
+ },
+ "subject_label": {
+ "type": "string"
+ },
+ "teachers": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "year_group": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "class_id",
+ "class_code",
+ "subject",
+ "subject_label",
+ "year_group",
+ "academic_year",
+ "teachers",
+ "current"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "dashboard_url": {
+ "type": "string"
+ },
+ "grade_change": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "latest_grade": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "latest_percent": {
+ "type": "number"
+ },
+ "name": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "other_subjects": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "percent_change": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "pupil_id": {
+ "type": "string"
+ },
+ "skills": {
+ "items": {
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "group_percent": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Their class (or teacher's group) on the same skill, for comparison."
+ },
+ "pupil_percent": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "code",
+ "pupil_percent",
+ "group_percent"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "subject": {
+ "type": "string"
+ },
+ "subject_label": {
+ "type": "string"
+ },
+ "target": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "teacher": {
+ "type": "string"
+ },
+ "year_group": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "pupil_id",
+ "name",
+ "subject",
+ "subject_label",
+ "other_subjects",
+ "class_code",
+ "year_group",
+ "teacher",
+ "latest_grade",
+ "latest_percent",
+ "change",
+ "grade_change",
+ "percent_change",
+ "target",
+ "classes",
+ "assessments",
+ "skills",
+ "dashboard_url"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]